From: H.G. Muller Date: Sat, 2 May 2009 17:38:39 +0000 (-0700) Subject: changes from H.G. Muller; version 4.3.14 X-Git-Tag: v4.3.14 X-Git-Url: http://winboard.nl/cgi-bin?a=commitdiff_plain;h=86517e539f33650be656c482020a878fec0723c9;p=xboard.git changes from H.G. Muller; version 4.3.14 --- diff --git a/AUTHORS b/AUTHORS index 38b6302..6cf36e6 100644 --- a/AUTHORS +++ b/AUTHORS @@ -1,122 +1,138 @@ -Contributions of xboard and WinBoard authors by file -$Id$ - -0. Files covered - -The first group are included in the xboard distribution. The second -group are included in the WinBoard source distribution but not in the -xboard distribution. All are part of the joint xboard/WinBoard source -base and are covered by the same copyrights and licensing terms. - -FAQ.html -backend.c -backend.h -backendz.h -bitmaps -childio.c -childio.h -cmail.in -cmail.man -comment.in -common.h -config.h.in -configure.in -engine-intf.txt -frontend.h -gamelist.c -ics-parsing.txt -lists.c -lists.h -moves.c -moves.h -parser.h -parser.l -pgntags.c -xboard.c -xboard.h -xboard.man -xboard.texi -xedittags.c -xedittags.h -xgamelist.c -xgamelist.h -zic2xpm.c -zic2xpm.man -zippy.README -zippy.c -zippy.h - -winboard.rtf (compiles to winboard.hlp) -config.h -defaults.h -resource.h -wedittags.c -wedittags.h -wgamelist.c -wgamelist.h -winboard.c -winboard.h -winboard.rc - -bitmaps/* -bitmaps.xchess/* - -1. Wayne Christopher - -Wrote from scratch (I believe) bitmaps.xchess/*80*.bm. Other bitmaps -in the bitmaps.xchess directory were derived from these by shrinking -and some hand-tuning. By default these bitmaps are no longer used. -Their copyright status is unclear. - -2. Chris Sears and Dan Sears - -Wrote from scratch parser.l, xboard.c, xboard.h, xboard.man. Parts -(sometimes small) of these files were later moved by Tim Mann to -backend.c, backend.h, childio.c, common.h, frontend.h, and parser.h. - -Chris and Dan's original work is copyrighted by Digital Equipment -Corporation with licensing terms similar to what the X Consortium uses -(see the file COPYRIGHT). All the work listed below is copyrighted by -the Free Software Foundation and covered by the GPL (see the files -COPYRIGHT and COPYING). - -3. Tim Mann - -Wrote from scratch FAQ.html, backendz.h, childio.h, comment.in, -config.h.in, configure.in, engine-intf.txt, ics-parsing.txt, moves.c, -moves.h, pgntags.c (split from backend.c by Jochen Wiedmann), -xedittags.c, xedittags.h, xgamelist.c, xgamelist.h, zippy.README, -zippy.c, zippy.h, winboard.rtf, config.h, defaults.h, resource.h, -wedittags.c, wedittags.h, wgamelist.c, wgamelist.h, winboard.c, -winboard.h, winboard.rc. - -Major additions and changes to nearly all other files listed in -section 0. - -4. John Chanak - -Addition to xboard.c, mostly later moved into backend.c. - -5. Evan Welsh - -Wrote from scratch cmail.in and cmail.man. Additions to backend.c and -xboard.c. - -6. Elmar Bartel - -Wrote from scratch the Metafont code from which bitmaps/* were -generated. The Metafont code itself is not included in the package. - -7. Jochen Wiedmann - -Wrote from scratch gamelist.c, lists.c, lists.h. Wrote xboard.texi, -mostly based on xboard.man and cmail.man. Minor additions to backend.c. - -8. Frank McIngvale - -Wrote from scratch zic2xpm.c and zic2xpm.man. Additions to backend.c, -xboard.c, and xboard.man. - -9. Hugh Fisher - -Additions to backend.c and xboard.c. +Contributions of xboard and WinBoard authors by file +$Id: AUTHORS,v 1.1 2003/11/02 04:42:06 mann Exp $ + +0. Files covered + +The first group are included in the xboard distribution. The second +group are included in the WinBoard source distribution but not in the +xboard distribution. All are part of the joint xboard/WinBoard source +base and are covered by the same copyrights and licensing terms. + +FAQ.html +backend.c +backend.h +backendz.h +bitmaps +childio.c +childio.h +cmail.in +cmail.man +comment.in +common.h +config.h.in +configure.in +engine-intf.txt +frontend.h +gamelist.c +ics-parsing.txt +lists.c +lists.h +moves.c +moves.h +parser.h +parser.l +pgntags.c +xboard.c +xboard.h +xboard.man +xboard.texi +xedittags.c +xedittags.h +xgamelist.c +xgamelist.h +zic2xpm.c +zic2xpm.man +zippy.README +zippy.c +zippy.h + +winboard.rtf (compiles to winboard.hlp) +config.h +defaults.h +resource.h +wedittags.c +wedittags.h +wgamelist.c +wgamelist.h +winboard.c +winboard.h +winboard.rc + +bitmaps/* +bitmaps.xchess/* + +1. Wayne Christopher + +Wrote from scratch (I believe) bitmaps.xchess/*80*.bm. Other bitmaps +in the bitmaps.xchess directory were derived from these by shrinking +and some hand-tuning. By default these bitmaps are no longer used. +Their copyright status is unclear. + +2. Chris Sears and Dan Sears + +Wrote from scratch parser.l, xboard.c, xboard.h, xboard.man. Parts +(sometimes small) of these files were later moved by Tim Mann to +backend.c, backend.h, childio.c, common.h, frontend.h, and parser.h. + +Chris and Dan's original work is copyrighted by Digital Equipment +Corporation with licensing terms similar to what the X Consortium uses +(see the file COPYRIGHT). All the work listed below is copyrighted by +the Free Software Foundation and covered by the GPL (see the files +COPYRIGHT and COPYING). + +3. Tim Mann + +Wrote from scratch FAQ.html, backendz.h, childio.h, comment.in, +config.h.in, configure.in, engine-intf.txt, ics-parsing.txt, moves.c, +moves.h, pgntags.c (split from backend.c by Jochen Wiedmann), +xedittags.c, xedittags.h, xgamelist.c, xgamelist.h, zippy.README, +zippy.c, zippy.h, winboard.rtf, config.h, defaults.h, resource.h, +wedittags.c, wedittags.h, wgamelist.c, wgamelist.h, winboard.c, +winboard.h, winboard.rc. + +Major additions and changes to nearly all other files listed in +section 0. + +4. John Chanak + +Addition to xboard.c, mostly later moved into backend.c. + +5. Evan Welsh + +Wrote from scratch cmail.in and cmail.man. Additions to backend.c and +xboard.c. + +6. Elmar Bartel + +Wrote from scratch the Metafont code from which bitmaps/* were +generated. The Metafont code itself is not included in the package. + +7. Jochen Wiedmann + +Wrote from scratch gamelist.c, lists.c, lists.h. Wrote xboard.texi, +mostly based on xboard.man and cmail.man. Minor additions to backend.c. + +8. Frank McIngvale + +Wrote from scratch zic2xpm.c and zic2xpm.man. Additions to backend.c, +xboard.c, and xboard.man. + +9. Hugh Fisher + +Additions to backend.c and xboard.c. + +10. Allessandro Scotti + +Made many additions to the WinBoard user interface and graphics +capabilities, such as new windows for engine output, board textures +and font-based piece rendering. These changes became collectively known +as Winboard_x. + +11. H.G. Muller + +Heaviliy modified winboard.c, backend.c, moves.c and parser.l, to +allow board sizes other than 8x8, and many non-orthodox Chess pieces, +so that WinBoard is now capable of playing variants like Shogi and Xiangqi. +Also implemented displaying of the Crazyhouse holdings, and many adjudication +and other backend options. This version of WinBoard, (4.3.xx) containing all +of the WinBoard_x options, became known as WinBoard_F. \ No newline at end of file diff --git a/FAQ.html b/FAQ.html index 224748c..2c07930 100644 --- a/FAQ.html +++ b/FAQ.html @@ -1696,6 +1696,6 @@ GNU Chess 5 and its book. You can add more xboard options at the end of the command line.


-$Id$
+$Id: FAQ.html,v 2.2 2003/11/28 09:35:21 mann Exp $
** End of XBoard/WinBoard FAQ ** diff --git a/Makefile.in b/Makefile.in index cc5eb21..bb8ec86 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1,7 +1,7 @@ # # Run ./configure to generate a Makefile from Makefile.in # See INSTALL for more information -# $Id$ +# $Id: Makefile.in,v 2.7 2003/11/28 18:26:06 mann Exp $ # PRODUCT = @PRODUCT@ diff --git a/READ_ME b/READ_ME index 4ddc997..a27021b 100644 --- a/READ_ME +++ b/READ_ME @@ -1,75 +1,135 @@ - -What is XBoard? -=============== -XBoard is a graphical chessboard for the X Window System. It can -serve as a user interface for chess engines such as GNU Chess, for the -Internet Chess Server, or for electronic mail correspondence chess. -XBoard can also be used by itself. See the manual page xboard.txt for -further details. - -XBoard is free software, copyrighted by the Free Software Foundation -and released under the GNU General Public License (GPL). See the file -COPYING for details. - -You can build xboard on most systems with the following commands. - - ./configure - make - -See the file INSTALL for more detailed instructions. - -See the file FAQ.html for answers to frequently asked questions. - - -What is WinBoard? -================= -WinBoard is a port of XBoard to run natively on Windows. It is part -of the XBoard project and is released under the same terms as XBoard. - -You can build WinBoard using the free Cygwin toolchain from -www.cygnus.com with the following commands. - - cd winboard - make -f cygwin.mak - -You can build WinBoard using Microsoft Visual C with the following -commands, or by opening the project in Visual Studio and clicking the -build button. - - cd winboard - nmake -f msvc.mak - -There is also a contributed .mak file for Borland C. It's not -maintained and thus may need updating if you want to use it. - - -Reporting problems -================== - -Report bugs and problems with XBoard and WinBoard to -. With XBoard, please use the "script" program -to start a typescript, run XBoard with the -debug command line option, -and include the typescript output in your message. With WinBoard, -please use the /debug command line option and include the contents of -the file WinBoard.debug. Also tell us what kind of machine and what -operating system version you are using. On Unix, the command "uname --a" will tell you this. On Windows, right-click on My Computer and -select Properties. - -Here is a sample of approximately what you should type (on Unix): - - 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 - . - -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. + +What is XBoard? +=============== +XBoard is a graphical chessboard for the X Window System. It can +serve as a user interface for chess engines such as GNU Chess, for the +Internet Chess Server, or for electronic mail correspondence chess. +XBoard can also be used by itself. See the manual page xboard.txt for +further details. + +XBoard is free software, copyrighted by the Free Software Foundation +and released under the GNU General Public License (GPL). See the file +COPYING for details. + +You can build xboard on most systems with the following commands. + + ./configure + make + +See the file INSTALL for more detailed instructions. + +See the file FAQ.html for answers to frequently asked questions. + + +What is WinBoard? +================= +WinBoard is a port of XBoard to run natively on Windows. It is part +of the XBoard project and is released under the same terms as XBoard. + +You can build WinBoard using the free Cygwin toolchain from +www.cygnus.com with the following commands. + + cd winboard + make -f cygwin.mak + +You can build WinBoard using Microsoft Visual C with the following +commands, or by opening the project in Visual Studio and clicking the +build button. + + cd winboard + nmake -f msvc.mak + +There is also a contributed .mak file for Borland C. It's not +maintained and thus may need updating if you want to use it. + + +Reporting problems +================== + +Report bugs and problems with XBoard and WinBoard to +. With XBoard, please use the "script" program +to start a typescript, run XBoard with the -debug command line option, +and include the typescript output in your message. With WinBoard, +please use the /debug command line option and include the contents of +the file WinBoard.debug. Also tell us what kind of machine and what +operating system version you are using. On Unix, the command "uname +-a" will tell you this. On Windows, right-click on My Computer and +select Properties. + +Here is a sample of approximately what you should type (on Unix): + + 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 + . + +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. + +Version 4.3.14 +============== + +This relaese was not made by the GNU xboard team, but by H.G.Muller. +It mainly contains developments on WinBoard. Nevertheless, an attempt +has been started to back-port the enormous number of improvements that +have been made to WinBoard since the Linux and Windows developments branched +to xboard. This is reflected by the source tree now having the same format +as that of xboard 4.2.7, including all the xboard sources. + +An enormous amount of work still has to be done to make the xboard version +fully equivalent to WinBoard, especially on user-interface side. As a modest +beginning, the xboard source files have been patched to allow their compilation +with the newer back-end files from WinBoard. To this end, the number of piece +types in xboard has been increased from 6 to 22, and the WinBoard bitmaps +have been converted to xboard source format (.bm) and are included in the +xboard bitmaps directory. Other quick patches include the coloring of the +board squares (for xiangqi and holdings), and some code in the user-move +handling to suppress all moves into or out of the area between board and +holdings in crazyhouse, and the treatment of king-captures-own-piece +as a possibly valid move (for FRC castling). This should make it possible +to run xboard with the new back-end files without too much inconvenience. + +New xboard command-line options have been added to make the added back-end +features available. The include the new variants (as argument of the old +-variant option), -boardWidth, -boardHeight and -holdingsSize. Be sure +to call xboard with "-boardSize middling" or "-boardSize bulky" if you +want to play with fairy pieces, or xboard might crash due to unavailability +of bitmaps. Other added xboard options are: + +ADJUDICATION OPTIONS: +-checkMates +-testClaims +-materialDraws +-trivialDraws +-ruleMoves +-repeatsToDraw +-adjudicateLossThreshold +-firstScoreAbsolute +-secondScoreAbsolute + +TIME-CONTROL OPTIONS +-firstTimeOdds +-secondTimeOdds +-timeOddsMode +-firstNPS +-secondNPS + +GENERAL OPTIONS +-matchPause +-engineDebugOutput +-userName +-pgnExtendedInfo +-pgnEventHeader +-hideThinkingFromHuman + +This is all completely untested, but as the options merely switch on well-tested +code in the back-end, there should not be too many problems with them. +Bugs can be reported in the WinBoard forum. \ No newline at end of file diff --git a/ToDo b/ToDo index 62be85a..d3d6f1a 100644 --- a/ToDo +++ b/ToDo @@ -1,1363 +1,1377 @@ -Possible improvements **=somewhat higher priority ---------------------------------------------------- - -20. Some way to back up, explore variations, then return to the main -line and restore moves we backed out. Should also support exploring -side branches while loading a game file. Push/pop buttons? Button to -fork another xboard in same state as current one? - -20a. Allow side branches to be remembered in game files (and -understood on LoadGame). Use PGN variation notation. - -**62a. Support series of time controls as in later gnuchess 4.0.x -versions (and real tournaments!). Needs a protocol extension to -"level"; this is now planned for protover 3. - -62b. Perhaps we could also support the kind of clock where you get K -seconds per move, plus a reserve of J seconds per game that is used -when a move takes more than K seconds. The degenerate form of this -with J=0 is desirable in itself. Needs a protocol extension. - -68. WinBoard has some features not in xboard. Among others: -68a. LoadGameOptions dialog (good to add) -68b. SaveGameOptions dialog (good to add) -68c. TimeControl dialog (good to add) -68g. Font dialog. (leave out) -68h. Colors dialog. (leave out) -68i. Board size on Options menu (good to add) -68j. Resize with mouse -68k. Highlight dragging -68m. Move typein from keyboard. (good to add) - -69. xboard has some features not in WinBoard. Among others: -69c. Font size selection by pattern fill-in. (leave out) -69d. Alternate bitmaps specified at runtime. (good to add, often requested) -69e. Flashing. - -71. Allow restart after ICS logout instead of exiting? Many requests -for this. - -71a. Would be useful to drop into NCP mode after ICS logout and allow -for reconnect later. For instance, this would let you save your last -partial game if you didn't have autosave on. - -72. Allow switching among ICS, NCP, GNU modes?? - -74. Observe/play multiple games, each with its own window. Hard. - -80. Clone command. Saves current game to a file foo, then starts up -another copy of xboard with -lgf foo. Should probably note current -state of some options and give command line flags to set them the same -way in child. What about -ncp mode, though? Might want that to be -different. Would be nice to have a -moveNumber flag to position the -child to the same move number in the current game. - -91. Would be nice to have an option to overwrite save file instead of -appending. - -95. "Have the clock indicate how long the computer/player has been -thinking for when the -st option is used. This should be how long for -the current move only." (Dino Dini) - -97. "Have the ability to change the level of the gnuchess during a -game. For analysis purposes, sometimes it is useful to have the -computer think really hard about certain positions." (Dino Dini) - -98. Reorganize the source and split it into more files. - -107. Changing time control during a game could be made to work. -Current (WinBoard only) way of changing at start is suboptimal. - -**108. Could add search depth and time per move to (WinBoard) -TimeControl dialog. - -140. LoadPosition needs better checking for invalid data. - -142. xboard needs a real file chooser dialog. Jeff Woolsey submitted -code to merge in the one from Ghostview, but said it works only on -X11R5 or later. I have not yet tried his code or looked to see if it -could be made to work on X11R4. - -147. Improve display of held pieces in bughouse mode, putting them -closer to the player's side of the board, and perhaps using icons (and -allowing dragging from the icons to drop a piece). Actually, moving -the clocks would be beneficial too, so that it's easier to visually -associate the right clock with the right player when looking at two -boards during a bughouse match (with two copies of xboard running). -Maybe multiple window layouts should be user-selectable. - -150. Keep track of castling availability, en-passant availability, and -FEN half-move clock (for 50-move rule), pass the availability -information to the move generator through the existing interface, and -load/save it in the FEN code. - -150a. Note that not keeping track of ep creates a bug in mate -detection. In certain positions, moving a pawn from the 3rd to 4th -rank gives mate, but it is not detected because if the pawn had moved -to the same position from the 2nd rank, ep capture would have been -legal and there would be no mate. - -150b. Note that although we try to put in e.p. availability when -writing FEN, this works only if we have the move that got us to this -position in the moveList. If we load a position from FEN, the -e.p. availability field of the FEN is lost. - -152. Generate the info file, man page, perhaps html, and perhaps even -the WinBoard help file from the same sources. Right now, -substantially the same text is duplicated in three places. This is -a huge pain in the neck. - -157. Idea: if Zippy flags some number of times in a row and keeps -getting told the opponent is not out of time (presumably due to -timestamp/timeseal), he should issue an adjourn or abort. - -160. The xboard CTRL key flashback feature is bad in Analysis mode. -Flashing back throws away the analysis. - -161. SIGINT doesn't work for local programs on Win32. There is an -equivalent, GenerateConsoleCtrlEvent(CTRL_C_EVENT), but I haven't -gotten it to work thus far. It seems that WinBoard and the chess -engine don't "have the same console"; indeed, neither has a console. - -162. Supply a non-X Zippy for Unix. Perhaps use the code from Klaus -Knopper. - -167. Alternative bitmaps loaded at runtime for WinBoard. - -169. Upload Game on file menu? This would upload the current game -moves into a scratch examined game on ICS. Could do Upload Position -too. Some code to do Upload Game was contributed, but it didn't -handle setup positions, variants, checking for proper gameMode, etc., -so I couldn't use it. - -170. Auto step every k seconds should be a general feature you can -turn on at any time, not just in LoadGame. What should GUI be? - -171. Displaying thinking in a separate window should be an option -available at all times when Show Thinking makes sense, not just in -analysis mode. It should perhaps be orthogonal to analysis mode. - -172. Should analysis window scroll instead of showing only the last -line? There could be an extra checkbox to show all chess engine -output in it. - -178. Need reliable kill for chess engine on Win32. See also 161. - -181. Some people want -sgf to save only played games, not observed and -examined games. Others like it to save them all. Make this an option? - -183. Search feature in Game List dialog [Igor Eged]. - -187. "Log session" feature for ICS window. - -193. Some users have reported xboard redraw bugs, but I have not -been able to reproduce them on the Digital Unix, Linux, or eXcursion X -servers (xboard). - -c. From Hawk: -Dragging in xboard does not work 100%. -* The dragged piece may disappear (try some fast e2-d3 movements - - this is easy to reproduce). -* The dragged piece may be placed on an illegal position (this - happens less frequently, but it _can_ be reproduced by doing the same - as above). -* In both of the above cases, the board is correct after forcing a - redraw (ie. minimizing/restoring the window) -I'm using eXodus - a win32 X server, perhaps it's buggy. [Seems that way, -or just possibly, these could be bugs that are fixed in 3.6.11beta or -3.6.12beta.] - -d. One user reports: "If you are 'holding' a piece over the square you -want to go to and that move becomes illegal but you make it anyway, -the display sometimes corrupts and a partial piece appears..sometimes -a whole piece." This was under RedHat 6.0. - -194. A few users have reported drawing problems with WinBoard. There -may be some color map problem on certain displays. I might possibly -have fixed this already; I cannot reproduce it. The common thing -seems to be black pieces changing to white. This may depend on having -customized the board colors. I suspect many of these problems are -buggy Windows drivers for particular display cards. (May be worked -around in 4.2.0 with reprocessed .bmp files.) - -a. From mulesmurf: if i log in and then move the board, it will happen -that the black [pieces] change to white. - -c. People have sent pictures where the grid didn't get redrawn. This -produces random bits in the grid area from uninitialized memory. -Could this be a resource leak? - -d. From James Van Buskirk: I did notice one problem tonight playing -against Comet under FX!32 1.2 (Comet, not winboard ran under FX!32): -for a couple of moves winboard didn't turn off the highlighting of the -square I dropped the piece on until Comet had moved. Later, the -problem fixed itself. Have other users noticed this? [No.] - -e. One user reports: Lastly, there is some sort of slight bug in the -piece dragging code, but it comes up only very occasionally (once in -500 moves?)...basically, I'm dragging, change my mind, throw the piece -of the side of the board, and instead it gets stuck not inside a -square. It's really disconcerting, this piece just sitting across -square boundaries. When you make another move, it gets cleared up and -goes back where it's supposed to. [Might be fixed in 4.0.6, but I -couldn't reproduce this, so I can't be sure.] - -f. DAV says: "When I resized the board on win 95 and made it smaller -some of the pieces turned into junk (I'm not able to give a screen -shot)." Later: "Seems to happen on the three sizes below small. -Win98 and NT seem to be ok, trying to get more win95 users to test -it." Works fine for me on Win 95... [Might have been fixed by the -cleanup of the Windows .bmp's that happened sometime before version -4.2.3] - -195. Flash Moves works at the end of every change to the board, using -some rather gross code in DrawPosition. This code should perhaps be -ripped out and the flashing done from inside AnimateMove instead. - -197. More color distinctions. Maybe allow several user-selected channels -to have their own colors. - -198. More sounds. Some possiblities: distinguish White vs. Black move -or your move vs. opponents, distinguish different kinds of -win/loss/draw/unfinished (checkmate, resignation, stalemate, other -draws, opponent disconnected, etc.), game ends when you aren't playing -and/or aren't in ICS mode, differentiate amongst requests (draw offer, -etc.), **check, got new offboard piece (by piece type?), opponent got -new offboard piece (ditto), arrival notification, "* who has an -adjourned game with you," draw declined, moretime received. - -199. Maybe put user names instead of White and Black on clocks, or -user names above or below clocks in a smaller font. - -200. I don't like these ideas, but some people do: -a. Highlight all of the squares that the piece you are moving can go to. -b. Clicking on the piece moves it immediately if it has only one legal move. -c. Allow clicking on the destination, then the source. -d. I guess highlight the pieces that can go to that destination. -e. Clicking on a destination that only one piece can go to moves it there. - -201. mulesmurf: piece counter so we know exactly the score - -202. mulesmurf: ziics pieces, board along with color intensity - -204. Hawk at Fri May 15, 12:58 CDT 1998: a minor thing with xboard: -the coords disappear while dragging from a square with coords on it. -[They come back when the drag is finished.] - -208. WinBoard sometimes comes up with one of the menu bar items grayed -out (one that should not be). I've seen this on different entries at -different times. - -213. Maybe add Silence to sound menu -- parallel to Monochrome on -color menus. - -214. Maybe easier startup dialog customize: -a. Buttons to add/delete/move(?) current string to/from/within current list. -b. Or maybe auto-add newly typed/edited strings up to some limit. -c. Also a drop-down for Additional Options. - -216. Maybe shorten menu names in WinBoard to one char if and only if -the menu bar would wrap with longer names. - -**217. Easier way to add engines to the WinBoard startup dialog. -Ideally, an engine author should be able to supply a simple -configuration file or script that installs his engine. "*.wbe" idea. - -218. Some folks would like Highlight Last Move to apply only to -opponent's moves. - -219. From Jorge Monasterio: Support automatic game starts when in -tournament. In other words, do that "match bigolfish mann 5 0 black" -automatically based on the info sent from mamer. [I would need to -play in some tournaments before I could evaluate this idea or fill in -the details.] - -222. Could support time handicaps. - -223. Bug: very long comments cause buffer overflow. Need to revamp -the way comments are parsed and returned from parser.l to fix this. - -224. Larry Parrish requests: In an automated multi-games match I would -like to load the n-th game from the file for the n-th game of the -match. [That is, when -mg and -lgf or -lpf are used together without --lgi or -lpi.] - -225. From pulp: another bug (maybe with the Microsoft RichEdit -control) I've observed is when you flood the edit control it loses the -bottom. Eg. "games" will scroll along then start slipping until by -the end of the list you are really looking at the middle of the list -and have to manually scroll back to the bottom. [May be fixed?] - -225a. Resizing the WinBoard ICS interaction window can cause the cursor -to be off the screen, which stops scrolling. - -226. From pulp: Clipboard persistence. If I copy text, then the text -disappears when Winboard is closed. Eg.: Log in, highlight and copy a -web page address, close, go to browser, paste *nothing*. [How does -one do this in Windows?] - -227a. In engine-engine matches, an engine that crashes should lose and -perhaps get restarted for the next game. - -227b. Maybe when an engine playing in Zippy mode exhibits a bug, we -should do a little more too. Perhaps "say Sorry, the engine seems to -have a bug", resign or abort, and maybe force an engine restart for the -next game. - -**227c. We should also detect and stop the game on false mate or draw -claims, rejecting a legal move, or (maybe) missed claims of mate or -draw. Note that draw claims require checking for repetition, 50 move -rule, and insufficient material as well as stalemate, so this is -nontrivial. - -228. RichEdit bug: sometimes a line gets indented as if it were -wrapped when it should be flush left. - -**229. Support for sending moves from the partner's game to a bughouse -engine. Ben Dean-Kanemura submitted support that works without adding -general multi-game support, by relaying the moves without processing -them. Should also send holding updates and clock times; not sure if -Ben's code does that. Needs to be a new "feature" command option, and -to be documented in engine-intf.html, removing the note that this may -be done in the future. - -231. See Ed Collins's WinBoard bug list on his pages: - -231b. If you save an ICS examined game to disk as a PGN file, it -doesn't report the end-of-game result in both the header and at the -end of the notation. [It doesn't get this info from the server, but -maybe there is a way it could.] - -232. From Ed Collins's WinBoard wish list on his pages: - -232b. Multiple winboard.ini files for different moods, loadable from -inside the program. - -232c. Fix bug where fics% prompt is not suppressed when using -timeseal. This has something to do with a timeseal deficiency whose -details I've forgotten, but there must be some way to fix it. - -232e. When using the server's "examine" mode to examine a previously -played game, have the game clocks display the time that each player -currently had after each move was made. - -232f. [Not from Ed] Deal with ICC game relays where an "examined" game -is supposed to have running clocks. Not sure if this is still an issue. - -232g. Customizable on-screen buttons [i.e., toolbar or toolbox]. - -232h. Customizable function keys. Currently xboard can bind a key to -any built-in xboard function. Should extend this to WinBoard, and -also (in both programs) support sending an arbitrary ICS command when -button is pressed. - -233. See if anything from LightningRulez should be added. Premove is -now included (from Winboard Plus), but maybe there are other useful -things too. - -241. There might still be bugs in xboard and/or winboard when moves -come in from ICS during drag animation, though I can't reproduce them. -DAV saw the opponent's piece fail to be erased from the source square, if -I understood his message right. [DAV says this still exists in 4.2.5. -I think bug 426 is a duplicate. The description is clearer there.] - -242. User-defined "looking_at" patterns and actions. This is hard to -bombproof. - -**243. "Rematch" shortcut in /cp mode. - -246. Maybe auto-close comment window when user goes to the next move. -Whether this is desirable really depends on the content of the -comment, but maybe it is rare to have a long comment that discusses -the plan several moves ahead and should be left up. - -248. Would be nice to support retract move after checkmate or draw (etc.). - -254. Different tray icons for interaction window vs. board (suggestion -from FICS). - -256. One user asked for "delete" option in game lists. This requires -rewriting the file to close up the hole, so it's pretty heavyweight. -Next people will be asking for move, sort, search, and other game -database functionality; ugh. - -**257. Would be nice to find a way to safely implement "retract move" -when the engine is still on move. (using ping/pong) - -**260. General mechanism where engine can declare engine properties that -the user can frob and xboard/winboard will put up a simple dialog to -allow user to view and set them. See email message "special engine -commands" from Steffen Jakob: - - From: "Steffen A. Jakob" - To: mann@xxx - Cc: chess-engines@xxx - Subject: special engine commands - Date: Fri, 26 Feb 1999 09:12:26 +0100 - - Hi Tim! - - Here comes a summary of our ICC chat (I cc this mail to the - list... maybe other engine programmers can give some feedback if - they find this feature useful): - - Please add a protocol command which enables the engine to tell - xboard its special commands. Maybe a set of (label, command string) - pairs would be useful. Then create a menu for these commands. It - could look like this (that's what I would like to see for Hossa): - - engine->interface: - ------------------ - command "Reset the log file" "reset log" - command "Save Diagram as PNG" "png dia.png" - command "Disable Book" "book off" - command "Show Evaluation details" "eval" - command "Show Search statistics" "stat" - - etc. - - While typing this list I realized that an additional parameter like - this would be needed/nice (of course you can think of many more - improvements): - - command "Save Diagram as PNG" "png %s" 1 - - "1" tells xboard to ask for an additional parameter (here: filename) - which will replace the "%s" in the command string. - -261. Check that "quit" is sent to engine properly if ICS connection -fails to open due to error from timestamp/timeseal. "wzrdking" had a -case where it didn't. Timetamp had failed with "Host name not found -by name server" (because in fact there was no internet connection, arrgh). - -273. Displaying the names of the players from a PGN file in the header -of the window does not work if there is only one game in the file. -The filename is shown instead. (This was intentional, but maybe a -poor idea.) - -274. Command to go to move number N, with entry box for N. - -276. Make grid optional in winboard? Note that the highlight options -don't work without it. - -276a. Make color of grid an option, instead of always black. - -277. Flooding xboard -zt + timestamp with tells hangs timestamp after -a while. xboard is blocked writing to the timestamp pipe. timestamp -is in an unknown state, not reading from the pipe nor responding to -pings. (Confirmed with the software running on milwaukee, Red Hat -5.2) - -278. Flooding winboard -zt + timestamp with tells hangs winboard after -a while. timestamp still responds to pings. This reported by -nudnick; I haven't tried to reproduce it yet. He also says that -windows explorer then crashed when he tried to close winboard. - -279. Idea from an anonymous ICSer: piece drop menu could have images, -not words. [Or maybe both?] Also might be easier to select -accurately from it if horizontally arranged, or in a 3x2 grid. - -284. dxterm hangs when it receives the escape sequence that sets the -title bar on xterm. I think some other xterm substitutes do too. - -**287. WinBoard can look funny if you are using themes because it -unconditionally uses white for certain colors instead of the default -background. - -289. Merge WinBoard support for the Henter-Joyce JAWS screen reader. -Source code (zip file containing modified WinBoard 4.0.2 source) is at -ftp://ftp.henter-joyce.com/users/hj/winboard/WinboardSource.exe. It -would be interesting to make this work with festival (free Unix speech -synth) or other speech synthesizers too. - -290. Could have limited voice output without a speech synthesizer by playing -wav files for piece names and square numbers. Idea suggested by Hannu -Wegner. - -291. Would be great to support DGT, Novag Universal chessboard, etc. -I'm not likely to fork out the cash to buy either for testing, however. -Note users have done various things along these lines. - -292. When an engine is analyzing, it would be cool to have a way to -automatically play out its current PV (or even older ones) on a board. -These PVs could be saved as variations when we have variation support. - -297. Windows users expect all programs to have a Print function, even -though there are other ways to print. Useful items to make printable: -PGN game scores (which are plain text, of course), maybe FEN position -diagrams, maybe graphical position diagrams (i.e., same as pressing -the "Print Screen" function key and printing the clipboard). - -298. One user suggests that automatic move stepping should not start -until you press OK in the tags window. This could be a good idea, but -I think I'd rather have automatic stepping never start until you press -a "play" button on the main window, and have that button always -available, not just when loading a game from a file. - -299. One user suggested being able to jump to a specific move by -typing its number (followed by ... if it's to be black's move). - -300. Can I put a hyperlink (that will invoke a browser) directly onto -the WinBoard Help menu or in the Help file? Useful to take users to -my chess page. - -302. On NT, check if the board is redrawn properly when exiting from -the screen saver. - -308. There is some tricky way to maximize the WinBoard board window, -although there isn't supposed to be. Maybe prevent this, or else -legalize it and make sure something reasonable looking happens. -Note: the trick is to select one of the "tile" options on the Windows -task bar. Not clear what should happen in this case. - -309. Avoid endlessly flagging every second when opponent is lagged out -and autoflag is on. Automatically courtesy-adjourn (or abort if -unrated) instead, at least if in zippy mode. - -310. Weird bug: the last character of a FICS output can appear on the -next line, *after* the fics% prompt, according to one user. I might -have seen something like this myself once too. - -314. One person wanted his engine to see tells when running in Zippy -mode. I doubt this is generally useful, so I haven't added the code I -wrote for him. (I can query for "tellfrom" in my mail file to find -it.) - -314a. Another person wants his computer account to relay tells to his -personal account. - -319. One user would like to be able to reload a PGN file and resume a -game against an engine as if after an adjournment, with the clocks -(and moves to next time control) restored as they were when the game -was saved. - -320. Display ratings of ICS players in the title bar (if there is room, -presumably), or somewhere, anyway. - -321. Maybe refresh the EditTags window if the gameInfo changes and the -window is up. (WinBoard now does this when entering MachineWhite, -MachineBlack, or TwoMachines mode -- not very general. From Winboard Plus.) - -322. One user requested that Zippy games use the engine name instead -of the ICS handle in the PGN tags, as he uses multiple engines on his -account. (My response was "I'd say it should give both"; not sure just -how to do that, though.) - -324. I'm told that Blitzin supports animated dragging without holding -down the mouse button and that this is "much better" and I should try -it too. As yet I haven't. - -326. Full support for variants and variant-capable engines in all -modes, not just ICS mode. Here are some items still needed. Some if -not all should probably wait for a rewrite, not be added to the -current code base. - -326a. Menu to let you see and change the current variant type, not -just a command-line argument as at present. - -326b. crazyhouse: Keep track of holdings and display them, keep track -of what onboard pieces are promoted so they will revert if captured, -understand offboard interposition to stop mate. - -326bb. One user asked for a Czech variant of crazyhouse where pawns are -given to the opponent when they reach the 8th rank (after capturing, if -it's a capture) instead of promoting. - -326c. bughouse: Features in 326a would be helpful for editing one board -of a bughouse game, and getting mate indication right even in ICS mode. -In the longer term, could understand BPGN, support editing two-board games. - -326d. wildcastle: Allow wildcastle castling only when playing this variant! -Maybe support automatic shuffling for local play. - -326e. nocastle: Maybe support automatic shuffling for local play. -Note that several types of ICS shuffle chess fall under this variant. -Note that this isn't really a variant, since if we kept proper track -of castling rights and used "setboard FEN" or the ChessBase extension -of "edit" to set them, it could be treated as normal chess with a -different starting position. - -326f. fischerandom: Maybe support automatic shuffling for local play. -Support castling. Currently, you can probably play Fischer Random -successfully on ICS by typing castling moves into the ICS Interaction -window, but they will not be animated correctly, and saved games will -not be loaded correctly if castling occurs. FR castling is -problematic because the move cannot be specified by the starting and -ending coordinates of the king; in some starting positions there is a -legal non-castling move that moves the king the same way. This -violates a deeply ingrained assumption in the implementation. It also -breaks the GUI -- you need more than just dragging the king two -squares to indicate castling. (Note: In FR notation, O-O is h-side -castling, O-O-O is a-side. See "help fr_rules" and "help fr" on FICS -for rules.) - -326g. kriegspiel: Could give some thought to how to support a -kriegspiel engine. I doubt anyone will ever write one, though. - -326h. losers: Know that captures are mandatory. Understand the win -condition. - -326i. suicide: Know that captures are mandatory. Understand the win/draw -condition. - -326j. giveaway: Know that captures are mandatory. Understand the win -condition. - -326k. atomic: Understand the win condition. - -326l. 3check: Understand the win condition -- ugh, have to keep a -check counter! - -327. Option to set the coord font color (or something) to make sure -there is always enough contrast with the square colors. - -329. Bernhard Maerz would like a command line option to choose the PGN -player name for an engine, overriding the default of generating the -name from the engine filename. This is for his ChessCall program. - -331. Maybe the local autoflag menu option should *also* turn -server-side autoflag on/off by sending an appropriate set command. - -**332. Bug: Autoflag for local engine/engine or engine/human matches -does not recognize that having your flag fall when your opponent has -insufficient mating material is a draw. It counts the flag fall as a -loss. - -336. Of course lots of people ask for a graphical seek window. - -339. There are probably some incompatibilities with chess.net, as they -have made a few gratuitous changes to message formats from the FICS -code base they started with, and perhaps they've added features since -without duplicating the syntax closely enough. In particular it's -been reported that Zippy does not correctly send "partner" and -"variant" commands to bughouse engines on chess.net. Also, I doubt -colorization works. As a matter of personal choice I do not spend any -of my time supporting chess.net, but if others want to donate patches -that allow chess.net to be supported without breaking the support for -ICC and FICS, I am willing to install them. - -342. Analysis mode automatically turns on the Show Thinking option; -the user must then turn it off manually after leaving analysis mode if -he doesn't want it. - -343. Would be nice to change xboard keyboard shortcuts to not be plain -letters, make the new shortcuts work also in the ICS input box, and -make typing plain letters to the board redirect to the ICS input box -or the xterm. Might want to change/remove the Ctrl binding at that time. - -344. One user suggested having a way to save a position as a character -string that would produce a board diagram when rendered in MS Word in -a chess font. Perhaps there is already a nice standalone tool for -this, though? - -346. Could use a better way to pick default size. Now we choose the -largest that fits on the screen, which is typically too big. Not too -bad for WinBoard, but painful for xboard since it can't be resized -after starting. - -349. Check that "quit" definitely makes it to the engine before exit, -if you exit via the File menu while a match is running. Uli Tuerke -reported that maybe it sometimes doesn't (in WinBoard 4.0.5). - -352. Perhaps recognize the ANSI escape sequence that FICS sends out -for the cls command and clear the ICS interaction window. - -**353. WinBoard can crash when the engine outputs very long PV lines -(or debug output that looks like a PV). In particular, lines that -start with 4 or more blanks following a "thinking" output line are -treated as continuation lines, and get concatenated into a 512-byte -buffer with no checking for overflow. Generally we need a lot more -care to avoid buffer overflows inside both xboard and WinBoard. -[Note: changed the buffers to be 5120 bytes as a band-aid.] - -Guido Flohr expands on this bug: - - The problem is easy to reproduce, simply write a program/script that - spits out lines of more than 8192 bytes (INPUT_SOURCE_BUF_SIZE) and - connect it as a chess engine to xboard. No surprise, xboard cannot - handle such long lines, but the resulting behavior is really weird: - - The program enters DoInputCallback() in xboard.c, reads the first - 8192 bytes, searches for a linefeed in vain, then closes its eyes, - sets the member "unused" of the InputSource to is->buf + 8192 and - waits for more input although the buffer is already full. - - The next time it calls the same function, is->unused is exactly - these 8192 bytes away from is->buf, xboard computes the amount of - bytes to read in this round, which sums up to 0 nothing. It then - calls read(2) with a bufsize argument of 0, and then assumes end - of file when the kernel call returns 0 (which is the documented - behavior). - - For local engines, we now jump into backend.c, ReceiveFromProgram(), - and this function reports that the engine has exited unexpectedly. - In fact the engine is still very vivid, which is good, because in - spite of xboard's assumption that its child has died, it still - sends "force", "ping N", and "quit" to the false dead. If the child - was really dead, the alert boxes "error writing to ... engine" - would hide the first alert box "... has exited unexpectedly". - - From xboard's side, it is not exactly clean to call read(2) with - a zero bufsize argument. In my opinion, a sane solution would be - to eat the INPUT_SOURCE_BUF_SIZE bytes, and when they contain no - linefeed, print the partial line to standard error (in debug mode) - and report something like »Maximum line size exceeded« (and then - kill the engine). - -**354. We currently let the user go directly from TwoMachines mode to -various other modes like MachineWhite or MachineBlack. This may -confuse the engine that was on move, since we don't have a way to -force it to stop before it makes the move it was thinking about. -(use ping/pong to know when the engine has stopped) - -355. Idea from LiveAndLetDie: have Zippy specially log games where it -loses to a substantially lower-rated player. Such a game could -indicate an xboard bug, engine bug, or perhaps a computer-using -cheater. - -356. Colorization for FICS tourney tells? They look like this (ugh): -:DChessmaster [tourney #4]: -:hi - -357. A few reports of WinBoard pieces being drawn incorrectly at -certain sizes. I haven't reproduced this. [Maybe worked around in -4.2.0. Or is/was this the same as 194f? I don't recall the details.] - -358. One report of WinBoard colorization not working, even after -restart, until the computer was rebooted. Weird. - -362. Running a very long automated match (/mg option) seems to crash -WinBoard eventually, usually after 300 to 500 games, sometimes later. -Reported by Josh Haglund. Gets a "WINBOARD caused an invalid page -fault in module KERNEL32.DLL" dialog box from Windows. See messages -from Josh for examples of the registers and stack dump. - -362a. A few people have reported WinBoard crashing upon exit. - -363. Maybe xboard should not set the window geometry for new popups, -or at least not the position. The default positions aren't very good, -and setting them programmatically keeps knowledgeable X users from -customizing the positions with X resources. - -366. Feature to let an engine observe an ICS game and run analysis -mode on the moves, perhaps whispering or channel-telling the results. -It's a little too easy to cheat with this feature or I might have -added it long ago. - -369. Optionally send a periodic keepalive command to ICS. Can be -used to defeat autologout, so should probably not be on by default. -Also should be useful to help Zippy notice more reliably when its -connection has hung, so that it can exit and a shell script (batch -file) can restart it. - -370. One user requested a local noplay list for his computer player -because the FICS limit of 50 is too small. He wants several hundred so -that he can noplay everyone who disconnects in a lost position. - -374. Would be good to have a way to change engines without restarting -the interface. - -376. WinBoard is said to crash or "lock up" when loading enormous PGN -files, like a 98 MB file that comes with (??) Crafty. Win32 (at least -in the Win95 lineage) has a limit of 32,767 items in a list box -widget. That might explain this problem. - -376a. xboard exceeds limits in X and/or Xaw if a PGN file has too many -games. (The virtual window that the list box can scroll through -becomes too many pixels high.) This has odd effects; the window -height of the game list seems to get reduced mod 2^16 or something. -Maybe detect this and do something nicer about it, like stop loading -when the window is full and pop up a warning. - -378. One Solaris user didn't have the "strip" program, so the -install-sh script used by xboard "make install" failed. Check for -this? Yuck. - -381. "Illegal move: post" is apparently not handled. Should it be? - -382. The UI for entering Training mode is a bit obscure: you must -first select Load Game, then Training becomes enabled in the upper (!) -part of the Mode menu and you can select it. You can then select it -again to toggle it off. This mode is something like Analyze File -(which has a problematic UI too, but somewhat less so); both should -probably use a similar UI style. I consider disabling the -step-forward button to be overkill, and I think you need to manually -turn off auto-step when loading a game (?). One user expected it to -work with .epd files that give a position and a recommended move. -That seems reasonable, but doing it would require quite different code -from the current pgn-game training mode. - -383. Premove piece drop for bughouse/crazyhouse. - -384. Pre-first-move for xboard. I don't much like the fill-in field -method used in winboard. Maybe allow a move to be made for white -before the game starts (in both xboard and winboard). If you get -black, it's cancelled. Black can already premove after the game -starts, during white's first move think time, so I don't see that a -black pre-first-move is needed. - -**387. Have winboard draw opaque details on black pieces too. -Hmm, this should probably be optional, and the detail colors should -be selectable instead of hardwired to the opposite piece color. - -**387a. Add "no piece border" option to WinBoard. See code from -Robert Jurjevic sent 4/9/2001. - -391. I have a bug report from Stefan Zipproth about engines sometimes -failing to make their first move in an engine-engine match. So far I -can't reproduce it. This might be fixed by the Sleep(500) voodoo in 4.2.4. - -394. See about tightening matching for the "request" event. Right now -it matches on help files a bit too often. (e.g. FICS "help sr_info") -**Also clarify documentation on what the request event is. - -396. xboard's -size defaulting code for bitmaps unfortunately always -picks a size from the built-in list, even if you gave the --bitmapDirectory option. It would be more user-friendly to have some -extra code that lists the directory and considers exactly the sizes -that are found there, as the pixmap code does. - -397. It would be nice to be able to configure xboard with bitmap -pieces as the default without having to disable xpm support entirely. -This should be a pretty simple mod to configure.in (and xboard.c). - -397a. It would be very nice to be able to compile in both the bitmap -and pixmap pieces. This would allow us to automatically switch to bitmap -pieces in -mono mode, including when -mono mode was automatically selected -because too few colors were available. - -398. It would be nice to have the new .xpm pieces in .xim format too, -since I restrained myself from ripping out the .xim support. - -399. It would be nice to have a configure option to change the -directory where the default piece set is taken from. Slightly nicer -than having to rename the desired directory to "bitmaps" or "pixmaps" -as at present. - -400. TypeinMove should be grayed in ICS mode, or should raise the -console window, or something. - -402. Internationalization. It probably isn't practical to retrofit -this into the current code base. - -409. One user requested a way to put a time delay in the middle of -sending zippyGameEnd commands. This would (for example) let the -computer do a seek only if its opponent doesn't accept a rematch -within 10 seconds. Nontrivial because Zippy has to continue to listen -to input during the delay; it can't simply call sleep(). Maybe -ScheduleDelayedEvent is OK, but I think it may already be in use in -this situation, and it only supports one event at a time. - -411. Add zippyKibitzThinking and zippyWhisperThinking features? - -412. Maybe optimize setting the move list in the case where only the -current move number changes; avoid slow XawListChange. - -**413. Add movelist window to WinBoard too. Wilkin Ng submitted a -patch that I believe includes this; need to integrate and test it. - -**415. It was suggested that a few common options that many chess -engines need be promoted to xboard/WinBoard options so that the user -can set them from the GUI in a uniform way. In particular: hash size, -directory name for endgame tables. - -**416. Can we avoid dying when xboard is in 8-bit mode, pixmap pieces -are chosen (by default), and we can't get enough colors? Ugh. - -**419. It was suggested that stat01 be generated/accepted during normal -play with "post" on, not just during analysis mode. This would need -to be a "feature" command option. - -422. Track FICS change to details of how timeseal works; is this -implemented at FICS yet? - -423. When locally stepping through an ICS game that is over, it would -be nice to display the historical clock times at each move. - -424. DAV at Thu Nov 9, 01:20 CST 2000: any chance on winboard/xboard -of a key press and a move executing draw ? that way you at least -have a chance of claiming a draw in 1 0. - -**426. DAV says, in xboard: If you are not on clock and you hover a -piece over a square where your opponent then moves to and then move -the piece away the piece the opp moved or part of it has not been -drawn. [Duplicate of bug 241?] - -429a. Check whether more support is needed for WinBoard to work with -scroll wheel mice in the absence of special mouse drivers that generate -scroll bar events directly. - -431. People find Analyze File confusing; they think it should do -Crafty's relatively new Annotate function. Also, it's somewhat -superfluous now that you can enter Analysis mode and then load the -file, or vice versa. - -**436. WinBoard is said to crash if started while WinBoard.debug is -being tail -f'ed. - -**441. Can I prevent an undo after new in the odd case where it can -happen now? See mail from Bob Hyatt. - -450. Suggested: an option to let an engine keep pondering while an ICC -game is adjourned. This seems a bit difficult. - -451. Suggested: support SuperMamer messages on FICS, aka qtells. See -http://www.freechess.org/SuperMamer/parsing.html. - -452. Suggested: a way to say "prompt for the password" in a login.ini file. -See 510 instead. - -**454. Add a way to claim a draw together with making a move, as can -be needed for draw by repetition (creating the 3rd repetition with the -move) and by the 50 move rule (the move is the 50th). Add to -protocol, and implement using the individual methods on FICS and ICC. -Need to be sure it's really a FICS that has the feature (somehow). - -455. Suggested: Add the epdkit commands such as epdpfga to the -protocol, since Crafty and "many" (which?) other engines include the -epdkit. - -**456. Bob Hyatt suggests: "feature match=1" which says "send match -requests to the engine and let it decide on who to play next". -I.e., maybe send an abbreviated but fixed format message like this: -match time inc R/U. The engine would use "tellics -accept " to accept. Add as feature to protover 3. - -**457. Standardize on the meaning of scores (e.g. in stat01 responses). -Is positive good for white or good for the engine? Do certain scores -mean forced (tablebase) draw, or forced mate in N? This should align -with the EPD spec. Maybe a feature command should indicate that the -engine matches this part of the spec, but then again, it's not clear -what we can do about it if the engine doesn't give that command, so -maybe there is no point. See discussion on chess-engines list. - -458. Bug: xboard will try to use an engine to play normal chess even -if the engine has given the feature variant command and did not -include "normal" on the list. Crafty 18.1 inadvertently relies on -this bug, so it probably can't be fixed right away. - -**468. Need to look at Wilkin Ng's contributions! - -**469. Look at Zippy's behavior if the operator observes, follows, -examines, etc. Some bugs in this area have been fixed, but it's -received very little testing, as Zippy was never meant to be used that -way. Noted later: Examining in -zp mode definitely has problems. If -you go forward one move at a time, moves are sent to the engine -correctly. If you go backward one move, "undo" is not sent to engine -as it needs to be. Going forward or back by more than one move at a -time needs to be looked at too. - -**471. Look at 3/17/2001 message from Laszlo Vecsey about crashes when -exiting on Win ME while data is coming in from the server. - -**473. Visual low-time indicator. See patch in Brian Mays message of -3/27/2001. - -**474. Crash reported when sending certain 8-bit characters through -WinBoard (180, 167, others). I'm almost certain this is a FICS -timeseal issue and nothing to do with WinBoard itself. - -**475. Look at Laszlo Vecsey's mousewheel patch of 4/10/2001. - -476. For some reason (I guess some GUI supports them), most WinBoard -engines now have a graphical logo, 100x50 pixels in Windows .bmp -format. It's been requested that WinBoard have a place to show the -logo. - -477. Implement the "book engine" idea I proposed in the protover 3 -discussions. Some folks have offered to write them (e.g., Bruce -Morland). - -478. Recognize URLs in the WinBoard ics interaction window and make -them work as hyperlinks (firing up your browser). - -**479. Possibly use Scott Gasch's 7 May 2001 patch to delay accepting -challenges when ping > pong instead of declining them. Bug: if you -get more than one challenge, Scott's patch forgets about all but the -last one. If that guy then withdraws his challenge, the others are -left in limbo, neither accepted nor declined. I suppose we could -decline challenges when there is one waiting. However, if we make the -change to optionally pass match requests through to the engine, Bruce -Moreland would like us to queue up challenges and pass them all on. - -481. 8 May 2001, Bob Hyatt "matchscore" feature suggestion could go in -protover 3: "matchscore A B C D E says we are in a match, this is game -A of B games. The current match score is I have won C, drawn D, and -lost E games in this match. This would give the engine a chance to -adjust the draw score as needed to try to win the match rather than -just trying to win a single game." - -**482. Suggestion from Bruce Moreland: if the user goes into ICS -examine mode while -zp is active, and the engine supports analyze, -then put it into analyze mode and let it work on the examined game. I -guess this could work for observed games too. Should it be optional -or always done? - -483. It would be nice if the KingShine 3D board could be integrated -as an alternative xboard GUI rendering. - -**484. Add -feature1 and -feature2 options to pretend the engine sent -us those feature commands. Useful kludge for certain buggy engines. - -485. Add "reset" to protover 3. (Clear the hash tables and other such -info; used to put the engine into a known state before running a -test/benchmark position.) - -486. Other protover 3 features listed in my 6/21/2001 message to -chess-engines list. Write a full protover 3 draft for comment. - -487. Adjudicate non-ICS games as a draw when there is insufficient -mating material on both sides, especially engine/engine games. Well, -maybe. I argued against this in a 6/26/2001 message to chess-engines. - -487a. Probably also adjudicate when we detect checkmate or stalemate, -before bothering to notice whether the engine detected this. - -487b. Note: Do not adjudicate 50 move rule or 3x repetition since those -must be claimed by a player -- at least not by default. It would be -OK to have a flag to do this someday when we are smart enough to -notice it. Would definitely be good to be smart enough to notice an -incorrect draw claim by an engine. - -487c. Another request: allow the operator to adjudicate engine/engine games. - -488. Option to suppress tags popup on game load? This has been -requested a few times, and I received one partial implementation (not -enough to be useful). Needs to be on the options menu, etc. Note -conflict with 298 above. - -488a. Also option to suppress comment popups. - -489. Maybe have Zippy use xtell for tells to avoid redefining "." if -the operator is also doing tells. Do all ICSes support xtell, though? - -490. Bruce Moreland request: a way to turn Zippy auto-accept on and -off dynamically. - -491. Bruce Moreland request: a defined way to turn on/off PV (etc.) -kibitzing from the engine dynamically. I had thought it would be -better to make the GUI able to relay thinking output as kibitzing on -its own (and be able to turn this on/off dynamically), but Bruce -points out that what engine authors want to send as kibitzing output -usually includes more than the PV thinking output. - -492. One user reports that GNU Chess 5 crashes if you start a game, -play far enough to get GNU Chess out of book, select Reset, and play -e3 in the new game. This is probably a GNU Chess 5.00 bug, unrelated -to WinBoard. Can't reproduce on Linux; didn't try yet on Windows. -Need to see if 5.02 fixes it. - -493. DAV suggests stripping off first arguments that are obviously -not the name of the engine when trying to parse out the engine name -from its command line -- things like nice, nohup, sh, csh, bash, etc. -Ugh, but I suppose it would be helpful sometimes. - -494. Internationalization. A couple of people have done (or told me -they were doing) partial conversions of WinBoard to German or Spanish -by manually translating the messages. I think it would be much better -(but a big job) to use GNU gettext. I haven't looked into the details -of that at all. - -495. JamesBaud points out that FEN is not sufficient to correctly -represent a crazyhouse position (or bughouse, for that matter), -because it does not distinguish promoted pawns that will revert when -captured from real pieces. ICS style 12 also does not give us this -information. I really don't know what I could do about this -- take -the lead in proposing an extension to FEN and to style 12 with new -piece letters, I suppose. I don't really have time or motivation for -that. If you always use PGN, not FEN, to save Crazyhouse, that works -around the problem. - -**496. DAV sent some code to save a screen shot in xboard. Look at -merging this in. - -**497. Igor Eged reports: I make a move on opponents time using -premove. Right in the time I am holding another piece in case of -unexpected check that I can have other possibility. But then the piece -hangs in the void and its invalid move, what means often loss in 1 0 -lightning. - -498. It would be nice for Zippy to be able to play ICC wild 20 and 21 -(the types where loadgame is allowed). Presumably there would have to -be an option to either send the loadgame command with a specified -position, or to deal with an opponent sending it. I'm not sure how -this should work exactly, or how to prevent opponents from cheating in -various ways. - -499. It would be nice for Zippy to be able to switch amongst several -different engines depending on which variant type is being played. - -500. It would be nice if Zippy could have an option to accept -takebacks. Hmmm, also, the operator might want to manually offer a -takeback; it would be good if that worked. - -501. People would like to be able to add more bot functionality to -Zippy without C programming. I don't have any ideas on how to do that. - -502. One user requests the ability to have a game list file open for -more than one PGN file at a time. - -503. We don't do protover 2 feature negotiation properly when -restarting an engine due to -xreuse mode. The timeout and done=0/1 -features don't work on the restart; instead we basically assume that -all the features will be the same as last time and that the engine -will be ready to accept commands immediately. This probably doesn't -cause a lot of problems, but if you try to replace the engine with one -that sets different features, the changes might not be noticed before -the first move, and the defaults will be the values from the old -engine, not the documented defaults. Also, if the engine takes time -to initialize and wants us to wait to send commands until it says -done=1, we fail to wait. However, we do send commands in the right -order and use ping, so most engines should work fine. - -506. One user wants a board size even smaller than Tiny. - -507. Suggested: have the cursor change to a gripping hand while moving -pieces. Currently in WinBoard it's always an arrow, while in xboard -it's always a hand with pointing finger while over the board and an -arrow elsewhere. - -508. It would be nice to make -xclock work with -ics, just for -orthogonality, though it's not terribly useful. - -509. It would be nice to make -clock work with -st. Perhaps each -player's clock should start with the specified time on each move and -count down until he moves. - -**510. A FICS service rep tells me that many users expect an autologin -feature in winboard (other than the non-user-friendly login.ini file). -Seems easy enough to add such a thing. - -512. Some users dislike the clocks counting in tenths when below 10 -seconds, as it's distracting, and would like this to be configurable. -(From the Debian bug tracking system.) - -513. Perhaps have Alt+P and Alt+C as synonyms for Pause in WinBoard, -since the P or C on the button makes it look like that should be the -shortcut. I suppose Alt+< and Alt+>, and the same with Shift for << -and >>, would also be a good idea. Oops, but Alt+C is already -CopyGame, so maybe this is a bad idea. - -514. Gian-Carlo Pascutto reports: "when pasting a FEN/EPD position -into WinBoard, and selecting analysis mode, the engine analyses the -starting position instead of the pasted one. Re-pasting fixes this." - -515. Troy Edwards suggests: "It would be nice to have the option to -'wrap text' in the comment window." - -516. DAV says: "FICS now supports the setting and the making clocks -tick using unpause/pause in examine mode. It seems either the clocks -don't tick or are not present when using xboard. Is it possible to -change the policy and base things upon the clock is paused flag in -style 12?" - -517. Clarify in engine-intf.html that "sd" is an extra dumbing-down -feature, not a time control. Some text: - -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 -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. - -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. - -518. Warn in doc that -initString is a dangerous feature. Also move -doc of dalogs for sending commands directly to the engine out of the -protocol spec and into the man page and help file, but warn they are -dangerous too. - -519. In engine-intf.html, change "st" description to not use the word -"exact", which is misleading. Make sure it says this is the maximum -time per move (and does not accumulate). - -520. Check whether Alt+C (CopyGame) works in XP. One user says it -gives an error message. - -522. engine-intf.html should really be rewritten to describe the -protocol as a state machine (on each end), with every command -precisely defined as to what it does in each state (including perhaps -being illegal). - -523. Figure out what, if anything, to do with the FICS "iset singleboard". -I lean toward not bothering to set it, as it only disables functionality, -but maybe I'm confused. - -524. theblob at Mon Mar 4, 23:23 PST 2002: it'd be nice in the xboard -interaction window if control-w and control-u respectively erased the -line and word, even in a Windows environment. At least, I think it'd -be nice. - -525. Support a 64-bit node counter in analysis mode when compiled with -something that has 64-bit integer support. Both gcc and msvc++ have -this, though under different names. - -526. "-initialMode analysis -lgf -" doesn't get the engine into -analysis mode properly. "-initialMode analyzeFile" is a workaround, -but bug should be fixed. - -527. Clarify ICS.ini more in the doc, if possible. Some sample words: -> You should create this file in -> WinBoard's directory (usually C:\Program Files\WinBoard) using a plain -> text editor such as Notepad. Make sure that Notepad doesn't decide to -> call the file ICS.ini.txt for you -- you may have to select "All -> Files" instead of "Text Files" in the Notepad save dialog. -> -> The file is simply sent to the chess server, just as if you had typed it. -> So if your username is foo and password is bar, the file would look -> like what is between ==== below, without the ===='s: -> -> ==== -> foo -> bar -> iset movecase 1 -> ==== - -528. Check on updates/revisions to PGN from Steven Edwards and others. -Any support needed? - -529. Protover 3 needs a prefix character that says "this is debug -output" and prevents the GUI from parsing that line (say ";"). - -530. The undocumented (?) checking for rsh error messages tripped up -one engine author who had a "not found" in a message. Tighten this -up. - -531. Do we always wait for pongs to catch up with pings before -starting the engine's clock? I suppose we should. - -532. On FICS the clock does not start until after the first move has -been made. So perhaps we don't need the "not ready, try again soon" -response from Zippy there. What if Zippy is black, does black's clock -also not start until he makes his first move? - -533. theblob at Mon Jun 24, 20:05 PDT 2002: here's a suggestion for -xboard -- give priority to fitting in amounts of material in the title -bar, and truncate names instead, e.g., use "tyrionsAp...(50) vs. woden -(51)" rather than "TyrionsApprentice (50) vs. woden..." -- it's much -more important to see the material than the full names, especially -when you're playing. - -534. Steffen Jakob reports: "I use xboard 4.2.6. Yesterday I played -some bullet games at ICC. In one game I lost on time. In the last move -I already clicked on my queen and wanted it to move to its destination -square when I forfeited on time. After that my mouse pointer was the -queen piece. I couldnt drop it to any square." - -535. For protover 3, the "st" command in the protocol could be -extended to allow for smaller units, not just seconds. - -537. Clarify in the protocol that "force" while searching means you -should stop the search as soon as you can. (Isn't this clear -already?) - -538. Need a way for the user to adjust the clocks. This is important -for WCCC and other computer competitions, where xboard/winboard's -clock is not the master. I was going to do it in time for the July -2002 WCCC. Oops. - -541. Related to #327, John Iverson says, "It would be nice to have the -coordinates shown outside of the board along the edges, rather than in -the squares where they are hard to see and give a cluttered -appearance, especially on smaller board sizes. (The coordinates can -be handy in certain situations, such as posting a screenshot of xboard -showing an email game in progress, with the view flipped.)" - -542. If you start xboard with the -geometry NxM option, it will -dutifully make the window exactly that size, but it doesn't choose a --size option that fits into such a window size, so the board is cut -off or has a lot of whitespace around it. In fact, the layout is -generally messed up because the code doesn't expect the window to be -the wrong size for the layout. We should at least ignore the size -part of the -geometry option if we aren't going to do something -sensible with it. How is that done with Xt? - -543. See the patches and extensions on -http://www.tim-mann.org/extensions.html#patches and integrate those -that are worthwhile into the main code base. (Some are also mentioned -elsewhere in this ToDo list.) They are pretty much all over 15 lines, -so copyright assignment from their authors is needed. Unfortunately -some of the authors may be hard to reach. - -544. Possibly rework looking_at pattern matching to have a "match at -beginning of line" character (perhaps ^). It looks like this may -actually be useful after all. The historical cases where you could -get a board or other output that needs parsing on the same line as a -prompt *may* have been fixed. Confirming this would need testing on -all the ICSes that are in use. - -546. Odd bug reported by travelGirl. The last line of a multi-line -macro from the ICS context menu sometimes "sticks" at the bottom of -the ICS interaction window. New text gets inserted before instead of -after it. This started when she upgraded to win2k. See mail. - -548. Guido Flohr reports: - -Another "not really a bug" problem: When xboard forks in order to -start a second chess engine, it is only concerned about duplicating -the descriptors for the standard channels in the child. This is -very interesting for the second chess engine, since it inherits the -pipes to its opponent, and can use them for sending commands like -"sd 2", "easy", or even for feeding a bogus FEN string into the -first engine (exchanging the opponent's queen with a bishop looks -really attractive to me). A very interesting feature, but not exactly -what you intended? ;-) - -Closing the other descriptors after the fork will not completely -avoid the problem, since - at least under Solaris and Linux - it -is still possible to peek and write into xboard's open descriptors via the -/proc pseudo file system (unless you make xboard setuid root), but -leaving them open, makes this cheat very obvious. - -549. "Ron" (no last name given) reports that when compiling WinBoard -under VC++ 6.0, there are many warnings. These ought to be looked at. - -551. "Miguel" (no last name given) reports "When you make a premove in -Winboard 4.2.6, and then opponent move and premove is illegal, then -and you try to make a legal move but you cannot, because piece are -erased and you have to replace your move again, move twice... in -lightining this is annoying." I'm not really sure what that means or -if it is the same bug as 497. - -552. Get rid of the need for proprietary tools to build WinBoard. -It's already possible to compile winboard.exe using the Cygwin -toolchain. You can even compile it with -mno-cygwin to avoid the need -for cygwin1.dll. However: - -552a. The Help file needs Microsoft Word to edit the source file -winboard.rtf and the Microsoft Help Compiler to compile it into -winboard.hlp. I tried using OpenOffice.org on the RTF file, but the -result was missing some formatting that the help compiler needs. The -help compiler itself is a free-as-in-beer download, but it's still -proprietary software. Perhaps the help could be converted to vanilla -HTML, at the cost of losing the index and search capability. - -552b. The WinBoard installer package is built with InstallShield. - Possible replacements: - Inno Setup (http://www.jrsoftware.org/isinfo.php) - looks best - NSIS (http://nsis.sourceforge.net/site/index.php) - Cygwin setup (http://www.cygwin.com) - a long shot - -552c. Although the cygwin resource compiler works on winboard.rc, it's -a pain to create new dialogs by editing the text file. The original -ones were all created using the graphical dialog editor in MSVC 5. - -* * * - -Before each release: -- make sure both xboard and winboard build and are up to date with each other -- run zippy with new version as a shakedown -- be sure gnu5 binary is up to date in winboard, and gnu5 patch (if needed) - is included in both xboard and winboard kits -- recheck cygwin compiling winboard -- make sure ChangeLog is complete -- test changes - -*** up to date with mail received through 5 Nov 2003, except -for the "protover 3" discussions on the chess-engines mailing list *** +Possible improvements **=somewhat higher priority +--------------------------------------------------- + +20. Some way to back up, explore variations, then return to the main +line and restore moves we backed out. Should also support exploring +side branches while loading a game file. Push/pop buttons? Button to +fork another xboard in same state as current one? + +20a. Allow side branches to be remembered in game files (and +understood on LoadGame). Use PGN variation notation. + +**62a. Support series of time controls as in later gnuchess 4.0.x +versions (and real tournaments!). Needs a protocol extension to +"level"; this is now planned for protover 3. + +62b. Perhaps we could also support the kind of clock where you get K +seconds per move, plus a reserve of J seconds per game that is used +when a move takes more than K seconds. The degenerate form of this +with J=0 is desirable in itself. Needs a protocol extension. + +68. WinBoard has some features not in xboard. Among others: +68a. LoadGameOptions dialog (good to add) +68b. SaveGameOptions dialog (good to add) +68c. TimeControl dialog (good to add) +68g. Font dialog. (leave out) +68h. Colors dialog. (leave out) +68i. Board size on Options menu (good to add) +68j. Resize with mouse +68k. Highlight dragging +68m. Move typein from keyboard. (good to add) + +69. xboard has some features not in WinBoard. Among others: +69c. Font size selection by pattern fill-in. (leave out) +69d. Alternate bitmaps specified at runtime. (good to add, often requested) +69e. Flashing. + +71. Allow restart after ICS logout instead of exiting? Many requests +for this. + +71a. Would be useful to drop into NCP mode after ICS logout and allow +for reconnect later. For instance, this would let you save your last +partial game if you didn't have autosave on. + +72. Allow switching among ICS, NCP, GNU modes?? + +74. Observe/play multiple games, each with its own window. Hard. + +80. Clone command. Saves current game to a file foo, then starts up +another copy of xboard with -lgf foo. Should probably note current +state of some options and give command line flags to set them the same +way in child. What about -ncp mode, though? Might want that to be +different. Would be nice to have a -moveNumber flag to position the +child to the same move number in the current game. + +91. Would be nice to have an option to overwrite save file instead of +appending. + +95. "Have the clock indicate how long the computer/player has been +thinking for when the -st option is used. This should be how long for +the current move only." (Dino Dini) + +97. "Have the ability to change the level of the gnuchess during a +game. For analysis purposes, sometimes it is useful to have the +computer think really hard about certain positions." (Dino Dini) + +98. Reorganize the source and split it into more files. + +107. Changing time control during a game could be made to work. +Current (WinBoard only) way of changing at start is suboptimal. + +**108. Could add search depth and time per move to (WinBoard) +TimeControl dialog. + +140. LoadPosition needs better checking for invalid data. + +142. xboard needs a real file chooser dialog. Jeff Woolsey submitted +code to merge in the one from Ghostview, but said it works only on +X11R5 or later. I have not yet tried his code or looked to see if it +could be made to work on X11R4. + +147. Improve display of held pieces in bughouse mode, putting them +closer to the player's side of the board, and perhaps using icons (and +allowing dragging from the icons to drop a piece). Actually, moving +the clocks would be beneficial too, so that it's easier to visually +associate the right clock with the right player when looking at two +boards during a bughouse match (with two copies of xboard running). +Maybe multiple window layouts should be user-selectable. [4.3 supports +drag-drops from holdings] + +150. Keep track of castling availability, en-passant availability, and +FEN half-move clock (for 50-move rule), pass the availability +information to the move generator through the existing interface, and +load/save it in the FEN code. [Fixed in 4.3] + +150a. Note that not keeping track of ep creates a bug in mate +detection. In certain positions, moving a pawn from the 3rd to 4th +rank gives mate, but it is not detected because if the pawn had moved +to the same position from the 2nd rank, ep capture would have been +legal and there would be no mate. [problem disappeared in 4.3] + +150b. Note that although we try to put in e.p. availability when +writing FEN, this works only if we have the move that got us to this +position in the moveList. If we load a position from FEN, the +e.p. availability field of the FEN is lost. [disappeared in 4.3] + +152. Generate the info file, man page, perhaps html, and perhaps even +the WinBoard help file from the same sources. Right now, +substantially the same text is duplicated in three places. This is +a huge pain in the neck. + +157. Idea: if Zippy flags some number of times in a row and keeps +getting told the opponent is not out of time (presumably due to +timestamp/timeseal), he should issue an adjourn or abort. + +160. The xboard CTRL key flashback feature is bad in Analysis mode. +Flashing back throws away the analysis. + +161. SIGINT doesn't work for local programs on Win32. There is an +equivalent, GenerateConsoleCtrlEvent(CTRL_C_EVENT), but I haven't +gotten it to work thus far. It seems that WinBoard and the chess +engine don't "have the same console"; indeed, neither has a console. + +162. Supply a non-X Zippy for Unix. Perhaps use the code from Klaus +Knopper. + +167. Alternative bitmaps loaded at runtime for WinBoard. [font-based +piece rendering provides this functionality since WinBoard_x] + +169. Upload Game on file menu? This would upload the current game +moves into a scratch examined game on ICS. Could do Upload Position +too. Some code to do Upload Game was contributed, but it didn't +handle setup positions, variants, checking for proper gameMode, etc., +so I couldn't use it. + +170. Auto step every k seconds should be a general feature you can +turn on at any time, not just in LoadGame. What should GUI be? + +171. Displaying thinking in a separate window should be an option +available at all times when Show Thinking makes sense, not just in +analysis mode. It should perhaps be orthogonal to analysis mode. +[added in WinBoard_x] + +172. Should analysis window scroll instead of showing only the last +line? There could be an extra checkbox to show all chess engine +output in it. [fixed in WinBoard_x] + +178. Need reliable kill for chess engine on Win32. See also 161. + +181. Some people want -sgf to save only played games, not observed and +examined games. Others like it to save them all. Make this an option? + +183. Search feature in Game List dialog [Igor Eged]. + +187. "Log session" feature for ICS window. + +193. Some users have reported xboard redraw bugs, but I have not +been able to reproduce them on the Digital Unix, Linux, or eXcursion X +servers (xboard). + +c. From Hawk: +Dragging in xboard does not work 100%. +* The dragged piece may disappear (try some fast e2-d3 movements - + this is easy to reproduce). +* The dragged piece may be placed on an illegal position (this + happens less frequently, but it _can_ be reproduced by doing the same + as above). +* In both of the above cases, the board is correct after forcing a + redraw (ie. minimizing/restoring the window) +I'm using eXodus - a win32 X server, perhaps it's buggy. [Seems that way, +or just possibly, these could be bugs that are fixed in 3.6.11beta or +3.6.12beta.] + +d. One user reports: "If you are 'holding' a piece over the square you +want to go to and that move becomes illegal but you make it anyway, +the display sometimes corrupts and a partial piece appears..sometimes +a whole piece." This was under RedHat 6.0. + +194. A few users have reported drawing problems with WinBoard. There +may be some color map problem on certain displays. I might possibly +have fixed this already; I cannot reproduce it. The common thing +seems to be black pieces changing to white. This may depend on having +customized the board colors. I suspect many of these problems are +buggy Windows drivers for particular display cards. (May be worked +around in 4.2.0 with reprocessed .bmp files.) + +a. From mulesmurf: if i log in and then move the board, it will happen +that the black [pieces] change to white. + +c. People have sent pictures where the grid didn't get redrawn. This +produces random bits in the grid area from uninitialized memory. +Could this be a resource leak? + +d. From James Van Buskirk: I did notice one problem tonight playing +against Comet under FX!32 1.2 (Comet, not winboard ran under FX!32): +for a couple of moves winboard didn't turn off the highlighting of the +square I dropped the piece on until Comet had moved. Later, the +problem fixed itself. Have other users noticed this? [No.] + +e. One user reports: Lastly, there is some sort of slight bug in the +piece dragging code, but it comes up only very occasionally (once in +500 moves?)...basically, I'm dragging, change my mind, throw the piece +of the side of the board, and instead it gets stuck not inside a +square. It's really disconcerting, this piece just sitting across +square boundaries. When you make another move, it gets cleared up and +goes back where it's supposed to. [Might be fixed in 4.0.6, but I +couldn't reproduce this, so I can't be sure.] + +f. DAV says: "When I resized the board on win 95 and made it smaller +some of the pieces turned into junk (I'm not able to give a screen +shot)." Later: "Seems to happen on the three sizes below small. +Win98 and NT seem to be ok, trying to get more win95 users to test +it." Works fine for me on Win 95... [Might have been fixed by the +cleanup of the Windows .bmp's that happened sometime before version +4.2.3] + +195. Flash Moves works at the end of every change to the board, using +some rather gross code in DrawPosition. This code should perhaps be +ripped out and the flashing done from inside AnimateMove instead. + +197. More color distinctions. Maybe allow several user-selected channels +to have their own colors. + +198. More sounds. Some possiblities: distinguish White vs. Black move +or your move vs. opponents, distinguish different kinds of +win/loss/draw/unfinished (checkmate, resignation, stalemate, other +draws, opponent disconnected, etc.), game ends when you aren't playing +and/or aren't in ICS mode, differentiate amongst requests (draw offer, +etc.), **check, got new offboard piece (by piece type?), opponent got +new offboard piece (ditto), arrival notification, "* who has an +adjourned game with you," draw declined, moretime received. + +199. Maybe put user names instead of White and Black on clocks, or +user names above or below clocks in a smaller font. + +200. I don't like these ideas, but some people do: +a. Highlight all of the squares that the piece you are moving can go to. +b. Clicking on the piece moves it immediately if it has only one legal move. +c. Allow clicking on the destination, then the source. +d. I guess highlight the pieces that can go to that destination. +e. Clicking on a destination that only one piece can go to moves it there. + +201. mulesmurf: piece counter so we know exactly the score + +202. mulesmurf: ziics pieces, board along with color intensity + +204. Hawk at Fri May 15, 12:58 CDT 1998: a minor thing with xboard: +the coords disappear while dragging from a square with coords on it. +[They come back when the drag is finished.] + +208. WinBoard sometimes comes up with one of the menu bar items grayed +out (one that should not be). I've seen this on different entries at +different times. + +213. Maybe add Silence to sound menu -- parallel to Monochrome on +color menus. + +214. Maybe easier startup dialog customize: +a. Buttons to add/delete/move(?) current string to/from/within current list. +b. Or maybe auto-add newly typed/edited strings up to some limit. +c. Also a drop-down for Additional Options. + +216. Maybe shorten menu names in WinBoard to one char if and only if +the menu bar would wrap with longer names. + +**217. Easier way to add engines to the WinBoard startup dialog. +Ideally, an engine author should be able to supply a simple +configuration file or script that installs his engine. "*.wbe" idea. + +218. Some folks would like Highlight Last Move to apply only to +opponent's moves. + +219. From Jorge Monasterio: Support automatic game starts when in +tournament. In other words, do that "match bigolfish mann 5 0 black" +automatically based on the info sent from mamer. [I would need to +play in some tournaments before I could evaluate this idea or fill in +the details.] + +222. Could support time handicaps. [Added in 4.3] + +223. Bug: very long comments cause buffer overflow. Need to revamp +the way comments are parsed and returned from parser.l to fix this. + +224. Larry Parrish requests: In an automated multi-games match I would +like to load the n-th game from the file for the n-th game of the +match. [That is, when -mg and -lgf or -lpf are used together without +-lgi or -lpi.] + +225. From pulp: another bug (maybe with the Microsoft RichEdit +control) I've observed is when you flood the edit control it loses the +bottom. Eg. "games" will scroll along then start slipping until by +the end of the list you are really looking at the middle of the list +and have to manually scroll back to the bottom. [May be fixed?] + +225a. Resizing the WinBoard ICS interaction window can cause the cursor +to be off the screen, which stops scrolling. + +226. From pulp: Clipboard persistence. If I copy text, then the text +disappears when Winboard is closed. Eg.: Log in, highlight and copy a +web page address, close, go to browser, paste *nothing*. [How does +one do this in Windows?] + +227a. In engine-engine matches, an engine that crashes should lose and +perhaps get restarted for the next game. [Added in 4.3] + +227b. Maybe when an engine playing in Zippy mode exhibits a bug, we +should do a little more too. Perhaps "say Sorry, the engine seems to +have a bug", resign or abort, and maybe force an engine restart for the +next game. + +**227c. We should also detect and stop the game on false mate or draw +claims, rejecting a legal move, or (maybe) missed claims of mate or +draw. Note that draw claims require checking for repetition, 50 move +rule, and insufficient material as well as stalemate, so this is +nontrivial. [Added in 4.3] + +228. RichEdit bug: sometimes a line gets indented as if it were +wrapped when it should be flush left. + +**229. Support for sending moves from the partner's game to a bughouse +engine. Ben Dean-Kanemura submitted support that works without adding +general multi-game support, by relaying the moves without processing +them. Should also send holding updates and clock times; not sure if +Ben's code does that. Needs to be a new "feature" command option, and +to be documented in engine-intf.html, removing the note that this may +be done in the future. + +231. See Ed Collins's WinBoard bug list on his pages: + +231b. If you save an ICS examined game to disk as a PGN file, it +doesn't report the end-of-game result in both the header and at the +end of the notation. [It doesn't get this info from the server, but +maybe there is a way it could.] + +232. From Ed Collins's WinBoard wish list on his pages: + +232b. Multiple winboard.ini files for different moods, loadable from +inside the program. + +232c. Fix bug where fics% prompt is not suppressed when using +timeseal. This has something to do with a timeseal deficiency whose +details I've forgotten, but there must be some way to fix it. + +232e. When using the server's "examine" mode to examine a previously +played game, have the game clocks display the time that each player +currently had after each move was made. + +232f. [Not from Ed] Deal with ICC game relays where an "examined" game +is supposed to have running clocks. Not sure if this is still an issue. + +232g. Customizable on-screen buttons [i.e., toolbar or toolbox]. + +232h. Customizable function keys. Currently xboard can bind a key to +any built-in xboard function. Should extend this to WinBoard, and +also (in both programs) support sending an arbitrary ICS command when +button is pressed. + +233. See if anything from LightningRulez should be added. Premove is +now included (from Winboard Plus), but maybe there are other useful +things too. + +241. There might still be bugs in xboard and/or winboard when moves +come in from ICS during drag animation, though I can't reproduce them. +DAV saw the opponent's piece fail to be erased from the source square, if +I understood his message right. [DAV says this still exists in 4.2.5. +I think bug 426 is a duplicate. The description is clearer there.] + +242. User-defined "looking_at" patterns and actions. This is hard to +bombproof. + +**243. "Rematch" shortcut in /cp mode. + +246. Maybe auto-close comment window when user goes to the next move. +Whether this is desirable really depends on the content of the +comment, but maybe it is rare to have a long comment that discusses +the plan several moves ahead and should be left up. + +248. Would be nice to support retract move after checkmate or draw (etc.). + +254. Different tray icons for interaction window vs. board (suggestion +from FICS). + +256. One user asked for "delete" option in game lists. This requires +rewriting the file to close up the hole, so it's pretty heavyweight. +Next people will be asking for move, sort, search, and other game +database functionality; ugh. + +**257. Would be nice to find a way to safely implement "retract move" +when the engine is still on move. (using ping/pong) + +**260. General mechanism where engine can declare engine properties that +the user can frob and xboard/winboard will put up a simple dialog to +allow user to view and set them. See email message "special engine +commands" from Steffen Jakob: + + From: "Steffen A. Jakob" + To: mann@xxx + Cc: chess-engines@xxx + Subject: special engine commands + Date: Fri, 26 Feb 1999 09:12:26 +0100 + + Hi Tim! + + Here comes a summary of our ICC chat (I cc this mail to the + list... maybe other engine programmers can give some feedback if + they find this feature useful): + + Please add a protocol command which enables the engine to tell + xboard its special commands. Maybe a set of (label, command string) + pairs would be useful. Then create a menu for these commands. It + could look like this (that's what I would like to see for Hossa): + + engine->interface: + ------------------ + command "Reset the log file" "reset log" + command "Save Diagram as PNG" "png dia.png" + command "Disable Book" "book off" + command "Show Evaluation details" "eval" + command "Show Search statistics" "stat" + + etc. + + While typing this list I realized that an additional parameter like + this would be needed/nice (of course you can think of many more + improvements): + + command "Save Diagram as PNG" "png %s" 1 + + "1" tells xboard to ask for an additional parameter (here: filename) + which will replace the "%s" in the command string. + +261. Check that "quit" is sent to engine properly if ICS connection +fails to open due to error from timestamp/timeseal. "wzrdking" had a +case where it didn't. Timetamp had failed with "Host name not found +by name server" (because in fact there was no internet connection, arrgh). + +273. Displaying the names of the players from a PGN file in the header +of the window does not work if there is only one game in the file. +The filename is shown instead. (This was intentional, but maybe a +poor idea.) + +274. Command to go to move number N, with entry box for N. + +276. Make grid optional in winboard? Note that the highlight options +don't work without it. + +276a. Make color of grid an option, instead of always black. + +277. Flooding xboard -zt + timestamp with tells hangs timestamp after +a while. xboard is blocked writing to the timestamp pipe. timestamp +is in an unknown state, not reading from the pipe nor responding to +pings. (Confirmed with the software running on milwaukee, Red Hat +5.2) + +278. Flooding winboard -zt + timestamp with tells hangs winboard after +a while. timestamp still responds to pings. This reported by +nudnick; I haven't tried to reproduce it yet. He also says that +windows explorer then crashed when he tried to close winboard. + +279. Idea from an anonymous ICSer: piece drop menu could have images, +not words. [Or maybe both?] Also might be easier to select +accurately from it if horizontally arranged, or in a 3x2 grid. +[Now 4.3 has drag & drop, piece-drop menu should be deprecated] + +284. dxterm hangs when it receives the escape sequence that sets the +title bar on xterm. I think some other xterm substitutes do too. + +**287. WinBoard can look funny if you are using themes because it +unconditionally uses white for certain colors instead of the default +background. + +289. Merge WinBoard support for the Henter-Joyce JAWS screen reader. +Source code (zip file containing modified WinBoard 4.0.2 source) is at +ftp://ftp.henter-joyce.com/users/hj/winboard/WinboardSource.exe. It +would be interesting to make this work with festival (free Unix speech +synth) or other speech synthesizers too. + +290. Could have limited voice output without a speech synthesizer by playing +wav files for piece names and square numbers. Idea suggested by Hannu +Wegner. + +291. Would be great to support DGT, Novag Universal chessboard, etc. +I'm not likely to fork out the cash to buy either for testing, however. +Note users have done various things along these lines. + +292. When an engine is analyzing, it would be cool to have a way to +automatically play out its current PV (or even older ones) on a board. +These PVs could be saved as variations when we have variation support. + +297. Windows users expect all programs to have a Print function, even +though there are other ways to print. Useful items to make printable: +PGN game scores (which are plain text, of course), maybe FEN position +diagrams, maybe graphical position diagrams (i.e., same as pressing +the "Print Screen" function key and printing the clipboard). + +298. One user suggests that automatic move stepping should not start +until you press OK in the tags window. This could be a good idea, but +I think I'd rather have automatic stepping never start until you press +a "play" button on the main window, and have that button always +available, not just when loading a game from a file. + +299. One user suggested being able to jump to a specific move by +typing its number (followed by ... if it's to be black's move). + +300. Can I put a hyperlink (that will invoke a browser) directly onto +the WinBoard Help menu or in the Help file? Useful to take users to +my chess page. + +302. On NT, check if the board is redrawn properly when exiting from +the screen saver. + +308. There is some tricky way to maximize the WinBoard board window, +although there isn't supposed to be. Maybe prevent this, or else +legalize it and make sure something reasonable looking happens. +Note: the trick is to select one of the "tile" options on the Windows +task bar. Not clear what should happen in this case. + +309. Avoid endlessly flagging every second when opponent is lagged out +and autoflag is on. Automatically courtesy-adjourn (or abort if +unrated) instead, at least if in zippy mode. + +310. Weird bug: the last character of a FICS output can appear on the +next line, *after* the fics% prompt, according to one user. I might +have seen something like this myself once too. + +314. One person wanted his engine to see tells when running in Zippy +mode. I doubt this is generally useful, so I haven't added the code I +wrote for him. (I can query for "tellfrom" in my mail file to find +it.) + +314a. Another person wants his computer account to relay tells to his +personal account. + +319. One user would like to be able to reload a PGN file and resume a +game against an engine as if after an adjournment, with the clocks +(and moves to next time control) restored as they were when the game +was saved. + +320. Display ratings of ICS players in the title bar (if there is room, +presumably), or somewhere, anyway. + +321. Maybe refresh the EditTags window if the gameInfo changes and the +window is up. (WinBoard now does this when entering MachineWhite, +MachineBlack, or TwoMachines mode -- not very general. From Winboard Plus.) + +322. One user requested that Zippy games use the engine name instead +of the ICS handle in the PGN tags, as he uses multiple engines on his +account. (My response was "I'd say it should give both"; not sure just +how to do that, though.) + +324. I'm told that Blitzin supports animated dragging without holding +down the mouse button and that this is "much better" and I should try +it too. As yet I haven't. + +326. Full support for variants and variant-capable engines in all +modes, not just ICS mode. Here are some items still needed. Some if +not all should probably wait for a rewrite, not be added to the +current code base. [4.3 supports many variants, even those not supported +by ICS. Not bughouse, though] + +326a. Menu to let you see and change the current variant type, not +just a command-line argument as at present. [Added in 4.3 WinBoard] + +326b. crazyhouse: Keep track of holdings and display them, keep track +of what onboard pieces are promoted so they will revert if captured, +understand offboard interposition to stop mate. [Added in 4.3, (not +sure about the interposition)] + +326bb. One user asked for a Czech variant of crazyhouse where pawns are +given to the opponent when they reach the 8th rank (after capturing, if +it's a capture) instead of promoting. + +326c. bughouse: Features in 326a would be helpful for editing one board +of a bughouse game, and getting mate indication right even in ICS mode. +In the longer term, could understand BPGN, support editing two-board games. + +326d. wildcastle: Allow wildcastle castling only when playing this variant! +Maybe support automatic shuffling for local play. [4.3 adds shuffling +for any variant played locally] + +326e. nocastle: Maybe support automatic shuffling for local play. +Note that several types of ICS shuffle chess fall under this variant. +Note that this isn't really a variant, since if we kept proper track +of castling rights and used "setboard FEN" or the ChessBase extension +of "edit" to set them, it could be treated as normal chess with a +different starting position. + +326f. fischerandom: Maybe support automatic shuffling for local play. +Support castling. Currently, you can probably play Fischer Random +successfully on ICS by typing castling moves into the ICS Interaction +window, but they will not be animated correctly, and saved games will +not be loaded correctly if castling occurs. FR castling is +problematic because the move cannot be specified by the starting and +ending coordinates of the king; in some starting positions there is a +legal non-castling move that moves the king the same way. This +violates a deeply ingrained assumption in the implementation. It also +breaks the GUI -- you need more than just dragging the king two +squares to indicate castling. (Note: In FR notation, O-O is h-side +castling, O-O-O is a-side. See "help fr_rules" and "help fr" on FICS +for rules.) [All fixed in 4.3] + +326g. kriegspiel: Could give some thought to how to support a +kriegspiel engine. I doubt anyone will ever write one, though. + +326h. losers: Know that captures are mandatory. Understand the win +condition. + +326i. suicide: Know that captures are mandatory. Understand the win/draw +condition. + +326j. giveaway: Know that captures are mandatory. Understand the win +condition. + +326k. atomic: Understand the win condition. + +326l. 3check: Understand the win condition -- ugh, have to keep a +check counter! + +327. Option to set the coord font color (or something) to make sure +there is always enough contrast with the square colors. + +329. Bernhard Maerz would like a command line option to choose the PGN +player name for an engine, overriding the default of generating the +name from the engine filename. This is for his ChessCall program. + +331. Maybe the local autoflag menu option should *also* turn +server-side autoflag on/off by sending an appropriate set command. + +**332. Bug: Autoflag for local engine/engine or engine/human matches +does not recognize that having your flag fall when your opponent has +insufficient mating material is a draw. It counts the flag fall as a +loss. + +336. Of course lots of people ask for a graphical seek window. + +339. There are probably some incompatibilities with chess.net, as they +have made a few gratuitous changes to message formats from the FICS +code base they started with, and perhaps they've added features since +without duplicating the syntax closely enough. In particular it's +been reported that Zippy does not correctly send "partner" and +"variant" commands to bughouse engines on chess.net. Also, I doubt +colorization works. As a matter of personal choice I do not spend any +of my time supporting chess.net, but if others want to donate patches +that allow chess.net to be supported without breaking the support for +ICC and FICS, I am willing to install them. + +342. Analysis mode automatically turns on the Show Thinking option; +the user must then turn it off manually after leaving analysis mode if +he doesn't want it. + +343. Would be nice to change xboard keyboard shortcuts to not be plain +letters, make the new shortcuts work also in the ICS input box, and +make typing plain letters to the board redirect to the ICS input box +or the xterm. Might want to change/remove the Ctrl binding at that time. + +344. One user suggested having a way to save a position as a character +string that would produce a board diagram when rendered in MS Word in +a chess font. Perhaps there is already a nice standalone tool for +this, though? + +346. Could use a better way to pick default size. Now we choose the +largest that fits on the screen, which is typically too big. Not too +bad for WinBoard, but painful for xboard since it can't be resized +after starting. + +349. Check that "quit" definitely makes it to the engine before exit, +if you exit via the File menu while a match is running. Uli Tuerke +reported that maybe it sometimes doesn't (in WinBoard 4.0.5). + +352. Perhaps recognize the ANSI escape sequence that FICS sends out +for the cls command and clear the ICS interaction window. + +**353. WinBoard can crash when the engine outputs very long PV lines +(or debug output that looks like a PV). In particular, lines that +start with 4 or more blanks following a "thinking" output line are +treated as continuation lines, and get concatenated into a 512-byte +buffer with no checking for overflow. Generally we need a lot more +care to avoid buffer overflows inside both xboard and WinBoard. +[Note: changed the buffers to be 5120 bytes as a band-aid.] + +Guido Flohr expands on this bug: + + The problem is easy to reproduce, simply write a program/script that + spits out lines of more than 8192 bytes (INPUT_SOURCE_BUF_SIZE) and + connect it as a chess engine to xboard. No surprise, xboard cannot + handle such long lines, but the resulting behavior is really weird: + + The program enters DoInputCallback() in xboard.c, reads the first + 8192 bytes, searches for a linefeed in vain, then closes its eyes, + sets the member "unused" of the InputSource to is->buf + 8192 and + waits for more input although the buffer is already full. + + The next time it calls the same function, is->unused is exactly + these 8192 bytes away from is->buf, xboard computes the amount of + bytes to read in this round, which sums up to 0 nothing. It then + calls read(2) with a bufsize argument of 0, and then assumes end + of file when the kernel call returns 0 (which is the documented + behavior). + + For local engines, we now jump into backend.c, ReceiveFromProgram(), + and this function reports that the engine has exited unexpectedly. + In fact the engine is still very vivid, which is good, because in + spite of xboard's assumption that its child has died, it still + sends "force", "ping N", and "quit" to the false dead. If the child + was really dead, the alert boxes "error writing to ... engine" + would hide the first alert box "... has exited unexpectedly". + + From xboard's side, it is not exactly clean to call read(2) with + a zero bufsize argument. In my opinion, a sane solution would be + to eat the INPUT_SOURCE_BUF_SIZE bytes, and when they contain no + linefeed, print the partial line to standard error (in debug mode) + and report something like »Maximum line size exceeded« (and then + kill the engine). + +**354. We currently let the user go directly from TwoMachines mode to +various other modes like MachineWhite or MachineBlack. This may +confuse the engine that was on move, since we don't have a way to +force it to stop before it makes the move it was thinking about. +(use ping/pong to know when the engine has stopped) + +355. Idea from LiveAndLetDie: have Zippy specially log games where it +loses to a substantially lower-rated player. Such a game could +indicate an xboard bug, engine bug, or perhaps a computer-using +cheater. + +356. Colorization for FICS tourney tells? They look like this (ugh): +:DChessmaster [tourney #4]: +:hi + +357. A few reports of WinBoard pieces being drawn incorrectly at +certain sizes. I haven't reproduced this. [Maybe worked around in +4.2.0. Or is/was this the same as 194f? I don't recall the details.] + +358. One report of WinBoard colorization not working, even after +restart, until the computer was rebooted. Weird. + +362. Running a very long automated match (/mg option) seems to crash +WinBoard eventually, usually after 300 to 500 games, sometimes later. +Reported by Josh Haglund. Gets a "WINBOARD caused an invalid page +fault in module KERNEL32.DLL" dialog box from Windows. See messages +from Josh for examples of the registers and stack dump. + +362a. A few people have reported WinBoard crashing upon exit. + +363. Maybe xboard should not set the window geometry for new popups, +or at least not the position. The default positions aren't very good, +and setting them programmatically keeps knowledgeable X users from +customizing the positions with X resources. + +366. Feature to let an engine observe an ICS game and run analysis +mode on the moves, perhaps whispering or channel-telling the results. +It's a little too easy to cheat with this feature or I might have +added it long ago. + +369. Optionally send a periodic keepalive command to ICS. Can be +used to defeat autologout, so should probably not be on by default. +Also should be useful to help Zippy notice more reliably when its +connection has hung, so that it can exit and a shell script (batch +file) can restart it. + +370. One user requested a local noplay list for his computer player +because the FICS limit of 50 is too small. He wants several hundred so +that he can noplay everyone who disconnects in a lost position. + +374. Would be good to have a way to change engines without restarting +the interface. + +376. WinBoard is said to crash or "lock up" when loading enormous PGN +files, like a 98 MB file that comes with (??) Crafty. Win32 (at least +in the Win95 lineage) has a limit of 32,767 items in a list box +widget. That might explain this problem. + +376a. xboard exceeds limits in X and/or Xaw if a PGN file has too many +games. (The virtual window that the list box can scroll through +becomes too many pixels high.) This has odd effects; the window +height of the game list seems to get reduced mod 2^16 or something. +Maybe detect this and do something nicer about it, like stop loading +when the window is full and pop up a warning. + +378. One Solaris user didn't have the "strip" program, so the +install-sh script used by xboard "make install" failed. Check for +this? Yuck. + +381. "Illegal move: post" is apparently not handled. Should it be? + +382. The UI for entering Training mode is a bit obscure: you must +first select Load Game, then Training becomes enabled in the upper (!) +part of the Mode menu and you can select it. You can then select it +again to toggle it off. This mode is something like Analyze File +(which has a problematic UI too, but somewhat less so); both should +probably use a similar UI style. I consider disabling the +step-forward button to be overkill, and I think you need to manually +turn off auto-step when loading a game (?). One user expected it to +work with .epd files that give a position and a recommended move. +That seems reasonable, but doing it would require quite different code +from the current pgn-game training mode. + +383. Premove piece drop for bughouse/crazyhouse. + +384. Pre-first-move for xboard. I don't much like the fill-in field +method used in winboard. Maybe allow a move to be made for white +before the game starts (in both xboard and winboard). If you get +black, it's cancelled. Black can already premove after the game +starts, during white's first move think time, so I don't see that a +black pre-first-move is needed. + +**387. Have winboard draw opaque details on black pieces too. +Hmm, this should probably be optional, and the detail colors should +be selectable instead of hardwired to the opposite piece color. + +**387a. Add "no piece border" option to WinBoard. See code from +Robert Jurjevic sent 4/9/2001. + +391. I have a bug report from Stefan Zipproth about engines sometimes +failing to make their first move in an engine-engine match. So far I +can't reproduce it. This might be fixed by the Sleep(500) voodoo in 4.2.4. + +394. See about tightening matching for the "request" event. Right now +it matches on help files a bit too often. (e.g. FICS "help sr_info") +**Also clarify documentation on what the request event is. + +396. xboard's -size defaulting code for bitmaps unfortunately always +picks a size from the built-in list, even if you gave the +-bitmapDirectory option. It would be more user-friendly to have some +extra code that lists the directory and considers exactly the sizes +that are found there, as the pixmap code does. + +397. It would be nice to be able to configure xboard with bitmap +pieces as the default without having to disable xpm support entirely. +This should be a pretty simple mod to configure.in (and xboard.c). + +397a. It would be very nice to be able to compile in both the bitmap +and pixmap pieces. This would allow us to automatically switch to bitmap +pieces in -mono mode, including when -mono mode was automatically selected +because too few colors were available. + +398. It would be nice to have the new .xpm pieces in .xim format too, +since I restrained myself from ripping out the .xim support. + +399. It would be nice to have a configure option to change the +directory where the default piece set is taken from. Slightly nicer +than having to rename the desired directory to "bitmaps" or "pixmaps" +as at present. + +400. TypeinMove should be grayed in ICS mode, or should raise the +console window, or something. + +402. Internationalization. It probably isn't practical to retrofit +this into the current code base. + +409. One user requested a way to put a time delay in the middle of +sending zippyGameEnd commands. This would (for example) let the +computer do a seek only if its opponent doesn't accept a rematch +within 10 seconds. Nontrivial because Zippy has to continue to listen +to input during the delay; it can't simply call sleep(). Maybe +ScheduleDelayedEvent is OK, but I think it may already be in use in +this situation, and it only supports one event at a time. + +411. Add zippyKibitzThinking and zippyWhisperThinking features? +[4.3 has an -autoKibitz option] + +412. Maybe optimize setting the move list in the case where only the +current move number changes; avoid slow XawListChange. + +**413. Add movelist window to WinBoard too. Wilkin Ng submitted a +patch that I believe includes this; need to integrate and test it. + +**415. It was suggested that a few common options that many chess +engines need be promoted to xboard/WinBoard options so that the user +can set them from the GUI in a uniform way. In particular: hash size, +directory name for endgame tables. + +**416. Can we avoid dying when xboard is in 8-bit mode, pixmap pieces +are chosen (by default), and we can't get enough colors? Ugh. + +**419. It was suggested that stat01 be generated/accepted during normal +play with "post" on, not just during analysis mode. This would need +to be a "feature" command option. + +422. Track FICS change to details of how timeseal works; is this +implemented at FICS yet? + +423. When locally stepping through an ICS game that is over, it would +be nice to display the historical clock times at each move. + +424. DAV at Thu Nov 9, 01:20 CST 2000: any chance on winboard/xboard +of a key press and a move executing draw ? that way you at least +have a chance of claiming a draw in 1 0. + +**426. DAV says, in xboard: If you are not on clock and you hover a +piece over a square where your opponent then moves to and then move +the piece away the piece the opp moved or part of it has not been +drawn. [Duplicate of bug 241?] + +429a. Check whether more support is needed for WinBoard to work with +scroll wheel mice in the absence of special mouse drivers that generate +scroll bar events directly. + +431. People find Analyze File confusing; they think it should do +Crafty's relatively new Annotate function. Also, it's somewhat +superfluous now that you can enter Analysis mode and then load the +file, or vice versa. + +**436. WinBoard is said to crash if started while WinBoard.debug is +being tail -f'ed. + +**441. Can I prevent an undo after new in the odd case where it can +happen now? See mail from Bob Hyatt. + +450. Suggested: an option to let an engine keep pondering while an ICC +game is adjourned. This seems a bit difficult. + +451. Suggested: support SuperMamer messages on FICS, aka qtells. See +http://www.freechess.org/SuperMamer/parsing.html. + +452. Suggested: a way to say "prompt for the password" in a login.ini file. +See 510 instead. + +**454. Add a way to claim a draw together with making a move, as can +be needed for draw by repetition (creating the 3rd repetition with the +move) and by the 50 move rule (the move is the 50th). Add to +protocol, and implement using the individual methods on FICS and ICC. +Need to be sure it's really a FICS that has the feature (somehow). +[Fixed in 4.3 by usng 'offer draw' for this purpose] + +455. Suggested: Add the epdkit commands such as epdpfga to the +protocol, since Crafty and "many" (which?) other engines include the +epdkit. + +**456. Bob Hyatt suggests: "feature match=1" which says "send match +requests to the engine and let it decide on who to play next". +I.e., maybe send an abbreviated but fixed format message like this: +match time inc R/U. The engine would use "tellics +accept " to accept. Add as feature to protover 3. + +**457. Standardize on the meaning of scores (e.g. in stat01 responses). +Is positive good for white or good for the engine? Do certain scores +mean forced (tablebase) draw, or forced mate in N? This should align +with the EPD spec. Maybe a feature command should indicate that the +engine matches this part of the spec, but then again, it's not clear +what we can do about it if the engine doesn't give that command, so +maybe there is no point. See discussion on chess-engines list. +[WinBoard_x adds an argument to tell WInBoard an egine uses absolute +scores] + +458. Bug: xboard will try to use an engine to play normal chess even +if the engine has given the feature variant command and did not +include "normal" on the list. Crafty 18.1 inadvertently relies on +this bug, so it probably can't be fixed right away. + +**468. Need to look at Wilkin Ng's contributions! + +**469. Look at Zippy's behavior if the operator observes, follows, +examines, etc. Some bugs in this area have been fixed, but it's +received very little testing, as Zippy was never meant to be used that +way. Noted later: Examining in -zp mode definitely has problems. If +you go forward one move at a time, moves are sent to the engine +correctly. If you go backward one move, "undo" is not sent to engine +as it needs to be. Going forward or back by more than one move at a +time needs to be looked at too. + +**471. Look at 3/17/2001 message from Laszlo Vecsey about crashes when +exiting on Win ME while data is coming in from the server. + +**473. Visual low-time indicator. See patch in Brian Mays message of +3/27/2001. + +**474. Crash reported when sending certain 8-bit characters through +WinBoard (180, 167, others). I'm almost certain this is a FICS +timeseal issue and nothing to do with WinBoard itself. + +**475. Look at Laszlo Vecsey's mousewheel patch of 4/10/2001. + +476. For some reason (I guess some GUI supports them), most WinBoard +engines now have a graphical logo, 100x50 pixels in Windows .bmp +format. It's been requested that WinBoard have a place to show the +logo. + +477. Implement the "book engine" idea I proposed in the protover 3 +discussions. Some folks have offered to write them (e.g., Bruce +Morland). + +478. Recognize URLs in the WinBoard ics interaction window and make +them work as hyperlinks (firing up your browser). + +**479. Possibly use Scott Gasch's 7 May 2001 patch to delay accepting +challenges when ping > pong instead of declining them. Bug: if you +get more than one challenge, Scott's patch forgets about all but the +last one. If that guy then withdraws his challenge, the others are +left in limbo, neither accepted nor declined. I suppose we could +decline challenges when there is one waiting. However, if we make the +change to optionally pass match requests through to the engine, Bruce +Moreland would like us to queue up challenges and pass them all on. + +481. 8 May 2001, Bob Hyatt "matchscore" feature suggestion could go in +protover 3: "matchscore A B C D E says we are in a match, this is game +A of B games. The current match score is I have won C, drawn D, and +lost E games in this match. This would give the engine a chance to +adjust the draw score as needed to try to win the match rather than +just trying to win a single game." + +**482. Suggestion from Bruce Moreland: if the user goes into ICS +examine mode while -zp is active, and the engine supports analyze, +then put it into analyze mode and let it work on the examined game. I +guess this could work for observed games too. Should it be optional +or always done? + +483. It would be nice if the KingShine 3D board could be integrated +as an alternative xboard GUI rendering. + +**484. Add -feature1 and -feature2 options to pretend the engine sent +us those feature commands. Useful kludge for certain buggy engines. + +485. Add "reset" to protover 3. (Clear the hash tables and other such +info; used to put the engine into a known state before running a +test/benchmark position.) + +486. Other protover 3 features listed in my 6/21/2001 message to +chess-engines list. Write a full protover 3 draft for comment. + +487. Adjudicate non-ICS games as a draw when there is insufficient +mating material on both sides, especially engine/engine games. Well, +maybe. I argued against this in a 6/26/2001 message to chess-engines. +[Added in 4.3] + +487a. Probably also adjudicate when we detect checkmate or stalemate, +before bothering to notice whether the engine detected this. [Added +in 4.3] + +487b. Note: Do not adjudicate 50 move rule or 3x repetition since those +must be claimed by a player -- at least not by default. It would be +OK to have a flag to do this someday when we are smart enough to +notice it. Would definitely be good to be smart enough to notice an +incorrect draw claim by an engine. [In 4.3 you can set the number of +moves or repeats after which draw is adjudicated] + +487c. Another request: allow the operator to adjudicate engine/engine games. + +488. Option to suppress tags popup on game load? This has been +requested a few times, and I received one partial implementation (not +enough to be useful). Needs to be on the options menu, etc. Note +conflict with 298 above. + +488a. Also option to suppress comment popups. + +489. Maybe have Zippy use xtell for tells to avoid redefining "." if +the operator is also doing tells. Do all ICSes support xtell, though? + +490. Bruce Moreland request: a way to turn Zippy auto-accept on and +off dynamically. + +491. Bruce Moreland request: a defined way to turn on/off PV (etc.) +kibitzing from the engine dynamically. I had thought it would be +better to make the GUI able to relay thinking output as kibitzing on +its own (and be able to turn this on/off dynamically), but Bruce +points out that what engine authors want to send as kibitzing output +usually includes more than the PV thinking output. + +492. One user reports that GNU Chess 5 crashes if you start a game, +play far enough to get GNU Chess out of book, select Reset, and play +e3 in the new game. This is probably a GNU Chess 5.00 bug, unrelated +to WinBoard. Can't reproduce on Linux; didn't try yet on Windows. +Need to see if 5.02 fixes it. + +493. DAV suggests stripping off first arguments that are obviously +not the name of the engine when trying to parse out the engine name +from its command line -- things like nice, nohup, sh, csh, bash, etc. +Ugh, but I suppose it would be helpful sometimes. + +494. Internationalization. A couple of people have done (or told me +they were doing) partial conversions of WinBoard to German or Spanish +by manually translating the messages. I think it would be much better +(but a big job) to use GNU gettext. I haven't looked into the details +of that at all. + +495. JamesBaud points out that FEN is not sufficient to correctly +represent a crazyhouse position (or bughouse, for that matter), +because it does not distinguish promoted pawns that will revert when +captured from real pieces. ICS style 12 also does not give us this +information. I really don't know what I could do about this -- take +the lead in proposing an extension to FEN and to style 12 with new +piece letters, I suppose. I don't really have time or motivation for +that. If you always use PGN, not FEN, to save Crazyhouse, that works +around the problem. [4.3 uses bFENs which fix this] + +**496. DAV sent some code to save a screen shot in xboard. Look at +merging this in. + +**497. Igor Eged reports: I make a move on opponents time using +premove. Right in the time I am holding another piece in case of +unexpected check that I can have other possibility. But then the piece +hangs in the void and its invalid move, what means often loss in 1 0 +lightning. + +498. It would be nice for Zippy to be able to play ICC wild 20 and 21 +(the types where loadgame is allowed). Presumably there would have to +be an option to either send the loadgame command with a specified +position, or to deal with an opponent sending it. I'm not sure how +this should work exactly, or how to prevent opponents from cheating in +various ways. + +499. It would be nice for Zippy to be able to switch amongst several +different engines depending on which variant type is being played. + +500. It would be nice if Zippy could have an option to accept +takebacks. Hmmm, also, the operator might want to manually offer a +takeback; it would be good if that worked. + +501. People would like to be able to add more bot functionality to +Zippy without C programming. I don't have any ideas on how to do that. + +502. One user requests the ability to have a game list file open for +more than one PGN file at a time. + +503. We don't do protover 2 feature negotiation properly when +restarting an engine due to -xreuse mode. The timeout and done=0/1 +features don't work on the restart; instead we basically assume that +all the features will be the same as last time and that the engine +will be ready to accept commands immediately. This probably doesn't +cause a lot of problems, but if you try to replace the engine with one +that sets different features, the changes might not be noticed before +the first move, and the defaults will be the values from the old +engine, not the documented defaults. Also, if the engine takes time +to initialize and wants us to wait to send commands until it says +done=1, we fail to wait. However, we do send commands in the right +order and use ping, so most engines should work fine. + +506. One user wants a board size even smaller than Tiny. + +507. Suggested: have the cursor change to a gripping hand while moving +pieces. Currently in WinBoard it's always an arrow, while in xboard +it's always a hand with pointing finger while over the board and an +arrow elsewhere. + +508. It would be nice to make -xclock work with -ics, just for +orthogonality, though it's not terribly useful. + +509. It would be nice to make -clock work with -st. Perhaps each +player's clock should start with the specified time on each move and +count down until he moves. + +**510. A FICS service rep tells me that many users expect an autologin +feature in winboard (other than the non-user-friendly login.ini file). +Seems easy enough to add such a thing. + +512. Some users dislike the clocks counting in tenths when below 10 +seconds, as it's distracting, and would like this to be configurable. +(From the Debian bug tracking system.) + +513. Perhaps have Alt+P and Alt+C as synonyms for Pause in WinBoard, +since the P or C on the button makes it look like that should be the +shortcut. I suppose Alt+< and Alt+>, and the same with Shift for << +and >>, would also be a good idea. Oops, but Alt+C is already +CopyGame, so maybe this is a bad idea. + +514. Gian-Carlo Pascutto reports: "when pasting a FEN/EPD position +into WinBoard, and selecting analysis mode, the engine analyses the +starting position instead of the pasted one. Re-pasting fixes this." + +515. Troy Edwards suggests: "It would be nice to have the option to +'wrap text' in the comment window." + +516. DAV says: "FICS now supports the setting and the making clocks +tick using unpause/pause in examine mode. It seems either the clocks +don't tick or are not present when using xboard. Is it possible to +change the policy and base things upon the clock is paused flag in +style 12?" + +517. Clarify in engine-intf.html that "sd" is an extra dumbing-down +feature, not a time control. Some text: + +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 +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. + +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. + +518. Warn in doc that -initString is a dangerous feature. Also move +doc of dalogs for sending commands directly to the engine out of the +protocol spec and into the man page and help file, but warn they are +dangerous too. + +519. In engine-intf.html, change "st" description to not use the word +"exact", which is misleading. Make sure it says this is the maximum +time per move (and does not accumulate). + +520. Check whether Alt+C (CopyGame) works in XP. One user says it +gives an error message. + +522. engine-intf.html should really be rewritten to describe the +protocol as a state machine (on each end), with every command +precisely defined as to what it does in each state (including perhaps +being illegal). + +523. Figure out what, if anything, to do with the FICS "iset singleboard". +I lean toward not bothering to set it, as it only disables functionality, +but maybe I'm confused. + +524. theblob at Mon Mar 4, 23:23 PST 2002: it'd be nice in the xboard +interaction window if control-w and control-u respectively erased the +line and word, even in a Windows environment. At least, I think it'd +be nice. + +525. Support a 64-bit node counter in analysis mode when compiled with +something that has 64-bit integer support. Both gcc and msvc++ have +this, though under different names. + +526. "-initialMode analysis -lgf -" doesn't get the engine into +analysis mode properly. "-initialMode analyzeFile" is a workaround, +but bug should be fixed. + +527. Clarify ICS.ini more in the doc, if possible. Some sample words: +> You should create this file in +> WinBoard's directory (usually C:\Program Files\WinBoard) using a plain +> text editor such as Notepad. Make sure that Notepad doesn't decide to +> call the file ICS.ini.txt for you -- you may have to select "All +> Files" instead of "Text Files" in the Notepad save dialog. +> +> The file is simply sent to the chess server, just as if you had typed it. +> So if your username is foo and password is bar, the file would look +> like what is between ==== below, without the ===='s: +> +> ==== +> foo +> bar +> iset movecase 1 +> ==== + +528. Check on updates/revisions to PGN from Steven Edwards and others. +Any support needed? + +529. Protover 3 needs a prefix character that says "this is debug +output" and prevents the GUI from parsing that line (say ";"). + +530. The undocumented (?) checking for rsh error messages tripped up +one engine author who had a "not found" in a message. Tighten this +up. + +531. Do we always wait for pongs to catch up with pings before +starting the engine's clock? I suppose we should. + +532. On FICS the clock does not start until after the first move has +been made. So perhaps we don't need the "not ready, try again soon" +response from Zippy there. What if Zippy is black, does black's clock +also not start until he makes his first move? + +533. theblob at Mon Jun 24, 20:05 PDT 2002: here's a suggestion for +xboard -- give priority to fitting in amounts of material in the title +bar, and truncate names instead, e.g., use "tyrionsAp...(50) vs. woden +(51)" rather than "TyrionsApprentice (50) vs. woden..." -- it's much +more important to see the material than the full names, especially +when you're playing. + +534. Steffen Jakob reports: "I use xboard 4.2.6. Yesterday I played +some bullet games at ICC. In one game I lost on time. In the last move +I already clicked on my queen and wanted it to move to its destination +square when I forfeited on time. After that my mouse pointer was the +queen piece. I couldnt drop it to any square." + +535. For protover 3, the "st" command in the protocol could be +extended to allow for smaller units, not just seconds. + +537. Clarify in the protocol that "force" while searching means you +should stop the search as soon as you can. (Isn't this clear +already?) + +538. Need a way for the user to adjust the clocks. This is important +for WCCC and other computer competitions, where xboard/winboard's +clock is not the master. I was going to do it in time for the July +2002 WCCC. Oops. + +541. Related to #327, John Iverson says, "It would be nice to have the +coordinates shown outside of the board along the edges, rather than in +the squares where they are hard to see and give a cluttered +appearance, especially on smaller board sizes. (The coordinates can +be handy in certain situations, such as posting a screenshot of xboard +showing an email game in progress, with the view flipped.)" + +542. If you start xboard with the -geometry NxM option, it will +dutifully make the window exactly that size, but it doesn't choose a +-size option that fits into such a window size, so the board is cut +off or has a lot of whitespace around it. In fact, the layout is +generally messed up because the code doesn't expect the window to be +the wrong size for the layout. We should at least ignore the size +part of the -geometry option if we aren't going to do something +sensible with it. How is that done with Xt? + +543. See the patches and extensions on +http://www.tim-mann.org/extensions.html#patches and integrate those +that are worthwhile into the main code base. (Some are also mentioned +elsewhere in this ToDo list.) They are pretty much all over 15 lines, +so copyright assignment from their authors is needed. Unfortunately +some of the authors may be hard to reach. + +544. Possibly rework looking_at pattern matching to have a "match at +beginning of line" character (perhaps ^). It looks like this may +actually be useful after all. The historical cases where you could +get a board or other output that needs parsing on the same line as a +prompt *may* have been fixed. Confirming this would need testing on +all the ICSes that are in use. + +546. Odd bug reported by travelGirl. The last line of a multi-line +macro from the ICS context menu sometimes "sticks" at the bottom of +the ICS interaction window. New text gets inserted before instead of +after it. This started when she upgraded to win2k. See mail. + +548. Guido Flohr reports: + +Another "not really a bug" problem: When xboard forks in order to +start a second chess engine, it is only concerned about duplicating +the descriptors for the standard channels in the child. This is +very interesting for the second chess engine, since it inherits the +pipes to its opponent, and can use them for sending commands like +"sd 2", "easy", or even for feeding a bogus FEN string into the +first engine (exchanging the opponent's queen with a bishop looks +really attractive to me). A very interesting feature, but not exactly +what you intended? ;-) + +Closing the other descriptors after the fork will not completely +avoid the problem, since - at least under Solaris and Linux - it +is still possible to peek and write into xboard's open descriptors via the +/proc pseudo file system (unless you make xboard setuid root), but +leaving them open, makes this cheat very obvious. + +549. "Ron" (no last name given) reports that when compiling WinBoard +under VC++ 6.0, there are many warnings. These ought to be looked at. + +551. "Miguel" (no last name given) reports "When you make a premove in +Winboard 4.2.6, and then opponent move and premove is illegal, then +and you try to make a legal move but you cannot, because piece are +erased and you have to replace your move again, move twice... in +lightining this is annoying." I'm not really sure what that means or +if it is the same bug as 497. + +552. Get rid of the need for proprietary tools to build WinBoard. +It's already possible to compile winboard.exe using the Cygwin +toolchain. You can even compile it with -mno-cygwin to avoid the need +for cygwin1.dll. However: + +552a. The Help file needs Microsoft Word to edit the source file +winboard.rtf and the Microsoft Help Compiler to compile it into +winboard.hlp. I tried using OpenOffice.org on the RTF file, but the +result was missing some formatting that the help compiler needs. The +help compiler itself is a free-as-in-beer download, but it's still +proprietary software. Perhaps the help could be converted to vanilla +HTML, at the cost of losing the index and search capability. + +552b. The WinBoard installer package is built with InstallShield. + Possible replacements: + Inno Setup (http://www.jrsoftware.org/isinfo.php) - looks best + NSIS (http://nsis.sourceforge.net/site/index.php) + Cygwin setup (http://www.cygwin.com) - a long shot + +552c. Although the cygwin resource compiler works on winboard.rc, it's +a pain to create new dialogs by editing the text file. The original +ones were all created using the graphical dialog editor in MSVC 5. + +* * * + +Before each release: +- make sure both xboard and winboard build and are up to date with each other +- run zippy with new version as a shakedown +- be sure gnu5 binary is up to date in winboard, and gnu5 patch (if needed) + is included in both xboard and winboard kits +- recheck cygwin compiling winboard +- make sure ChangeLog is complete +- test changes + +*** up to date with mail received through 5 Nov 2003, except +for the "protover 3" discussions on the chess-engines mailing list *** diff --git a/backend.c b/backend.c index 1f0af61..859a47f 100644 --- a/backend.c +++ b/backend.c @@ -56,6 +56,7 @@ #else #define DoSleep( n ) +typedef int BOOL; #endif @@ -223,8 +224,10 @@ static ChessProgramStats programStats; static int exiting = 0; /* [HGM] moved to top */ static int setboardSpoiledMachineBlack = 0, errorExitFlag = 0; extern int startedFromPositionFile; -int startedFromPositionFile = FALSE; Board filePosition; /* [HGM] loadPos */ -char endingGame = 0; /* [HGM] crash: flag to prevent recursion of GameEnds() */ +int startedFromPositionFile = FALSE; Board filePosition; /* [HGM] loadPos */ +char endingGame = 0; /* [HGM] crash: flag to prevent recursion of GameEnds() */ +int whiteNPS, blackNPS; /* [HGM] nps: for easily making clocks aware of NPS */ +VariantClass currentlyInitializedVariant; /* [HGM] variantswitch */ /* States for ics_getting_history */ #define H_FALSE 0 @@ -320,10 +323,12 @@ PosFlags(index) case VariantKriegspiel: flags |= F_KRIEGSPIEL_CAPTURE; break; -/* case VariantCapaRandom: */ + case VariantCapaRandom: case VariantFischeRandom: flags |= F_FRC_TYPE_CASTLING; /* [HGM] enable this through flag */ case VariantNoCastle: + case VariantShatranj: + case VariantCourier: flags &= ~F_ALL_CASTLE_OK; break; default: @@ -425,6 +430,7 @@ int initialRulePlies, FENrulePlies; char FENepStatus; FILE *serverMoves = NULL; // next two for broadcasting (/serverMoves option) int loadFlag = 0; +int shuffleOpenings; ChessSquare FIDEArray[2][BOARD_SIZE] = { { WhiteRook, WhiteKnight, WhiteBishop, WhiteQueen, @@ -484,6 +490,13 @@ ChessSquare CapablancaArray[2][BOARD_SIZE] = { BlackKing, BlackBishop, BlackMarshall, BlackKnight, BlackRook } }; +ChessSquare JanusArray[2][BOARD_SIZE] = { + { WhiteRook, WhiteAngel, WhiteKnight, WhiteBishop, WhiteKing, + WhiteQueen, WhiteBishop, WhiteKnight, WhiteAngel, WhiteRook }, + { BlackRook, BlackAngel, BlackKnight, BlackBishop, BlackKing, + BlackQueen, BlackBishop, BlackKnight, BlackAngel, BlackRook } +}; + #ifdef GOTHIC ChessSquare GothicArray[2][BOARD_SIZE] = { { WhiteRook, WhiteKnight, WhiteBishop, WhiteQueen, WhiteMarshall, @@ -665,6 +678,8 @@ InitBackEnd1() first.useSigterm = second.useSigterm = TRUE; first.reuse = appData.reuseFirst; second.reuse = appData.reuseSecond; + first.nps = appData.firstNPS; // [HGM] nps: copy nodes per second + second.nps = appData.secondNPS; first.useSetboard = second.useSetboard = FALSE; first.useSAN = second.useSAN = FALSE; first.usePing = second.usePing = FALSE; @@ -710,6 +725,7 @@ InitBackEnd1() /* [HGM] debug */ first.debug = second.debug = FALSE; + first.supportsNPS = second.supportsNPS = UNKNOWN; first.scoreIsAbsolute = appData.firstScoreIsAbsolute; /* [AS] */ second.scoreIsAbsolute = appData.secondScoreIsAbsolute; /* [AS] */ @@ -815,7 +831,7 @@ InitBackEnd1() case VariantNormal: /* definitely works! */ case VariantWildCastle: /* pieces not automatically shuffled */ case VariantNoCastle: /* pieces not automatically shuffled */ - case VariantFischeRandom: /* Fabien: pieces not automatically shuffled */ + case VariantFischeRandom: /* [HGM] works and shuffles pieces */ case VariantLosers: /* should work except for win condition, and doesn't know captures are mandatory */ case VariantSuicide: /* should work except for win condition, @@ -825,7 +841,9 @@ InitBackEnd1() case VariantTwoKings: /* should work */ case VariantAtomic: /* should work except for win condition */ case Variant3Check: /* should work except for win condition */ - case VariantShatranj: /* might work if TestLegality is off */ + case VariantShatranj: /* should work except for all win conditions */ + case VariantBerolina: /* might work if TestLegality is off */ + case VariantCapaRandom: /* should work */ break; } } @@ -1023,9 +1041,6 @@ InitBackEnd3 P((void)) char buf[MSG_SIZ]; int err; - if (appData.debugMode) { - fprintf(debugFP, "From InitBackend3\n"); - } InitChessProgram(&first, startedFromSetupPosition); if (appData.icsActive) { @@ -1616,7 +1631,15 @@ StringToVariant(e) case 45: v = VariantFalcon; break; - + case 46: + v = VariantCapaRandom; + break; + case 47: + v = VariantBerolina; + break; + case 48: + v = VariantJanus; + break; case -1: /* Found "wild" or "w" in the string but no number; must assume it's normal chess. */ @@ -1840,12 +1863,12 @@ CopyHoldings(Board board, char *holdings, ChessSquare lowestPiece) } -char startBoard[MSG_SIZ]; /* [HGM] variantswitch */ void VariantSwitch(Board board, VariantClass newVariant) { - int newHoldingsWidth, newWidth = 8, newHeight = 8, i, j, oldCurrentMove = currentMove; + int newHoldingsWidth, newWidth = 8, newHeight = 8, i, j; + int oldCurrentMove = currentMove, oldForwardMostMove = forwardMostMove, oldBackwardMostMove = backwardMostMove; Board tempBoard; int saveCastling[BOARD_SIZE], saveEP; startedFromPositionFile = FALSE; @@ -1869,8 +1892,9 @@ VariantSwitch(Board board, VariantClass newVariant) VariantName(gameInfo.variant), VariantName(newVariant)); setbuf(debugFP, NULL); } + shuffleOpenings = 0; /* [HGM] shuffle */ gameInfo.holdingsSize = 5; /* [HGM] prepare holdings */ - switch(newVariant) { + switch(newVariant) { case VariantShogi: newWidth = 9; newHeight = 9; gameInfo.holdingsSize = 7; @@ -1915,14 +1939,16 @@ VariantSwitch(Board board, VariantClass newVariant) saveEP = epStatus[0]; #endif InitPosition(FALSE); /* this sets up board[0], but also other stuff */ - forwardMostMove = backwardMostMove = - currentMove = oldCurrentMove; /* InitPos reset this, but we need still to redraw it */ #if 0 epStatus[0] = saveEP; for(i=0; iuseOOCastle) { + if((gameInfo.variant == VariantFischeRandom || gameInfo.variant == VariantCapaRandom) + && cps->useOOCastle) { if (appData.debugMode) { fprintf(debugFP, "Tord's FRC castling code\n"); } @@ -3951,7 +3988,7 @@ ParseOneMove(move, moveNum, moveType, fromX, fromY, toX, toY, promoChar) case BlackDrop: *fromX = *moveType == WhiteDrop ? (int) CharToPiece(ToUpper(currentMoveString[0])) : - (int) CharToPiece(ToLower(currentMoveString[0])); + (int) CharToPiece(ToLower(currentMoveString[0])); *fromY = DROP_RANK; *toX = currentMoveString[2] - AAA; *toY = currentMoveString[3] - ONE; @@ -3995,6 +4032,7 @@ static int FindEmptySquare( Board board, int n ) return i; } +#if 0 static void ShuffleFRC( Board board ) { int i; @@ -4076,6 +4114,156 @@ static void SetupFRC( Board board, int pos_index ) board[BOARD_HEIGHT-1][i] = board[0][i] + BlackPawn - WhitePawn; } } +#else +// [HGM] shuffle: a more general way to suffle opening setups, applicable to arbitrry variants. +// All positions will have equal probability, but the current method will not provide a unique +// numbering scheme for arrays that contain 3 or more pieces of the same kind. +#define DARK 1 +#define LITE 2 +#define ANY 3 + +int squaresLeft[4]; +int piecesLeft[(int)BlackPawn]; +long long int seed, nrOfShuffles; + +int put(Board board, int pieceType, int rank, int n, int shade) +// put the piece on the (n-1)-th empty squares of the given shade +{ + int i; + + for(i=BOARD_LEFT; i= j) i -= j--; + j = n - 1 - j; i += j; + put(board, pieceType, rank, j, ANY); + put(board, pieceType, rank, i, ANY); +} + +void SetUpShuffle(Board board, int number) +{ + int i, p, first=1; + + seed = number, nrOfShuffles = 1; + if(number < 0) { + srand(time(0)); + for(i=0; i<50; i++) seed += rand(); + seed = rand() ^ rand()<<16; + } + + squaresLeft[DARK] = (BOARD_RGHT - BOARD_LEFT + 1)/2; + squaresLeft[ANY] = BOARD_RGHT - BOARD_LEFT; + squaresLeft[LITE] = squaresLeft[ANY] - squaresLeft[DARK]; + + for(p = 0; p<=(int)WhiteKing; p++) piecesLeft[p] = 0; + + for(i=BOARD_LEFT; i (int) WhitePawn; p--) { + if(p != (int) WhiteBishop && p != (int) WhiteFerz && p != (int) WhiteAlfil) continue; + while(piecesLeft[p] >= 2) { + AddOnePiece(board, p, 0, LITE); + AddOnePiece(board, p, 0, DARK); + } + // Odd color-bound pieces are shuffled with the rest (to not run out of paired squares) + } + + for(p = (int) WhiteKing - 2; p > (int) WhitePawn; p--) { + // Remaining pieces (non-colorbound, or odd color bound) can be put anywhere + // but we leave King and Rooks for last, to possibly obey FRC restriction + if(p == (int)WhiteRook) continue; + while(piecesLeft[p] >= 2) AddTwoPieces(board, p, 0); // add in pairs, for not counting permutations + if(piecesLeft[p]) AddOnePiece(board, p, 0, ANY); // add the odd piece + } + + // now everything is placed, except perhaps King (Unicorn) and Rooks + + if(PosFlags(0) & F_FRC_TYPE_CASTLING) { + // Last King gets castling rights + while(piecesLeft[(int)WhiteUnicorn]) { + i = put(board, WhiteUnicorn, 0, piecesLeft[(int)WhiteRook]/2, ANY); + initialRights[2] = initialRights[5] = castlingRights[0][2] = castlingRights[0][5] = i; + } + + while(piecesLeft[(int)WhiteKing]) { + i = put(board, WhiteKing, 0, piecesLeft[(int)WhiteRook]/2, ANY); + initialRights[2] = initialRights[5] = castlingRights[0][2] = castlingRights[0][5] = i; + } + + + } else { + while(piecesLeft[(int)WhiteKing]) AddOnePiece(board, WhiteKing, 0, ANY); + while(piecesLeft[(int)WhiteUnicorn]) AddOnePiece(board, WhiteUnicorn, 0, ANY); + } + + // Only Rooks can be left; simply place them all + while(piecesLeft[(int)WhiteRook]) { + i = put(board, WhiteRook, 0, 0, ANY); + if(PosFlags(0) & F_FRC_TYPE_CASTLING) { // first and last Rook get FRC castling rights + if(first) { + first=0; + initialRights[1] = initialRights[4] = castlingRights[0][1] = castlingRights[0][4] = i; + } + initialRights[0] = initialRights[3] = castlingRights[0][0] = castlingRights[0][3] = i; + } + } + for(i=BOARD_LEFT; i= 0) appData.defaultFrcPosition %= nrOfShuffles; // normalize +} + +#endif BOOL SetCharTable( char *table, const char * map ) /* [HGM] moved here from winboard.c because of its general usefulness */ @@ -4113,6 +4301,7 @@ InitPosition(redraw) 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 */ { @@ -4145,6 +4334,8 @@ InitPosition(redraw) SetCharTable(pieceToChar, "PNBRQ...........Kpnbrq...........k"); switch (gameInfo.variant) { + case VariantFischeRandom: + shuffleOpenings = TRUE; default: pieces = FIDEArray; break; @@ -4161,6 +4352,8 @@ InitPosition(redraw) castlingRank[6] = 0; castlingRank[7] = BOARD_HEIGHT-1; break; + case VariantCapaRandom: + shuffleOpenings = TRUE; case VariantCapablanca: pieces = CapablancaArray; gameInfo.boardWidth = 10; @@ -4171,6 +4364,18 @@ InitPosition(redraw) gameInfo.boardWidth = 10; SetCharTable(pieceToChar, "PNBRQ..ACKpnbrq..ack"); break; + case VariantJanus: + pieces = JanusArray; + gameInfo.boardWidth = 10; + SetCharTable(pieceToChar, "PNBRQ..JKpnbrq..jk"); + nrCastlingRights = 6; + castlingRights[0][0] = initialRights[0] = BOARD_RGHT-1; + castlingRights[0][1] = initialRights[1] = BOARD_LEFT; + castlingRights[0][2] = initialRights[2] = BOARD_WIDTH-1>>1; + castlingRights[0][3] = initialRights[3] = BOARD_RGHT-1; + castlingRights[0][4] = initialRights[4] = BOARD_LEFT; + castlingRights[0][5] = initialRights[5] = BOARD_WIDTH-1>>1; + break; case VariantFalcon: pieces = FalconArray; gameInfo.boardWidth = 10; @@ -4215,12 +4420,14 @@ InitPosition(redraw) case VariantWildCastle: pieces = FIDEArray; /* !!?shuffle with kings guaranteed to be on d or e file */ + shuffleOpenings = 1; break; case VariantNoCastle: pieces = FIDEArray; nrCastlingRights = 0; for(i=0; i>1; } +#if 0 if(gameInfo.variant == VariantFischeRandom) { if( appData.defaultFrcPosition < 0 ) { ShuffleFRC( initialPosition ); @@ -4303,7 +4511,17 @@ InitPosition(redraw) SetupFRC( initialPosition, appData.defaultFrcPosition ); } startedFromSetupPosition = TRUE; - } else if(startedFromPositionFile) { + } else +#else + if (appData.debugMode) { + fprintf(debugFP, "shuffleOpenings = %d\n", shuffleOpenings); + } + if(shuffleOpenings) { + SetUpShuffle(initialPosition, appData.defaultFrcPosition); + startedFromSetupPosition = TRUE; + } +#endif + if(startedFromPositionFile) { /* [HGM] loadPos: use PositionFile for every new game */ CopyBoard(initialPosition, filePosition); for(i=0; i= 0; i--) { - bp = &boards[moveNum][i][0]; + bp = &boards[moveNum][i][BOARD_LEFT]; for (j = BOARD_LEFT; j < BOARD_RGHT; j++, bp++) { if ((int) *bp < (int) BlackPawn) { sprintf(message, "%c%c%c\n", PieceToChar(*bp), @@ -4376,7 +4594,7 @@ SendBoard(cps, moveNum) SendToProgram("c\n", cps); for (i = BOARD_HEIGHT - 1; i >= 0; i--) { - bp = &boards[moveNum][i][0]; + bp = &boards[moveNum][i][BOARD_LEFT]; for (j = BOARD_LEFT; j < BOARD_RGHT; j++, bp++) { if (((int) *bp != (int) EmptySquare) && ((int) *bp >= (int) BlackPawn)) { @@ -4446,7 +4664,7 @@ PieceForSquare (x, y) int x; int y; { - if (x < BOARD_LEFT || x >= BOARD_RGHT || y < 0 || y >= BOARD_HEIGHT) + if (x < 0 || x >= BOARD_WIDTH || y < 0 || y >= BOARD_HEIGHT) return -1; else return boards[currentMove][y][x]; @@ -4589,7 +4807,7 @@ UserMoveTest(fromX, fromY, toX, toY, promoChar) WhitePawn <= pup && pup < BlackPawn || BlackPawn <= pdown && pdown < EmptySquare && BlackPawn <= pup && pup < EmptySquare - ) && !(gameInfo.variant == VariantFischeRandom && + ) && !((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 ) ) ) @@ -4842,6 +5060,7 @@ FinishMove(moveType, fromX, fromY, toX, toY, promoChar) sprintf(buf, "name %s\n", gameInfo.white); SendToProgram(buf, &first); } + StartClocks(); } ModeHighlight(); } @@ -5103,7 +5322,7 @@ HandleMachineMove(message, cps) machineMove, fromX+AAA, fromY+ONE, toX+AAA, toY+ONE, 0); GameEnds(machineWhite ? BlackWins : WhiteWins, buf1, GE_XBOARD); - } else if(gameInfo.variant != VariantFischeRandom) + } else if(gameInfo.variant != VariantFischeRandom && gameInfo.variant != VariantCapaRandom) /* [HGM] Kludge to handle engines that send FRC-style castling when they shouldn't (like TSCP-Gothic) */ switch(moveType) { @@ -5132,6 +5351,18 @@ HandleMachineMove(message, cps) first.initDone) { SendMoveToICS(moveType, fromX, fromY, toX, toY); ics_user_moved = 1; + if(appData.autoKibitz) { /* [HGM] kibitz: send most-recent PV info to ICS */ + char buf[3*MSG_SIZ]; + + sprintf(buf, "kibitz %d/%+.2f (%.2f sec, %.0f nodes, %1.0f knps) PV = %s\n", + programStats.depth, + programStats.score / 100., + programStats.time / 100., + (double) programStats.nodes, + programStats.nodes / (10*abs(programStats.time) + 1.), + programStats.movelist); + SendToICS(buf); + } } #endif /* currentMoveString is set as a side-effect of ParseOneMove */ @@ -5262,6 +5493,19 @@ HandleMachineMove(message, cps) } } + /* Shatranj baring rule */ + if( gameInfo.variant == VariantShatranj && (NrW == 1 || NrPieces - NrW == 1) ) + { /* bare King */ + + if(--bare < 0 && appData.checkMates) { + /* but only adjudicate them if adjudication enabled */ + ShowMove(fromX, fromY, toX, toY); /*updates currentMove*/ + GameEnds( NrW > 1 ? WhiteWins : NrPiece - NrW > 1 ? BlackWins : GameIsDrawn, + "Xboard adjudication: Bare king", GE_XBOARD ); + return; + } + } else bare = 1; + /* Then some trivial draws (only adjudicate, cannot be claimed) */ if(NrPieces == 4 && ( NrWR == 1 && NrBR == 1 /* KRKR */ @@ -5549,7 +5793,7 @@ HandleMachineMove(message, cps) ParseFeatures(message+8, cps); } if (sscanf(message, "pong %d", &cps->lastPong) == 1) { - return; + return; } /* * If the move is illegal, cancel it and redraw the board. @@ -5942,6 +6186,16 @@ HandleMachineMove(message, cps) programStats.score = curscore; programStats.got_only_move = 0; + if(cps->nps >= 0) { /* [HGM] nps: use engine nodes or time to decrement clock */ + int ticklen; + + if(cps->nps == 0) ticklen = 10*time; // use engine reported time + else ticklen = (1000. * nodes) / cps->nps; // convert node count to time + if(WhiteOnMove(forwardMostMove)) + whiteTimeRemaining = timeRemaining[0][forwardMostMove] - ticklen; + else blackTimeRemaining = timeRemaining[1][forwardMostMove] - ticklen; + } + /* Buffer overflow protection */ if (buf1[0] != NULLCHAR) { if (strlen(buf1) >= sizeof(programStats.movelist) @@ -6332,13 +6586,15 @@ ApplyMove(fromX, fromY, toX, toY, promoChar, board) int promoChar; Board board; { - ChessSquare captured = board[toY][toX], piece, king; int p; + ChessSquare captured = board[toY][toX], piece, king; int p, oldEP = EP_NONE, berolina = 0; /* [HGM] compute & store e.p. status and castling rights for new position */ /* if we are updating a board for which those exist (i.e. in boards[]) */ if((p = ((int)board - (int)boards[0])/((int)boards[1]-(int)boards[0])) < MAX_MOVES && p > 0) { int i, j; + if(gameInfo.variant == VariantBerolina) berolina = EP_BEROLIN_A; + oldEP = epStatus[p-1]; epStatus[p] = EP_NONE; if( board[toY][toX] != EmptySquare ) @@ -6346,17 +6602,23 @@ ApplyMove(fromX, fromY, toX, toY, promoChar, board) if( board[fromY][fromX] == WhitePawn ) { epStatus[p] = EP_PAWN_MOVE; - if( toY-fromY==2 && - (toX>BOARD_LEFT && board[toY][toX-1] == BlackPawn || - toXBOARD_LEFT && board[toY][toX-1] == BlackPawn && + gameInfo.variant != VariantBerolina || toX < fromX) + epStatus[p] = toX | berolina; + if(toX fromX) + epStatus[p] = toX; } else if( board[fromY][fromX] == BlackPawn ) { epStatus[p] = EP_PAWN_MOVE; - if( toY-fromY== -2 && - (toX>BOARD_LEFT && board[toY][toX-1] == WhitePawn || - toXBOARD_LEFT && board[toY][toX-1] == WhitePawn && + gameInfo.variant != VariantBerolina || toX < fromX) + epStatus[p] = toX | berolina; + if(toX fromX) + epStatus[p] = toX; } for(i=0; i fromX+1) { @@ -6485,12 +6761,26 @@ ApplyMove(fromX, fromY, toX, toY, promoChar, board) } else if ((fromY == 3) && (toX != fromX) && gameInfo.variant != VariantXiangqi + && gameInfo.variant != VariantBerolina && (board[fromY][fromX] == BlackPawn) && (board[toY][toX] == EmptySquare)) { board[fromY][fromX] = EmptySquare; board[toY][toX] = BlackPawn; captured = board[toY + 1][toX]; board[toY + 1][toX] = EmptySquare; + } else if ((fromY == 3) + && (toX == fromX) + && gameInfo.variant == VariantBerolina + && (board[fromY][fromX] == BlackPawn) + && (board[toY][toX] == EmptySquare)) { + board[fromY][fromX] = EmptySquare; + board[toY][toX] = BlackPawn; + if(oldEP & EP_BEROLIN_A) { + captured = board[fromY][fromX-1]; + board[fromY][fromX-1] = EmptySquare; + }else{ captured = board[fromY][fromX+1]; + board[fromY][fromX+1] = EmptySquare; + } } else { board[toY][toX] = board[fromY][fromX]; board[fromY][fromX] = EmptySquare; @@ -6711,7 +7001,7 @@ InitChessProgram(cps, setup) if (gameInfo.variant != VariantNormal && gameInfo.variant != VariantLoadable /* [HGM] also send variant if board size non-standard */ - || gameInfo.boardWidth != 8 || gameInfo.boardHeight != 8 + || gameInfo.boardWidth != 8 || gameInfo.boardHeight != 8 || gameInfo.holdingsSize != 0 ) { char *v = VariantName(gameInfo.variant); if (cps->protocolVersion != 1 && StrStr(cps->variants, v) == NULL) { @@ -6729,7 +7019,8 @@ InitChessProgram(cps, setup) overruled = gameInfo.boardWidth != 9 || gameInfo.boardHeight != 9 || gameInfo.holdingsSize != 7; if( gameInfo.variant == VariantBughouse || gameInfo.variant == VariantCrazyhouse ) overruled = gameInfo.boardWidth != 8 || gameInfo.boardHeight != 8 || gameInfo.holdingsSize != 5; - if( gameInfo.variant == VariantCapablanca || gameInfo.variant == VariantGothic || gameInfo.variant == VariantFalcon ) + if( gameInfo.variant == VariantCapablanca || gameInfo.variant == VariantCapaRandom || + gameInfo.variant == VariantGothic || gameInfo.variant == VariantFalcon ) overruled = gameInfo.boardWidth != 10 || gameInfo.boardHeight != 8 || gameInfo.holdingsSize != 0; if( gameInfo.variant == VariantCourier ) overruled = gameInfo.boardWidth != 12 || gameInfo.boardHeight != 8 || gameInfo.holdingsSize != 0; @@ -6753,14 +7044,17 @@ InitChessProgram(cps, setup) } else sprintf(b, "%s", VariantName(gameInfo.variant)); sprintf(buf, "variant %s\n", b); SendToProgram(buf, cps); - /* [HGM] send opening position in FRC to first engine */ - if(setup /* cps == &first && gameInfo.variant == VariantFischeRandom */) { + } + currentlyInitializedVariant = gameInfo.variant; + + /* [HGM] send opening position in FRC to first engine */ + if(setup) { SendToProgram("force\n", cps); SendBoard(cps, 0); /* engine is now in force mode! Set flag to wake it up after first move. */ setboardSpoiledMachineBlack = 1; - } } + if (cps->sendICS) { sprintf(buf, "ics %s\n", appData.icsActive ? appData.icsHost : "-"); SendToProgram(buf, cps); @@ -7217,6 +7511,14 @@ FeedMovesToProgram(cps, upto) fprintf(debugFP, "Feeding %smoves %d through %d to %s chess program\n", startedFromSetupPosition ? "position and " : "", backwardMostMove, upto, cps->which); + if(currentlyInitializedVariant != gameInfo.variant) { char buf[MSG_SIZ]; + // [HGM] variantswitch: make engine aware of new variant + if(cps->protocolVersion > 1 && StrStr(cps->variants, VariantName(gameInfo.variant)) == NULL) + return; // [HGM] refrain from feeding moves altogether if variant is unsupported! + sprintf(buf, "variant %s\n", VariantName(gameInfo.variant)); + SendToProgram(buf, cps); + currentlyInitializedVariant = gameInfo.variant; + } SendToProgram("force\n", cps); if (startedFromSetupPosition) { SendBoard(cps, backwardMostMove); @@ -7239,9 +7541,6 @@ ResurrectChessProgram() if (appData.noChessProgram || first.pr != NoProc) return; StartChessProgram(&first); - if (appData.debugMode) { - fprintf(debugFP, "From ResurrectChessProgram\n"); - } InitChessProgram(&first, FALSE); FeedMovesToProgram(&first, currentMove); @@ -7315,6 +7614,7 @@ Reset(redraw, init) ExitAnalyzeMode(); gameMode = BeginningOfGame; ModeHighlight(); + if(appData.icsActive) gameInfo.variant = VariantNormal; InitPosition(redraw); for (i = 0; i < MAX_MOVES; i++) { if (commentList[i] != NULL) { @@ -7329,10 +7629,8 @@ Reset(redraw, init) StartChessProgram(&first); } if (init) { - if (appData.debugMode) { - fprintf(debugFP, "From Reset\n"); + InitChessProgram(&first, startedFromSetupPosition); } -InitChessProgram(&first, startedFromSetupPosition);} DisplayTitle(""); DisplayMessage("", ""); HistorySet(parseList, backwardMostMove, forwardMostMove, currentMove-1); @@ -8080,7 +8378,7 @@ LoadGame(f, gameNumber, title, useList) initialRulePlies = FENrulePlies; epStatus[0] = FENepStatus; for( i=0; i< nrCastlingRights; i++ ) - castlingRights[0][i] = FENcastlingRights[i]; + initialRights[i] = castlingRights[0][i] = FENcastlingRights[i]; } if (blackPlaysFirst) { currentMove = forwardMostMove = backwardMostMove = 1; @@ -8198,9 +8496,6 @@ LoadGame(f, gameNumber, title, useList) if (first.pr == NoProc) { StartChessProgram(&first); } - if (appData.debugMode) { - fprintf(debugFP, "From LoadGame\n"); - } InitChessProgram(&first, FALSE); SendToProgram("force\n", &first); if (startedFromSetupPosition) { @@ -8364,9 +8659,6 @@ LoadPosition(f, positionNumber, title) strcpy(lastLoadPositionTitle, title); if (first.pr == NoProc) { StartChessProgram(&first); - if (appData.debugMode) { - fprintf(debugFP, "From LoadPosition\n"); - } InitChessProgram(&first, FALSE); } pn = positionNumber; @@ -8734,6 +9026,7 @@ SaveGamePGN(f) /* [HGM] add time */ char buf[MSG_SIZ]; int seconds = 0; +#if 0 if(i >= backwardMostMove) { /* take the time that changed */ seconds = timeRemaining[0][i] - timeRemaining[0][i+1]; @@ -8741,7 +9034,8 @@ SaveGamePGN(f) seconds = timeRemaining[1][i] - timeRemaining[1][i+1]; } seconds /= 1000; - seconds = pvInfoList[i].time/100; +#endif + seconds = pvInfoList[i].time/100; // [HGM] PVtime: use engine time if (appData.debugMode) { fprintf(debugFP, "times = %d %d %d %d, seconds=%d\n", timeRemaining[0][i+1], timeRemaining[0][i], @@ -9689,9 +9983,6 @@ TwoMachinesEvent P((void)) return; } DisplayMessage("", ""); - if (appData.debugMode) { - fprintf(debugFP, "From TwoMachines\n"); - } InitChessProgram(&second, FALSE); SendToProgram("force\n", &second); if (startedFromSetupPosition) { @@ -9934,9 +10225,6 @@ void EditPositionDone() { startedFromSetupPosition = TRUE; - if (appData.debugMode) { - fprintf(debugFP, "From EditPosition\n"); - } InitChessProgram(&first, FALSE); SendToProgram("force\n", &first); if (blackPlaysFirst) { @@ -11201,11 +11489,29 @@ ReceiveFromProgram(isr, closure, message, count, error) *end_str = NULLCHAR; if (appData.debugMode) { - TimeMark now; - GetTimeMark(&now); - fprintf(debugFP, "%ld <%-6s: %s\n", - SubtractTimeMarks(&now, &programStartTime), - cps->which, message); + TimeMark now; int print = 1; + char *quote = ""; char c; int i; + + if(appData.engineComments != 1) { /* [HGM] debug: decide if protocol-violating output is written */ + char start = message[0]; + if(start >='A' && start <= 'Z') start += 'a' - 'A'; // be tolerant to capitalizing + if(sscanf(message, "%d%c%d%d%d", &i, &c, &i, &i, &i) != 5 && + sscanf(message, "move %c", &c)!=1 && sscanf(message, "offer%c", &c)!=1 && + 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, "askuser%c", &c)!=1 && sscanf(message, "1-0 %c", &c)!=1 && + sscanf(message, "1/2-1/2 %c", &c)!=1 && start != '#') + { quote = "# "; print = (appData.engineComments == 2); } + message[0] = start; // restore original message + } + if(print) { + GetTimeMark(&now); + fprintf(debugFP, "%ld <%-6s: %s%s\n", + SubtractTimeMarks(&now, &programStartTime), cps->which, + quote, + message); + } } HandleMachineMove(message, cps); } @@ -11268,6 +11574,14 @@ SendTimeControl(cps, mps, tc, inc, sd, st) } SendToProgram(buf, cps); } + + if(cps->nps > 0) { /* [HGM] nps */ + if(cps->supportsNPS == FALSE) cps->nps = -1; // don't use if engine explicitly says not supported! + else { + sprintf(buf, "nps %d\n", cps->nps); + SendToProgram(buf, cps); + } + } } ChessProgramState *WhitePlayer() @@ -11435,6 +11749,7 @@ ParseFeatures(args, cps) if (BoolFeature(&p, "name", &cps->sendName, cps)) continue; if (BoolFeature(&p, "pause", &val, cps)) continue; /* unused at present */ if (BoolFeature(&p, "debug", &cps->debug, cps)) continue; + if (BoolFeature(&p, "nps", &cps->supportsNPS, cps)) continue; if (IntFeature(&p, "level", &cps->maxNrOfSessions, cps)) continue; if (IntFeature(&p, "done", &val, cps)) { FeatureDone(cps, val); @@ -11948,10 +12263,12 @@ DecrementClocks() if (fudge < 0 || fudge > FUDGE) fudge = 0; if (WhiteOnMove(forwardMostMove)) { + if(whiteNPS >= 0) lastTickLength = 0; timeRemaining = whiteTimeRemaining -= lastTickLength; DisplayWhiteClock(whiteTimeRemaining - fudge, WhiteOnMove(currentMove)); } else { + if(blackNPS >= 0) lastTickLength = 0; timeRemaining = blackTimeRemaining -= lastTickLength; DisplayBlackClock(blackTimeRemaining - fudge, !WhiteOnMove(currentMove)); @@ -12006,13 +12323,15 @@ SwitchClocks() if (StopClockTimer() && appData.clockMode) { lastTickLength = SubtractTimeMarks(&now, &tickStartTM); if (WhiteOnMove(forwardMostMove)) { + if(blackNPS >= 0) lastTickLength = 0; blackTimeRemaining -= lastTickLength; /* [HGM] PGNtime: save time for PGN file if engine did not give it */ if(pvInfoList[forwardMostMove-1].time == -1) pvInfoList[forwardMostMove-1].time = (timeRemaining[1][forwardMostMove-1] - blackTimeRemaining)/10; } else { - whiteTimeRemaining -= lastTickLength; + if(whiteNPS >= 0) lastTickLength = 0; + whiteTimeRemaining -= lastTickLength; /* [HGM] PGNtime: save time for PGN file if engine did not give it */ if(pvInfoList[forwardMostMove-1].time == -1) pvInfoList[forwardMostMove-1].time = @@ -12061,9 +12380,11 @@ StopClocks() lastTickLength = SubtractTimeMarks(&now, &tickStartTM); if (WhiteOnMove(forwardMostMove)) { + if(whiteNPS >= 0) lastTickLength = 0; whiteTimeRemaining -= lastTickLength; DisplayWhiteClock(whiteTimeRemaining, WhiteOnMove(currentMove)); } else { + if(blackNPS >= 0) lastTickLength = 0; blackTimeRemaining -= lastTickLength; DisplayBlackClock(blackTimeRemaining, !WhiteOnMove(currentMove)); } @@ -12085,6 +12406,21 @@ StartClocks() GetTimeMark(&tickStartTM); intendedTickLength = NextTickLength(WhiteOnMove(forwardMostMove) ? whiteTimeRemaining : blackTimeRemaining); + + /* [HGM] nps: figure out nps factors, by determining which engine plays white and/or black once and for all */ + whiteNPS = blackNPS = -1; + if(gameMode == MachinePlaysWhite || gameMode == TwoMachinesPlay && first.twoMachinesColor[0] == 'w' + || appData.zippyPlay && gameMode == IcsPlayingBlack) // first (perhaps only) engine has white + whiteNPS = first.nps; + if(gameMode == MachinePlaysBlack || gameMode == TwoMachinesPlay && first.twoMachinesColor[0] == 'b' + || appData.zippyPlay && gameMode == IcsPlayingWhite) // first (perhaps only) engine has black + blackNPS = first.nps; + if(gameMode == TwoMachinesPlay && first.twoMachinesColor[0] == 'b') // second only used in Two-Machines mode + whiteNPS = second.nps; + if(gameMode == TwoMachinesPlay && first.twoMachinesColor[0] == 'w') + blackNPS = second.nps; + if(appData.debugMode) fprintf(debugFP, "nps: w=%d, b=%d\n", whiteNPS, blackNPS); + StartClockTimer(intendedTickLength); } @@ -12323,7 +12659,7 @@ PositionToFEN(move, useFEN960) if(nrCastlingRights) { q = p; - if(gameInfo.variant == VariantFischeRandom) { + if(gameInfo.variant == VariantFischeRandom || gameInfo.variant == VariantCapaRandom) { /* [HGM] write directly from rights */ if(castlingRights[move][2] >= 0 && castlingRights[move][0] >= 0 ) @@ -12516,7 +12852,7 @@ ParseFEN(board, blackPlaysFirst, fen) FENepStatus = EP_UNKNOWN; for(i=0; i=0 && board[castlingRank[0]][initialRights[0]] != WhiteRook) FENcastlingRights[0] = -1; if(initialRights[1]>=0 && board[castlingRank[1]][initialRights[1]] != WhiteRook) FENcastlingRights[1] = -1; @@ -12535,7 +12871,7 @@ ParseFEN(board, blackPlaysFirst, fen) } } while(*p=='K' || *p=='Q' || *p=='k' || *p=='q' || *p=='-' || - gameInfo.variant == VariantFischeRandom && + (gameInfo.variant == VariantFischeRandom || gameInfo.variant == VariantCapaRandom) && ( *p >= 'a' && *p < 'a' + gameInfo.boardWidth) || ( *p >= 'A' && *p < 'A' + gameInfo.boardWidth) ) { char c = *p++; int whiteKingFile=-1, blackKingFile=-1; diff --git a/backend.h b/backend.h index 111a3af..217aa94 100644 --- a/backend.h +++ b/backend.h @@ -257,6 +257,8 @@ typedef struct _CPS { int debug; /* [HGM] ignore engine debug lines starting with '#' */ int maxNrOfSessions; /* [HGM] secondary TC: max args in 'level' command */ int accumulateTC; /* [HGM] secondary TC: how to handle extra sessions */ + int nps; /* [HGM] nps: factor for node count to replace time */ + int supportsNPS; } ChessProgramState; extern ChessProgramState first, second; @@ -269,5 +271,6 @@ typedef struct { } ChessProgramStats_Move; extern ChessProgramStats_Move pvInfoList[MAX_MOVES]; +extern shuffleOpenings; #endif /* _BACKEND */ diff --git a/backendz.h b/backendz.h index a7592e7..4014e3b 100644 --- a/backendz.h +++ b/backendz.h @@ -1,72 +1,72 @@ -/* - * backendz.h -- Internal interface exported by XBoard backend.c to zippy.c - * $Id: backendz.h,v 2.1 2003/10/27 19:21:00 mann Exp $ - * - * Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts. - * Enhancements Copyright 1992-95 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: - * ------------------------------------------------------------------------ - * 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 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * ------------------------------------------------------------------------ - */ - -#ifndef _BACKENDZ -#define _BACKENDZ - -#include "common.h" -#include "frontend.h" - -extern long whiteTimeRemaining, blackTimeRemaining; -extern int forwardMostMove; -extern char star_match[STAR_MATCH_N][MSG_SIZ]; -extern ProcRef firstProgramPR; -extern int startedFromSetupPosition; -extern int firstMove; -extern GameInfo gameInfo; -extern void SendToICS P((char *s)); -extern int looking_at P((char *, int *, char *)); -extern void SendToProgram P((char *message, ChessProgramState *cps)); -extern void SendBoard P((ChessProgramState *cps, int moveNum)); -void SendTimeRemaining P((ChessProgramState *cps, - int/*boolean*/ machineWhite)); - -extern char ics_handle[]; -extern char *ics_prefix; - -#endif +/* + * backendz.h -- Internal interface exported by XBoard backend.c to zippy.c + * $Id: backendz.h,v 2.1 2003/10/27 19:21:00 mann Exp $ + * + * Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts. + * Enhancements Copyright 1992-95 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: + * ------------------------------------------------------------------------ + * 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 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * ------------------------------------------------------------------------ + */ + +#ifndef _BACKENDZ +#define _BACKENDZ + +#include "common.h" +#include "frontend.h" + +extern long whiteTimeRemaining, blackTimeRemaining; +extern int forwardMostMove; +extern char star_match[STAR_MATCH_N][MSG_SIZ]; +extern ProcRef firstProgramPR; +extern int startedFromSetupPosition; +extern int firstMove; +extern GameInfo gameInfo; +extern void SendToICS P((char *s)); +extern int looking_at P((char *, int *, char *)); +extern void SendToProgram P((char *message, ChessProgramState *cps)); +extern void SendBoard P((ChessProgramState *cps, int moveNum)); +void SendTimeRemaining P((ChessProgramState *cps, + int/*boolean*/ machineWhite)); + +extern char ics_handle[]; +extern char *ics_prefix; + +#endif diff --git a/bitmaps/README.bitmaps b/bitmaps/README.bitmaps index 573108d..8e86abe 100644 --- a/bitmaps/README.bitmaps +++ b/bitmaps/README.bitmaps @@ -18,3 +18,84 @@ program, to write the xbm-files. 5.Feb.1994 Elmar Bartel bartel@informatik.tu-muenchen.de + +[Elmar supplied only 80, 64, and 40 pixel bitmaps] + +* * * + +The 21-pixel bitmaps are also based on Elmar's font, but I hand-tuned +them quite a bit. I converted them from the Metafont gf file by +running gftype and applying a C program of my own to the +human-readable output. + +icon_white and icon_black were produced in the same way. + +21 Nov 1995 Tim Mann + +* * * + +The 33, 45, 49, 54, and 58 pixel bitmaps are also based on Elmar's font. +They were converted using dopkbm.sh, followed by a manual pass with the +X bitmap editor to adjust the size (adding blank borders as needed) and +to hand-tune the pixels in a few cases where that was badly needed. +Here is some data that may be useful in later conversions: + +Character numbers in fselch fonts: + +Piece Open Solid Open/bg Solid/bg +P 0 014 022 036 +N 1 015 023 037 +B 2 016 024 040 +R 3 017 025 041 +Q 4 020 026 042 +K 5 021 027 043 + +Sizes (WxH): + +fselch*.mf blank sq queen used for +---------- -------- ----- -------- +8 33x33 31x29 33x33 +9 37x37 33x32 none +10 42x42 41x37 none +11 46x46 43x41 45x45 +12 50x50 47x43 49x49 +13 54x54 50x47 54x54 +14 58x58 56x50 58x58 +20 83x83 71x76 none +21 87x87 76x81 87x87 +22 91x91 79x83 none +23 95x95 82x89 95x95 +25 104x104 91x99 none +26 108x108 94x103 108x108 +28 116x116 99x107 116x116 +30 125x125 110x118 none +31 129x129 113x122 129x129 +32 133x133 116x124 none + + +In each case, fselch*.mf was formatted for 300 dpi. On Linux with the +Red Hat tetex-0.4pl8-9 package, this required mag=0.5. Example: + + mf + \mode=localfont; mag=0.5; input fselch8.mf + gftopk fselch8.300gf + +On Red Hat with tetex-0.9-6, mag=1.0 was needed instead. + + mf + \mode=localfont; mag=1.0; input fselch26.mf + gftopk fselch26.300gf + + +15 Feb 1998 Tim Mann +25 Feb 1999 Tim Mann + +* * * + +I added a large number of bitmaps for non-orthodox pieces, mainly in +size middling and bulky (and to a lesser extent in petite). A few pieces +(Archbishop, Chancellor and Lance) are available in all sizes from petite to bulky. +The bitmaps were created as WinBoard .bmp monochrome bitmaps with MS Paint, and +converted to .bm C-source files semi-automatically, to be used as built-ins for xboard. + + 4 Aug 2008 H.G. Muller \ No newline at end of file diff --git a/bitmaps/a33o.bm b/bitmaps/a33o.bm new file mode 100644 index 0000000..a38343d --- /dev/null +++ b/bitmaps/a33o.bm @@ -0,0 +1,16 @@ +#define a33o_width 33 +#define a33o_height 33 +static char a33o_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, 0xc0, 0x07, 0x00, 0x00, +0x00, 0x20, 0x08, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x0c, 0x60, 0x00, 0x00, +0x00, 0x03, 0x80, 0x01, 0x00, 0xc0, 0x00, 0x01, 0x06, 0x00, 0x30, 0x00, 0x01, 0x18, 0x00, +0x08, 0x00, 0x01, 0x20, 0x00, 0x08, 0xc0, 0x07, 0x20, 0x00, 0x30, 0x00, 0x01, 0x18, 0x00, +0xc0, 0x00, 0x01, 0x06, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, +0x00, 0x04, 0x40, 0x00, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x00, +0x00, 0xf4, 0x5f, 0x00, 0x00, 0x00, 0x0c, 0x60, 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x00, +0x00, 0xf8, 0x3f, 0x00, 0x00, 0x00, 0xc0, 0x06, 0x00, 0x00, 0xf0, 0x3f, 0xf8, 0x1f, 0x00, +0x08, 0x00, 0x01, 0x20, 0x00, 0x08, 0xc0, 0x06, 0x20, 0x00, 0xf0, 0x3f, 0xf8, 0x1f, 0x00, +0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + +}; diff --git a/bitmaps/a33s.bm b/bitmaps/a33s.bm new file mode 100644 index 0000000..5675e6c --- /dev/null +++ b/bitmaps/a33s.bm @@ -0,0 +1,16 @@ +#define a33s_width 33 +#define a33s_height 33 +static char a33s_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, 0xc0, 0x07, 0x00, 0x00, +0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00, +0x00, 0xff, 0xff, 0x01, 0x00, 0xc0, 0xff, 0xfe, 0x07, 0x00, 0xf0, 0xff, 0xfe, 0x1f, 0x00, +0xf8, 0xff, 0xfe, 0x3f, 0x00, 0xf8, 0x3f, 0xf8, 0x3f, 0x00, 0xf0, 0xff, 0xfe, 0x1f, 0x00, +0xc0, 0xff, 0xfe, 0x07, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, +0x00, 0xfc, 0x7f, 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, +0x00, 0x0c, 0x60, 0x00, 0x00, 0x00, 0xf4, 0x5f, 0x00, 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00, +0x00, 0xf8, 0x3f, 0x00, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x1f, 0x00, +0xf8, 0xff, 0xff, 0x3f, 0x00, 0xf8, 0xff, 0xfe, 0x3f, 0x00, 0xf0, 0x3f, 0xf8, 0x1f, 0x00, +0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + +}; diff --git a/bitmaps/a37o.bm b/bitmaps/a37o.bm new file mode 100644 index 0000000..15faaf8 --- /dev/null +++ b/bitmaps/a37o.bm @@ -0,0 +1,17 @@ +#define a37o_width 37 +#define a37o_height 37 +static char a37o_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, 0x0e, 0x00, 0x00, +0x00, 0x80, 0x31, 0x00, 0x00, 0x00, 0x70, 0xc0, 0x01, 0x00, 0x00, 0x0e, 0x00, 0x0e, 0x00, +0x80, 0x01, 0x00, 0x30, 0x00, 0x20, 0x00, 0x00, 0xc0, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, +0x08, 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x04, 0x00, 0x02, 0x08, 0x00, 0x04, 0x00, 0x02, +0x10, 0x80, 0x3f, 0x00, 0x01, 0x10, 0x00, 0x04, 0x00, 0x01, 0x60, 0x00, 0x04, 0xc0, 0x00, +0x80, 0x01, 0x04, 0x30, 0x00, 0x00, 0x06, 0x00, 0x0c, 0x00, 0x00, 0x08, 0x00, 0x02, 0x00, +0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0xf0, 0xff, 0x01, 0x00, 0x00, 0x10, 0x00, 0x01, 0x00, +0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0xf0, 0xff, 0x01, 0x00, 0x00, 0x18, 0x00, 0x03, 0x00, +0x00, 0x18, 0x00, 0x03, 0x00, 0x00, 0xe0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, +0x00, 0xc3, 0x60, 0x18, 0x00, 0xf0, 0x3c, 0x84, 0xe7, 0x01, 0x08, 0x00, 0x1b, 0x00, 0x02, +0xd0, 0xff, 0xe0, 0x7f, 0x01, 0x30, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00 +}; diff --git a/bitmaps/a37s.bm b/bitmaps/a37s.bm new file mode 100644 index 0000000..121250a --- /dev/null +++ b/bitmaps/a37s.bm @@ -0,0 +1,17 @@ +#define a37s_width 37 +#define a37s_height 37 +static char a37s_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, 0x0e, 0x00, 0x00, +0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x01, 0x00, 0x00, 0xfe, 0xff, 0x0f, 0x00, +0x80, 0xff, 0xff, 0x3f, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x01, +0xf8, 0xff, 0xff, 0xff, 0x03, 0xf8, 0xff, 0xfb, 0xff, 0x03, 0xf8, 0xff, 0xfb, 0xff, 0x03, +0xf0, 0x7f, 0xc0, 0xff, 0x01, 0xf0, 0xff, 0xfb, 0xff, 0x01, 0xe0, 0xff, 0xfb, 0xff, 0x00, +0x80, 0xff, 0xfb, 0x3f, 0x00, 0x00, 0xfe, 0xff, 0x0f, 0x00, 0x00, 0xf8, 0xff, 0x03, 0x00, +0x00, 0xf0, 0xff, 0x01, 0x00, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0xf0, 0xff, 0x01, 0x00, +0x00, 0xf0, 0xff, 0x01, 0x00, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0xf8, 0xff, 0x03, 0x00, +0x00, 0xf8, 0xff, 0x03, 0x00, 0x00, 0xe0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, +0x00, 0xc3, 0x7f, 0x18, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x01, 0xf8, 0xff, 0xfb, 0xff, 0x03, +0xf0, 0xff, 0xe0, 0xff, 0x01, 0x30, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00 +}; diff --git a/bitmaps/a40o.bm b/bitmaps/a40o.bm new file mode 100644 index 0000000..25bbadb --- /dev/null +++ b/bitmaps/a40o.bm @@ -0,0 +1,18 @@ +#define a40o_width 40 +#define a40o_height 40 +static char a40o_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, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x83, 0x01, 0x00, 0x00, 0x80, 0x00, 0x02, 0x00, +0x00, 0x60, 0x00, 0x0c, 0x00, 0x00, 0x18, 0x00, 0x30, 0x00, 0x00, 0x06, 0x00, 0xc0, 0x00, +0x80, 0x01, 0x10, 0x00, 0x03, 0x40, 0x00, 0x10, 0x00, 0x04, 0x20, 0x00, 0x10, 0x00, 0x08, +0x20, 0x00, 0xfe, 0x00, 0x08, 0x40, 0x00, 0x10, 0x00, 0x04, 0x80, 0x00, 0x10, 0x00, 0x02, +0x00, 0x03, 0x10, 0x80, 0x01, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x08, 0x00, 0x20, 0x00, +0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x20, 0xff, 0x09, 0x00, 0x00, 0xc0, 0x00, 0x06, 0x00, +0x00, 0x40, 0x00, 0x04, 0x00, 0x00, 0x20, 0x00, 0x08, 0x00, 0x00, 0xe0, 0xff, 0x0f, 0x00, +0x00, 0x30, 0x00, 0x18, 0x00, 0x00, 0x70, 0x00, 0x1c, 0x00, 0x00, 0x80, 0xff, 0x03, 0x00, +0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0xc0, 0xff, 0x01, 0xff, 0x07, +0x30, 0x00, 0x10, 0x00, 0x18, 0x08, 0x00, 0x6c, 0x00, 0x20, 0xd0, 0xff, 0x83, 0xff, 0x17, +0x20, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00 +}; diff --git a/bitmaps/a40s.bm b/bitmaps/a40s.bm new file mode 100644 index 0000000..9f58f2e --- /dev/null +++ b/bitmaps/a40s.bm @@ -0,0 +1,18 @@ +#define a40s_width 40 +#define a40s_height 40 +static char a40s_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, 0x7c, 0x00, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0x80, 0xff, 0x03, 0x00, +0x00, 0xe0, 0xff, 0x0f, 0x00, 0x00, 0xf8, 0xff, 0x3f, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x00, +0x80, 0xff, 0xef, 0xff, 0x03, 0xc0, 0xff, 0xef, 0xff, 0x07, 0xe0, 0xff, 0xef, 0xff, 0x0f, +0xe0, 0xff, 0x01, 0xff, 0x0f, 0xc0, 0xff, 0xef, 0xff, 0x07, 0x80, 0xff, 0xef, 0xff, 0x03, +0x00, 0xff, 0xef, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x7f, 0x00, 0x00, 0xf8, 0xff, 0x3f, 0x00, +0x00, 0xf0, 0xff, 0x1f, 0x00, 0x00, 0xe0, 0x00, 0x0e, 0x00, 0x00, 0x40, 0xff, 0x05, 0x00, +0x00, 0xc0, 0xff, 0x07, 0x00, 0x00, 0xe0, 0xff, 0x0f, 0x00, 0x00, 0x20, 0x00, 0x08, 0x00, +0x00, 0xf0, 0xff, 0x1f, 0x00, 0x00, 0xf0, 0xff, 0x1f, 0x00, 0x00, 0x80, 0xff, 0x03, 0x00, +0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x07, +0xf0, 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xef, 0xff, 0x3f, 0xf0, 0xff, 0x83, 0xff, 0x1f, +0x20, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00 +}; diff --git a/bitmaps/a45o.bm b/bitmaps/a45o.bm new file mode 100644 index 0000000..8717312 --- /dev/null +++ b/bitmaps/a45o.bm @@ -0,0 +1,23 @@ +#define a45o_width 45 +#define a45o_height 45 +static char a45o_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, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x00, +0x00, 0x00, 0x06, 0x0c, 0x00, 0x00, 0x00, 0x80, 0x01, 0x30, 0x00, 0x00, 0x00, 0x60, 0x00, +0xc0, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0c, 0x00, +0x80, 0x01, 0x40, 0x00, 0x30, 0x00, 0x60, 0x00, 0x40, 0x00, 0xc0, 0x00, 0x10, 0x00, 0x40, +0x00, 0x00, 0x01, 0x10, 0x00, 0xfc, 0x07, 0x00, 0x01, 0x10, 0x00, 0x40, 0x00, 0x00, 0x01, +0x20, 0x00, 0x40, 0x00, 0x80, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x00, 0xc0, 0x00, 0x40, +0x00, 0x60, 0x00, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x06, 0x00, +0x00, 0x30, 0x00, 0x80, 0x01, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0xc0, 0xff, +0x7f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x20, 0x00, 0x00, 0x00, 0x80, 0x00, 0x20, 0x00, 0x00, +0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0xff, 0x5f, 0x00, 0x00, 0x00, 0xc0, 0x00, +0x60, 0x00, 0x00, 0x00, 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0x00, +0x00, 0x00, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0c, +0x06, 0x00, 0x00, 0x80, 0xff, 0x43, 0xf8, 0x3f, 0x00, 0x70, 0x00, 0xb0, 0x01, 0xc0, 0x01, +0x08, 0x00, 0x08, 0x02, 0x00, 0x02, 0xc8, 0xff, 0x07, 0xfc, 0x7f, 0x02, 0x30, 0x00, 0x00, +0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + +}; diff --git a/bitmaps/a45s.bm b/bitmaps/a45s.bm new file mode 100644 index 0000000..6991ceb --- /dev/null +++ b/bitmaps/a45s.bm @@ -0,0 +1,23 @@ +#define a45s_width 45 +#define a45s_height 45 +static char a45s_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, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, +0x00, 0x00, 0xfe, 0x0f, 0x00, 0x00, 0x00, 0x80, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xe0, 0xff, +0xff, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x03, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x0f, 0x00, +0x80, 0xff, 0xbf, 0xff, 0x3f, 0x00, 0xe0, 0xff, 0xbf, 0xff, 0xff, 0x00, 0xf0, 0xff, 0xbf, +0xff, 0xff, 0x01, 0xf0, 0xff, 0x03, 0xf8, 0xff, 0x01, 0xf0, 0xff, 0xbf, 0xff, 0xff, 0x01, +0xe0, 0xff, 0xbf, 0xff, 0xff, 0x00, 0xe0, 0xff, 0xbf, 0xff, 0xff, 0x00, 0xc0, 0xff, 0xbf, +0xff, 0x7f, 0x00, 0x00, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x07, 0x00, +0x00, 0xf0, 0xff, 0xff, 0x01, 0x00, 0x00, 0xc0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x40, 0x00, +0x40, 0x00, 0x00, 0x00, 0x80, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x80, 0xff, 0x3f, 0x00, 0x00, +0x00, 0xc0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x60, 0x00, 0x00, 0x00, 0x40, 0xff, +0x5f, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x00, 0x00, +0x00, 0x00, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfc, +0x07, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x3f, 0x00, 0xf0, 0xff, 0xbf, 0xff, 0xff, 0x01, +0xf8, 0xff, 0x0f, 0xfe, 0xff, 0x03, 0xf8, 0xff, 0x07, 0xfc, 0xff, 0x03, 0x30, 0x00, 0x00, +0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + +}; diff --git a/bitmaps/a49o.bm b/bitmaps/a49o.bm new file mode 100644 index 0000000..c777c8b --- /dev/null +++ b/bitmaps/a49o.bm @@ -0,0 +1,27 @@ +#define a49o_width 49 +#define a49o_height 49 +static char a49o_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, 0x80, 0x03, +0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, +0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, +0x00, 0x00, 0xc0, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x18, 0x00, 0x00, +0x00, 0x0c, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x80, 0x01, 0x00, 0xc0, +0x00, 0x00, 0x01, 0x00, 0x06, 0x00, 0x20, 0x00, 0x00, 0x01, 0x00, 0x08, 0x00, 0x10, 0x00, +0x00, 0x01, 0x00, 0x10, 0x00, 0x20, 0x00, 0xf0, 0x1f, 0x00, 0x08, 0x00, 0x40, 0x00, 0x00, +0x01, 0x00, 0x04, 0x00, 0x80, 0x01, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x01, +0xc0, 0x00, 0x00, 0x00, 0x08, 0x00, 0x01, 0x20, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, +0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x04, 0x00, +0x00, 0x00, 0x80, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0xf9, 0x3f, 0x01, 0x00, 0x00, +0x00, 0x00, 0x07, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, +0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, +0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x40, 0x00, +0x00, 0x04, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x7f, +0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x18, 0x00, +0x00, 0x00, 0x00, 0xff, 0x0f, 0xe1, 0xff, 0x01, 0x00, 0xe0, 0x00, 0xc0, 0x06, 0x00, 0x0e, +0x00, 0x10, 0x00, 0x30, 0x18, 0x00, 0x10, 0x00, 0x10, 0xff, 0x0f, 0xe0, 0xff, 0x11, 0x00, +0xf0, 0x00, 0x00, 0x00, 0x00, 0x1e, 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/a49s.bm b/bitmaps/a49s.bm new file mode 100644 index 0000000..a911f25 --- /dev/null +++ b/bitmaps/a49s.bm @@ -0,0 +1,27 @@ +#define a49s_width 49 +#define a49s_height 49 +static char a49s_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, 0x80, 0x03, +0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x3f, 0x00, +0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, +0x00, 0x00, 0xc0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x1f, 0x00, 0x00, +0x00, 0xfc, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0xc0, +0xff, 0xff, 0xfe, 0xff, 0x07, 0x00, 0xe0, 0xff, 0xff, 0xfe, 0xff, 0x0f, 0x00, 0xf0, 0xff, +0xff, 0xfe, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0x0f, 0xe0, 0xff, 0x0f, 0x00, 0xc0, 0xff, 0xff, +0xfe, 0xff, 0x07, 0x00, 0x80, 0xff, 0xff, 0xfe, 0xff, 0x03, 0x00, 0x00, 0xfe, 0xff, 0xfe, +0xff, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xfe, 0x3f, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x1f, +0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x07, 0x00, +0x00, 0x00, 0x80, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x07, 0xc0, 0x01, 0x00, 0x00, +0x00, 0x00, 0xf9, 0x3f, 0x01, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, +0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x80, +0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0xc0, 0xff, +0xff, 0x07, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x7c, +0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x1f, 0x00, +0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xe0, 0xff, 0xff, 0xfe, 0xff, 0x0f, +0x00, 0xf0, 0xff, 0x3f, 0xf8, 0xff, 0x1f, 0x00, 0xf0, 0xff, 0x0f, 0xe0, 0xff, 0x1f, 0x00, +0xf0, 0x00, 0x00, 0x00, 0x00, 0x1e, 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/a54o.bm b/bitmaps/a54o.bm new file mode 100644 index 0000000..b4118f0 --- /dev/null +++ b/bitmaps/a54o.bm @@ -0,0 +1,30 @@ +#define a54o_width 54 +#define a54o_height 54 +static char a54o_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, 0xc0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x03, +0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x0e, 0x00, +0x00, 0x00, 0x00, 0x0e, 0x00, 0x1c, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0xf8, 0x00, 0x00, +0x00, 0xf8, 0x01, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, +0x07, 0x00, 0x0c, 0x00, 0x38, 0x00, 0x80, 0x03, 0x00, 0x0c, 0x00, 0x70, 0x00, 0xc0, 0x01, +0x00, 0x0c, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0x00, 0x0c, 0x00, 0xc0, 0x01, 0x60, 0x00, 0xc0, +0xff, 0x00, 0x80, 0x01, 0xe0, 0x00, 0xc0, 0xff, 0x00, 0xc0, 0x01, 0xc0, 0x00, 0x00, 0x0c, +0x00, 0xc0, 0x00, 0xc0, 0x01, 0x00, 0x0c, 0x00, 0xe0, 0x00, 0x80, 0x07, 0x00, 0x0c, 0x00, +0x78, 0x00, 0x00, 0x1e, 0x00, 0x0c, 0x00, 0x1e, 0x00, 0x00, 0x78, 0x00, 0x00, 0x80, 0x07, +0x00, 0x00, 0xe0, 0x01, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x80, 0x03, 0x00, 0x70, 0x00, 0x00, +0x00, 0x00, 0xe7, 0xff, 0x39, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x1f, 0x00, 0x00, 0x00, +0x00, 0x1c, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, +0x0e, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0xf6, 0xff, 0x1b, 0x00, 0x00, 0x00, 0x00, 0xff, +0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, +0x30, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3f, +0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xf3, 0x00, 0x00, +0x00, 0x80, 0xff, 0xff, 0xc0, 0xff, 0x7f, 0x00, 0xe0, 0xff, 0x3f, 0x00, 0xff, 0xff, 0x01, +0x78, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x30, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x03, 0x70, +0x00, 0x80, 0x7f, 0x00, 0x80, 0x03, 0xe0, 0xff, 0xff, 0xf3, 0xff, 0xff, 0x01, 0xc0, 0xff, +0x7f, 0x80, 0xff, 0xff, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x40, 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/a54s.bm b/bitmaps/a54s.bm new file mode 100644 index 0000000..293173d --- /dev/null +++ b/bitmaps/a54s.bm @@ -0,0 +1,30 @@ +#define a54s_width 54 +#define a54s_height 54 +static char a54s_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, 0xc0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x03, +0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x0f, 0x00, +0x00, 0x00, 0x00, 0xfe, 0xff, 0x1f, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x00, 0x00, +0x00, 0xf8, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, +0xff, 0xff, 0xf3, 0xff, 0x3f, 0x00, 0x80, 0xff, 0xff, 0xf3, 0xff, 0x7f, 0x00, 0xc0, 0xff, +0xff, 0xf3, 0xff, 0xff, 0x00, 0xe0, 0xff, 0xff, 0xf3, 0xff, 0xff, 0x01, 0xe0, 0xff, 0x3f, +0x00, 0xff, 0xff, 0x01, 0xe0, 0xff, 0x3f, 0x00, 0xff, 0xff, 0x01, 0xc0, 0xff, 0xff, 0xf3, +0xff, 0xff, 0x00, 0xc0, 0xff, 0xff, 0xf3, 0xff, 0xff, 0x00, 0x80, 0xff, 0xff, 0xf3, 0xff, +0x7f, 0x00, 0x00, 0xfe, 0xff, 0xf3, 0xff, 0x1f, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x07, +0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x80, 0xff, 0xff, 0x7f, 0x00, 0x00, +0x00, 0x00, 0x1f, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x1c, 0x00, 0x00, 0x00, +0x00, 0xec, 0xff, 0x0d, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, +0xfe, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x03, +0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0xf3, 0xff, 0x33, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, +0x3f, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3f, +0x00, 0x00, 0x00, 0x00, 0xf0, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0x00, 0x00, +0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, +0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xf0, +0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xe0, 0xff, 0xff, 0xf3, 0xff, 0xff, 0x01, 0xc0, 0xff, +0x7f, 0x80, 0xff, 0xff, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x40, 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/a58o.bm b/bitmaps/a58o.bm new file mode 100644 index 0000000..1de3962 --- /dev/null +++ b/bitmaps/a58o.bm @@ -0,0 +1,35 @@ +#define a58o_width 58 +#define a58o_height 58 +static char a58o_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, +0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, +0xe0, 0x03, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, +0x00, 0x3c, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0xc0, 0x01, 0x00, 0x00, +0x00, 0x80, 0x07, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x1e, 0x00, +0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x30, 0x00, 0xe0, +0x01, 0x00, 0x80, 0x07, 0x00, 0x30, 0x00, 0x80, 0x07, 0x00, 0xc0, 0x01, 0x00, 0x30, 0x00, +0x00, 0x0e, 0x00, 0x60, 0x00, 0x00, 0x30, 0x00, 0x00, 0x18, 0x00, 0x60, 0x00, 0x00, 0xff, +0x03, 0x00, 0x18, 0x00, 0xe0, 0x00, 0x00, 0xff, 0x03, 0x00, 0x1c, 0x00, 0xc0, 0x01, 0x00, +0x30, 0x00, 0x00, 0x0e, 0x00, 0x80, 0x03, 0x00, 0x30, 0x00, 0x00, 0x07, 0x00, 0x00, 0x0f, +0x00, 0x30, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x3c, 0x00, 0x30, 0x00, 0xf0, 0x00, 0x00, 0x00, +0xf0, 0x00, 0x30, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x0f, 0x00, 0x00, +0x00, 0x00, 0x07, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0xc0, 0x01, 0x00, +0x00, 0x00, 0x00, 0x1c, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x7f, 0x00, +0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x60, +0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, +0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, +0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, +0x3e, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, +0x00, 0xc0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xcf, 0x03, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0xff, 0xff, 0x03, +0x00, 0xc0, 0xff, 0xff, 0x00, 0xfc, 0xff, 0x0f, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, +0x3c, 0x00, 0x70, 0x00, 0x00, 0x30, 0x00, 0x00, 0x38, 0x00, 0x60, 0x00, 0x00, 0xfc, 0x00, +0x00, 0x18, 0x00, 0xe0, 0xfe, 0x01, 0xcf, 0x03, 0xfe, 0x1d, 0x00, 0xc0, 0xff, 0xff, 0x03, +0xff, 0xff, 0x0f, 0x00, 0x80, 0x01, 0xfe, 0x00, 0xfc, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 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/a58s.bm b/bitmaps/a58s.bm new file mode 100644 index 0000000..10d89d0 --- /dev/null +++ b/bitmaps/a58s.bm @@ -0,0 +1,35 @@ +#define a58s_width 58 +#define a58s_height 58 +static char a58s_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, +0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, +0xe0, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, +0x00, 0xfc, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x01, 0x00, 0x00, +0x00, 0x80, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x1f, 0x00, +0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xcf, 0xff, 0xff, +0x01, 0x00, 0x80, 0xff, 0xff, 0xcf, 0xff, 0xff, 0x07, 0x00, 0xc0, 0xff, 0xff, 0xcf, 0xff, +0xff, 0x0f, 0x00, 0xe0, 0xff, 0xff, 0xcf, 0xff, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0xff, 0x00, +0xfc, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0xff, 0x00, 0xfc, 0xff, 0x1f, 0x00, 0xc0, 0xff, 0xff, +0xcf, 0xff, 0xff, 0x0f, 0x00, 0x80, 0xff, 0xff, 0xcf, 0xff, 0xff, 0x07, 0x00, 0x00, 0xff, +0xff, 0xcf, 0xff, 0xff, 0x03, 0x00, 0x00, 0xfc, 0xff, 0xcf, 0xff, 0xff, 0x00, 0x00, 0x00, +0xf0, 0xff, 0xcf, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, +0x00, 0x00, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x01, 0x00, +0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x60, 0x00, +0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x7f, +0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, +0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, +0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, +0xfe, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, +0x00, 0xc0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, +0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, +0x3f, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, +0xff, 0x1f, 0x00, 0xe0, 0xff, 0xff, 0xcf, 0xff, 0xff, 0x1f, 0x00, 0xc0, 0xff, 0xff, 0x03, +0xff, 0xff, 0x0f, 0x00, 0x80, 0x01, 0xfe, 0x00, 0xfc, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 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/a64o.bm b/bitmaps/a64o.bm new file mode 100644 index 0000000..24fa413 --- /dev/null +++ b/bitmaps/a64o.bm @@ -0,0 +1,39 @@ +#define a64o_width 64 +#define a64o_height 64 +static char a64o_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, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0xf0, 0x01, 0x00, 0x00, +0x00, 0x00, 0xc0, 0x03, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x07, 0x00, +0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x78, +0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, +0x80, 0x0f, 0x00, 0x00, 0x3c, 0x00, 0x80, 0x01, 0x00, 0x3c, 0x00, 0x00, 0x0f, 0x00, 0x80, +0x01, 0x00, 0xf0, 0x00, 0x80, 0x03, 0x00, 0x80, 0x01, 0x00, 0xc0, 0x01, 0xc0, 0x01, 0x00, +0x80, 0x01, 0x00, 0x80, 0x03, 0xc0, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x03, 0xc0, 0x00, +0x00, 0xfc, 0x3f, 0x00, 0x00, 0x03, 0xc0, 0x01, 0x00, 0x80, 0x01, 0x00, 0x80, 0x03, 0x80, +0x07, 0x00, 0x80, 0x01, 0x00, 0xe0, 0x01, 0x00, 0x0e, 0x00, 0x80, 0x01, 0x00, 0x70, 0x00, +0x00, 0x3c, 0x00, 0x80, 0x01, 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x0e, +0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0xe0, +0x01, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, +0x1c, 0x00, 0x00, 0x00, 0x00, 0x70, 0xfe, 0x7f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, +0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x60, +0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, +0x70, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0xb0, 0xff, 0xff, 0x0d, 0x00, 0x00, 0x00, +0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1e, 0x00, 0x00, +0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x80, 0x1f, 0x00, +0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x7f, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x3c, +0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x0f, 0xf0, 0xff, 0x7f, 0x00, 0x80, 0xff, 0xff, 0x03, +0xc0, 0xff, 0xff, 0x01, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x70, 0x00, 0x00, +0x80, 0x01, 0x00, 0x00, 0x0e, 0xe0, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x07, 0xc0, 0xf8, +0x07, 0x78, 0x1e, 0xe0, 0x1f, 0x03, 0xc0, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0x03, 0x80, +0x07, 0xf8, 0x07, 0xe0, 0x1f, 0xe0, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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/a64s.bm b/bitmaps/a64s.bm new file mode 100644 index 0000000..f3fe088 --- /dev/null +++ b/bitmaps/a64s.bm @@ -0,0 +1,39 @@ +#define a64s_width 64 +#define a64s_height 64 +static char a64s_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, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x01, 0x00, 0x00, +0x00, 0x00, 0xc0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x07, 0x00, +0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x7f, +0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, +0xff, 0x0f, 0x00, 0x00, 0xfc, 0xff, 0x7f, 0xfe, 0xff, 0x3f, 0x00, 0x00, 0xff, 0xff, 0x7f, +0xfe, 0xff, 0xff, 0x00, 0x80, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff, 0x01, 0xc0, 0xff, 0xff, +0x7f, 0xfe, 0xff, 0xff, 0x03, 0xc0, 0xff, 0xff, 0x03, 0xc0, 0xff, 0xff, 0x03, 0xc0, 0xff, +0xff, 0x03, 0xc0, 0xff, 0xff, 0x03, 0xc0, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff, 0x03, 0x80, +0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff, 0x01, 0x00, 0xfe, 0xff, 0x7f, 0xfe, 0xff, 0x7f, 0x00, +0x00, 0xfc, 0xff, 0x7f, 0xfe, 0xff, 0x3f, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x0f, +0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, +0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, +0x1f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, +0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x60, 0xfe, 0x7f, 0x04, 0x00, 0x00, 0x00, 0x00, 0xe0, +0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, +0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, +0x00, 0x30, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x98, 0xff, 0xff, 0x19, 0x00, 0x00, +0x00, 0x00, 0xf8, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x1f, 0x00, +0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x7f, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x3c, +0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x80, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0x01, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf0, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0x0f, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xc0, 0xff, +0xff, 0x7f, 0xfe, 0xff, 0xff, 0x03, 0xc0, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0x03, 0x80, +0x07, 0xf8, 0x07, 0xe0, 0x1f, 0xe0, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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/a72o.bm b/bitmaps/a72o.bm new file mode 100644 index 0000000..e399d30 --- /dev/null +++ b/bitmaps/a72o.bm @@ -0,0 +1,48 @@ +#define a72o_width 72 +#define a72o_height 72 +static char a72o_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, 0x80, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x07, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x78, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x0f, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0xe0, +0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x7c, +0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, +0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, +0xe0, 0x07, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x00, 0x80, 0x1f, 0x00, 0x00, 0x7e, 0x00, +0x00, 0x18, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x18, 0x00, 0x00, 0xf8, 0x00, +0xc0, 0x07, 0x00, 0x00, 0x18, 0x00, 0x00, 0xe0, 0x03, 0xc0, 0x01, 0x00, 0x00, 0x18, 0x00, +0x00, 0x80, 0x03, 0xe0, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x07, 0xe0, 0x00, 0x00, +0x00, 0x18, 0x00, 0x00, 0x00, 0x07, 0xe0, 0x00, 0x00, 0xe0, 0xff, 0x07, 0x00, 0x00, 0x07, +0x80, 0x01, 0x00, 0xe0, 0xff, 0x07, 0x00, 0xc0, 0x03, 0x80, 0x0f, 0x00, 0x00, 0x18, 0x00, +0x00, 0xf0, 0x01, 0x00, 0x3e, 0x00, 0x00, 0x18, 0x00, 0x00, 0x7e, 0x00, 0x00, 0xf0, 0x00, +0x00, 0x18, 0x00, 0x00, 0x1f, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x18, 0x00, 0x80, 0x07, 0x00, +0x00, 0x80, 0x03, 0x00, 0x18, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, +0xe0, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x1c, +0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, +0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, +0x07, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xf1, 0xff, 0x8f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x80, +0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0xf0, 0x00, 0x00, 0x00, +0x00, 0x00, 0x80, 0x03, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x80, +0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, +0x01, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xf8, 0xff, 0x1f, 0x03, 0x00, 0x00, +0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0xe0, +0x07, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x70, +0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0xf0, 0x0f, 0x00, 0x00, +0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x0f, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x80, 0xc3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x81, 0x07, 0x00, 0x00, 0x00, +0x00, 0xf8, 0xff, 0x7f, 0x00, 0xfe, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0x1f, 0x00, 0xf8, +0xff, 0xff, 0x01, 0xe0, 0x07, 0x00, 0x00, 0x18, 0x00, 0x00, 0xe0, 0x07, 0x70, 0x00, 0x00, +0x00, 0x7e, 0x00, 0x00, 0x00, 0x0e, 0x30, 0x00, 0x00, 0xc0, 0xe7, 0x03, 0x00, 0x00, 0x0c, +0x70, 0xf0, 0xff, 0xff, 0x81, 0xff, 0xff, 0x0f, 0x0e, 0xe0, 0xfe, 0xff, 0x3f, 0x00, 0xfc, +0xff, 0x7f, 0x07, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x80, 0x01, 0x00, +0x00, 0x00, 0x00, 0x00, 0x80, 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 +}; diff --git a/bitmaps/a72s.bm b/bitmaps/a72s.bm new file mode 100644 index 0000000..1f726e9 --- /dev/null +++ b/bitmaps/a72s.bm @@ -0,0 +1,48 @@ +#define a72s_width 72 +#define a72s_height 72 +static char a72s_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, 0x80, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x07, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xf8, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x3f, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, +0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xfc, +0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, +0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, +0xff, 0x07, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xfe, 0xff, +0xff, 0xe7, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xff, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xff, 0x00, +0xc0, 0xff, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xff, 0x03, 0xc0, 0xff, 0xff, 0xff, 0xe7, 0xff, +0xff, 0xff, 0x03, 0xe0, 0xff, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xff, 0x07, 0xe0, 0xff, 0xff, +0xff, 0xe7, 0xff, 0xff, 0xff, 0x07, 0xe0, 0xff, 0xff, 0x1f, 0x00, 0xf8, 0xff, 0xff, 0x07, +0x80, 0xff, 0xff, 0x1f, 0x00, 0xf8, 0xff, 0xff, 0x03, 0x80, 0xff, 0xff, 0xff, 0xe7, 0xff, +0xff, 0xff, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xe7, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xf0, 0xff, +0xff, 0xe7, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xe7, 0xff, 0xff, 0x07, 0x00, +0x00, 0x80, 0xff, 0xff, 0xe7, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, +0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xfc, +0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, +0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, +0x07, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x80, +0x03, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf3, 0xff, 0x8f, 0x00, 0x00, 0x00, +0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, +0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, +0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0xe0, 0x03, 0x00, 0x00, +0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x60, 0xf8, 0xff, 0x1f, +0x06, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xf0, +0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, +0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x0f, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x80, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x07, 0x00, 0x00, 0x00, +0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0x01, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf0, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xff, 0x0f, +0xf0, 0xff, 0xff, 0xff, 0x81, 0xff, 0xff, 0xff, 0x0f, 0xe0, 0xff, 0xff, 0x3f, 0x00, 0xfc, +0xff, 0xff, 0x07, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x80, 0x01, 0x00, +0x00, 0x00, 0x00, 0x00, 0x80, 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 +}; diff --git a/bitmaps/as33o.bm b/bitmaps/as33o.bm new file mode 100644 index 0000000..6f87913 --- /dev/null +++ b/bitmaps/as33o.bm @@ -0,0 +1,16 @@ +#define as33o_width 33 +#define as33o_height 33 +static char as33o_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xf8, 0x01, 0x00, 0x3f, 0x00, 0x08, 0x02, 0x80, 0x20, 0x00, 0x08, 0x04, 0x40, 0x20, 0x00, +0x48, 0x08, 0x20, 0x24, 0x00, 0x88, 0x10, 0x10, 0x22, 0x00, 0x08, 0x21, 0x08, 0x21, 0x00, +0x10, 0x42, 0x84, 0x10, 0x00, 0x20, 0x84, 0x42, 0x08, 0x00, 0x40, 0x08, 0x21, 0x04, 0x00, +0x80, 0x10, 0x12, 0x02, 0x00, 0x00, 0x21, 0x04, 0x01, 0x00, 0x00, 0x42, 0x88, 0x00, 0x00, +0x00, 0x84, 0x50, 0x00, 0x00, 0x00, 0x08, 0x21, 0x00, 0x00, 0x00, 0x14, 0x42, 0x00, 0x00, +0x38, 0x22, 0x84, 0x38, 0x00, 0x44, 0x41, 0x08, 0x45, 0x00, 0x84, 0x90, 0x10, 0x42, 0x00, +0x08, 0x09, 0x21, 0x21, 0x00, 0x30, 0x82, 0x82, 0x18, 0x00, 0x40, 0x44, 0x44, 0x04, 0x00, +0xa0, 0x28, 0x28, 0x0a, 0x00, 0x10, 0x11, 0x10, 0x11, 0x00, 0x08, 0x22, 0x88, 0x20, 0x00, +0x04, 0x45, 0x44, 0x41, 0x00, 0x82, 0x44, 0x44, 0x82, 0x00, 0x42, 0x48, 0x24, 0x84, 0x00, +0x24, 0x30, 0x18, 0x48, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + +}; diff --git a/bitmaps/as33s.bm b/bitmaps/as33s.bm new file mode 100644 index 0000000..80236bb --- /dev/null +++ b/bitmaps/as33s.bm @@ -0,0 +1,16 @@ +#define as33s_width 33 +#define as33s_height 33 +static char as33s_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xf8, 0x01, 0x00, 0x3f, 0x00, 0xf8, 0x03, 0x80, 0x3f, 0x00, 0xf8, 0x07, 0xc0, 0x37, 0x00, +0xb8, 0x0f, 0xe0, 0x3b, 0x00, 0x78, 0x1f, 0xf0, 0x3d, 0x00, 0xf8, 0x3e, 0xf8, 0x3e, 0x00, +0xf0, 0x7d, 0x7c, 0x1f, 0x00, 0xe0, 0xfb, 0xbe, 0x0f, 0x00, 0xc0, 0xf7, 0xdd, 0x07, 0x00, +0x80, 0xef, 0xfb, 0x03, 0x00, 0x00, 0xdf, 0xf7, 0x01, 0x00, 0x00, 0xbe, 0xef, 0x00, 0x00, +0x00, 0x7c, 0x5f, 0x00, 0x00, 0x00, 0xf8, 0x3e, 0x00, 0x00, 0x00, 0xf4, 0x7d, 0x00, 0x00, +0x38, 0xee, 0xfb, 0x38, 0x00, 0x7c, 0xdf, 0xf7, 0x7d, 0x00, 0xfc, 0xae, 0xef, 0x7e, 0x00, +0xf8, 0x75, 0x7f, 0x3f, 0x00, 0xf0, 0xfb, 0xbe, 0x1f, 0x00, 0xc0, 0x77, 0xdc, 0x07, 0x00, +0xa0, 0x2f, 0xe8, 0x0b, 0x00, 0x70, 0x1f, 0xf0, 0x1d, 0x00, 0xf8, 0x3e, 0xf8, 0x3e, 0x00, +0xfc, 0x7d, 0x7c, 0x7f, 0x00, 0xfe, 0x7c, 0x7c, 0xfe, 0x00, 0x7e, 0x78, 0x3c, 0xfc, 0x00, +0x3c, 0x30, 0x18, 0x78, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + +}; diff --git a/bitmaps/as49o.bm b/bitmaps/as49o.bm new file mode 100644 index 0000000..eea2179 --- /dev/null +++ b/bitmaps/as49o.bm @@ -0,0 +1,27 @@ +#define as49o_width 49 +#define as49o_height 49 +static char as49o_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, 0x80, 0x7f, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x80, 0x80, 0x00, +0x00, 0x02, 0x02, 0x00, 0x80, 0x00, 0x01, 0x00, 0x01, 0x02, 0x00, 0x80, 0x00, 0x02, 0x80, +0x00, 0x02, 0x00, 0x80, 0x00, 0x04, 0x40, 0x20, 0x02, 0x00, 0x80, 0x10, 0x08, 0x20, 0x10, +0x02, 0x00, 0x80, 0x20, 0x10, 0x10, 0x08, 0x02, 0x00, 0x80, 0x40, 0x20, 0x08, 0x04, 0x02, +0x00, 0x00, 0x81, 0x40, 0x04, 0x02, 0x01, 0x00, 0x00, 0x02, 0x81, 0x02, 0x81, 0x00, 0x00, +0x00, 0x04, 0x02, 0x81, 0x40, 0x00, 0x00, 0x00, 0x08, 0x04, 0x42, 0x20, 0x00, 0x00, 0x00, +0x10, 0x08, 0x24, 0x10, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00, 0x00, 0x40, +0x20, 0x10, 0x04, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x81, +0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x02, +0x01, 0x00, 0x00, 0x00, 0x80, 0x08, 0x04, 0x02, 0x00, 0x00, 0x00, 0x40, 0x10, 0x08, 0x04, +0x03, 0x00, 0xc0, 0x20, 0x20, 0x10, 0x88, 0x04, 0x00, 0x20, 0x11, 0x48, 0x20, 0x50, 0x08, +0x00, 0x10, 0x0a, 0x84, 0x40, 0x20, 0x08, 0x00, 0x10, 0x04, 0x02, 0x81, 0x10, 0x04, 0x00, +0x20, 0x08, 0x81, 0x02, 0x09, 0x03, 0x00, 0xc0, 0x90, 0x40, 0x04, 0x84, 0x00, 0x00, 0x00, +0x21, 0x20, 0x08, 0x42, 0x00, 0x00, 0x00, 0x42, 0x10, 0x10, 0xa1, 0x00, 0x00, 0x00, 0x85, +0x08, 0xa0, 0x10, 0x01, 0x00, 0x80, 0x08, 0x05, 0x40, 0x08, 0x02, 0x00, 0x40, 0x10, 0x02, +0x20, 0x04, 0x04, 0x00, 0x20, 0x20, 0x04, 0x10, 0x0a, 0x08, 0x00, 0x10, 0x50, 0x08, 0x08, +0x11, 0x10, 0x00, 0x08, 0x88, 0x10, 0x08, 0x21, 0x10, 0x00, 0x08, 0x84, 0x10, 0x90, 0x40, +0x10, 0x00, 0x08, 0x02, 0x09, 0x60, 0x80, 0x08, 0x00, 0x10, 0x01, 0x06, 0x00, 0x00, 0x07, +0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 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/as49s.bm b/bitmaps/as49s.bm new file mode 100644 index 0000000..3dac667 --- /dev/null +++ b/bitmaps/as49s.bm @@ -0,0 +1,27 @@ +#define as49s_width 49 +#define as49s_height 49 +static char as49s_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, 0x80, 0x7f, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x80, 0xff, 0x00, +0x00, 0xfe, 0x03, 0x00, 0x80, 0xff, 0x01, 0x00, 0xff, 0x03, 0x00, 0x80, 0xff, 0x03, 0x80, +0xff, 0x03, 0x00, 0x80, 0xff, 0x07, 0xc0, 0xdf, 0x03, 0x00, 0x80, 0xef, 0x0f, 0xe0, 0xef, +0x03, 0x00, 0x80, 0xdf, 0x1f, 0xf0, 0xf7, 0x03, 0x00, 0x80, 0xbf, 0x3f, 0xf8, 0xfb, 0x03, +0x00, 0x00, 0x7f, 0x7f, 0xfc, 0xfd, 0x01, 0x00, 0x00, 0xfe, 0xfe, 0xfe, 0xfe, 0x00, 0x00, +0x00, 0xfc, 0xfd, 0x7d, 0x7f, 0x00, 0x00, 0x00, 0xf8, 0xfb, 0xbb, 0x3f, 0x00, 0x00, 0x00, +0xf0, 0xf7, 0xd7, 0x1f, 0x00, 0x00, 0x00, 0xe0, 0xef, 0xef, 0x0f, 0x00, 0x00, 0x00, 0xc0, +0xdf, 0xdf, 0x07, 0x00, 0x00, 0x00, 0x80, 0xbf, 0xbf, 0x03, 0x00, 0x00, 0x00, 0x00, 0x7f, +0x7f, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xfd, +0x01, 0x00, 0x00, 0x00, 0x80, 0xfb, 0xfb, 0x03, 0x00, 0x00, 0x00, 0xc0, 0xf7, 0xf7, 0x07, +0x03, 0x00, 0xc0, 0xe0, 0xef, 0xef, 0x8f, 0x07, 0x00, 0xe0, 0xf1, 0xd7, 0xdf, 0xdf, 0x0f, +0x00, 0xf0, 0xfb, 0xbb, 0xbf, 0xef, 0x0f, 0x00, 0xf0, 0xf7, 0x7d, 0x7f, 0xf7, 0x07, 0x00, +0xe0, 0xef, 0xfe, 0xfe, 0xfb, 0x03, 0x00, 0xc0, 0xdf, 0x7f, 0xfc, 0xfd, 0x00, 0x00, 0x00, +0xbf, 0x3f, 0xf8, 0x7e, 0x00, 0x00, 0x00, 0x7e, 0x1f, 0x70, 0xbf, 0x00, 0x00, 0x00, 0xfd, +0x0e, 0xa0, 0xdf, 0x01, 0x00, 0x80, 0xfb, 0x05, 0xc0, 0xef, 0x03, 0x00, 0xc0, 0xf7, 0x03, +0xe0, 0xf7, 0x07, 0x00, 0xe0, 0xef, 0x07, 0xf0, 0xfb, 0x0f, 0x00, 0xf0, 0xdf, 0x0f, 0xf8, +0xf1, 0x1f, 0x00, 0xf8, 0x8f, 0x1f, 0xf8, 0xe1, 0x1f, 0x00, 0xf8, 0x87, 0x1f, 0xf0, 0xc0, +0x1f, 0x00, 0xf8, 0x03, 0x0f, 0x60, 0x80, 0x0f, 0x00, 0xf0, 0x01, 0x06, 0x00, 0x00, 0x07, +0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 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/as72o.bm b/bitmaps/as72o.bm new file mode 100644 index 0000000..660550a --- /dev/null +++ b/bitmaps/as72o.bm @@ -0,0 +1,48 @@ +#define as72o_width 72 +#define as72o_height 72 +static char as72o_bits[] = { +0x00, 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, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x7f, +0x00, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x00, 0xff, 0x7f, 0x00, +0x00, 0x03, 0xc0, 0x01, 0x00, 0x80, 0x01, 0x60, 0x00, 0x00, 0x03, 0x80, 0x03, 0x00, 0xc0, +0x00, 0x60, 0x00, 0x00, 0x03, 0x00, 0x07, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x03, 0x00, +0x0e, 0x00, 0x30, 0x00, 0x60, 0x00, 0x00, 0x03, 0x00, 0x1c, 0x00, 0x18, 0x00, 0x60, 0x00, +0x00, 0x03, 0x01, 0x38, 0x00, 0x0c, 0xc0, 0x60, 0x00, 0x00, 0x03, 0x03, 0x70, 0x00, 0x06, +0x60, 0x60, 0x00, 0x00, 0x03, 0x06, 0xe0, 0x00, 0x03, 0x30, 0x60, 0x00, 0x00, 0x03, 0x0c, +0xc0, 0x81, 0x01, 0x18, 0x60, 0x00, 0x00, 0x03, 0x18, 0x80, 0xc3, 0x00, 0x0c, 0x60, 0x00, +0x00, 0x03, 0x30, 0x00, 0x67, 0x00, 0x06, 0x60, 0x00, 0x00, 0x06, 0x60, 0x00, 0x3e, 0x00, +0x03, 0x70, 0x00, 0x00, 0x0c, 0xc0, 0x00, 0x1c, 0x80, 0x01, 0x38, 0x00, 0x00, 0x18, 0x80, +0x01, 0x38, 0xc0, 0x00, 0x1c, 0x00, 0x00, 0x30, 0x00, 0x03, 0x70, 0x60, 0x00, 0x0e, 0x00, +0x00, 0x60, 0x00, 0x06, 0xe0, 0x30, 0x00, 0x07, 0x00, 0x00, 0xc0, 0x00, 0x0c, 0xc0, 0x19, +0x80, 0x03, 0x00, 0x00, 0x80, 0x01, 0x18, 0x80, 0x0b, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x03, +0x30, 0x00, 0x07, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x06, 0x60, 0x00, 0x0e, 0x70, 0x00, 0x00, +0x00, 0x00, 0x0c, 0xc0, 0x00, 0x1c, 0x38, 0x00, 0x00, 0x00, 0x00, 0x18, 0x80, 0x01, 0x38, +0x1c, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x03, 0x70, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x60, +0x00, 0x06, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x0c, 0xc0, 0x03, 0x00, 0x00, +0x00, 0x00, 0xc0, 0x01, 0x18, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x60, 0x03, 0x30, 0x00, +0x07, 0x00, 0x00, 0x00, 0x07, 0x30, 0x06, 0x60, 0x00, 0x0e, 0xe0, 0x00, 0x80, 0x0f, 0x18, +0x0c, 0xc0, 0x00, 0x1c, 0xf0, 0x01, 0xc0, 0x1c, 0x0c, 0x18, 0x80, 0x01, 0x38, 0x98, 0x03, +0x60, 0x38, 0x06, 0x30, 0x00, 0x03, 0x70, 0x0c, 0x07, 0x30, 0x70, 0x03, 0x60, 0x00, 0x06, +0xe0, 0x06, 0x0e, 0x10, 0xe0, 0x01, 0xd8, 0x00, 0x0c, 0xc0, 0x03, 0x0c, 0x10, 0xc0, 0x01, +0x8c, 0x01, 0x18, 0x80, 0x01, 0x0c, 0x30, 0x80, 0x03, 0x06, 0x03, 0x30, 0xc0, 0x00, 0x0e, +0x60, 0x00, 0x07, 0x03, 0x06, 0x60, 0x60, 0x00, 0x07, 0xc0, 0x00, 0x8e, 0x01, 0x0c, 0xc0, +0x30, 0x80, 0x03, 0x80, 0x01, 0x1c, 0x00, 0x1c, 0x80, 0x18, 0xc0, 0x01, 0x00, 0x0f, 0x38, +0x00, 0x3e, 0x00, 0x0c, 0xf8, 0x00, 0x00, 0x1e, 0x70, 0x00, 0x67, 0x00, 0x06, 0x7c, 0x00, +0x00, 0x30, 0xe0, 0x80, 0xc3, 0x00, 0x03, 0x0e, 0x00, 0x00, 0x60, 0xc0, 0xc1, 0x81, 0x81, +0x01, 0x07, 0x00, 0x00, 0xf0, 0x80, 0xe3, 0x00, 0xc3, 0x80, 0x0f, 0x00, 0x00, 0x98, 0x01, +0x77, 0x00, 0x66, 0xc0, 0x1d, 0x00, 0x00, 0x0c, 0x03, 0x3e, 0x00, 0x3c, 0xe0, 0x38, 0x00, +0x00, 0x06, 0x06, 0x1c, 0x00, 0x18, 0x70, 0x70, 0x00, 0x00, 0x03, 0x0c, 0x38, 0x00, 0x0c, +0x38, 0xe0, 0x00, 0x80, 0x01, 0x1c, 0x70, 0x00, 0x06, 0x1c, 0xc0, 0x01, 0xc0, 0x00, 0x3e, +0xe0, 0x00, 0x03, 0x3e, 0x80, 0x03, 0x60, 0x00, 0x67, 0xc0, 0x81, 0x01, 0x67, 0x00, 0x07, +0x30, 0x80, 0xc3, 0x80, 0xc3, 0x00, 0xc3, 0x00, 0x0e, 0x18, 0xc0, 0xc1, 0x00, 0x43, 0x00, +0x83, 0x01, 0x1c, 0x18, 0xe0, 0xc0, 0x80, 0xc3, 0x80, 0x03, 0x03, 0x18, 0x18, 0x70, 0x80, +0xc1, 0x81, 0xc1, 0x01, 0x06, 0x1c, 0x30, 0x38, 0x00, 0xe3, 0x00, 0xe3, 0x00, 0x0c, 0x0e, +0x60, 0x1c, 0x00, 0x76, 0x00, 0x76, 0x00, 0x18, 0x07, 0xc0, 0x0e, 0x00, 0x3c, 0x00, 0x3c, +0x00, 0xb0, 0x03, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 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 +}; diff --git a/bitmaps/as72s.bm b/bitmaps/as72s.bm new file mode 100644 index 0000000..f9bbc53 --- /dev/null +++ b/bitmaps/as72s.bm @@ -0,0 +1,48 @@ +#define as72s_width 72 +#define as72s_height 72 +static char as72s_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, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x3f, +0x00, 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xfe, 0x7f, 0x00, +0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x80, +0xff, 0x7f, 0x00, 0x00, 0xff, 0xff, 0x03, 0x00, 0xc0, 0xff, 0x7f, 0x00, 0x00, 0xbf, 0xff, +0x07, 0x00, 0xe0, 0xff, 0x7f, 0x00, 0x00, 0x3f, 0xff, 0x0f, 0x00, 0xf0, 0xff, 0x7e, 0x00, +0x00, 0x7f, 0xfe, 0x1f, 0x00, 0xf8, 0x7f, 0x7e, 0x00, 0x00, 0xff, 0xfc, 0x3f, 0x00, 0xfc, +0x3f, 0x7f, 0x00, 0x00, 0xff, 0xf9, 0x7f, 0x00, 0xfe, 0x9f, 0x7f, 0x00, 0x00, 0xff, 0xf3, +0xff, 0x00, 0xff, 0xcf, 0x7f, 0x00, 0x00, 0xff, 0xe7, 0xff, 0x81, 0xff, 0xe7, 0x7f, 0x00, +0x00, 0xff, 0xcf, 0xff, 0xc3, 0xff, 0xf3, 0x7f, 0x00, 0x00, 0xfe, 0x9f, 0xff, 0xe7, 0xff, +0xf9, 0x7f, 0x00, 0x00, 0xfc, 0x3f, 0xff, 0xff, 0xff, 0xfc, 0x3f, 0x00, 0x00, 0xf8, 0x7f, +0xfe, 0x9f, 0x7f, 0xfe, 0x1f, 0x00, 0x00, 0xf0, 0xff, 0xfc, 0x3f, 0x3f, 0xff, 0x0f, 0x00, +0x00, 0xe0, 0xff, 0xf9, 0x7f, 0x9e, 0xff, 0x07, 0x00, 0x00, 0xc0, 0xff, 0xf3, 0xff, 0xcc, +0xff, 0x03, 0x00, 0x00, 0x80, 0xff, 0xe7, 0xff, 0xf9, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, +0xcf, 0xff, 0xf3, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x9f, 0xff, 0xe7, 0x7f, 0x00, 0x00, +0x00, 0x00, 0xfc, 0x3f, 0xff, 0xcf, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f, 0xfe, 0x9f, +0x1f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xfc, 0x3f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xe0, +0xff, 0xf9, 0x7f, 0x06, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xf3, 0xff, 0x03, 0x00, 0x00, +0x00, 0x00, 0x80, 0xff, 0xe7, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xcf, 0xff, +0x03, 0x00, 0x00, 0x00, 0x07, 0x60, 0xfe, 0x9f, 0xff, 0x07, 0xe0, 0x00, 0x80, 0x0f, 0xf0, +0xfc, 0x3f, 0xff, 0x0f, 0xf0, 0x01, 0xc0, 0x1f, 0xf8, 0xf9, 0x7f, 0xfe, 0x1f, 0xf8, 0x03, +0xe0, 0x3f, 0xfc, 0xf3, 0xff, 0xfc, 0x3f, 0xfc, 0x07, 0xf0, 0x7f, 0xfe, 0xe7, 0xff, 0xf9, +0x7f, 0xfe, 0x0f, 0xf0, 0xff, 0xfc, 0xcf, 0xff, 0xf3, 0x3f, 0xff, 0x0f, 0xf0, 0xff, 0xf9, +0x9f, 0xff, 0xe7, 0x9f, 0xff, 0x0f, 0xf0, 0xff, 0xf3, 0x3b, 0xff, 0xcf, 0xcf, 0xff, 0x0f, +0xe0, 0xff, 0xe7, 0x79, 0xfe, 0x9f, 0xe7, 0xff, 0x07, 0xc0, 0xff, 0xcf, 0xfd, 0xfc, 0xbf, +0xf3, 0xff, 0x03, 0x80, 0xff, 0x9f, 0xff, 0xfd, 0xff, 0xf9, 0xff, 0x01, 0x00, 0xff, 0x3f, +0xff, 0xff, 0xff, 0xfc, 0xff, 0x00, 0x00, 0xfe, 0x7f, 0xfe, 0xe7, 0x7f, 0xfe, 0x7f, 0x00, +0x00, 0xf0, 0xff, 0xfc, 0xc3, 0x3f, 0xff, 0x0f, 0x00, 0x00, 0xe0, 0xff, 0xf9, 0x81, 0x9f, +0xff, 0x07, 0x00, 0x00, 0xd0, 0xff, 0xf3, 0x00, 0xcf, 0xff, 0x0b, 0x00, 0x00, 0xb8, 0xff, +0x67, 0x00, 0xe6, 0xff, 0x1d, 0x00, 0x00, 0x7c, 0xff, 0x0f, 0x00, 0xf0, 0xff, 0x3e, 0x00, +0x00, 0xfe, 0xfe, 0x1f, 0x00, 0xf8, 0x7f, 0x7f, 0x00, 0x00, 0xff, 0xfd, 0x3f, 0x00, 0xfc, +0xbf, 0xff, 0x00, 0x80, 0xff, 0xfb, 0x7f, 0x00, 0xfe, 0xdf, 0xff, 0x01, 0xc0, 0xff, 0xf7, +0xff, 0x00, 0xff, 0xef, 0xff, 0x03, 0xe0, 0xff, 0xe7, 0xff, 0x81, 0xff, 0xe7, 0xff, 0x07, +0xf0, 0xff, 0xc3, 0xff, 0xc3, 0xff, 0xc3, 0xff, 0x0f, 0xf8, 0xff, 0xc1, 0xff, 0xc3, 0xff, +0x83, 0xff, 0x1f, 0xf8, 0xff, 0xc0, 0xff, 0xc3, 0xff, 0x03, 0xff, 0x1f, 0xf8, 0x7f, 0x80, +0xff, 0x81, 0xff, 0x01, 0xfe, 0x1f, 0xf0, 0x3f, 0x00, 0xff, 0x00, 0xff, 0x00, 0xfc, 0x0f, +0xe0, 0x1f, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0xf8, 0x07, 0xc0, 0x0f, 0x00, 0x3c, 0x00, 0x3c, +0x00, 0xf0, 0x03, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 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 +}; diff --git a/bitmaps/as74o.bm b/bitmaps/as74o.bm new file mode 100644 index 0000000..660550a --- /dev/null +++ b/bitmaps/as74o.bm @@ -0,0 +1,48 @@ +#define as72o_width 72 +#define as72o_height 72 +static char as72o_bits[] = { +0x00, 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, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x7f, +0x00, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x00, 0xff, 0x7f, 0x00, +0x00, 0x03, 0xc0, 0x01, 0x00, 0x80, 0x01, 0x60, 0x00, 0x00, 0x03, 0x80, 0x03, 0x00, 0xc0, +0x00, 0x60, 0x00, 0x00, 0x03, 0x00, 0x07, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x03, 0x00, +0x0e, 0x00, 0x30, 0x00, 0x60, 0x00, 0x00, 0x03, 0x00, 0x1c, 0x00, 0x18, 0x00, 0x60, 0x00, +0x00, 0x03, 0x01, 0x38, 0x00, 0x0c, 0xc0, 0x60, 0x00, 0x00, 0x03, 0x03, 0x70, 0x00, 0x06, +0x60, 0x60, 0x00, 0x00, 0x03, 0x06, 0xe0, 0x00, 0x03, 0x30, 0x60, 0x00, 0x00, 0x03, 0x0c, +0xc0, 0x81, 0x01, 0x18, 0x60, 0x00, 0x00, 0x03, 0x18, 0x80, 0xc3, 0x00, 0x0c, 0x60, 0x00, +0x00, 0x03, 0x30, 0x00, 0x67, 0x00, 0x06, 0x60, 0x00, 0x00, 0x06, 0x60, 0x00, 0x3e, 0x00, +0x03, 0x70, 0x00, 0x00, 0x0c, 0xc0, 0x00, 0x1c, 0x80, 0x01, 0x38, 0x00, 0x00, 0x18, 0x80, +0x01, 0x38, 0xc0, 0x00, 0x1c, 0x00, 0x00, 0x30, 0x00, 0x03, 0x70, 0x60, 0x00, 0x0e, 0x00, +0x00, 0x60, 0x00, 0x06, 0xe0, 0x30, 0x00, 0x07, 0x00, 0x00, 0xc0, 0x00, 0x0c, 0xc0, 0x19, +0x80, 0x03, 0x00, 0x00, 0x80, 0x01, 0x18, 0x80, 0x0b, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x03, +0x30, 0x00, 0x07, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x06, 0x60, 0x00, 0x0e, 0x70, 0x00, 0x00, +0x00, 0x00, 0x0c, 0xc0, 0x00, 0x1c, 0x38, 0x00, 0x00, 0x00, 0x00, 0x18, 0x80, 0x01, 0x38, +0x1c, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x03, 0x70, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x60, +0x00, 0x06, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x0c, 0xc0, 0x03, 0x00, 0x00, +0x00, 0x00, 0xc0, 0x01, 0x18, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x60, 0x03, 0x30, 0x00, +0x07, 0x00, 0x00, 0x00, 0x07, 0x30, 0x06, 0x60, 0x00, 0x0e, 0xe0, 0x00, 0x80, 0x0f, 0x18, +0x0c, 0xc0, 0x00, 0x1c, 0xf0, 0x01, 0xc0, 0x1c, 0x0c, 0x18, 0x80, 0x01, 0x38, 0x98, 0x03, +0x60, 0x38, 0x06, 0x30, 0x00, 0x03, 0x70, 0x0c, 0x07, 0x30, 0x70, 0x03, 0x60, 0x00, 0x06, +0xe0, 0x06, 0x0e, 0x10, 0xe0, 0x01, 0xd8, 0x00, 0x0c, 0xc0, 0x03, 0x0c, 0x10, 0xc0, 0x01, +0x8c, 0x01, 0x18, 0x80, 0x01, 0x0c, 0x30, 0x80, 0x03, 0x06, 0x03, 0x30, 0xc0, 0x00, 0x0e, +0x60, 0x00, 0x07, 0x03, 0x06, 0x60, 0x60, 0x00, 0x07, 0xc0, 0x00, 0x8e, 0x01, 0x0c, 0xc0, +0x30, 0x80, 0x03, 0x80, 0x01, 0x1c, 0x00, 0x1c, 0x80, 0x18, 0xc0, 0x01, 0x00, 0x0f, 0x38, +0x00, 0x3e, 0x00, 0x0c, 0xf8, 0x00, 0x00, 0x1e, 0x70, 0x00, 0x67, 0x00, 0x06, 0x7c, 0x00, +0x00, 0x30, 0xe0, 0x80, 0xc3, 0x00, 0x03, 0x0e, 0x00, 0x00, 0x60, 0xc0, 0xc1, 0x81, 0x81, +0x01, 0x07, 0x00, 0x00, 0xf0, 0x80, 0xe3, 0x00, 0xc3, 0x80, 0x0f, 0x00, 0x00, 0x98, 0x01, +0x77, 0x00, 0x66, 0xc0, 0x1d, 0x00, 0x00, 0x0c, 0x03, 0x3e, 0x00, 0x3c, 0xe0, 0x38, 0x00, +0x00, 0x06, 0x06, 0x1c, 0x00, 0x18, 0x70, 0x70, 0x00, 0x00, 0x03, 0x0c, 0x38, 0x00, 0x0c, +0x38, 0xe0, 0x00, 0x80, 0x01, 0x1c, 0x70, 0x00, 0x06, 0x1c, 0xc0, 0x01, 0xc0, 0x00, 0x3e, +0xe0, 0x00, 0x03, 0x3e, 0x80, 0x03, 0x60, 0x00, 0x67, 0xc0, 0x81, 0x01, 0x67, 0x00, 0x07, +0x30, 0x80, 0xc3, 0x80, 0xc3, 0x00, 0xc3, 0x00, 0x0e, 0x18, 0xc0, 0xc1, 0x00, 0x43, 0x00, +0x83, 0x01, 0x1c, 0x18, 0xe0, 0xc0, 0x80, 0xc3, 0x80, 0x03, 0x03, 0x18, 0x18, 0x70, 0x80, +0xc1, 0x81, 0xc1, 0x01, 0x06, 0x1c, 0x30, 0x38, 0x00, 0xe3, 0x00, 0xe3, 0x00, 0x0c, 0x0e, +0x60, 0x1c, 0x00, 0x76, 0x00, 0x76, 0x00, 0x18, 0x07, 0xc0, 0x0e, 0x00, 0x3c, 0x00, 0x3c, +0x00, 0xb0, 0x03, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 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 +}; diff --git a/bitmaps/bitmaps.h b/bitmaps/bitmaps.h index 86a0c08..507ffa5 100644 --- a/bitmaps/bitmaps.h +++ b/bitmaps/bitmaps.h @@ -1,367 +1,533 @@ -/* - * bitmaps.h - Include bitmap files for pieces and icons - * $Id: bitmaps.h,v 2.1 2003/10/27 19:21:01 mann Exp $ - * - * Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts. - * Enhancements Copyright 1992-95 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: - * ------------------------------------------------------------------------ - * 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 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * ------------------------------------------------------------------------ - * - * 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 } } }\ -}; - +/* + * bitmaps.h - Include bitmap files for pieces and icons + * $Id: bitmaps.h,v 2.1 2003/10/27 19:21:01 mann Exp $ + * + * Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts. + * Enhancements Copyright 1992-95 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: + * ------------------------------------------------------------------------ + * 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 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * ------------------------------------------------------------------------ + * + * 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 "dk72s.bm" +#include "g72s.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 "as72s.bm" +#include "cv72s.bm" +#include "d72s.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 "dk72o.bm" +#include "g72o.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 "as72o.bm" +#include "cv72o.bm" +#include "d72o.bm" + +#include "p64s.bm" +#include "n64s.bm" +#include "b64s.bm" +#include "r64s.bm" +#include "q64s.bm" +#include "a64s.bm" +#include "c64s.bm" +#include "cv64s.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 "cv64o.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 "cv58s.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 "cv58o.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 "cv54s.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 "cv54o.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 "dk49s.bm" +#include "g49s.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 "as49s.bm" +#include "cv49s.bm" +#include "d49s.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 "dk49o.bm" +#include "g49o.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 "as49o.bm" +#include "cv49o.bm" +#include "d49o.bm" + +#include "p45s.bm" +#include "n45s.bm" +#include "b45s.bm" +#include "r45s.bm" +#include "q45s.bm" +#include "a45s.bm" +#include "c45s.bm" +#include "cv45s.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 "cv45o.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 "cv40s.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 "cv40o.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 "cv37s.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 "cv37o.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 "dk33s.bm" +#include "g33s.bm" +#include "cv33s.bm" +#include "l33s.bm" +#include "k33s.bm" +#include "as33s.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 "dk33o.bm" +#include "g33o.bm" +#include "cv33o.bm" +#include "l33o.bm" +#include "k33o.bm" +#include "as33o.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]; +} 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 },\ + { 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 } } },\ +{ 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 },\ + { 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 } } },\ +{ 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 },\ + { 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 } } },\ +{ 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 },\ + { 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 } } },\ +{ 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 },\ + { 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 } } },\ +{ 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 },\ + { 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 } } },\ +{ 72,\ + { { p72s_bits, n72s_bits, b72s_bits, r72s_bits, q72s_bits, f72s_bits, e72s_bits, as72s_bits, c72s_bits, w72s_bits, m72s_bits, o72s_bits, h72s_bits, a72s_bits, dk72s_bits, g72s_bits, cv72s_bits, v72s_bits, l72s_bits, s72s_bits, u72s_bits, k72s_bits },\ + { p72o_bits, n72o_bits, b72o_bits, r72o_bits, q72o_bits, f72o_bits, e72o_bits, as72o_bits, c72o_bits, w72o_bits, m72o_bits, o72o_bits, h72o_bits, a72o_bits, dk72o_bits, g72o_bits, cv72o_bits, v72o_bits, l72o_bits, s72o_bits, u72o_bits, k72o_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, cv64s_bits, l64s_bits, l64s_bits, l64s_bits, l64s_bits, k64s_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, cv64o_bits, l64o_bits, l64o_bits, l64o_bits, l64o_bits, k64o_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, cv58s_bits, l58s_bits, l58s_bits, l58s_bits, l58s_bits, k58s_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, cv58o_bits, l58o_bits, l58o_bits, l58o_bits, l58o_bits, k58o_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, cv54s_bits, l54s_bits, l54s_bits, l54s_bits, l54s_bits, k54s_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, cv54o_bits, l54o_bits, l54o_bits, l54o_bits, l54o_bits, k54o_bits } } },\ +{ 49,\ + { { p49s_bits, n49s_bits, b49s_bits, r49s_bits, q49s_bits, f49s_bits, e49s_bits, as49s_bits, c49s_bits, w49s_bits, m49s_bits, o49s_bits, h49s_bits, a49s_bits, dk49s_bits, g49s_bits, cv49s_bits, v49s_bits, l49s_bits, s49s_bits, u49s_bits, k49s_bits },\ + { p49o_bits, n49o_bits, b49o_bits, r49o_bits, q49o_bits, f49o_bits, e49o_bits, as49o_bits, c49o_bits, w49o_bits, m49o_bits, o49o_bits, h49o_bits, a49s_bits, dk49o_bits, g49o_bits, cv49o_bits, v49o_bits, l49o_bits, s49o_bits, u49o_bits, k49o_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, cv45s_bits, l45s_bits, l45s_bits, l45s_bits, l45s_bits, k45s_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, cv45o_bits, l45o_bits, l45o_bits, l45o_bits, l45o_bits, k45o_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, cv40s_bits, l40s_bits, l40s_bits, l40s_bits, l40s_bits, k40s_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, cv40o_bits, l40o_bits, l40o_bits, l40o_bits, l40o_bits, k40o_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, cv37s_bits, l37s_bits, l37s_bits, l37s_bits, l37s_bits, k37s_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, cv37o_bits, l37o_bits, l37o_bits, l37o_bits, l37o_bits, k37o_bits } } },\ +{ 33,\ + { { p33s_bits, n33s_bits, b33s_bits, r33s_bits, q33s_bits, f33s_bits, e33s_bits, as33s_bits, c33s_bits, w33s_bits, m33s_bits, o33s_bits, h33s_bits, a33s_bits, dk33s_bits, g33s_bits, cv33s_bits, l33s_bits, cv33s_bits, l33s_bits, l33s_bits, k33s_bits },\ + { p33o_bits, n33o_bits, b33o_bits, r33o_bits, q33o_bits, f33o_bits, e33o_bits, as33o_bits, c33o_bits, w33o_bits, m33o_bits, o33o_bits, h33o_bits, a33o_bits, dk33o_bits, g33o_bits, cv33o_bits, l33o_bits, cv33o_bits, l33o_bits, l33o_bits, k33o_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 },\ + { 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 } } },\ +{ 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 },\ + { 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 } } },\ +{ 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 },\ + { 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 } } },\ +{ 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/c33o.bm b/bitmaps/c33o.bm new file mode 100644 index 0000000..2304c5c --- /dev/null +++ b/bitmaps/c33o.bm @@ -0,0 +1,16 @@ +#define c33o_width 33 +#define c33o_height 33 +static char c33o_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, +0x00, 0x40, 0x02, 0x00, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, +0x00, 0x40, 0x02, 0x00, 0x00, 0x00, 0x20, 0x04, 0x00, 0x00, 0x30, 0x10, 0x08, 0x0c, 0x00, +0xc8, 0x0f, 0xf0, 0x13, 0x00, 0x48, 0xc0, 0x03, 0x12, 0x00, 0x30, 0x30, 0x0c, 0x0c, 0x00, +0x40, 0x10, 0x08, 0x02, 0x00, 0x40, 0x08, 0x10, 0x02, 0x00, 0x80, 0x08, 0x10, 0x01, 0x00, +0x80, 0x04, 0x20, 0x01, 0x00, 0x00, 0x05, 0xa0, 0x00, 0x00, 0x80, 0x04, 0x20, 0x01, 0x00, +0x80, 0x08, 0x10, 0x01, 0x00, 0x40, 0x08, 0x10, 0x02, 0x00, 0x40, 0x10, 0x08, 0x02, 0x00, +0x30, 0x30, 0x0c, 0x0c, 0x00, 0x48, 0xc0, 0x03, 0x12, 0x00, 0xc8, 0x0f, 0xf0, 0x13, 0x00, +0x30, 0x10, 0x08, 0x0c, 0x00, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, +0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, +0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + +}; diff --git a/bitmaps/c33s.bm b/bitmaps/c33s.bm new file mode 100644 index 0000000..9ca263a --- /dev/null +++ b/bitmaps/c33s.bm @@ -0,0 +1,16 @@ +#define c33s_width 33 +#define c33s_height 33 +static char c33s_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, +0x00, 0x40, 0x02, 0x00, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, +0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x30, 0xf0, 0x0f, 0x0c, 0x00, +0xc8, 0xff, 0xff, 0x13, 0x00, 0xc8, 0x3f, 0xfc, 0x13, 0x00, 0xf0, 0xcf, 0xf3, 0x0f, 0x00, +0xc0, 0xef, 0xf7, 0x03, 0x00, 0xc0, 0xf7, 0xef, 0x03, 0x00, 0x80, 0xf7, 0xef, 0x01, 0x00, +0x80, 0xfb, 0xdf, 0x01, 0x00, 0x00, 0xfb, 0xdf, 0x00, 0x00, 0x80, 0xfb, 0xdf, 0x01, 0x00, +0x80, 0xf7, 0xef, 0x01, 0x00, 0xc0, 0xf7, 0xef, 0x03, 0x00, 0xc0, 0xef, 0xf7, 0x03, 0x00, +0xf0, 0xcf, 0xf3, 0x0f, 0x00, 0xc8, 0x3f, 0xfc, 0x13, 0x00, 0xc8, 0xff, 0xff, 0x13, 0x00, +0x30, 0xf0, 0x0f, 0x0c, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, +0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, +0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + +}; diff --git a/bitmaps/c37o.bm b/bitmaps/c37o.bm new file mode 100644 index 0000000..63568d0 --- /dev/null +++ b/bitmaps/c37o.bm @@ -0,0 +1,17 @@ +#define c37o_width 37 +#define c37o_height 37 +static char c37o_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, +0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, +0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x80, 0x20, 0x00, 0x00, 0x38, 0x80, 0x20, 0x80, 0x03, +0x44, 0x40, 0x40, 0x40, 0x04, 0xc4, 0x3f, 0x80, 0x7f, 0x04, 0x44, 0x00, 0x1f, 0x40, 0x04, +0x38, 0xc0, 0x60, 0x80, 0x03, 0x40, 0x20, 0x80, 0x40, 0x00, 0x80, 0x10, 0x00, 0x21, 0x00, +0x80, 0x10, 0x00, 0x21, 0x00, 0x00, 0x09, 0x00, 0x12, 0x00, 0x00, 0x09, 0x00, 0x12, 0x00, +0x00, 0x0a, 0x00, 0x0a, 0x00, 0x00, 0x09, 0x00, 0x12, 0x00, 0x00, 0x09, 0x00, 0x12, 0x00, +0x80, 0x10, 0x00, 0x21, 0x00, 0x80, 0x10, 0x00, 0x21, 0x00, 0x40, 0x20, 0x80, 0x40, 0x00, +0x38, 0xc0, 0x60, 0x80, 0x03, 0x44, 0x00, 0x1f, 0x40, 0x04, 0xc4, 0x3f, 0x80, 0x7f, 0x04, +0x44, 0x40, 0x40, 0x40, 0x04, 0x38, 0x80, 0x20, 0x80, 0x03, 0x00, 0x80, 0x20, 0x00, 0x00, +0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, +0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00 +}; diff --git a/bitmaps/c37s.bm b/bitmaps/c37s.bm new file mode 100644 index 0000000..441569e --- /dev/null +++ b/bitmaps/c37s.bm @@ -0,0 +1,17 @@ +#define c37s_width 37 +#define c37s_height 37 +static char c37s_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, +0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, +0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x38, 0x80, 0x3f, 0x80, 0x03, +0x44, 0xc0, 0x7f, 0x40, 0x04, 0xc4, 0xff, 0xff, 0x7f, 0x04, 0xc4, 0xff, 0xe0, 0x7f, 0x04, +0xf8, 0x3f, 0x9f, 0xff, 0x03, 0xc0, 0xdf, 0x7f, 0x7f, 0x00, 0x80, 0xef, 0xff, 0x3e, 0x00, +0x80, 0xef, 0xff, 0x3e, 0x00, 0x00, 0xf7, 0xff, 0x1d, 0x00, 0x00, 0xf7, 0xff, 0x1d, 0x00, +0x00, 0xf6, 0xff, 0x0d, 0x00, 0x00, 0xf7, 0xff, 0x1d, 0x00, 0x00, 0xf7, 0xff, 0x1d, 0x00, +0x80, 0xef, 0xff, 0x3e, 0x00, 0x80, 0xef, 0xff, 0x3e, 0x00, 0xc0, 0xdf, 0x7f, 0x7f, 0x00, +0xf8, 0x3f, 0x9f, 0xff, 0x03, 0xc4, 0xff, 0xe0, 0x7f, 0x04, 0xc4, 0xff, 0xff, 0x7f, 0x04, +0x44, 0xc0, 0x7f, 0x40, 0x04, 0x38, 0x80, 0x3f, 0x80, 0x03, 0x00, 0x80, 0x3f, 0x00, 0x00, +0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, +0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00 +}; diff --git a/bitmaps/c40o.bm b/bitmaps/c40o.bm new file mode 100644 index 0000000..c37629e --- /dev/null +++ b/bitmaps/c40o.bm @@ -0,0 +1,18 @@ +#define c40o_width 40 +#define c40o_height 40 +static char c40o_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, +0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, +0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, +0xe0, 0x00, 0x82, 0x00, 0x07, 0x10, 0xff, 0x01, 0xff, 0x08, 0x10, 0x01, 0x00, 0x80, 0x08, +0x10, 0x01, 0x7e, 0x80, 0x08, 0xe0, 0x00, 0x81, 0x00, 0x07, 0x00, 0x81, 0x00, 0x01, 0x01, +0x00, 0x42, 0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x82, 0x00, 0x00, 0x24, 0x00, 0x44, 0x00, +0x00, 0x28, 0x00, 0x24, 0x00, 0x00, 0x28, 0x00, 0x14, 0x00, 0x00, 0x24, 0x00, 0x14, 0x00, +0x00, 0x22, 0x00, 0x22, 0x00, 0x00, 0x41, 0x00, 0x42, 0x00, 0x00, 0x81, 0x00, 0x41, 0x00, +0x80, 0x00, 0x81, 0x80, 0x00, 0xe0, 0x00, 0x7e, 0x00, 0x07, 0x10, 0x01, 0x00, 0x80, 0x08, +0x10, 0xff, 0x01, 0xff, 0x08, 0x10, 0x01, 0x02, 0x81, 0x08, 0xe0, 0x00, 0x82, 0x00, 0x07, +0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, +0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, +0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00 +}; diff --git a/bitmaps/c40s.bm b/bitmaps/c40s.bm new file mode 100644 index 0000000..b37b008 --- /dev/null +++ b/bitmaps/c40s.bm @@ -0,0 +1,18 @@ +#define c40s_width 40 +#define c40s_height 40 +static char c40s_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, +0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, +0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, +0xe0, 0x00, 0xfe, 0x00, 0x07, 0x10, 0xff, 0xff, 0xff, 0x08, 0x10, 0xff, 0xff, 0xff, 0x08, +0x10, 0xff, 0x81, 0xff, 0x08, 0xe0, 0xff, 0x7e, 0xff, 0x07, 0x00, 0x7f, 0xff, 0xfe, 0x01, +0x00, 0xbe, 0xff, 0xfd, 0x00, 0x00, 0xde, 0xff, 0xfb, 0x00, 0x00, 0xdc, 0xff, 0x7b, 0x00, +0x00, 0xd8, 0xff, 0x3b, 0x00, 0x00, 0xd8, 0xff, 0x1b, 0x00, 0x00, 0xdc, 0xff, 0x1b, 0x00, +0x00, 0xde, 0xff, 0x3b, 0x00, 0x00, 0xbf, 0xff, 0x7d, 0x00, 0x00, 0x7f, 0xff, 0x7e, 0x00, +0x80, 0xff, 0x7e, 0xff, 0x00, 0xe0, 0xff, 0x81, 0xff, 0x07, 0x10, 0xff, 0xff, 0xff, 0x08, +0x10, 0xff, 0xff, 0xff, 0x08, 0x10, 0x01, 0xfe, 0x81, 0x08, 0xe0, 0x00, 0xfe, 0x00, 0x07, +0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, +0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, +0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00 +}; diff --git a/bitmaps/c45o.bm b/bitmaps/c45o.bm new file mode 100644 index 0000000..2a11529 --- /dev/null +++ b/bitmaps/c45o.bm @@ -0,0 +1,23 @@ +#define c45o_width 45 +#define c45o_height 45 +static char c45o_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, +0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, +0x01, 0x00, 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x00, +0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x70, 0x00, 0x04, 0x04, 0xc0, 0x01, 0x88, 0x00, 0x02, +0x08, 0x20, 0x02, 0x88, 0xff, 0x01, 0xf0, 0x3f, 0x02, 0x88, 0x00, 0xf0, 0x01, 0x20, 0x02, +0x70, 0x00, 0x0c, 0x06, 0xc0, 0x01, 0x80, 0x00, 0x02, 0x08, 0x20, 0x00, 0x00, 0x01, 0x01, +0x10, 0x10, 0x00, 0x00, 0x81, 0x00, 0x20, 0x10, 0x00, 0x00, 0x82, 0x00, 0x20, 0x08, 0x00, +0x00, 0x42, 0x00, 0x40, 0x08, 0x00, 0x00, 0x44, 0x00, 0x40, 0x04, 0x00, 0x00, 0x48, 0x00, +0x40, 0x02, 0x00, 0x00, 0x44, 0x00, 0x40, 0x04, 0x00, 0x00, 0x42, 0x00, 0x40, 0x08, 0x00, +0x00, 0x82, 0x00, 0x20, 0x08, 0x00, 0x00, 0x81, 0x00, 0x20, 0x10, 0x00, 0x00, 0x01, 0x01, +0x10, 0x10, 0x00, 0x80, 0x00, 0x02, 0x08, 0x20, 0x00, 0x70, 0x00, 0x0c, 0x06, 0xc0, 0x01, +0x88, 0x00, 0xf0, 0x01, 0x20, 0x02, 0x88, 0xff, 0x01, 0xf0, 0x3f, 0x02, 0x88, 0x00, 0x02, +0x08, 0x20, 0x02, 0x70, 0x00, 0x04, 0x04, 0xc0, 0x01, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, +0x00, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x10, +0x01, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, +0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + +}; diff --git a/bitmaps/c45s.bm b/bitmaps/c45s.bm new file mode 100644 index 0000000..de47fc7 --- /dev/null +++ b/bitmaps/c45s.bm @@ -0,0 +1,23 @@ +#define c45s_width 45 +#define c45s_height 45 +static char c45s_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, +0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, +0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, +0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0x70, 0x00, 0xfc, 0x07, 0xc0, 0x01, 0x88, 0x00, 0xfe, +0x0f, 0x20, 0x02, 0x88, 0xff, 0xff, 0xff, 0x3f, 0x02, 0x88, 0xff, 0x0f, 0xfe, 0x3f, 0x02, +0xf0, 0xff, 0xf3, 0xf9, 0xff, 0x01, 0x80, 0xff, 0xfd, 0xf7, 0x3f, 0x00, 0x00, 0xff, 0xfe, +0xef, 0x1f, 0x00, 0x00, 0x7f, 0xff, 0xdf, 0x1f, 0x00, 0x00, 0x7e, 0xff, 0xdf, 0x0f, 0x00, +0x00, 0xbe, 0xff, 0xbf, 0x0f, 0x00, 0x00, 0xbc, 0xff, 0xbf, 0x07, 0x00, 0x00, 0xb8, 0xff, +0xbf, 0x03, 0x00, 0x00, 0xbc, 0xff, 0xbf, 0x07, 0x00, 0x00, 0xbe, 0xff, 0xbf, 0x0f, 0x00, +0x00, 0x7e, 0xff, 0xdf, 0x0f, 0x00, 0x00, 0x7f, 0xff, 0xdf, 0x1f, 0x00, 0x00, 0xff, 0xfe, +0xef, 0x1f, 0x00, 0x80, 0xff, 0xfd, 0xf7, 0x3f, 0x00, 0xf0, 0xff, 0xf3, 0xf9, 0xff, 0x01, +0x88, 0xff, 0x0f, 0xfe, 0x3f, 0x02, 0x88, 0xff, 0xff, 0xff, 0x3f, 0x02, 0x88, 0x00, 0xfe, +0x0f, 0x20, 0x02, 0x70, 0x00, 0xfc, 0x07, 0xc0, 0x01, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, +0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, +0x01, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, +0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + +}; diff --git a/bitmaps/c49o.bm b/bitmaps/c49o.bm new file mode 100644 index 0000000..51e5ffc --- /dev/null +++ b/bitmaps/c49o.bm @@ -0,0 +1,27 @@ +#define c49o_width 49 +#define c49o_height 49 +static char c49o_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, +0x40, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x08, +0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, +0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x08, 0x20, 0x80, 0x03, +0x00, 0x20, 0xfe, 0x07, 0xc0, 0x7f, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x40, 0x04, 0x00, +0x20, 0x02, 0xc0, 0x03, 0x40, 0x04, 0x00, 0xc0, 0x01, 0x38, 0x1c, 0x80, 0x03, 0x00, 0x00, +0x02, 0x04, 0x20, 0x40, 0x00, 0x00, 0x00, 0x04, 0x02, 0x40, 0x20, 0x00, 0x00, 0x00, 0x04, +0x01, 0x80, 0x20, 0x00, 0x00, 0x00, 0x08, 0x01, 0x80, 0x10, 0x00, 0x00, 0x00, 0x08, 0x01, +0x80, 0x08, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, +0x05, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x09, +0x00, 0x00, 0x00, 0x10, 0x01, 0x80, 0x08, 0x00, 0x00, 0x00, 0x10, 0x01, 0x80, 0x10, 0x00, +0x00, 0x00, 0x08, 0x01, 0x80, 0x20, 0x00, 0x00, 0x00, 0x04, 0x02, 0x40, 0x20, 0x00, 0x00, +0x00, 0x04, 0x04, 0x20, 0x40, 0x00, 0x00, 0x00, 0x02, 0x38, 0x1c, 0x40, 0x00, 0x00, 0xc0, +0x01, 0xc0, 0x03, 0xc0, 0x03, 0x00, 0x20, 0x02, 0x00, 0x00, 0x40, 0x04, 0x00, 0x20, 0xfe, +0x07, 0xc0, 0x7f, 0x04, 0x00, 0x20, 0x02, 0x08, 0x20, 0x40, 0x04, 0x00, 0xc0, 0x01, 0x10, +0x10, 0x80, 0x03, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x08, +0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x04, 0x00, +0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, +0x00, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, +0x00, 0x00, 0x80, 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 +}; diff --git a/bitmaps/c49s.bm b/bitmaps/c49s.bm new file mode 100644 index 0000000..9228bde --- /dev/null +++ b/bitmaps/c49s.bm @@ -0,0 +1,27 @@ +#define c49s_width 49 +#define c49s_height 49 +static char c49s_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, +0x40, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x0f, +0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x1f, 0x00, +0x00, 0x00, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0xc0, 0x01, 0xf8, 0x3f, 0x80, 0x03, +0x00, 0x20, 0xfe, 0xff, 0xff, 0x7f, 0x04, 0x00, 0x20, 0xfe, 0xff, 0xff, 0x7f, 0x04, 0x00, +0x20, 0xfe, 0x3f, 0xfc, 0x7f, 0x04, 0x00, 0xc0, 0xff, 0xc7, 0xe3, 0xff, 0x03, 0x00, 0x00, +0xfe, 0xfb, 0xdf, 0x7f, 0x00, 0x00, 0x00, 0xfc, 0xfd, 0xbf, 0x3f, 0x00, 0x00, 0x00, 0xfc, +0xfe, 0x7f, 0x3f, 0x00, 0x00, 0x00, 0xf8, 0xfe, 0x7f, 0x1f, 0x00, 0x00, 0x00, 0xf8, 0xfe, +0x7f, 0x0f, 0x00, 0x00, 0x00, 0x70, 0xff, 0xff, 0x0e, 0x00, 0x00, 0x00, 0x70, 0xff, 0xff, +0x06, 0x00, 0x00, 0x00, 0x60, 0xff, 0xff, 0x06, 0x00, 0x00, 0x00, 0x60, 0xff, 0xff, 0x0e, +0x00, 0x00, 0x00, 0xf0, 0xfe, 0x7f, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0xfe, 0x7f, 0x1f, 0x00, +0x00, 0x00, 0xf8, 0xfe, 0x7f, 0x3f, 0x00, 0x00, 0x00, 0xfc, 0xfd, 0xbf, 0x3f, 0x00, 0x00, +0x00, 0xfc, 0xfb, 0xdf, 0x7f, 0x00, 0x00, 0x00, 0xfe, 0xc7, 0xe3, 0x7f, 0x00, 0x00, 0xc0, +0xff, 0x3f, 0xfc, 0xff, 0x03, 0x00, 0x20, 0xfe, 0xff, 0xff, 0x7f, 0x04, 0x00, 0x20, 0xfe, +0xff, 0xff, 0x7f, 0x04, 0x00, 0x20, 0x02, 0xf8, 0x3f, 0x40, 0x04, 0x00, 0xc0, 0x01, 0xf0, +0x1f, 0x80, 0x03, 0x00, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x0f, +0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, +0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, +0x00, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, +0x00, 0x00, 0x80, 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 +}; diff --git a/bitmaps/c54o.bm b/bitmaps/c54o.bm new file mode 100644 index 0000000..98d18a9 --- /dev/null +++ b/bitmaps/c54o.bm @@ -0,0 +1,30 @@ +#define c54o_width 54 +#define c54o_height 54 +static char c54o_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, +0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x6d, +0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0x00, +0x00, 0x00, 0x00, 0x00, 0x60, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x60, 0x80, 0x01, 0xc0, +0x00, 0xf0, 0x03, 0x30, 0x80, 0x01, 0xf0, 0x03, 0x38, 0x07, 0x30, 0x00, 0x03, 0x38, 0x07, +0x18, 0xfe, 0x3f, 0x00, 0xfe, 0x1f, 0x06, 0x18, 0xfe, 0x1f, 0x3f, 0xfe, 0x1f, 0x06, 0x38, +0x07, 0xc0, 0xff, 0x00, 0x38, 0x07, 0xf0, 0x03, 0xf0, 0xe1, 0x03, 0xf0, 0x03, 0xc0, 0x03, +0x38, 0x00, 0x07, 0xd8, 0x00, 0x00, 0x06, 0x1c, 0x00, 0x0e, 0x0c, 0x00, 0x00, 0x06, 0x0c, +0x00, 0x0c, 0x0c, 0x00, 0x00, 0x0c, 0x06, 0x00, 0x18, 0x06, 0x00, 0x00, 0x0c, 0x06, 0x00, +0x18, 0x06, 0x00, 0x00, 0x18, 0x07, 0x00, 0x18, 0x03, 0x00, 0x00, 0x38, 0x03, 0x00, 0xb0, +0x03, 0x00, 0x00, 0x70, 0x03, 0x00, 0xb0, 0x01, 0x00, 0x00, 0x60, 0x03, 0x00, 0xb0, 0x03, +0x00, 0x00, 0x70, 0x03, 0x00, 0x30, 0x03, 0x00, 0x00, 0x30, 0x07, 0x00, 0x18, 0x06, 0x00, +0x00, 0x18, 0x06, 0x00, 0x18, 0x0c, 0x00, 0x00, 0x18, 0x06, 0x00, 0x18, 0x0c, 0x00, 0x00, +0x0c, 0x0c, 0x00, 0x0c, 0x18, 0x00, 0x00, 0x0c, 0x1c, 0x00, 0x0e, 0x18, 0x00, 0xc0, 0x06, +0x38, 0x00, 0x07, 0xf0, 0x00, 0xf0, 0x03, 0xf0, 0xe1, 0x03, 0xf0, 0x03, 0x38, 0x07, 0xc0, +0xff, 0x00, 0x38, 0x07, 0x18, 0xfe, 0x0f, 0x1e, 0xfc, 0x1f, 0x06, 0x18, 0xfe, 0x1f, 0x00, +0xfe, 0x1f, 0x06, 0x38, 0x07, 0x30, 0x00, 0x03, 0x38, 0x07, 0xf0, 0x03, 0x30, 0x80, 0x03, +0xf0, 0x03, 0xc0, 0x00, 0x60, 0xc0, 0x01, 0xc0, 0x00, 0x00, 0x00, 0xe0, 0xc0, 0x00, 0x00, +0x00, 0x00, 0x00, 0xc0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x6d, 0x00, 0x00, 0x00, +0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x73, 0x00, 0x00, 0x00, 0x00, +0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, +0x80, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00 +}; diff --git a/bitmaps/c54s.bm b/bitmaps/c54s.bm new file mode 100644 index 0000000..fe594f8 --- /dev/null +++ b/bitmaps/c54s.bm @@ -0,0 +1,30 @@ +#define c54s_width 54 +#define c54s_height 54 +static char c54s_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, +0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x7f, +0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x00, +0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xe0, 0xff, 0x01, 0xc0, +0x00, 0xf0, 0x03, 0xf0, 0xff, 0x01, 0xf0, 0x03, 0x38, 0x07, 0xf0, 0xff, 0x03, 0x38, 0x07, +0x18, 0xfe, 0xff, 0xff, 0xff, 0x1f, 0x06, 0x18, 0xfe, 0xff, 0xc0, 0xff, 0x1f, 0x06, 0x38, +0xff, 0x3f, 0x00, 0xff, 0x3f, 0x07, 0xf0, 0xff, 0x0f, 0x1e, 0xfc, 0xff, 0x03, 0xc0, 0xff, +0xc7, 0xff, 0xf8, 0xdf, 0x00, 0x00, 0xfe, 0xe3, 0xff, 0xf1, 0x0f, 0x00, 0x00, 0xfe, 0xf3, +0xff, 0xf3, 0x0f, 0x00, 0x00, 0xfc, 0xf9, 0xff, 0xe7, 0x07, 0x00, 0x00, 0xfc, 0xf9, 0xff, +0xe7, 0x07, 0x00, 0x00, 0xf8, 0xf8, 0xff, 0xe7, 0x03, 0x00, 0x00, 0xf8, 0xfc, 0xff, 0xcf, +0x03, 0x00, 0x00, 0xf0, 0xfc, 0xff, 0xcf, 0x01, 0x00, 0x00, 0xe0, 0xfc, 0xff, 0xcf, 0x03, +0x00, 0x00, 0xf0, 0xfc, 0xff, 0xcf, 0x03, 0x00, 0x00, 0xf0, 0xf8, 0xff, 0xe7, 0x07, 0x00, +0x00, 0xf8, 0xf9, 0xff, 0xe7, 0x0f, 0x00, 0x00, 0xf8, 0xf9, 0xff, 0xe7, 0x0f, 0x00, 0x00, +0xfc, 0xf3, 0xff, 0xf3, 0x1f, 0x00, 0x00, 0xfc, 0xe3, 0xff, 0xf1, 0x1f, 0x00, 0xc0, 0xfe, +0xc7, 0xff, 0xf8, 0xff, 0x00, 0xf0, 0xff, 0x0f, 0x1e, 0xfc, 0xff, 0x03, 0x38, 0xff, 0x3f, +0x00, 0xff, 0x3f, 0x07, 0x18, 0xfe, 0xff, 0xe1, 0xff, 0x1f, 0x06, 0x18, 0xfe, 0xff, 0xff, +0xff, 0x1f, 0x06, 0x38, 0x07, 0xf0, 0xff, 0x03, 0x38, 0x07, 0xf0, 0x03, 0xf0, 0xff, 0x03, +0xf0, 0x03, 0xc0, 0x00, 0xe0, 0xff, 0x01, 0xc0, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x00, 0x00, +0x00, 0x00, 0x00, 0xc0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0x00, +0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x73, 0x00, 0x00, 0x00, 0x00, +0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, +0x80, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00 +}; diff --git a/bitmaps/c58o.bm b/bitmaps/c58o.bm new file mode 100644 index 0000000..6f1adb6 --- /dev/null +++ b/bitmaps/c58o.bm @@ -0,0 +1,35 @@ +#define c58o_width 58 +#define c58o_height 58 +static char c58o_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x83, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, +0x80, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x03, 0x00, 0x00, 0x00, 0xf0, +0x01, 0xc0, 0x00, 0x06, 0x00, 0x1f, 0x00, 0xf8, 0x03, 0xc0, 0x00, 0x06, 0x80, 0x3f, 0x00, +0x18, 0xff, 0x7f, 0x00, 0xfc, 0xff, 0x31, 0x00, 0x18, 0xff, 0x3f, 0x00, 0xf8, 0xff, 0x31, +0x00, 0x18, 0x03, 0x00, 0x7c, 0x00, 0x80, 0x31, 0x00, 0xf8, 0x03, 0x80, 0xff, 0x03, 0x80, +0x3f, 0x00, 0xf0, 0x01, 0xe0, 0x83, 0x0f, 0x00, 0x1f, 0x00, 0x00, 0x03, 0x70, 0x00, 0x1c, +0x80, 0x01, 0x00, 0x00, 0x06, 0x38, 0x00, 0x38, 0xc0, 0x00, 0x00, 0x00, 0x06, 0x1c, 0x00, +0x70, 0xc0, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x0c, 0x06, +0x00, 0xc0, 0x60, 0x00, 0x00, 0x00, 0x18, 0x06, 0x00, 0xc0, 0x30, 0x00, 0x00, 0x00, 0x30, +0x06, 0x00, 0xc0, 0x18, 0x00, 0x00, 0x00, 0x30, 0x03, 0x00, 0x80, 0x19, 0x00, 0x00, 0x00, +0x60, 0x03, 0x00, 0x80, 0x0d, 0x00, 0x00, 0x00, 0x60, 0x03, 0x00, 0x80, 0x0d, 0x00, 0x00, +0x00, 0x60, 0x03, 0x00, 0x80, 0x0d, 0x00, 0x00, 0x00, 0x30, 0x03, 0x00, 0x80, 0x19, 0x00, +0x00, 0x00, 0x38, 0x06, 0x00, 0xc0, 0x38, 0x00, 0x00, 0x00, 0x18, 0x06, 0x00, 0xc0, 0x30, +0x00, 0x00, 0x00, 0x0c, 0x06, 0x00, 0xc0, 0x60, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x00, 0x60, +0x60, 0x00, 0x00, 0x00, 0x06, 0x1c, 0x00, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x06, 0x38, 0x00, +0x38, 0xc0, 0x00, 0x00, 0x00, 0x03, 0x70, 0x00, 0x1c, 0x80, 0x01, 0x00, 0xf0, 0x01, 0xe0, +0x83, 0x0f, 0x00, 0x1f, 0x00, 0xf8, 0x03, 0x80, 0xff, 0x03, 0x80, 0x3f, 0x00, 0x18, 0x03, +0x00, 0x7c, 0x00, 0x80, 0x31, 0x00, 0x18, 0xff, 0x3f, 0x00, 0xf8, 0xff, 0x31, 0x00, 0x18, +0xff, 0x7f, 0x00, 0xfc, 0xff, 0x31, 0x00, 0xf8, 0x03, 0xc0, 0x00, 0x06, 0x80, 0x3f, 0x00, +0xf0, 0x01, 0x80, 0x01, 0x03, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x80, 0x01, 0x03, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x83, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x01, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; diff --git a/bitmaps/c58s.bm b/bitmaps/c58s.bm new file mode 100644 index 0000000..336b135 --- /dev/null +++ b/bitmaps/c58s.bm @@ -0,0 +1,35 @@ +#define c58s_width 58 +#define c58s_height 58 +static char c58s_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, +0x80, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x03, 0x00, 0x00, 0x00, 0xf0, +0x01, 0xc0, 0xff, 0x07, 0x00, 0x1f, 0x00, 0xf8, 0x03, 0xc0, 0xff, 0x07, 0x80, 0x3f, 0x00, +0x18, 0xff, 0xff, 0xff, 0xff, 0xff, 0x31, 0x00, 0x18, 0xff, 0xff, 0xff, 0xff, 0xff, 0x31, +0x00, 0x18, 0xff, 0xff, 0x83, 0xff, 0xff, 0x31, 0x00, 0xf8, 0xff, 0x7f, 0x00, 0xfc, 0xff, +0x3f, 0x00, 0xf0, 0xff, 0x1f, 0x7c, 0xf0, 0xff, 0x1f, 0x00, 0x00, 0xff, 0x8f, 0xff, 0xe3, +0xff, 0x01, 0x00, 0x00, 0xfe, 0xc7, 0xff, 0xc7, 0xff, 0x00, 0x00, 0x00, 0xfe, 0xe3, 0xff, +0x8f, 0xff, 0x00, 0x00, 0x00, 0xfc, 0xf3, 0xff, 0x9f, 0x7f, 0x00, 0x00, 0x00, 0xfc, 0xf9, +0xff, 0x3f, 0x7f, 0x00, 0x00, 0x00, 0xf8, 0xf9, 0xff, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0xf0, +0xf9, 0xff, 0x3f, 0x1f, 0x00, 0x00, 0x00, 0xf0, 0xfc, 0xff, 0x7f, 0x1e, 0x00, 0x00, 0x00, +0xe0, 0xfc, 0xff, 0x7f, 0x0e, 0x00, 0x00, 0x00, 0xe0, 0xfc, 0xff, 0x7f, 0x0e, 0x00, 0x00, +0x00, 0xe0, 0xfc, 0xff, 0x7f, 0x0e, 0x00, 0x00, 0x00, 0xf0, 0xfc, 0xff, 0x7f, 0x1e, 0x00, +0x00, 0x00, 0xf8, 0xf9, 0xff, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0xf8, 0xf9, 0xff, 0x3f, 0x3f, +0x00, 0x00, 0x00, 0xfc, 0xf9, 0xff, 0x3f, 0x7f, 0x00, 0x00, 0x00, 0xfc, 0xf3, 0xff, 0x9f, +0x7f, 0x00, 0x00, 0x00, 0xfe, 0xe3, 0xff, 0x8f, 0xff, 0x00, 0x00, 0x00, 0xfe, 0xc7, 0xff, +0xc7, 0xff, 0x00, 0x00, 0x00, 0xff, 0x8f, 0xff, 0xe3, 0xff, 0x01, 0x00, 0xf0, 0xff, 0x1f, +0x7c, 0xf0, 0xff, 0x1f, 0x00, 0xf8, 0xff, 0x7f, 0x00, 0xfc, 0xff, 0x3f, 0x00, 0x18, 0xff, +0xff, 0x83, 0xff, 0xff, 0x31, 0x00, 0x18, 0xff, 0xff, 0xff, 0xff, 0xff, 0x31, 0x00, 0x18, +0xff, 0xff, 0xff, 0xff, 0xff, 0x31, 0x00, 0xf8, 0x03, 0xc0, 0xff, 0x07, 0x80, 0x3f, 0x00, +0xf0, 0x01, 0x80, 0xff, 0x03, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x80, 0xff, 0x03, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; diff --git a/bitmaps/c64o.bm b/bitmaps/c64o.bm new file mode 100644 index 0000000..4de2fac --- /dev/null +++ b/bitmaps/c64o.bm @@ -0,0 +1,39 @@ +#define c64o_width 64 +#define c64o_height 64 +static char c64o_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, 0x80, 0x01, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x0e, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, +0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, +0x80, 0x01, 0x00, 0x18, 0x18, 0x00, 0x80, 0x01, 0xe0, 0x07, 0x00, 0x0c, 0x30, 0x00, 0xe0, +0x07, 0x70, 0x0e, 0x00, 0x06, 0x60, 0x00, 0x70, 0x0e, 0x30, 0xfc, 0xff, 0x07, 0xe0, 0xff, +0x3f, 0x0c, 0x30, 0xfc, 0xff, 0x03, 0xc0, 0xff, 0x3f, 0x0c, 0x70, 0x0e, 0x00, 0xc0, 0x03, +0x00, 0x70, 0x0e, 0xe0, 0x07, 0x00, 0xfc, 0x3f, 0x00, 0xe0, 0x07, 0xc0, 0x03, 0x00, 0x3e, +0x7c, 0x00, 0xc0, 0x03, 0x00, 0x06, 0x80, 0x07, 0xe0, 0x01, 0x60, 0x00, 0x00, 0x0c, 0xc0, +0x01, 0x80, 0x03, 0x30, 0x00, 0x00, 0x0c, 0xc0, 0x00, 0x00, 0x03, 0x30, 0x00, 0x00, 0x18, +0x60, 0x00, 0x00, 0x06, 0x18, 0x00, 0x00, 0x30, 0x70, 0x00, 0x00, 0x0e, 0x0c, 0x00, 0x00, +0x30, 0x30, 0x00, 0x00, 0x0c, 0x0c, 0x00, 0x00, 0x60, 0x30, 0x00, 0x00, 0x0c, 0x06, 0x00, +0x00, 0x60, 0x10, 0x00, 0x00, 0x08, 0x06, 0x00, 0x00, 0xc0, 0x18, 0x00, 0x00, 0x18, 0x03, +0x00, 0x00, 0x80, 0x19, 0x00, 0x00, 0x98, 0x01, 0x00, 0x00, 0x80, 0x1b, 0x00, 0x00, 0xd8, +0x01, 0x00, 0x00, 0x80, 0x19, 0x00, 0x00, 0x98, 0x01, 0x00, 0x00, 0xc0, 0x10, 0x00, 0x00, +0x08, 0x03, 0x00, 0x00, 0xc0, 0x30, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x60, 0x30, 0x00, +0x00, 0x0c, 0x06, 0x00, 0x00, 0x30, 0x70, 0x00, 0x00, 0x0e, 0x0c, 0x00, 0x00, 0x30, 0x60, +0x00, 0x00, 0x06, 0x0c, 0x00, 0x00, 0x18, 0xc0, 0x00, 0x00, 0x03, 0x18, 0x00, 0x00, 0x18, +0xc0, 0x01, 0x80, 0x03, 0x18, 0x00, 0x80, 0x0d, 0x80, 0x07, 0xe0, 0x01, 0xb0, 0x01, 0xe0, +0x07, 0x00, 0x3e, 0x7c, 0x00, 0xe0, 0x07, 0x70, 0x0e, 0x00, 0xfc, 0x3f, 0x00, 0x70, 0x0e, +0x30, 0xfc, 0xff, 0xc1, 0x83, 0xff, 0x3f, 0x0c, 0x30, 0xfc, 0xff, 0x03, 0xc0, 0xff, 0x3f, +0x0c, 0x70, 0x0e, 0x00, 0x03, 0xc0, 0x00, 0x70, 0x0e, 0xe0, 0x07, 0x00, 0x06, 0x60, 0x00, +0xe0, 0x07, 0xc0, 0x03, 0x00, 0x06, 0x60, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x0c, 0x30, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, +0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x70, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xc0, 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 +}; diff --git a/bitmaps/c64s.bm b/bitmaps/c64s.bm new file mode 100644 index 0000000..9d1e4f7 --- /dev/null +++ b/bitmaps/c64s.bm @@ -0,0 +1,39 @@ +#define c64s_width 64 +#define c64s_height 64 +static char c64s_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, 0x80, 0x01, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x0e, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, +0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x00, +0x80, 0x01, 0x00, 0xf8, 0x1f, 0x00, 0x80, 0x01, 0xe0, 0x07, 0x00, 0xfc, 0x3f, 0x00, 0xe0, +0x07, 0x70, 0x0e, 0x00, 0xfe, 0x7f, 0x00, 0x70, 0x0e, 0x30, 0xfc, 0xff, 0xff, 0xff, 0xff, +0x3f, 0x0c, 0x30, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x0c, 0x70, 0xfe, 0xff, 0x3f, 0xfc, +0xff, 0x7f, 0x0e, 0xe0, 0xff, 0xff, 0x03, 0xc0, 0xff, 0xff, 0x07, 0xc0, 0xff, 0xff, 0xc1, +0x83, 0xff, 0xff, 0x03, 0x00, 0xfe, 0x7f, 0xf8, 0x1f, 0xfe, 0x7f, 0x00, 0x00, 0xfc, 0x3f, +0xfe, 0x7f, 0xfc, 0x3f, 0x00, 0x00, 0xfc, 0x3f, 0xff, 0xff, 0xfc, 0x3f, 0x00, 0x00, 0xf8, +0x9f, 0xff, 0xff, 0xf9, 0x1f, 0x00, 0x00, 0xf0, 0x8f, 0xff, 0xff, 0xf1, 0x0f, 0x00, 0x00, +0xf0, 0xcf, 0xff, 0xff, 0xf3, 0x0f, 0x00, 0x00, 0xe0, 0xcf, 0xff, 0xff, 0xf3, 0x07, 0x00, +0x00, 0xe0, 0xef, 0xff, 0xff, 0xf7, 0x07, 0x00, 0x00, 0xc0, 0xe7, 0xff, 0xff, 0xe7, 0x03, +0x00, 0x00, 0x80, 0xe7, 0xff, 0xff, 0xe7, 0x01, 0x00, 0x00, 0x80, 0xe7, 0xff, 0xff, 0xe7, +0x01, 0x00, 0x00, 0x80, 0xe7, 0xff, 0xff, 0xe7, 0x01, 0x00, 0x00, 0xc0, 0xef, 0xff, 0xff, +0xf7, 0x03, 0x00, 0x00, 0xc0, 0xcf, 0xff, 0xff, 0xf3, 0x03, 0x00, 0x00, 0xe0, 0xcf, 0xff, +0xff, 0xf3, 0x07, 0x00, 0x00, 0xf0, 0x8f, 0xff, 0xff, 0xf1, 0x0f, 0x00, 0x00, 0xf0, 0x9f, +0xff, 0xff, 0xf9, 0x0f, 0x00, 0x00, 0xf8, 0x3f, 0xff, 0xff, 0xfc, 0x1f, 0x00, 0x00, 0xf8, +0x3f, 0xfe, 0x7f, 0xfc, 0x1f, 0x00, 0x80, 0xfd, 0x7f, 0xf8, 0x1f, 0xfe, 0xbf, 0x01, 0xe0, +0xff, 0xff, 0xc1, 0x83, 0xff, 0xff, 0x07, 0x70, 0xfe, 0xff, 0x03, 0xc0, 0xff, 0x7f, 0x0e, +0x30, 0xfc, 0xff, 0x3f, 0xfc, 0xff, 0x3f, 0x0c, 0x30, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x3f, +0x0c, 0x70, 0x0e, 0x00, 0xff, 0xff, 0x00, 0x70, 0x0e, 0xe0, 0x07, 0x00, 0xfe, 0x7f, 0x00, +0xe0, 0x07, 0xc0, 0x03, 0x00, 0xfe, 0x7f, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0xfc, 0x3f, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, +0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x70, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xc0, 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 +}; diff --git a/bitmaps/c72o.bm b/bitmaps/c72o.bm new file mode 100644 index 0000000..13d9bb7 --- /dev/null +++ b/bitmaps/c72o.bm @@ -0,0 +1,48 @@ +#define c72o_width 72 +#define c72o_height 72 +static char c72o_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, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xc7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x01, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x83, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc7, 0x01, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0xc7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x01, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x80, 0x83, 0x03, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xc0, 0x01, 0x03, +0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0xc0, 0x00, 0x06, 0x00, 0x7c, 0x00, 0x80, 0xe3, 0x00, +0xe0, 0x00, 0x06, 0x00, 0xfe, 0x00, 0x80, 0xc1, 0x00, 0x70, 0x00, 0x0c, 0x00, 0xc7, 0x01, +0x80, 0xc1, 0xff, 0x7f, 0x00, 0xfc, 0xff, 0x83, 0x01, 0x80, 0xc1, 0xff, 0x3f, 0x00, 0xf8, +0xff, 0x83, 0x01, 0x80, 0xe3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x01, 0x00, 0x7f, 0x00, +0x00, 0x00, 0x00, 0x00, 0xc7, 0x01, 0x00, 0xfe, 0x00, 0x00, 0xfe, 0x00, 0x00, 0xfe, 0x00, +0x00, 0xc0, 0x00, 0x80, 0xff, 0x03, 0x00, 0x7f, 0x00, 0x00, 0xc0, 0x01, 0xc0, 0x83, 0x07, +0x00, 0x03, 0x00, 0x00, 0x80, 0x01, 0xe0, 0x00, 0x0e, 0x80, 0x03, 0x00, 0x00, 0x80, 0x03, +0x70, 0x00, 0x1c, 0x80, 0x01, 0x00, 0x00, 0x00, 0x03, 0x38, 0x00, 0x38, 0xc0, 0x01, 0x00, +0x00, 0x00, 0x07, 0x38, 0x00, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x06, 0x1c, 0x00, 0x60, +0xe0, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0c, 0x00, 0xe0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x0c, +0x0e, 0x00, 0xc0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x06, 0x00, 0xc0, 0x30, 0x00, 0x00, +0x00, 0x00, 0x38, 0x06, 0x00, 0xc0, 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x06, 0x00, 0xc0, +0x18, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x06, 0x00, 0xc0, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0c, +0x0e, 0x00, 0xe0, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0c, 0x00, 0x60, 0x60, 0x00, 0x00, +0x00, 0x00, 0x06, 0x0c, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x07, 0x18, 0x00, 0x30, +0xc0, 0x00, 0x00, 0x00, 0x80, 0x03, 0x38, 0x00, 0x38, 0xc0, 0x00, 0x00, 0x00, 0x80, 0x03, +0x70, 0x00, 0x1c, 0xc0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0xe0, 0x00, 0x0e, 0x80, 0x01, 0x00, +0x00, 0xfe, 0x01, 0xc0, 0x83, 0x03, 0x80, 0x1f, 0x00, 0x00, 0xff, 0x00, 0x80, 0xff, 0x03, +0x80, 0x3f, 0x00, 0x80, 0xe3, 0x00, 0x00, 0xfe, 0x00, 0xc0, 0x71, 0x00, 0x80, 0xc1, 0x00, +0x00, 0x00, 0x00, 0xc0, 0x60, 0x00, 0x80, 0xc1, 0xff, 0x1f, 0x00, 0xf8, 0xff, 0x60, 0x00, +0x80, 0xc1, 0xff, 0x1f, 0x00, 0xfc, 0xff, 0x60, 0x00, 0x80, 0xe3, 0x00, 0x38, 0x00, 0x0c, +0xc0, 0x71, 0x00, 0x00, 0x7f, 0x00, 0x30, 0x00, 0x0e, 0x80, 0x3f, 0x00, 0x00, 0x3e, 0x00, +0x70, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x07, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xe0, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x80, 0x03, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x81, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x80, 0xc1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc3, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x80, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc1, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x80, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe3, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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/c72s.bm b/bitmaps/c72s.bm new file mode 100644 index 0000000..e079cc1 --- /dev/null +++ b/bitmaps/c72s.bm @@ -0,0 +1,48 @@ +#define c72s_width 72 +#define c72s_height 72 +static char c72s_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, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xc7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x01, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x83, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc7, 0x01, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x80, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xc0, 0xff, 0x03, +0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0xc0, 0xff, 0x07, 0x00, 0x7c, 0x00, 0x80, 0xe3, 0x00, +0xe0, 0xff, 0x07, 0x00, 0xfe, 0x00, 0x80, 0xc1, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0xc7, 0x01, +0x80, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff, 0x83, 0x01, 0x80, 0xc1, 0xff, 0xff, 0xff, 0xff, +0xff, 0x83, 0x01, 0x80, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0x83, 0x01, 0x00, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xc7, 0x01, 0x00, 0xfe, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, +0x00, 0xc0, 0xff, 0x7f, 0x00, 0xfc, 0xff, 0x7f, 0x00, 0x00, 0xc0, 0xff, 0x3f, 0x7c, 0xf8, +0xff, 0x03, 0x00, 0x00, 0x80, 0xff, 0x1f, 0xff, 0xf1, 0xff, 0x03, 0x00, 0x00, 0x80, 0xff, +0x8f, 0xff, 0xe3, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xc7, 0xff, 0xc7, 0xff, 0x01, 0x00, +0x00, 0x00, 0xff, 0xc7, 0xff, 0x8f, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xe3, 0xff, 0x9f, +0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xf3, 0xff, 0x1f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xfc, +0xf1, 0xff, 0x3f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xf9, 0xff, 0x3f, 0x3f, 0x00, 0x00, +0x00, 0x00, 0xf8, 0xf9, 0xff, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xf9, 0xff, 0x3f, +0x1f, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xf9, 0xff, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xfc, +0xf1, 0xff, 0x1f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xf3, 0xff, 0x9f, 0x7f, 0x00, 0x00, +0x00, 0x00, 0xfe, 0xf3, 0xff, 0x9f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xff, 0xe7, 0xff, 0xcf, +0xff, 0x00, 0x00, 0x00, 0x80, 0xff, 0xc7, 0xff, 0xc7, 0xff, 0x00, 0x00, 0x00, 0x80, 0xff, +0x8f, 0xff, 0xe3, 0xff, 0x01, 0x00, 0x00, 0xc0, 0xff, 0x1f, 0xff, 0xf1, 0xff, 0x01, 0x00, +0x00, 0xfe, 0xff, 0x3f, 0x7c, 0xfc, 0xff, 0x1f, 0x00, 0x00, 0xff, 0xff, 0x7f, 0x00, 0xfc, +0xff, 0x3f, 0x00, 0x80, 0xe3, 0xff, 0xff, 0x01, 0xff, 0xff, 0x71, 0x00, 0x80, 0xc1, 0xff, +0xff, 0xff, 0xff, 0xff, 0x60, 0x00, 0x80, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff, 0x60, 0x00, +0x80, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff, 0x60, 0x00, 0x80, 0xe3, 0x00, 0xf8, 0xff, 0x0f, +0xc0, 0x71, 0x00, 0x00, 0x7f, 0x00, 0xf0, 0xff, 0x0f, 0x80, 0x3f, 0x00, 0x00, 0x3e, 0x00, +0xf0, 0xff, 0x07, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x07, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xe0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x03, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x80, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x80, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc1, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x80, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe3, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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/convert.c b/bitmaps/convert.c new file mode 100644 index 0000000..c56cf4e --- /dev/null +++ b/bitmaps/convert.c @@ -0,0 +1,73 @@ +#include + +// [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 \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>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>(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/bitmaps/cv33o.bm b/bitmaps/cv33o.bm new file mode 100644 index 0000000..d40b57a --- /dev/null +++ b/bitmaps/cv33o.bm @@ -0,0 +1,16 @@ +#define cv33o_width 33 +#define cv33o_height 33 +static char cv33o_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, +0x00, 0xc0, 0x5b, 0x00, 0x00, 0x00, 0x30, 0xa2, 0x00, 0x00, 0x00, 0x18, 0xe0, 0x00, 0x00, +0x00, 0x0c, 0xa0, 0x01, 0x00, 0x00, 0x06, 0xc0, 0x01, 0x00, 0x00, 0x02, 0x01, 0x02, 0x00, +0x00, 0x03, 0x01, 0x02, 0x00, 0x00, 0x01, 0x01, 0x04, 0x00, 0x80, 0x01, 0x03, 0x04, 0x00, +0x80, 0x01, 0x1d, 0x0e, 0x00, 0x80, 0x01, 0x21, 0x0c, 0x00, 0x80, 0x00, 0x42, 0x09, 0x00, +0xc0, 0x00, 0x84, 0x07, 0x00, 0xc0, 0x00, 0x88, 0x01, 0x00, 0xc0, 0x00, 0x10, 0x00, 0x00, +0xc0, 0x00, 0x10, 0x00, 0x00, 0xc0, 0x00, 0x20, 0x00, 0x00, 0xc0, 0x00, 0x20, 0x00, 0x00, +0xc0, 0x00, 0x20, 0x00, 0x00, 0x80, 0xff, 0x3f, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, +0x20, 0x00, 0x80, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x01, 0x00, 0x10, 0x00, 0x00, 0x01, 0x00, +0x10, 0x00, 0x00, 0x01, 0x00, 0x10, 0x1f, 0x1f, 0x01, 0x00, 0x10, 0x11, 0x11, 0x01, 0x00, +0xf0, 0xf1, 0xf1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + +}; diff --git a/bitmaps/cv33s.bm b/bitmaps/cv33s.bm new file mode 100644 index 0000000..15614e0 --- /dev/null +++ b/bitmaps/cv33s.bm @@ -0,0 +1,16 @@ +#define cv33s_width 33 +#define cv33s_height 33 +static char cv33s_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, +0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, 0x80, 0xff, 0x00, 0x00, 0x00, 0x60, 0x9c, 0x01, 0x00, +0x00, 0x98, 0x3f, 0x01, 0x00, 0x00, 0xc8, 0xbf, 0x02, 0x00, 0x00, 0xe4, 0x7f, 0x02, 0x00, +0x00, 0xf6, 0xff, 0x07, 0x00, 0x00, 0xf6, 0xfd, 0x07, 0x00, 0x00, 0xf2, 0xff, 0x0f, 0x00, +0x00, 0xfb, 0xff, 0x0f, 0x00, 0x00, 0xfb, 0xf3, 0x13, 0x00, 0x00, 0xf9, 0xc3, 0x17, 0x00, +0x00, 0xf9, 0x87, 0x1f, 0x00, 0x80, 0xfd, 0x0f, 0x0f, 0x00, 0x80, 0xfd, 0x1f, 0x03, 0x00, +0x80, 0xfc, 0x3f, 0x00, 0x00, 0x80, 0xfc, 0x3f, 0x00, 0x00, 0x80, 0xfc, 0x7f, 0x00, 0x00, +0x80, 0xff, 0x7f, 0x00, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, +0x80, 0xff, 0xff, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x01, 0x00, 0x60, 0x00, 0x00, 0x03, 0x00, +0xe0, 0xff, 0xff, 0x03, 0x00, 0xe0, 0xff, 0xff, 0x03, 0x00, 0xe0, 0xe3, 0xe3, 0x03, 0x00, +0xe0, 0xe3, 0xe3, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + +}; diff --git a/bitmaps/cv37o.bm b/bitmaps/cv37o.bm new file mode 100644 index 0000000..3924010 --- /dev/null +++ b/bitmaps/cv37o.bm @@ -0,0 +1,17 @@ +#define cv37o_width 37 +#define cv37o_height 37 +static char cv37o_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, +0x00, 0x00, 0x18, 0x03, 0x00, 0x00, 0x00, 0xa8, 0x02, 0x00, 0x00, 0x80, 0x6f, 0x02, 0x00, +0x00, 0x60, 0x80, 0x03, 0x00, 0x00, 0x30, 0x00, 0x04, 0x00, 0x00, 0x18, 0x80, 0x05, 0x00, +0x00, 0x08, 0x00, 0x0a, 0x00, 0x00, 0x0c, 0x04, 0x0a, 0x00, 0x00, 0x06, 0x04, 0x10, 0x00, +0x00, 0x06, 0x04, 0x10, 0x00, 0x00, 0x06, 0x0c, 0x20, 0x00, 0x00, 0x03, 0x34, 0x20, 0x00, +0x00, 0x03, 0x44, 0x40, 0x00, 0x00, 0x03, 0x84, 0x70, 0x00, 0x00, 0x03, 0x08, 0x61, 0x00, +0x00, 0x01, 0x10, 0x4a, 0x00, 0x80, 0x01, 0x10, 0x3c, 0x00, 0x80, 0x01, 0x20, 0x00, 0x00, +0x80, 0x01, 0x40, 0x00, 0x00, 0x80, 0x01, 0x80, 0x00, 0x00, 0x80, 0x01, 0x00, 0x01, 0x00, +0x80, 0x01, 0x00, 0x01, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, +0x80, 0x00, 0x00, 0x04, 0x00, 0xe0, 0xff, 0xff, 0x1f, 0x00, 0x20, 0x00, 0x00, 0x10, 0x00, +0x20, 0x00, 0x00, 0x10, 0x00, 0x20, 0x7e, 0xf8, 0x11, 0x00, 0x20, 0x42, 0x08, 0x11, 0x00, +0x20, 0x42, 0x08, 0x11, 0x00, 0xe0, 0xc3, 0x0f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00 +}; diff --git a/bitmaps/cv37s.bm b/bitmaps/cv37s.bm new file mode 100644 index 0000000..3108f56 --- /dev/null +++ b/bitmaps/cv37s.bm @@ -0,0 +1,17 @@ +#define cv37s_width 37 +#define cv37s_height 37 +static char cv37s_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x70, 0x06, 0x00, +0x00, 0x00, 0x70, 0x07, 0x00, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 0x80, 0x71, 0x06, 0x00, +0x00, 0xc0, 0xfe, 0x0f, 0x00, 0x00, 0x60, 0xff, 0x0c, 0x00, 0x00, 0xb0, 0xff, 0x1b, 0x00, +0x00, 0x90, 0xff, 0x1b, 0x00, 0x00, 0xd8, 0xff, 0x3f, 0x00, 0x00, 0xc8, 0xf7, 0x3f, 0x00, +0x00, 0xe8, 0xff, 0x7f, 0x00, 0x00, 0xe4, 0xff, 0x7f, 0x00, 0x00, 0xe4, 0xcf, 0xff, 0x00, +0x00, 0xf4, 0x0f, 0x9f, 0x00, 0x00, 0xf0, 0x1f, 0xbe, 0x00, 0x00, 0xf2, 0x3f, 0xec, 0x00, +0x00, 0xf2, 0x3f, 0x78, 0x00, 0x00, 0xf2, 0x7f, 0x00, 0x00, 0x00, 0xf2, 0xff, 0x00, 0x00, +0x00, 0xf2, 0xff, 0x01, 0x00, 0x00, 0xf2, 0xff, 0x03, 0x00, 0x00, 0xfa, 0xff, 0x03, 0x00, +0x00, 0xfe, 0xff, 0x03, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0xfe, 0xff, 0x07, 0x00, +0x00, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x3f, 0x00, +0xc0, 0xff, 0xff, 0x3f, 0x00, 0xc0, 0xff, 0xff, 0x3f, 0x00, 0xc0, 0x87, 0x1f, 0x3e, 0x00, +0xc0, 0x87, 0x1f, 0x3e, 0x00, 0xc0, 0x87, 0x1f, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00 +}; diff --git a/bitmaps/cv40o.bm b/bitmaps/cv40o.bm new file mode 100644 index 0000000..187aa18 --- /dev/null +++ b/bitmaps/cv40o.bm @@ -0,0 +1,18 @@ +#define cv40o_width 40 +#define cv40o_height 40 +static char cv40o_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x40, 0x08, 0x00, 0x00, 0x00, 0x60, 0x0c, 0x00, 0x00, 0x00, 0xa0, 0x0a, 0x00, +0x00, 0x00, 0xbe, 0x09, 0x00, 0x00, 0x80, 0x01, 0x0e, 0x00, 0x00, 0xc0, 0x00, 0x10, 0x00, +0x00, 0x60, 0x00, 0x16, 0x00, 0x00, 0x30, 0x00, 0x28, 0x00, 0x00, 0x30, 0x10, 0x28, 0x00, +0x00, 0x18, 0x10, 0x40, 0x00, 0x00, 0x18, 0x10, 0x40, 0x00, 0x00, 0x1c, 0x30, 0x80, 0x00, +0x00, 0x0c, 0xd0, 0x80, 0x00, 0x00, 0x0c, 0x10, 0x01, 0x01, 0x00, 0x0e, 0x10, 0xc2, 0x01, +0x00, 0x0e, 0x20, 0x84, 0x01, 0x00, 0x06, 0x40, 0x28, 0x01, 0x00, 0x07, 0x40, 0xf0, 0x00, +0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x07, 0x00, 0x01, 0x00, 0x00, 0x07, 0x00, 0x02, 0x00, +0x00, 0x07, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x04, 0x00, 0x00, 0x07, 0x00, 0x08, 0x00, +0x00, 0x07, 0x00, 0x08, 0x00, 0x00, 0xfe, 0xff, 0x0f, 0x00, 0x00, 0x02, 0x00, 0x10, 0x00, +0x00, 0x01, 0x00, 0x20, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, +0x40, 0x00, 0x00, 0x80, 0x00, 0x40, 0xf8, 0xe1, 0x87, 0x00, 0x40, 0x08, 0x21, 0x84, 0x00, +0x40, 0x08, 0x21, 0x84, 0x00, 0xc0, 0x0f, 0x3f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00 +}; diff --git a/bitmaps/cv40s.bm b/bitmaps/cv40s.bm new file mode 100644 index 0000000..aa072e9 --- /dev/null +++ b/bitmaps/cv40s.bm @@ -0,0 +1,18 @@ +#define cv40s_width 40 +#define cv40s_height 40 +static char cv40s_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x08, 0x00, +0x00, 0x00, 0xe0, 0x0c, 0x00, 0x00, 0x00, 0xe0, 0x0e, 0x00, 0x00, 0x00, 0xfc, 0x0f, 0x00, +0x00, 0x00, 0xe3, 0x0c, 0x00, 0x00, 0x80, 0xfc, 0x1f, 0x00, 0x00, 0x60, 0xfe, 0x19, 0x00, +0x00, 0x30, 0xff, 0x37, 0x00, 0x00, 0x90, 0xff, 0x37, 0x00, 0x00, 0xd8, 0xff, 0x7f, 0x00, +0x00, 0xc8, 0xef, 0x7f, 0x00, 0x00, 0xe8, 0xff, 0xff, 0x00, 0x00, 0xe4, 0xff, 0xff, 0x00, +0x00, 0xe4, 0x9f, 0xff, 0x01, 0x00, 0xf4, 0x1f, 0x3e, 0x01, 0x00, 0xf4, 0x3f, 0x7c, 0x01, +0x00, 0xf2, 0x7f, 0xd8, 0x01, 0x00, 0xf2, 0xff, 0xf0, 0x00, 0x00, 0xf2, 0xff, 0x01, 0x00, +0x00, 0xf2, 0xff, 0x03, 0x00, 0x00, 0xf2, 0xff, 0x07, 0x00, 0x00, 0xf2, 0xff, 0x07, 0x00, +0x00, 0xf2, 0xff, 0x0f, 0x00, 0x00, 0xf2, 0xff, 0x0f, 0x00, 0x00, 0xf2, 0xff, 0x0f, 0x00, +0x00, 0xfe, 0xff, 0x07, 0x00, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x00, 0xfe, 0xff, 0x1f, 0x00, +0x00, 0xff, 0xff, 0x3f, 0x00, 0x80, 0x00, 0x00, 0x40, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x00, +0xc0, 0xff, 0xff, 0xff, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x00, 0xc0, 0x0f, 0x3f, 0xfc, 0x00, +0xc0, 0x0f, 0x3f, 0xfc, 0x00, 0xc0, 0x0f, 0x3f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00 +}; diff --git a/bitmaps/cv45o.bm b/bitmaps/cv45o.bm new file mode 100644 index 0000000..3947a3e --- /dev/null +++ b/bitmaps/cv45o.bm @@ -0,0 +1,23 @@ +#define cv45o_width 45 +#define cv45o_height 45 +static char cv45o_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x29, 0x01, 0x00, +0x00, 0x00, 0xe0, 0x19, 0x01, 0x00, 0x00, 0x00, 0x18, 0x29, 0x01, 0x00, 0x00, 0x00, 0x06, +0x40, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x80, 0x01, 0x40, 0x04, 0x00, +0x00, 0xc0, 0x00, 0xc0, 0x04, 0x00, 0x00, 0x40, 0x00, 0x80, 0x05, 0x00, 0x00, 0x60, 0x40, +0x00, 0x08, 0x00, 0x00, 0x20, 0x40, 0x00, 0x08, 0x00, 0x00, 0x30, 0x40, 0x00, 0x08, 0x00, +0x00, 0x10, 0x40, 0x00, 0x10, 0x00, 0x00, 0x18, 0x80, 0x00, 0x10, 0x00, 0x00, 0x18, 0x80, +0x01, 0x20, 0x00, 0x00, 0x08, 0x80, 0x06, 0x40, 0x00, 0x00, 0x0c, 0x80, 0x18, 0x70, 0x00, +0x00, 0x0c, 0x00, 0x21, 0x60, 0x00, 0x00, 0x0c, 0x00, 0x41, 0x40, 0x00, 0x00, 0x0c, 0x00, +0x82, 0x44, 0x00, 0x00, 0x04, 0x00, 0x04, 0x3d, 0x00, 0x00, 0x06, 0x00, 0x04, 0x02, 0x00, +0x00, 0x06, 0x00, 0x08, 0x00, 0x00, 0x00, 0x06, 0x00, 0x10, 0x00, 0x00, 0x00, 0x06, 0x00, +0x20, 0x00, 0x00, 0x00, 0x06, 0x00, 0x20, 0x00, 0x00, 0x00, 0x06, 0x00, 0x40, 0x00, 0x00, +0x00, 0x06, 0x00, 0x40, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x02, 0x00, +0x80, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x02, 0x00, +0xc0, 0xff, 0xff, 0xff, 0x07, 0x00, 0x40, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, +0x00, 0x04, 0x00, 0x40, 0xf0, 0x87, 0x3f, 0x04, 0x00, 0x40, 0x10, 0x84, 0x20, 0x04, 0x00, +0x40, 0x10, 0x84, 0x20, 0x04, 0x00, 0xc0, 0x1f, 0xfc, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + +}; diff --git a/bitmaps/cv45s.bm b/bitmaps/cv45s.bm new file mode 100644 index 0000000..828b327 --- /dev/null +++ b/bitmaps/cv45s.bm @@ -0,0 +1,23 @@ +#define cv45s_width 45 +#define cv45s_height 45 +static char cv45s_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x01, 0x00, 0x00, 0x00, 0x00, 0xef, 0x01, 0x00, +0x00, 0x00, 0xe0, 0xff, 0x01, 0x00, 0x00, 0x00, 0x18, 0xcf, 0x01, 0x00, 0x00, 0x00, 0xe6, +0xbf, 0x03, 0x00, 0x00, 0x00, 0xfb, 0xff, 0x03, 0x00, 0x00, 0x80, 0xfd, 0xbf, 0x07, 0x00, +0x00, 0xc0, 0xfe, 0x3f, 0x07, 0x00, 0x00, 0x40, 0xfe, 0x7f, 0x06, 0x00, 0x00, 0x60, 0xff, +0xff, 0x0f, 0x00, 0x00, 0x20, 0xff, 0xff, 0x0f, 0x00, 0x00, 0xb0, 0xff, 0xff, 0x0f, 0x00, +0x00, 0x90, 0x7f, 0xff, 0x1f, 0x00, 0x00, 0xd0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xc0, 0xff, +0xfe, 0x3f, 0x00, 0x00, 0xc8, 0xff, 0xfc, 0x7f, 0x00, 0x00, 0xc8, 0xff, 0xf0, 0x4f, 0x00, +0x00, 0xe8, 0xff, 0xc1, 0x5f, 0x00, 0x00, 0xe0, 0xff, 0x81, 0x7f, 0x00, 0x00, 0xe0, 0xff, +0x03, 0x7b, 0x00, 0x00, 0xe4, 0xff, 0x07, 0x3f, 0x00, 0x00, 0xe4, 0xff, 0x07, 0x02, 0x00, +0x00, 0xe4, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xe4, 0xff, 0x1f, 0x00, 0x00, 0x00, 0xe4, 0xff, +0x3f, 0x00, 0x00, 0x00, 0xe4, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xe4, 0xff, 0x7f, 0x00, 0x00, +0x00, 0xf4, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x04, 0x00, +0x40, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x01, 0x00, +0x80, 0xff, 0xff, 0xff, 0x03, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x06, 0x00, 0xc0, 0xff, 0xff, +0xff, 0x07, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x07, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x07, 0x00, +0xc0, 0x1f, 0xfc, 0xe0, 0x07, 0x00, 0xc0, 0x1f, 0xfc, 0xe0, 0x07, 0x00, 0xc0, 0x1f, 0xfc, +0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + +}; diff --git a/bitmaps/cv49o.bm b/bitmaps/cv49o.bm new file mode 100644 index 0000000..f18087d --- /dev/null +++ b/bitmaps/cv49o.bm @@ -0,0 +1,27 @@ +#define cv49o_width 49 +#define cv49o_height 49 +static char cv49o_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x08, 0x00, 0x00, 0x00, +0x00, 0x00, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x09, 0x00, 0x00, 0x00, 0x00, +0x00, 0xe4, 0x08, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xa7, 0x04, 0x00, 0x00, 0x00, 0x00, 0x18, +0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, +0x10, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x23, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x26, +0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x60, 0x00, 0x01, 0x28, 0x00, +0x00, 0x00, 0x60, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x30, 0x00, 0x01, 0x40, 0x00, 0x00, +0x00, 0x30, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x18, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, +0x18, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x18, 0x00, 0x0e, 0x00, 0x02, 0x00, 0x00, 0x08, +0x00, 0x12, 0x00, 0x02, 0x00, 0x00, 0x0c, 0x00, 0x62, 0x80, 0x05, 0x00, 0x00, 0x0c, 0x00, +0x82, 0x81, 0x05, 0x00, 0x00, 0x0c, 0x00, 0x04, 0x02, 0x05, 0x00, 0x00, 0x0c, 0x00, 0x04, +0x24, 0x04, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x28, 0x02, 0x00, 0x00, 0x04, 0x00, 0x10, 0xd0, +0x01, 0x00, 0x00, 0x06, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x06, 0x00, 0x40, 0x00, 0x00, +0x00, 0x00, 0x06, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x80, 0x00, 0x00, 0x00, +0x00, 0x06, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, +0x04, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x04, +0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfc, 0xff, +0xff, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, +0x04, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x1f, +0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x10, 0x00, +0x00, 0x40, 0xf0, 0x07, 0x7f, 0x10, 0x00, 0x00, 0x40, 0x10, 0x04, 0x41, 0x10, 0x00, 0x00, +0x40, 0x10, 0x04, 0x41, 0x10, 0x00, 0x00, 0x40, 0x10, 0x04, 0x41, 0x10, 0x00, 0x00, 0xc0, +0x1f, 0xfc, 0xc1, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; diff --git a/bitmaps/cv49s.bm b/bitmaps/cv49s.bm new file mode 100644 index 0000000..6aa449d --- /dev/null +++ b/bitmaps/cv49s.bm @@ -0,0 +1,27 @@ +#define cv49s_width 49 +#define cv49s_height 49 +static char cv49s_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x08, 0x00, 0x00, 0x00, +0x00, 0x00, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x0f, 0x00, 0x00, 0x00, 0x00, +0x00, 0xbc, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x38, +0x3e, 0x0e, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xf6, 0xff, +0x1f, 0x00, 0x00, 0x00, 0x00, 0xfb, 0xff, 0x3c, 0x00, 0x00, 0x00, 0x80, 0xfd, 0xff, 0x39, +0x00, 0x00, 0x00, 0x80, 0xfc, 0xff, 0x33, 0x00, 0x00, 0x00, 0x40, 0xfe, 0xff, 0x37, 0x00, +0x00, 0x00, 0x40, 0xfe, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x20, 0xff, 0xff, 0x7f, 0x00, 0x00, +0x00, 0x20, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xb0, 0xff, 0xfd, 0xff, 0x01, 0x00, 0x00, +0x90, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x90, 0xff, 0xfb, 0xff, 0x03, 0x00, 0x00, 0xd0, +0xff, 0xf3, 0xff, 0x03, 0x00, 0x00, 0xc8, 0xff, 0xc3, 0x7f, 0x06, 0x00, 0x00, 0xc8, 0xff, +0x07, 0x7f, 0x06, 0x00, 0x00, 0xc8, 0xff, 0x07, 0xfe, 0x06, 0x00, 0x00, 0xe8, 0xff, 0x0f, +0xdc, 0x07, 0x00, 0x00, 0xe8, 0xff, 0x0f, 0xf8, 0x03, 0x00, 0x00, 0xe0, 0xff, 0x1f, 0xf0, +0x01, 0x00, 0x00, 0xe4, 0xff, 0x3f, 0x20, 0x00, 0x00, 0x00, 0xe4, 0xff, 0x7f, 0x00, 0x00, +0x00, 0x00, 0xe4, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xe4, 0xff, 0xff, 0x00, 0x00, 0x00, +0x00, 0xe4, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xe4, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, +0xc4, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xf8, +0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, +0x00, 0x02, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, +0x0f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x20, +0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x3f, 0x00, +0x00, 0x80, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0xf8, 0x83, 0x3f, 0x00, 0x00, +0x80, 0x3f, 0xf8, 0x83, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0xf8, 0x83, 0x3f, 0x00, 0x00, 0x80, +0x3f, 0xf8, 0x83, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; diff --git a/bitmaps/cv54o.bm b/bitmaps/cv54o.bm new file mode 100644 index 0000000..295536b --- /dev/null +++ b/bitmaps/cv54o.bm @@ -0,0 +1,30 @@ +#define cv54o_width 54 +#define cv54o_height 54 +static char cv54o_bits[] = { +0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x20, 0x00, 0x00, 0x00, 0x00, +0x00, 0x60, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, +0x90, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0x13, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, +0x36, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x60, +0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0xd8, 0x00, +0x00, 0x00, 0x80, 0x07, 0x00, 0xb0, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x04, 0xa0, 0x01, 0x00, +0x00, 0xc0, 0x03, 0x06, 0x80, 0x01, 0x00, 0x00, 0xe0, 0x03, 0x06, 0x00, 0x01, 0x00, 0x00, +0xe0, 0x01, 0x06, 0x00, 0x03, 0x00, 0x00, 0xe0, 0x01, 0x0c, 0x00, 0x06, 0x00, 0x00, 0xf0, +0x00, 0x38, 0x00, 0x04, 0x00, 0x00, 0xf0, 0x00, 0x7c, 0x00, 0x0c, 0x00, 0x00, 0xf0, 0x00, +0xcc, 0x01, 0x08, 0x00, 0x00, 0x70, 0x00, 0x8c, 0x07, 0x1e, 0x00, 0x00, 0x78, 0x00, 0x08, +0x0e, 0x16, 0x00, 0x00, 0x78, 0x00, 0x18, 0x98, 0x14, 0x00, 0x00, 0x78, 0x00, 0x10, 0xb0, +0x19, 0x00, 0x00, 0x78, 0x00, 0x30, 0x60, 0x0f, 0x00, 0x00, 0x78, 0x00, 0x60, 0xc0, 0x07, +0x00, 0x00, 0x3c, 0x00, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x80, 0x01, 0x00, 0x00, +0x00, 0x3c, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, +0x3c, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x3c, +0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3c, 0x00, +0x00, 0x08, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, +0x1f, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x38, 0x40, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x70, +0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x01, +0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, +0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x80, 0xe1, 0x3f, 0xfc, 0x83, 0x01, 0x00, 0x80, +0xe1, 0x3f, 0xfc, 0x83, 0x01, 0x00, 0x80, 0x61, 0x30, 0x0c, 0x83, 0x01, 0x00, 0x80, 0x61, +0x30, 0x0c, 0x83, 0x01, 0x00, 0x80, 0x7f, 0xf0, 0x0f, 0xff, 0x01, 0x00, 0x80, 0x7f, 0xf0, +0x0f, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00 +}; diff --git a/bitmaps/cv54s.bm b/bitmaps/cv54s.bm new file mode 100644 index 0000000..6300bb6 --- /dev/null +++ b/bitmaps/cv54s.bm @@ -0,0 +1,30 @@ +#define cv54s_width 54 +#define cv54s_height 54 +static char cv54s_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x70, 0x00, 0x00, 0x00, 0x00, +0x00, 0xe0, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xf1, 0x71, 0x00, 0x00, 0x00, 0x00, 0x70, 0xf8, +0xff, 0x00, 0x00, 0x00, 0x00, 0x18, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x8c, 0xff, 0xe7, +0x01, 0x00, 0x00, 0x00, 0xc6, 0xff, 0xcf, 0x01, 0x00, 0x00, 0x00, 0xe6, 0xff, 0x9f, 0x01, +0x00, 0x00, 0x00, 0xe3, 0xff, 0xbf, 0x01, 0x00, 0x00, 0x00, 0xf3, 0xff, 0xff, 0x03, 0x00, +0x00, 0x00, 0xf1, 0xff, 0xff, 0x03, 0x00, 0x00, 0x80, 0xf9, 0xe7, 0xff, 0x07, 0x00, 0x00, +0x80, 0xf9, 0xef, 0xff, 0x0f, 0x00, 0x00, 0x80, 0xfc, 0xff, 0xff, 0x0f, 0x00, 0x00, 0xc0, +0xfc, 0xdf, 0xff, 0x1f, 0x00, 0x00, 0xc0, 0xfc, 0x9f, 0xff, 0x1f, 0x00, 0x00, 0x40, 0xfe, +0x1f, 0xfe, 0x33, 0x00, 0x00, 0x60, 0xfe, 0x3f, 0xf8, 0x33, 0x00, 0x00, 0x60, 0xfe, 0x3f, +0xf0, 0x37, 0x00, 0x00, 0x60, 0xfe, 0x7f, 0xe0, 0x3e, 0x00, 0x00, 0x60, 0xfe, 0x7f, 0xc0, +0x1c, 0x00, 0x00, 0x60, 0xff, 0xff, 0x80, 0x0f, 0x00, 0x00, 0x20, 0xff, 0xff, 0x01, 0x01, +0x00, 0x00, 0x30, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x30, 0xff, 0xff, 0x07, 0x00, 0x00, +0x00, 0x30, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x30, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, +0x30, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x30, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x30, +0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0xf0, 0xff, +0xff, 0x1f, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, +0x38, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, +0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x07, 0x00, 0x00, 0x80, 0x03, +0x00, 0x00, 0x07, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, +0x00, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, +0xff, 0xe0, 0x1f, 0xfc, 0x03, 0x00, 0x00, 0xff, 0xe0, 0x1f, 0xfc, 0x03, 0x00, 0x00, 0xff, +0xe0, 0x1f, 0xfc, 0x03, 0x00, 0x00, 0xff, 0xe0, 0x1f, 0xfc, 0x03, 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/cv58o.bm b/bitmaps/cv58o.bm new file mode 100644 index 0000000..51a3c6b --- /dev/null +++ b/bitmaps/cv58o.bm @@ -0,0 +1,35 @@ +#define cv58o_width 58 +#define cv58o_height 58 +static char cv58o_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x03, +0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc2, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x66, +0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x3c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, +0x3c, 0x03, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x23, 0x64, 0x02, 0x00, 0x00, 0x00, 0x00, 0xf0, +0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, +0x1c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x40, 0x18, 0x00, 0x00, 0x00, +0x00, 0x07, 0x00, 0xc0, 0x19, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x80, 0x19, 0x00, 0x00, +0x00, 0x80, 0x03, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x08, 0x00, 0x30, 0x00, +0x00, 0x00, 0xc0, 0x01, 0x18, 0x00, 0x30, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x18, 0x00, 0x20, +0x00, 0x00, 0x00, 0xe0, 0x00, 0x18, 0x00, 0x60, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x30, 0x00, +0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x70, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x70, 0x00, 0xd8, +0x00, 0x80, 0x01, 0x00, 0x00, 0x70, 0x00, 0x98, 0x01, 0x00, 0x01, 0x00, 0x00, 0x78, 0x00, +0x18, 0x07, 0x00, 0x03, 0x00, 0x00, 0x38, 0x00, 0x18, 0x0c, 0x00, 0x02, 0x00, 0x00, 0x38, +0x00, 0x30, 0x38, 0xc0, 0x06, 0x00, 0x00, 0x3c, 0x00, 0x30, 0x60, 0xc0, 0x06, 0x00, 0x00, +0x3c, 0x00, 0x60, 0xc0, 0x00, 0x06, 0x00, 0x00, 0x1c, 0x00, 0xc0, 0x80, 0x19, 0x06, 0x00, +0x00, 0x1c, 0x00, 0x80, 0x01, 0x33, 0x06, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x03, 0x36, 0x03, +0x00, 0x00, 0x1c, 0x00, 0x00, 0x06, 0xfc, 0x01, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x0c, 0x00, +0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x18, +0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, +0x60, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, +0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfc, +0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, +0x07, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, +0xc0, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, +0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x0c, +0x00, 0x00, 0xc0, 0xe0, 0x3f, 0xf0, 0x1f, 0x0c, 0x00, 0x00, 0xc0, 0xe0, 0x3f, 0xf0, 0x1f, +0x0c, 0x00, 0x00, 0xc0, 0x60, 0x30, 0x30, 0x18, 0x0c, 0x00, 0x00, 0xc0, 0x60, 0x30, 0x30, +0x18, 0x0c, 0x00, 0x00, 0xc0, 0x7f, 0xf0, 0x3f, 0xf8, 0x0f, 0x00, 0x00, 0xc0, 0x7f, 0xf0, +0x3f, 0xf8, 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 +}; diff --git a/bitmaps/cv58s.bm b/bitmaps/cv58s.bm new file mode 100644 index 0000000..fbb1c71 --- /dev/null +++ b/bitmaps/cv58s.bm @@ -0,0 +1,35 @@ +#define cv58s_width 58 +#define cv58s_height 58 +static char cv58s_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x87, 0x07, +0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xcf, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, +0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x8f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc1, +0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xf8, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x60, +0xfe, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xb0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, +0xd8, 0xff, 0x7f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xff, 0x7f, 0x3c, 0x00, 0x00, 0x00, +0x00, 0xe4, 0xff, 0xff, 0x3c, 0x00, 0x00, 0x00, 0x00, 0xe2, 0xff, 0xff, 0x39, 0x00, 0x00, +0x00, 0x00, 0xf3, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xf1, 0xff, 0xff, 0x7f, 0x00, +0x00, 0x00, 0x80, 0xf9, 0xef, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x80, 0xf8, 0xcf, 0xff, 0xff, +0x00, 0x00, 0x00, 0x80, 0xfc, 0xdf, 0xff, 0xff, 0x00, 0x00, 0x00, 0xc0, 0xfc, 0xff, 0xff, +0xff, 0x01, 0x00, 0x00, 0x40, 0xfe, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x40, 0xfe, 0xbf, +0xff, 0xff, 0x03, 0x00, 0x00, 0x60, 0xfe, 0x3f, 0xff, 0xff, 0x07, 0x00, 0x00, 0x60, 0xfe, +0x3f, 0xfc, 0xff, 0x07, 0x00, 0x00, 0x20, 0xff, 0x7f, 0xf0, 0x7f, 0x0e, 0x00, 0x00, 0x30, +0xff, 0x7f, 0xc0, 0x7f, 0x0e, 0x00, 0x00, 0x30, 0xff, 0xff, 0x80, 0xff, 0x0f, 0x00, 0x00, +0x30, 0xff, 0xff, 0x01, 0xff, 0x0f, 0x00, 0x00, 0x30, 0xff, 0xff, 0x01, 0x9e, 0x0f, 0x00, +0x00, 0x30, 0xff, 0xff, 0x03, 0x3c, 0x07, 0x00, 0x00, 0x30, 0xff, 0xff, 0x07, 0xf8, 0x03, +0x00, 0x00, 0x18, 0xff, 0xff, 0x0f, 0x18, 0x00, 0x00, 0x00, 0x98, 0xff, 0xff, 0x1f, 0x00, +0x00, 0x00, 0x00, 0x98, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x98, 0xff, 0xff, 0x7f, +0x00, 0x00, 0x00, 0x00, 0x98, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x98, 0xff, 0xff, +0x7f, 0x00, 0x00, 0x00, 0x00, 0x98, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, +0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x78, +0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, +0xf8, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, +0x00, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x1c, 0x00, +0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x1f, +0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, +0x1f, 0x00, 0x00, 0x80, 0x7f, 0xe0, 0x7f, 0xe0, 0x1f, 0x00, 0x00, 0x80, 0x7f, 0xe0, 0x7f, +0xe0, 0x1f, 0x00, 0x00, 0x80, 0x7f, 0xe0, 0x7f, 0xe0, 0x1f, 0x00, 0x00, 0x80, 0x7f, 0xe0, +0x7f, 0xe0, 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 +}; diff --git a/bitmaps/cv64o.bm b/bitmaps/cv64o.bm new file mode 100644 index 0000000..4d92973 --- /dev/null +++ b/bitmaps/cv64o.bm @@ -0,0 +1,39 @@ +#define cv64o_width 64 +#define cv64o_height 64 +static char cv64o_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, 0x10, 0x20, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, +0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, +0xc7, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc7, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, +0x3c, 0x42, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, +0x80, 0x03, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0xc0, 0x00, 0x00, 0x00, +0x00, 0xe0, 0x00, 0x00, 0x84, 0x01, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x9c, 0x01, 0x00, +0x00, 0x00, 0x30, 0x00, 0x00, 0x98, 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x30, 0x01, +0x00, 0x00, 0x00, 0x1c, 0x80, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1c, 0x80, 0x01, 0x00, +0x03, 0x00, 0x00, 0x00, 0x0e, 0x80, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0e, 0x80, 0x01, +0x00, 0x06, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, +0x07, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x07, 0x80, 0x0d, 0x00, 0x18, 0x00, 0x00, 0x00, 0x07, +0x80, 0x19, 0x00, 0x10, 0x00, 0x00, 0x80, 0x07, 0x80, 0x71, 0x00, 0x30, 0x00, 0x00, 0x80, +0x07, 0x80, 0xc1, 0x00, 0x20, 0x00, 0x00, 0x80, 0x03, 0x80, 0x81, 0x03, 0x6c, 0x00, 0x00, +0x80, 0x03, 0x00, 0x03, 0x06, 0x6c, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x03, 0x0c, 0x60, 0x00, +0x00, 0xc0, 0x03, 0x00, 0x06, 0x98, 0x61, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x0c, 0x30, 0x63, +0x00, 0x00, 0xc0, 0x01, 0x00, 0x18, 0x60, 0x33, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x30, 0xc0, +0x1f, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x60, 0xc0, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0xc0, +0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, +0x80, 0x01, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xe0, 0x00, +0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe0, +0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, +0xe0, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, +0x00, 0xe0, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x38, 0x00, +0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0xe0, +0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, +0xff, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, +0x00, 0x80, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x06, 0xff, +0x03, 0xff, 0x83, 0x01, 0x00, 0x00, 0x06, 0xff, 0x03, 0xff, 0x83, 0x01, 0x00, 0x00, 0x06, +0x03, 0x03, 0x03, 0x83, 0x01, 0x00, 0x00, 0x06, 0x03, 0x03, 0x03, 0x83, 0x01, 0x00, 0x00, +0x06, 0x03, 0x03, 0x03, 0x83, 0x01, 0x00, 0x00, 0xfe, 0x03, 0xff, 0x03, 0xff, 0x01, 0x00, +0x00, 0xfe, 0x03, 0xff, 0x03, 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, +0x00, 0x00 +}; diff --git a/bitmaps/cv64s.bm b/bitmaps/cv64s.bm new file mode 100644 index 0000000..2c5ed59 --- /dev/null +++ b/bitmaps/cv64s.bm @@ -0,0 +1,39 @@ +#define cv64s_width 64 +#define cv64s_height 64 +static char cv64s_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, 0x08, 0x10, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, +0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, +0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x3e, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, +0x06, 0x3f, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe3, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, +0x80, 0xf9, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xfe, 0xff, 0x7f, 0x00, 0x00, 0x00, +0x00, 0x60, 0xff, 0xff, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x30, 0xff, 0xff, 0xf1, 0x00, 0x00, +0x00, 0x00, 0x90, 0xff, 0xff, 0xf3, 0x00, 0x00, 0x00, 0x00, 0x88, 0xff, 0xff, 0xe7, 0x00, +0x00, 0x00, 0x00, 0xcc, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xc4, 0xff, 0xff, 0xff, +0x01, 0x00, 0x00, 0x00, 0xe6, 0xbf, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xe2, 0x3f, 0xff, +0xff, 0x03, 0x00, 0x00, 0x00, 0xf2, 0x7f, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0xf3, 0xff, +0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0xf9, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xf9, +0xff, 0xfe, 0xff, 0x0f, 0x00, 0x00, 0x80, 0xf9, 0xff, 0xfc, 0xff, 0x1f, 0x00, 0x00, 0x80, +0xf9, 0xff, 0xf0, 0xff, 0x1f, 0x00, 0x00, 0x80, 0xfd, 0xff, 0xc0, 0xff, 0x39, 0x00, 0x00, +0x80, 0xfc, 0xff, 0x01, 0xff, 0x39, 0x00, 0x00, 0xc0, 0xfc, 0xff, 0x01, 0xfe, 0x3f, 0x00, +0x00, 0xc0, 0xfc, 0xff, 0x03, 0xfc, 0x3f, 0x00, 0x00, 0xc0, 0xfc, 0xff, 0x07, 0x78, 0x3e, +0x00, 0x00, 0xc0, 0xfc, 0xff, 0x07, 0xf0, 0x1c, 0x00, 0x00, 0xc0, 0xfc, 0xff, 0x0f, 0xe0, +0x0f, 0x00, 0x00, 0xc0, 0xfc, 0xff, 0x1f, 0x60, 0x00, 0x00, 0x00, 0x60, 0xfc, 0xff, 0x3f, +0x00, 0x00, 0x00, 0x00, 0x60, 0xfe, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x60, 0xfe, 0xff, +0xff, 0x00, 0x00, 0x00, 0x00, 0x60, 0xfe, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x60, 0xfe, +0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x60, 0xfe, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x60, +0xfe, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, +0xc0, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x80, 0x03, 0x00, 0x00, +0x00, 0xe0, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x0f, 0x00, +0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x7f, +0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, +0xc0, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, +0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, +0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, +0x01, 0xff, 0x80, 0xff, 0x00, 0x00, 0x00, 0xff, 0x01, 0xff, 0x80, 0xff, 0x00, 0x00, 0x00, +0xff, 0x01, 0xff, 0x80, 0xff, 0x00, 0x00, 0x00, 0xff, 0x01, 0xff, 0x80, 0xff, 0x00, 0x00, +0x00, 0xff, 0x01, 0xff, 0x80, 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 +}; diff --git a/bitmaps/cv72o.bm b/bitmaps/cv72o.bm new file mode 100644 index 0000000..ffca5d2 --- /dev/null +++ b/bitmaps/cv72o.bm @@ -0,0 +1,48 @@ +#define cv72o_width 72 +#define cv72o_height 72 +static char cv72o_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, 0x03, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, +0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0xc0, 0x8f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xdc, 0x0d, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xfc, 0xf8, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x78, +0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xc7, 0xf8, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, +0xf8, 0x41, 0xc0, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x39, 0x00, 0x00, +0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, +0x60, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x80, 0xe7, 0x00, 0x00, 0x00, 0x00, 0xc0, +0x03, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0xcf, 0x00, 0x00, +0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x18, 0x00, +0xc8, 0x01, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x18, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x78, +0x00, 0x18, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x78, 0x00, 0x18, 0x00, 0x80, 0x03, 0x00, +0x00, 0x00, 0x3c, 0x00, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x38, 0x00, +0x00, 0x07, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x70, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1e, +0x00, 0x70, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1e, 0x00, 0xf0, 0x00, 0x00, 0x18, 0x00, +0x00, 0x00, 0x1e, 0x00, 0xf0, 0x03, 0x00, 0x38, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x30, 0x0f, +0x00, 0x30, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x30, 0x3c, 0x00, 0x76, 0x00, 0x00, 0x00, 0x0f, +0x00, 0x70, 0xf0, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x60, 0xc0, 0x01, 0x6e, 0x00, +0x00, 0x80, 0x0f, 0x00, 0xe0, 0x80, 0x03, 0x6c, 0x00, 0x00, 0x80, 0x07, 0x00, 0xc0, 0x00, +0x67, 0x60, 0x00, 0x00, 0x80, 0x07, 0x00, 0xc0, 0x01, 0xee, 0x60, 0x00, 0x00, 0x80, 0x07, +0x00, 0x80, 0x03, 0xfc, 0x71, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x07, 0xd8, 0x3f, 0x00, +0x00, 0x80, 0x07, 0x00, 0x00, 0x0e, 0xf8, 0x0f, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x1c, +0x70, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, +0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, +0x00, 0xc0, 0x03, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, +0x01, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0xc0, 0x03, +0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, +0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, +0x03, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0xe0, 0x00, +0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, +0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, +0x7f, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x06, 0x00, +0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, +0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x06, 0xfc, 0x1f, 0xf8, 0x3f, +0x60, 0x00, 0x00, 0x00, 0x06, 0xfc, 0x1f, 0xf8, 0x3f, 0x60, 0x00, 0x00, 0x00, 0x06, 0x0c, +0x18, 0x18, 0x30, 0x60, 0x00, 0x00, 0x00, 0x06, 0x0c, 0x18, 0x18, 0x30, 0x60, 0x00, 0x00, +0x00, 0x06, 0x0c, 0x18, 0x18, 0x30, 0x60, 0x00, 0x00, 0x00, 0xfe, 0x0f, 0xf8, 0x1f, 0xf0, +0x7f, 0x00, 0x00, 0x00, 0xfe, 0x0f, 0xf8, 0x1f, 0xf0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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/cv72s.bm b/bitmaps/cv72s.bm new file mode 100644 index 0000000..0496cf0 --- /dev/null +++ b/bitmaps/cv72s.bm @@ -0,0 +1,48 @@ +#define cv72s_width 72 +#define cv72s_height 72 +static char cv72s_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, 0x03, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x1c, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x8f, +0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xcf, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0xfc, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x0f, 0x00, 0x00, +0x00, 0x00, 0x00, 0xe0, 0x87, 0xcf, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xc1, 0x0f, +0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xf0, 0x3f, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, +0x3e, 0xfc, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0x7f, 0x00, 0x00, +0x00, 0x00, 0x80, 0x87, 0xff, 0x7f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc3, 0xff, 0xff, +0xf0, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe1, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xe0, +0xf1, 0xff, 0xff, 0xf1, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xf0, 0xff, 0xff, 0xf7, 0x01, 0x00, +0x00, 0x00, 0x70, 0xf8, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x70, 0xf8, 0xff, 0xff, +0xff, 0x01, 0x00, 0x00, 0x00, 0x38, 0xfc, 0xef, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x38, +0xfc, 0xef, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x18, 0xfe, 0xcf, 0xff, 0xff, 0x07, 0x00, +0x00, 0x00, 0x1c, 0xfe, 0xdf, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x1c, 0xfe, 0xff, 0xff, +0xff, 0x1f, 0x00, 0x00, 0x00, 0x0c, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x0e, +0xff, 0xbf, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x0e, 0xff, 0x3f, 0xfe, 0xff, 0x3f, 0x00, +0x00, 0x00, 0x86, 0xff, 0x3f, 0xf8, 0xff, 0x79, 0x00, 0x00, 0x00, 0x86, 0xff, 0x7f, 0xf0, +0xff, 0x71, 0x00, 0x00, 0x00, 0x87, 0xff, 0x7f, 0xc0, 0xff, 0x71, 0x00, 0x00, 0x00, 0x87, +0xff, 0xff, 0x80, 0xff, 0x73, 0x00, 0x00, 0x00, 0x83, 0xff, 0xff, 0x00, 0x9f, 0x7f, 0x00, +0x00, 0x00, 0xc3, 0xff, 0xff, 0x01, 0xbe, 0x7f, 0x00, 0x00, 0x00, 0xc3, 0xff, 0xff, 0x03, +0x3c, 0x7f, 0x00, 0x00, 0x00, 0xc3, 0xff, 0xff, 0x07, 0xf8, 0x3f, 0x00, 0x00, 0x00, 0xc3, +0xff, 0xff, 0x0f, 0xf8, 0x0f, 0x00, 0x00, 0x80, 0xc3, 0xff, 0xff, 0x1f, 0x70, 0x00, 0x00, +0x00, 0x80, 0xc3, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc3, 0xff, 0xff, 0x7f, +0x00, 0x00, 0x00, 0x00, 0x80, 0xc3, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc3, +0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc1, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, +0x00, 0x80, 0xc1, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x80, 0xe1, 0xff, 0xff, 0xff, +0x03, 0x00, 0x00, 0x00, 0x80, 0xe1, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x80, 0xff, +0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, +0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x80, +0x03, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0xf8, 0xff, +0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, +0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, +0x70, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xfe, 0xff, +0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, +0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, +0x7f, 0x00, 0x00, 0x00, 0xfe, 0x0f, 0xf8, 0x1f, 0xf0, 0x7f, 0x00, 0x00, 0x00, 0xfe, 0x0f, +0xf8, 0x1f, 0xf0, 0x7f, 0x00, 0x00, 0x00, 0xfe, 0x0f, 0xf8, 0x1f, 0xf0, 0x7f, 0x00, 0x00, +0x00, 0xfe, 0x0f, 0xf8, 0x1f, 0xf0, 0x7f, 0x00, 0x00, 0x00, 0xfe, 0x0f, 0xf8, 0x1f, 0xf0, +0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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/d49o.bm b/bitmaps/d49o.bm new file mode 100644 index 0000000..acba4a6 --- /dev/null +++ b/bitmaps/d49o.bm @@ -0,0 +1,26 @@ +#define d49o_width 49 +#define d49o_height 49 +static char d49o_bits[] = { + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30}; diff --git a/bitmaps/d49s.bm b/bitmaps/d49s.bm new file mode 100644 index 0000000..7778615 --- /dev/null +++ b/bitmaps/d49s.bm @@ -0,0 +1,26 @@ +#define d49s_width 49 +#define d49s_height 49 +static char d49s_bits[] = { + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30}; diff --git a/bitmaps/d72o.bm b/bitmaps/d72o.bm new file mode 100644 index 0000000..dbb9d25 --- /dev/null +++ b/bitmaps/d72o.bm @@ -0,0 +1,47 @@ +#define d72o_width 72 +#define d72o_height 72 +static char d72o_bits[] = { + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30}; diff --git a/bitmaps/d72s.bm b/bitmaps/d72s.bm new file mode 100644 index 0000000..439b156 --- /dev/null +++ b/bitmaps/d72s.bm @@ -0,0 +1,47 @@ +#define d72s_width 72 +#define d72s_height 72 +static char d72s_bits[] = { + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30}; diff --git a/bitmaps/dk33o.bm b/bitmaps/dk33o.bm new file mode 100644 index 0000000..f9f4530 --- /dev/null +++ b/bitmaps/dk33o.bm @@ -0,0 +1,16 @@ +#define dk33o_width 33 +#define dk33o_height 33 +static char dk33o_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, +0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x20, 0x08, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, +0x00, 0x08, 0x20, 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x00, 0xc0, 0xc7, 0xc7, 0x07, 0x00, +0x40, 0x44, 0x44, 0x04, 0x00, 0x40, 0x7c, 0x7c, 0x04, 0x00, 0x40, 0x00, 0x00, 0x04, 0x00, +0xc0, 0xff, 0xff, 0x07, 0x00, 0x80, 0x00, 0x00, 0x02, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, +0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, +0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, +0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x80, 0xff, 0xff, 0x03, 0x00, +0x80, 0x00, 0x00, 0x02, 0x00, 0x80, 0x00, 0x00, 0x02, 0x00, 0xe0, 0xff, 0xff, 0x0f, 0x00, +0x20, 0x00, 0x00, 0x08, 0x00, 0xe0, 0xff, 0xff, 0x0f, 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/dk33s.bm b/bitmaps/dk33s.bm new file mode 100644 index 0000000..5b146b1 --- /dev/null +++ b/bitmaps/dk33s.bm @@ -0,0 +1,16 @@ +#define dk33s_width 33 +#define dk33s_height 33 +static char dk33s_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, +0x00, 0xc0, 0x07, 0x00, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, +0x00, 0xf8, 0x3f, 0x00, 0x00, 0x00, 0x14, 0x50, 0x00, 0x00, 0xc0, 0xd7, 0xd7, 0x07, 0x00, +0xc0, 0xc7, 0xc7, 0x07, 0x00, 0xc0, 0xff, 0xff, 0x07, 0x00, 0xc0, 0xff, 0xff, 0x07, 0x00, +0xc0, 0x00, 0x00, 0x06, 0x00, 0x80, 0xff, 0xff, 0x03, 0x00, 0x00, 0x03, 0x80, 0x01, 0x00, +0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, +0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, +0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x80, 0x00, 0x00, 0x02, 0x00, +0x80, 0xff, 0xff, 0x03, 0x00, 0x80, 0xff, 0xff, 0x03, 0x00, 0xe0, 0x00, 0x00, 0x0e, 0x00, +0xe0, 0xff, 0xff, 0x0f, 0x00, 0xe0, 0xff, 0xff, 0x0f, 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/dk49o.bm b/bitmaps/dk49o.bm new file mode 100644 index 0000000..0fe75ad --- /dev/null +++ b/bitmaps/dk49o.bm @@ -0,0 +1,27 @@ +#define dk49o_width 49 +#define dk49o_height 49 +static char dk49o_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, +0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, +0xc0, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, +0x04, 0x00, 0x00, 0x00, 0xfe, 0xe0, 0x0f, 0xfe, 0x00, 0x00, 0x00, 0x82, 0x20, 0x08, 0x82, +0x00, 0x00, 0x00, 0x82, 0x20, 0x08, 0x82, 0x00, 0x00, 0x00, 0x82, 0x20, 0x08, 0x82, 0x00, +0x00, 0x00, 0x82, 0x3f, 0xf8, 0x83, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, 0x00, +0x00, 0x02, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, +0x04, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x10, +0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x20, 0x00, +0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, +0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x08, +0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x08, 0x00, +0x00, 0x00, 0x20, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x08, 0x00, 0x00, +0x00, 0x20, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, +0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x08, +0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x04, 0x00, +0x00, 0x40, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, +0x40, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, +0x03, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x02, +0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x80, 0xff, 0xff, 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 +}; diff --git a/bitmaps/dk49s.bm b/bitmaps/dk49s.bm new file mode 100644 index 0000000..f905105 --- /dev/null +++ b/bitmaps/dk49s.bm @@ -0,0 +1,27 @@ +#define dk49s_width 49 +#define dk49s_height 49 +static char dk49s_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, +0xf0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, +0xff, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, +0x07, 0x00, 0x00, 0x00, 0x7e, 0x0e, 0xe0, 0xfc, 0x00, 0x00, 0x00, 0xfe, 0xee, 0xef, 0xfe, +0x00, 0x00, 0x00, 0xfe, 0xee, 0xef, 0xfe, 0x00, 0x00, 0x00, 0xfe, 0xee, 0xef, 0xfe, 0x00, +0x00, 0x00, 0xfe, 0xe0, 0x0f, 0xfe, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, +0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, +0xfc, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xf0, +0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xe0, 0xff, +0xff, 0x0f, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, +0x0f, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x0f, +0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x0f, 0x00, +0x00, 0x00, 0xe0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x0f, 0x00, 0x00, +0x00, 0xe0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, +0xf0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xf8, +0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0xfc, 0xff, +0xff, 0x7f, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, +0x7f, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0xc0, +0x03, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x03, +0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x80, 0xff, 0xff, 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 +}; diff --git a/bitmaps/dk72o.bm b/bitmaps/dk72o.bm new file mode 100644 index 0000000..cea7632 --- /dev/null +++ b/bitmaps/dk72o.bm @@ -0,0 +1,48 @@ +#define dk72o_width 72 +#define dk72o_height 72 +static char dk72o_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, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x80, 0xe7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x81, 0x07, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x1c, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0xf0, 0x00, 0x00, 0x00, +0x00, 0x00, 0xc0, 0x03, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, +0x0f, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0xe0, 0xff, +0x80, 0xff, 0x01, 0xff, 0x07, 0x00, 0x00, 0xe0, 0xff, 0x80, 0xff, 0x01, 0xff, 0x07, 0x00, +0x00, 0x60, 0xc0, 0x80, 0x81, 0x01, 0x03, 0x06, 0x00, 0x00, 0x60, 0xc0, 0x80, 0x81, 0x01, +0x03, 0x06, 0x00, 0x00, 0x60, 0xc0, 0x80, 0x81, 0x01, 0x03, 0x06, 0x00, 0x00, 0x60, 0xc0, +0xff, 0x81, 0xff, 0x03, 0x06, 0x00, 0x00, 0x60, 0xc0, 0xff, 0x81, 0xff, 0x03, 0x06, 0x00, +0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, +0x00, 0x06, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0xe0, 0xff, +0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, +0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, +0xe0, 0x01, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0xfc, +0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, +0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, +0x18, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x18, +0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, +0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, +0x18, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x18, +0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, +0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, +0x18, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x18, +0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, +0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, +0x18, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xfc, +0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, +0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, +0xc0, 0x01, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0xc0, 0xff, +0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, +0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, +0x00, 0x03, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0xc0, 0x00, +0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, +0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, +0x00, 0x60, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x06, 0x00, +0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, +0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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/dk72s.bm b/bitmaps/dk72s.bm new file mode 100644 index 0000000..41b4878 --- /dev/null +++ b/bitmaps/dk72s.bm @@ -0,0 +1,48 @@ +#define dk72s_width 72 +#define dk72s_height 72 +static char dk72s_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, 0x3c, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x03, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xfc, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, +0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, +0x0f, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x38, 0x1c, 0x00, 0x00, 0x00, 0xe0, 0x1f, +0x1c, 0x00, 0x38, 0xf8, 0x07, 0x00, 0x00, 0xe0, 0xff, 0x9c, 0xff, 0x39, 0xff, 0x07, 0x00, +0x00, 0xe0, 0xff, 0x9c, 0xff, 0x39, 0xff, 0x07, 0x00, 0x00, 0xe0, 0xff, 0x9c, 0xff, 0x39, +0xff, 0x07, 0x00, 0x00, 0xe0, 0xff, 0x80, 0xff, 0x01, 0xff, 0x07, 0x00, 0x00, 0xe0, 0xff, +0x80, 0xff, 0x01, 0xff, 0x07, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, +0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, +0xff, 0x07, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0xe0, 0x00, +0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, +0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, +0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x1c, +0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, +0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, +0x1f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xf8, +0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, +0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, +0x1f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xf8, +0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, +0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, +0x1f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xf8, +0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, +0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, +0x1f, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x1c, +0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, +0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, +0xff, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0xc0, 0x01, +0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, +0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, +0xff, 0x03, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0xc0, 0xff, +0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, +0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, +0xff, 0x7f, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xfe, 0xff, +0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, +0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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/e33o.bm b/bitmaps/e33o.bm new file mode 100644 index 0000000..375c973 --- /dev/null +++ b/bitmaps/e33o.bm @@ -0,0 +1,16 @@ +#define e33o_width 33 +#define e33o_height 33 +static char e33o_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0xe0, 0xc0, 0x01, 0x00, +0x00, 0x70, 0x00, 0x06, 0x00, 0x00, 0x28, 0x00, 0x08, 0x00, 0x00, 0x14, 0x00, 0x30, 0x00, +0x00, 0x14, 0x00, 0x4e, 0x00, 0x00, 0x14, 0x00, 0x81, 0x00, 0x00, 0x14, 0x00, 0x80, 0x00, +0x00, 0x14, 0x00, 0x80, 0x00, 0x00, 0x14, 0x00, 0x80, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, +0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x82, 0x01, 0x41, 0x00, 0x00, 0x0e, 0x00, 0x41, 0x00, +0x3c, 0x02, 0x00, 0x41, 0x00, 0x24, 0x0e, 0x00, 0x21, 0x00, 0x14, 0x02, 0x80, 0x22, 0x00, +0x0a, 0x2e, 0x70, 0x24, 0x00, 0x0a, 0x26, 0x08, 0x28, 0x00, 0x0a, 0xe5, 0x06, 0x28, 0x00, +0x0a, 0x95, 0x01, 0x28, 0x00, 0x8a, 0x94, 0x00, 0x30, 0x00, 0x6a, 0xce, 0x00, 0x10, 0x00, +0x12, 0xa5, 0x00, 0x00, 0x00, 0xa2, 0x93, 0x00, 0x00, 0x00, 0x77, 0x88, 0x00, 0x00, 0x00, +0x0c, 0x47, 0x00, 0x00, 0x00, 0xfe, 0x44, 0x00, 0x00, 0x00, 0x10, 0x43, 0x00, 0x00, 0x00, +0x20, 0x20, 0x00, 0x00, 0x00, 0xc0, 0x18, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 + +}; diff --git a/bitmaps/e33s.bm b/bitmaps/e33s.bm new file mode 100644 index 0000000..0f346c8 --- /dev/null +++ b/bitmaps/e33s.bm @@ -0,0 +1,16 @@ +#define e33s_width 33 +#define e33s_height 33 +static char e33s_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x01, 0x00, +0x00, 0xd0, 0xff, 0x07, 0x00, 0x00, 0xd8, 0xff, 0x0f, 0x00, 0x00, 0xec, 0xff, 0x3f, 0x00, +0x00, 0xec, 0xff, 0x71, 0x00, 0x00, 0xec, 0xff, 0xfe, 0x00, 0x00, 0xec, 0xff, 0xff, 0x00, +0x00, 0xec, 0xff, 0xff, 0x00, 0x00, 0xec, 0xff, 0xff, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x00, +0x00, 0xfc, 0xff, 0x7f, 0x00, 0x00, 0x7e, 0xfe, 0x7e, 0x00, 0x00, 0xf2, 0xff, 0x7e, 0x00, +0x3c, 0xfe, 0xff, 0x7e, 0x00, 0x3c, 0xf2, 0xff, 0x3f, 0x00, 0x1c, 0xfe, 0xff, 0x3e, 0x00, +0x0e, 0xd2, 0x7f, 0x3c, 0x00, 0x0e, 0xde, 0x0e, 0x38, 0x00, 0x0e, 0x7d, 0x07, 0x38, 0x00, +0x0e, 0x9d, 0x01, 0x38, 0x00, 0x8e, 0x9c, 0x00, 0x30, 0x00, 0x6e, 0xce, 0x00, 0x10, 0x00, +0x1e, 0xe5, 0x00, 0x00, 0x00, 0xbe, 0xf3, 0x00, 0x00, 0x00, 0x7f, 0xf8, 0x00, 0x00, 0x00, +0x0c, 0x7f, 0x00, 0x00, 0x00, 0xfe, 0x7c, 0x00, 0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0x00, +0xe0, 0x3f, 0x00, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 + +}; diff --git a/bitmaps/e49o.bm b/bitmaps/e49o.bm new file mode 100644 index 0000000..1fae013 --- /dev/null +++ b/bitmaps/e49o.bm @@ -0,0 +1,26 @@ +#define e49o_width 49 +#define e49o_height 49 +static char e49o_bits[] = { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0xfc,0x03,0x00,0x00,0x00,0x00,0xf0,0x03,0x3c,0x00,0x00,0x00,0x00, + 0x6c,0x00,0xc0,0x01,0x00,0x00,0x00,0x12,0x00,0x00,0x02,0x00,0x00,0x00,0x09, + 0x00,0x00,0x02,0x00,0x00,0x00,0x05,0x00,0x00,0x3e,0x00,0x00,0x00,0x05,0x00, + 0xc0,0x21,0x00,0x00,0x00,0x05,0x00,0x30,0x20,0x00,0x00,0x00,0x05,0x00,0x10, + 0x40,0x00,0x00,0x00,0x05,0x00,0x00,0x40,0x00,0x00,0x00,0x05,0x00,0x00,0x40, + 0x00,0x00,0x00,0x05,0x00,0x00,0x40,0x00,0x00,0x00,0x05,0x00,0x00,0x40,0x00, + 0x00,0x00,0x01,0x00,0x00,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x40,0x00,0x00, + 0x00,0x01,0x00,0x00,0x40,0x00,0x00,0x80,0x00,0x00,0x00,0x20,0x00,0x00,0x80, + 0x80,0x01,0x00,0x20,0x00,0x00,0x40,0x80,0x01,0x20,0x20,0x00,0x00,0xc0,0x03, + 0x00,0x20,0x20,0x00,0xe0,0x40,0x00,0x00,0x20,0x20,0x00,0x30,0x41,0x00,0x00, + 0x50,0x10,0x00,0x10,0xc1,0x03,0x00,0x90,0x10,0x00,0x90,0x40,0x00,0x00,0x8c, + 0x10,0x00,0xd0,0xc0,0x00,0x00,0x82,0x10,0x00,0x48,0x80,0x13,0x80,0x01,0x11, + 0x00,0x48,0xc0,0x08,0x60,0x00,0x11,0x00,0x48,0xa0,0x48,0x1c,0x00,0x11,0x00, + 0x48,0xa0,0x78,0x02,0x00,0x12,0x00,0x48,0x90,0x64,0x01,0x00,0x12,0x00,0x48, + 0x90,0xa5,0x00,0x00,0x14,0x00,0x48,0x48,0x53,0x00,0x00,0x1c,0x00,0x48,0x24, + 0x51,0x00,0x00,0x18,0x00,0x88,0x12,0x49,0x00,0x00,0x00,0x00,0x90,0x89,0x44, + 0x00,0x00,0x00,0x00,0x10,0x45,0x42,0x00,0x00,0x00,0x00,0x18,0x33,0x43,0x00, + 0x00,0x00,0x00,0x3e,0x8a,0x42,0x00,0x00,0x00,0x00,0x40,0x67,0x42,0x00,0x00, + 0x00,0x00,0xc0,0x1f,0x41,0x00,0x00,0x00,0x00,0x80,0xe0,0x20,0x00,0x00,0x00, + 0x00,0x00,0x01,0x10,0x00,0x00,0x00,0x00,0x00,0x06,0x08,0x00,0x00,0x00,0x00, + 0x00,0x18,0x06,0x00,0x00,0x00,0x00,0x00,0xe0,0x01,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; diff --git a/bitmaps/e49s.bm b/bitmaps/e49s.bm new file mode 100644 index 0000000..39bc01c --- /dev/null +++ b/bitmaps/e49s.bm @@ -0,0 +1,26 @@ +#define e49s_width 49 +#define e49s_height 49 +static char e49s_bits[] = { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0xfc,0x03,0x00,0x00,0x00,0x00,0xf0,0xff,0x3f,0x00,0x00,0x00,0x00, + 0x9c,0xff,0xff,0x01,0x00,0x00,0x00,0xee,0xff,0xff,0x03,0x00,0x00,0x00,0xf7, + 0xff,0xff,0x03,0x00,0x00,0x00,0xfb,0xff,0xff,0x3d,0x00,0x00,0x00,0xfb,0xff, + 0x3f,0x3e,0x00,0x00,0x00,0xfb,0xff,0xcf,0x3f,0x00,0x00,0x00,0xfb,0xff,0xef, + 0x7f,0x00,0x00,0x00,0xfb,0xff,0xff,0x7f,0x00,0x00,0x00,0xfb,0xff,0xff,0x7f, + 0x00,0x00,0x00,0xfb,0xff,0xff,0x7f,0x00,0x00,0x00,0xfb,0xff,0xff,0x7f,0x00, + 0x00,0x00,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0xff,0xff,0xff,0x7f,0x00,0x00, + 0x00,0xff,0xff,0xff,0x7f,0x00,0x00,0x80,0xff,0xff,0xff,0x3f,0x00,0x00,0x80, + 0x7f,0xfe,0xff,0x3f,0x00,0x00,0xc0,0x7f,0xfe,0xff,0x3f,0x00,0x00,0x40,0xfc, + 0xff,0xff,0x3f,0x00,0xe0,0xc0,0xff,0xff,0xff,0x3f,0x00,0xf0,0xc1,0xff,0xff, + 0xdf,0x1f,0x00,0xf0,0x41,0xfc,0xff,0x9f,0x1f,0x00,0xf0,0xc0,0xff,0xff,0x8f, + 0x1f,0x00,0xf0,0xc0,0xff,0xff,0x83,0x1f,0x00,0x78,0x80,0xec,0xff,0x01,0x1f, + 0x00,0x78,0xc0,0xf7,0x7f,0x00,0x1f,0x00,0x78,0xa0,0xb7,0x1f,0x00,0x1f,0x00, + 0x78,0xa0,0xcf,0x03,0x00,0x1e,0x00,0x78,0x90,0xf7,0x01,0x00,0x1e,0x00,0x78, + 0x90,0xe7,0x00,0x00,0x1c,0x00,0x78,0x48,0x73,0x00,0x00,0x1c,0x00,0x78,0x24, + 0x71,0x00,0x00,0x18,0x00,0xf8,0x12,0x79,0x00,0x00,0x00,0x00,0xf0,0x89,0x7c, + 0x00,0x00,0x00,0x00,0xf0,0x45,0x7e,0x00,0x00,0x00,0x00,0xe8,0x33,0x7f,0x00, + 0x00,0x00,0x00,0xfe,0x8b,0x7e,0x00,0x00,0x00,0x00,0xc0,0x65,0x7e,0x00,0x00, + 0x00,0x00,0x40,0x10,0x7f,0x00,0x00,0x00,0x00,0x80,0xff,0x3f,0x00,0x00,0x00, + 0x00,0x00,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0xfe,0x0f,0x00,0x00,0x00,0x00, + 0x00,0xf8,0x07,0x00,0x00,0x00,0x00,0x00,0xe0,0x01,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; diff --git a/bitmaps/e72o.bm b/bitmaps/e72o.bm new file mode 100644 index 0000000..ec91f63 --- /dev/null +++ b/bitmaps/e72o.bm @@ -0,0 +1,47 @@ +#define e72o_width 72 +#define e72o_height 72 +static char e72o_bits[] = { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0x03,0x00,0x00,0x00,0x00,0x00, + 0xc0,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0x00,0xff,0x00,0x00, + 0x00,0x00,0x00,0xfc,0x00,0x00,0xf0,0x03,0x00,0x00,0x00,0x00,0x6e,0x00,0x00, + 0x80,0x1f,0x00,0x00,0x00,0x00,0x77,0x00,0x00,0x00,0x3e,0x00,0x00,0x00,0x80, + 0x3b,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0xc0,0x19,0x00,0x00,0x00,0xe0,0x07, + 0x00,0x00,0xc0,0x1c,0x00,0x00,0x00,0xf8,0x0f,0x00,0x00,0xc0,0x0c,0x00,0x00, + 0x00,0xfc,0x1c,0x00,0x00,0xc0,0x0c,0x00,0x00,0x80,0x0f,0x18,0x00,0x00,0xc0, + 0x0c,0x00,0x00,0xe0,0x03,0x18,0x00,0x00,0xc0,0x0c,0x00,0x00,0xe0,0x00,0x18, + 0x00,0x00,0xc0,0x0c,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0xc0,0x0c,0x00,0x00, + 0x00,0x00,0x38,0x00,0x00,0xc0,0x0c,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0xc0, + 0x0c,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0xc0,0x0c,0x00,0x00,0x00,0x00,0x30, + 0x00,0x00,0xc0,0x0c,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0xc0,0x0c,0x00,0x00, + 0x00,0x00,0x30,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0xc0, + 0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x30, + 0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0xe0,0x00,0x00,0x00, + 0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x0e,0x00,0x00,0x00,0x18,0x00,0x00,0x30, + 0x00,0x0e,0x00,0x00,0x00,0x18,0x00,0x00,0x30,0x00,0x0e,0x00,0x80,0x01,0x1c, + 0x00,0x00,0x30,0x00,0x00,0x00,0x80,0x03,0x1c,0x00,0x00,0xf0,0x03,0x00,0x00, + 0x00,0x03,0x1c,0x00,0x00,0xf0,0x03,0x00,0x00,0x00,0x03,0x0c,0xe0,0x00,0x30, + 0x00,0x00,0x00,0x00,0x03,0x0c,0xe0,0x03,0x30,0x00,0x00,0x00,0x80,0x07,0x0c, + 0x30,0x07,0xf0,0x03,0x00,0x00,0xe0,0x06,0x0c,0x30,0x0e,0xf0,0x03,0x00,0x00, + 0x70,0x06,0x0c,0x30,0x07,0x30,0x00,0x00,0x00,0x3c,0x06,0x0c,0x38,0x03,0x30, + 0x00,0x00,0x00,0x1f,0x0c,0x0e,0x98,0x01,0xf0,0x01,0x00,0x80,0x07,0x0c,0x06, + 0x98,0x01,0xf0,0x01,0x00,0xe0,0x01,0x0c,0x06,0x98,0x01,0x60,0x10,0x00,0xfc, + 0x00,0x18,0x06,0x98,0x01,0x70,0x18,0x00,0x3f,0x00,0x18,0x06,0x9c,0x01,0x78, + 0x18,0x80,0x07,0x00,0x18,0x06,0x8c,0x01,0x6c,0x0c,0xe3,0x01,0x00,0x30,0x06, + 0x8c,0x01,0xe4,0xbc,0xf9,0x00,0x00,0x30,0x06,0x8c,0x01,0xe6,0xfc,0x3d,0x00, + 0x00,0x70,0x06,0x8c,0x01,0xc2,0xe4,0x0c,0x00,0x00,0xe0,0x06,0x8c,0x01,0xe3, + 0x46,0x06,0x00,0x00,0xc0,0x07,0x8c,0x81,0xb1,0x63,0x07,0x00,0x00,0x80,0x07, + 0x8c,0xc1,0x98,0x23,0x03,0x00,0x00,0x00,0x07,0x8c,0x61,0x8c,0x31,0x03,0x00, + 0x00,0x00,0x02,0x8c,0x33,0xc6,0x18,0x03,0x00,0x00,0x00,0x00,0x1c,0x1b,0x63, + 0x8c,0x01,0x00,0x00,0x00,0x00,0x18,0x8f,0x31,0x86,0x01,0x00,0x00,0x00,0x00, + 0x18,0xc7,0x18,0x83,0x01,0x00,0x00,0x00,0x00,0x18,0x66,0x8c,0x83,0x01,0x00, + 0x00,0x00,0x00,0x38,0x3c,0xc6,0x83,0x01,0x00,0x00,0x00,0x00,0x30,0x38,0xe3, + 0x81,0x01,0x00,0x00,0x00,0x00,0x78,0xf0,0xb1,0x81,0x01,0x00,0x00,0x00,0x00, + 0xfe,0x7c,0x9c,0x81,0x01,0x00,0x00,0x00,0x00,0xc0,0x07,0xc7,0xc1,0x01,0x00, + 0x00,0x00,0x00,0x80,0xf1,0xff,0xc0,0x00,0x00,0x00,0x00,0x00,0xe0,0x1f,0x7e, + 0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x60,0x00,0x00,0x00,0x00,0x00, + 0x00,0x1c,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00, + 0x00,0x00,0x00,0x00,0xf0,0x01,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff, + 0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x80,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}; diff --git a/bitmaps/e72s.bm b/bitmaps/e72s.bm new file mode 100644 index 0000000..391b696 --- /dev/null +++ b/bitmaps/e72s.bm @@ -0,0 +1,47 @@ +#define e72s_width 72 +#define e72s_height 72 +static char e72s_bits[] = { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0x03,0x00,0x00,0x00,0x00,0x00, + 0xc0,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0x00,0x00, + 0x00,0x00,0x00,0x3c,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x9e,0xff,0xff, + 0xff,0x1f,0x00,0x00,0x00,0x00,0x8f,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x80, + 0xc7,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0xc0,0xe7,0xff,0xff,0xff,0xff,0x07, + 0x00,0x00,0xc0,0xe3,0xff,0xff,0xff,0x07,0x0f,0x00,0x00,0xc0,0xf3,0xff,0xff, + 0xff,0x03,0x1f,0x00,0x00,0xc0,0xf3,0xff,0xff,0x7f,0xf0,0x1f,0x00,0x00,0xc0, + 0xf3,0xff,0xff,0x1f,0xfc,0x1f,0x00,0x00,0xc0,0xf3,0xff,0xff,0x1f,0xff,0x1f, + 0x00,0x00,0xc0,0xf3,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0xc0,0xf3,0xff,0xff, + 0xff,0xff,0x3f,0x00,0x00,0xc0,0xf3,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0xc0, + 0xf3,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0xc0,0xf3,0xff,0xff,0xff,0xff,0x3f, + 0x00,0x00,0xc0,0xf3,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0xc0,0xf3,0xff,0xff, + 0xff,0xff,0x3f,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0xc0, + 0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0x3f, + 0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0xe0,0xff,0xff,0xff, + 0xff,0xff,0x3f,0x00,0x00,0xf0,0xff,0xf1,0xff,0xff,0xff,0x1f,0x00,0x00,0xf0, + 0xff,0xf1,0xff,0xff,0xff,0x1f,0x00,0x00,0xf0,0xff,0xf1,0xff,0x7f,0xfe,0x1f, + 0x00,0x00,0xf0,0xff,0xff,0xff,0x7f,0xfc,0x1f,0x00,0x00,0x30,0xfc,0xff,0xff, + 0xff,0xfc,0x1f,0x00,0x00,0x30,0xfc,0xff,0xff,0xff,0xfc,0x0f,0xe0,0x00,0xf0, + 0xff,0xff,0xff,0xff,0xfe,0x0f,0xe0,0x03,0xf0,0xff,0xff,0xff,0xff,0xff,0x0f, + 0xf0,0x07,0x30,0xfc,0xff,0xff,0xff,0xfe,0x0f,0xf0,0x0f,0x30,0xfc,0xff,0xff, + 0x7f,0xfe,0x0f,0xf0,0x07,0xf0,0xff,0xff,0xff,0x3f,0xfe,0x0f,0xf8,0x03,0xf0, + 0xff,0xff,0xff,0x1f,0xfc,0x0f,0xf8,0x01,0x30,0xfe,0xff,0xff,0x07,0xfc,0x07, + 0xf8,0x01,0x30,0xfe,0xff,0xff,0x01,0xfc,0x07,0xf8,0x01,0xe0,0xff,0xff,0xff, + 0x00,0xf8,0x07,0xf8,0x01,0xf0,0xcf,0xff,0x3f,0x00,0xf8,0x07,0xfc,0x01,0xf8, + 0xe7,0xff,0x07,0x00,0xf8,0x07,0xfc,0x01,0xec,0xf3,0xff,0x01,0x00,0xf0,0x07, + 0xfc,0x01,0xe4,0xc7,0xf9,0x00,0x00,0xf0,0x07,0xfc,0x01,0xe6,0x9f,0x3c,0x00, + 0x00,0xf0,0x07,0xfc,0x01,0xc2,0x37,0x0e,0x00,0x00,0xe0,0x07,0xfc,0x01,0xe3, + 0x67,0x07,0x00,0x00,0xc0,0x07,0xfc,0x81,0xb1,0xc3,0x07,0x00,0x00,0x80,0x07, + 0xfc,0xc1,0x98,0xe3,0x03,0x00,0x00,0x00,0x07,0xfc,0x61,0x8c,0xf1,0x03,0x00, + 0x00,0x00,0x02,0xfc,0x33,0xc6,0xf8,0x03,0x00,0x00,0x00,0x00,0xfc,0x1b,0x63, + 0xfc,0x01,0x00,0x00,0x00,0x00,0xf8,0x8f,0x31,0xfe,0x01,0x00,0x00,0x00,0x00, + 0xf8,0xc7,0x18,0xff,0x01,0x00,0x00,0x00,0x00,0xf8,0x67,0x8c,0xff,0x01,0x00, + 0x00,0x00,0x00,0xf8,0x3f,0xc6,0xff,0x01,0x00,0x00,0x00,0x00,0xf0,0x3f,0xe3, + 0xff,0x01,0x00,0x00,0x00,0x00,0xf8,0xff,0xb1,0xff,0x01,0x00,0x00,0x00,0x00, + 0xfe,0x7f,0x9c,0xff,0x01,0x00,0x00,0x00,0x00,0xc0,0x07,0xc7,0xff,0x01,0x00, + 0x00,0x00,0x00,0x80,0xf1,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff, + 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0x7f,0x00,0x00,0x00,0x00,0x00, + 0x00,0xfc,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0x3f,0x00,0x00, + 0x00,0x00,0x00,0x00,0xf0,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff, + 0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x80,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}; diff --git a/bitmaps/f33o.bm b/bitmaps/f33o.bm new file mode 100644 index 0000000..f0eb6e8 --- /dev/null +++ b/bitmaps/f33o.bm @@ -0,0 +1,16 @@ +#define f33o_width 33 +#define f33o_height 33 +static char f33o_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, +0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x20, 0x08, 0x00, 0x00, 0x00, 0x20, 0x08, 0x00, 0x00, +0x00, 0x20, 0x08, 0x00, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, +0x00, 0xa0, 0x08, 0x00, 0x00, 0x00, 0x90, 0x10, 0x00, 0x00, 0x00, 0x48, 0x20, 0x00, 0x00, +0x00, 0x44, 0x40, 0x00, 0x00, 0x00, 0x23, 0x80, 0x01, 0x00, 0xc0, 0xfc, 0x7f, 0x06, 0x00, +0xf0, 0x03, 0x80, 0x1f, 0x00, 0x38, 0x00, 0x00, 0x38, 0x00, 0x08, 0xf8, 0x1f, 0x20, 0x00, +0x86, 0x03, 0xc0, 0x41, 0x00, 0x24, 0x00, 0x00, 0x24, 0x00, 0x04, 0x00, 0x00, 0x10, 0x00, +0x08, 0xfc, 0x7f, 0x10, 0x00, 0xc8, 0x03, 0x80, 0x27, 0x00, 0x34, 0x00, 0x00, 0x38, 0x00, +0x0c, 0x00, 0x00, 0x60, 0x00, 0x04, 0x00, 0x00, 0x40, 0x00, 0x04, 0x00, 0x00, 0x40, 0x00, +0x08, 0x00, 0x00, 0x20, 0x00, 0x30, 0x00, 0x00, 0x18, 0x00, 0xc0, 0x03, 0x80, 0x07, 0x00, +0x00, 0xfc, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + +}; diff --git a/bitmaps/f33s.bm b/bitmaps/f33s.bm new file mode 100644 index 0000000..113b0ab --- /dev/null +++ b/bitmaps/f33s.bm @@ -0,0 +1,16 @@ +#define f33s_width 33 +#define f33s_height 33 +static char f33s_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, +0x00, 0xc0, 0x07, 0x00, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, +0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, +0x00, 0x60, 0x0f, 0x00, 0x00, 0x00, 0x70, 0x1f, 0x00, 0x00, 0x00, 0xb8, 0x3f, 0x00, 0x00, +0x00, 0xbc, 0x7f, 0x00, 0x00, 0x00, 0xdf, 0xff, 0x01, 0x00, 0xc0, 0x03, 0x80, 0x07, 0x00, +0x30, 0xfc, 0x7f, 0x18, 0x00, 0xc8, 0xff, 0xff, 0x27, 0x00, 0xf4, 0x07, 0xe0, 0x5f, 0x00, +0x7e, 0xfc, 0x3f, 0x7e, 0x00, 0xdc, 0xff, 0xff, 0x3b, 0x00, 0xfc, 0xff, 0xff, 0x1f, 0x00, +0xf8, 0x03, 0x80, 0x1f, 0x00, 0x38, 0xfc, 0x7f, 0x38, 0x00, 0xcc, 0xff, 0xff, 0x23, 0x00, +0xf4, 0xff, 0xff, 0x5f, 0x00, 0xfc, 0xff, 0xff, 0x7f, 0x00, 0xfc, 0xff, 0xff, 0x7f, 0x00, +0xf8, 0xff, 0xff, 0x3f, 0x00, 0xf0, 0xff, 0xff, 0x1f, 0x00, 0xc0, 0xff, 0xff, 0x07, 0x00, +0x00, 0xfc, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + +}; diff --git a/bitmaps/f49o.bm b/bitmaps/f49o.bm new file mode 100644 index 0000000..05ce7e7 --- /dev/null +++ b/bitmaps/f49o.bm @@ -0,0 +1,26 @@ +#define f49o_width 49 +#define f49o_height 49 +static char f49o_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,0x03,0x00,0x00,0x00,0x00,0x00,0xc0,0x0c, + 0x00,0x00,0x00,0x00,0x00,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x20,0x10,0x00, + 0x00,0x00,0x00,0x00,0x10,0x20,0x00,0x00,0x00,0x00,0x00,0x10,0x20,0x00,0x00, + 0x00,0x00,0x00,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x20,0x10,0x00,0x00,0x00, + 0x00,0x00,0xc0,0x0f,0x00,0x00,0x00,0x00,0x00,0x40,0x09,0x00,0x00,0x00,0x00, + 0x00,0xa0,0x10,0x00,0x00,0x00,0x00,0x00,0x90,0x20,0x00,0x00,0x00,0x00,0x00, + 0x48,0x40,0x00,0x00,0x00,0x00,0x00,0x46,0x80,0x00,0x00,0x00,0x00,0x00,0x21, + 0x00,0x01,0x00,0x00,0x00,0xc0,0x10,0x00,0x06,0x00,0x00,0x00,0x20,0x08,0x00, + 0x08,0x00,0x00,0x00,0x18,0x04,0x00,0x30,0x00,0x00,0x00,0x04,0xff,0xff,0x41, + 0x00,0x00,0x00,0xff,0x00,0x00,0xfe,0x01,0x00,0x80,0x03,0x00,0x00,0x80,0x03, + 0x00,0x40,0x00,0x00,0x00,0x00,0x04,0x00,0x20,0x00,0x00,0x00,0x00,0x08,0x00, + 0x20,0x00,0x00,0x00,0x00,0x08,0x00,0x40,0x00,0xfc,0x7f,0x00,0x04,0x00,0x40, + 0xe0,0x01,0x00,0x07,0x04,0x00,0x80,0x0c,0x00,0x00,0x30,0x02,0x00,0x80,0x00, + 0x00,0x00,0x00,0x02,0x00,0x80,0x00,0x00,0x00,0x00,0x02,0x00,0x40,0x00,0xff, + 0xff,0x01,0x04,0x00,0x40,0xfc,0x00,0x00,0x7e,0x04,0x00,0xc0,0x03,0x00,0x00, + 0x80,0x07,0x00,0x60,0x00,0x00,0x00,0x00,0x0c,0x00,0x20,0x00,0x00,0x00,0x00, + 0x08,0x00,0x40,0x00,0x00,0x00,0x00,0x04,0x00,0x80,0x03,0x00,0x00,0x80,0x03, + 0x00,0x00,0xfc,0x00,0x00,0x7e,0x00,0x00,0x00,0x00,0xff,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; diff --git a/bitmaps/f49s.bm b/bitmaps/f49s.bm new file mode 100644 index 0000000..8b4cc1c --- /dev/null +++ b/bitmaps/f49s.bm @@ -0,0 +1,26 @@ +#define f49s_width 49 +#define f49s_height 49 +static char f49s_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,0x03,0x00,0x00,0x00,0x00,0x00,0xc0,0x0f, + 0x00,0x00,0x00,0x00,0x00,0xe0,0x1f,0x00,0x00,0x00,0x00,0x00,0xe0,0x1f,0x00, + 0x00,0x00,0x00,0x00,0xf0,0x3f,0x00,0x00,0x00,0x00,0x00,0xf0,0x3f,0x00,0x00, + 0x00,0x00,0x00,0xe0,0x1f,0x00,0x00,0x00,0x00,0x00,0xe0,0x1f,0x00,0x00,0x00, + 0x00,0x00,0x40,0x08,0x00,0x00,0x00,0x00,0x00,0xc0,0x0e,0x00,0x00,0x00,0x00, + 0x00,0x60,0x1f,0x00,0x00,0x00,0x00,0x00,0x70,0x3f,0x00,0x00,0x00,0x00,0x00, + 0xb8,0x7f,0x00,0x00,0x00,0x00,0x00,0xbe,0xff,0x00,0x00,0x00,0x00,0x00,0xdf, + 0xff,0x01,0x00,0x00,0x00,0xc0,0xef,0xff,0x07,0x00,0x00,0x00,0xe0,0xf7,0xff, + 0x0f,0x00,0x00,0x00,0xf8,0xfb,0xff,0x3f,0x00,0x00,0x00,0xfc,0x00,0x00,0x7e, + 0x00,0x00,0x00,0x03,0xff,0xff,0x81,0x01,0x00,0x80,0xfd,0xff,0xff,0x7f,0x03, + 0x00,0xc0,0xff,0xff,0xff,0xff,0x07,0x00,0xe0,0xff,0xff,0xff,0xff,0x0f,0x00, + 0xe0,0xff,0xff,0xff,0xff,0x0f,0x00,0xc0,0xff,0x03,0x80,0xff,0x07,0x00,0xc0, + 0x1f,0xfe,0xff,0xf8,0x07,0x00,0x80,0xf3,0xff,0xff,0xcf,0x03,0x00,0x80,0xff, + 0xff,0xff,0xff,0x03,0x00,0x80,0xff,0xff,0xff,0xff,0x03,0x00,0xc0,0xff,0x00, + 0x00,0xfe,0x07,0x00,0xc0,0x03,0xff,0xff,0x81,0x07,0x00,0x40,0xfc,0xff,0xff, + 0x7f,0x04,0x00,0xa0,0xff,0xff,0xff,0xff,0x0b,0x00,0xe0,0xff,0xff,0xff,0xff, + 0x0f,0x00,0xc0,0xff,0xff,0xff,0xff,0x07,0x00,0x80,0xff,0xff,0xff,0xff,0x03, + 0x00,0x00,0xfc,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0xff,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; diff --git a/bitmaps/f72o.bm b/bitmaps/f72o.bm new file mode 100644 index 0000000..939a953 --- /dev/null +++ b/bitmaps/f72o.bm @@ -0,0 +1,47 @@ +#define f72o_width 72 +#define f72o_height 72 +static char f72o_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,0x7c,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc3,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x80,0x81,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x03, + 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00, + 0xc0,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x06,0x00,0x00,0x00, + 0x00,0x00,0x00,0x80,0x01,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x81,0x03, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc3,0x01,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7e,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xe7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xc3,0x01, + 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xc3,0x03,0x00,0x00,0x00,0x00,0x00,0x00, + 0xe0,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x1e,0x00,0x00,0x00, + 0x00,0x00,0x00,0x3c,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0x00,0xf0, + 0x00,0x00,0x00,0x00,0x00,0x80,0x07,0x00,0xc0,0x03,0x00,0x00,0x00,0x00,0xe0, + 0x01,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x1e,0x00,0x00, + 0x00,0x00,0x3c,0xfc,0xff,0x3f,0x38,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff, + 0xff,0x00,0x00,0x00,0xc0,0xff,0x03,0x00,0xc0,0xff,0x03,0x00,0x00,0xe0,0x0f, + 0x00,0x00,0x00,0xf0,0x0f,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x1f,0x00, + 0x00,0x1c,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x0e,0x00,0x00,0x00,0x00, + 0x00,0x60,0x00,0x00,0x06,0x00,0xf0,0xff,0x1f,0x00,0x70,0x00,0x00,0x0e,0x00, + 0xfe,0xff,0xff,0x07,0x30,0x00,0x00,0x0c,0xf8,0x0f,0x00,0xe0,0x7f,0x38,0x00, + 0x00,0x9c,0xff,0x01,0x00,0x00,0xf8,0x19,0x00,0x00,0x98,0x0f,0x00,0x00,0x00, + 0xc0,0x1d,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x00,0x30,0x00, + 0x00,0x00,0x00,0x00,0x0c,0x00,0x00,0x18,0x00,0xfc,0xff,0x3f,0x00,0x1c,0x00, + 0x00,0x18,0xf0,0xff,0xff,0xff,0x0f,0x18,0x00,0x00,0x0c,0xff,0x03,0x00,0xc0, + 0xff,0x38,0x00,0x00,0xec,0x3f,0x00,0x00,0x00,0xf8,0x37,0x00,0x00,0xfe,0x01, + 0x00,0x00,0x00,0x80,0x7f,0x00,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0x7c,0x00, + 0x00,0x0e,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x0e,0x00,0x00,0x00,0x00, + 0x00,0x70,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x00,0xf8,0x01, + 0x00,0x00,0x00,0xc0,0x1f,0x00,0x00,0xe0,0x07,0x00,0x00,0x00,0xf0,0x07,0x00, + 0x00,0x00,0xff,0x03,0x00,0xc0,0xff,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff, + 0x0f,0x00,0x00,0x00,0x00,0x00,0xfc,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}; diff --git a/bitmaps/f72s.bm b/bitmaps/f72s.bm new file mode 100644 index 0000000..47ed468 --- /dev/null +++ b/bitmaps/f72s.bm @@ -0,0 +1,47 @@ +#define f72s_width 72 +#define f72s_height 72 +static char f72s_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,0x7c,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x80,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0x03, + 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00, + 0xc0,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0x07,0x00,0x00,0x00, + 0x00,0x00,0x00,0x80,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0x03, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xc2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0x01, + 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00, + 0xe0,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0x1f,0x00,0x00,0x00, + 0x00,0x00,0x00,0xfc,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff, + 0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0xe0, + 0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0x1f,0x00,0x00, + 0x00,0x00,0xfc,0x03,0x00,0xc0,0x3f,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00, + 0xf0,0x00,0x00,0x00,0xc0,0x03,0xfc,0xff,0x3f,0xc0,0x03,0x00,0x00,0xe0,0xf1, + 0xff,0xff,0xff,0x8f,0x0f,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0x1f,0x00, + 0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0xfe,0xff,0xff,0xff,0xff, + 0xff,0x7f,0x00,0x00,0xfe,0xff,0x0f,0x00,0xe0,0xff,0x7f,0x00,0x00,0xfe,0xff, + 0x01,0x00,0x00,0xf8,0x3f,0x00,0x00,0xfc,0x07,0xf0,0xff,0x1f,0x80,0x3f,0x00, + 0x00,0x7c,0x00,0xfe,0xff,0xff,0x07,0x1e,0x00,0x00,0x78,0xf0,0xff,0xff,0xff, + 0x3f,0x1e,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0xf0,0xff, + 0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0xf8,0xff,0x03,0x00,0xc0,0xff,0x1f,0x00, + 0x00,0xf8,0x0f,0x00,0x00,0x00,0xf0,0x1f,0x00,0x00,0xfc,0x00,0xfc,0xff,0x3f, + 0x00,0x3f,0x00,0x00,0x1c,0xc0,0xff,0xff,0xff,0x07,0x30,0x00,0x00,0x0e,0xfe, + 0xff,0xff,0xff,0x7f,0x70,0x00,0x00,0xc6,0xff,0xff,0xff,0xff,0xff,0x63,0x00, + 0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0xfe,0xff,0xff,0xff,0xff, + 0xff,0x7f,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0xf8,0xff, + 0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0x07,0x00, + 0x00,0x00,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff, + 0x0f,0x00,0x00,0x00,0x00,0x00,0xfc,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}; diff --git a/bitmaps/g33o.bm b/bitmaps/g33o.bm new file mode 100644 index 0000000..95bf4de --- /dev/null +++ b/bitmaps/g33o.bm @@ -0,0 +1,16 @@ +#define g33o_width 33 +#define g33o_height 33 +static char g33o_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x24, 0x12, 0x00, 0x00, +0x30, 0x24, 0x12, 0x06, 0x00, 0x48, 0x18, 0x0c, 0x09, 0x00, 0x48, 0x10, 0x04, 0x09, 0x00, +0x30, 0x10, 0x04, 0x06, 0x00, 0x60, 0x28, 0x0a, 0x03, 0x00, 0x60, 0x28, 0x0a, 0x03, 0x00, +0xc0, 0x28, 0x8a, 0x01, 0x00, 0x40, 0x49, 0x49, 0x01, 0x00, 0x40, 0x49, 0x49, 0x01, 0x00, +0x40, 0x4a, 0x29, 0x01, 0x00, 0x40, 0xca, 0x29, 0x01, 0x00, 0x80, 0xac, 0x9a, 0x00, 0x00, +0x80, 0xda, 0xad, 0x00, 0x00, 0x80, 0x0d, 0xd0, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, +0x00, 0xf1, 0x47, 0x00, 0x00, 0x00, 0x0f, 0x78, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, +0x00, 0xf2, 0x27, 0x00, 0x00, 0x00, 0x0c, 0x18, 0x00, 0x00, 0x00, 0xf2, 0x27, 0x00, 0x00, +0x00, 0x0f, 0x78, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x0f, 0x78, 0x00, 0x00, +0x00, 0xf0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + +}; diff --git a/bitmaps/g33s.bm b/bitmaps/g33s.bm new file mode 100644 index 0000000..8468613 --- /dev/null +++ b/bitmaps/g33s.bm @@ -0,0 +1,16 @@ +#define g33s_width 33 +#define g33s_height 33 +static char g33s_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x18, 0x00, 0x00, 0x00, 0x78, 0x3c, 0x00, 0x00, +0x60, 0x78, 0x3c, 0x0c, 0x00, 0xf0, 0x30, 0x18, 0x1e, 0x00, 0xf0, 0x20, 0x08, 0x1e, 0x00, +0x60, 0x30, 0x18, 0x0c, 0x00, 0xc0, 0x70, 0x1c, 0x06, 0x00, 0xc0, 0x70, 0x1c, 0x06, 0x00, +0x80, 0x71, 0x1c, 0x03, 0x00, 0x80, 0xf3, 0x9e, 0x03, 0x00, 0x80, 0xf3, 0x9e, 0x03, 0x00, +0x80, 0xf7, 0xde, 0x03, 0x00, 0x80, 0xf7, 0xdf, 0x03, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, +0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, +0x00, 0x1e, 0xf0, 0x00, 0x00, 0x00, 0xe6, 0xcf, 0x00, 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00, +0x00, 0x1c, 0x70, 0x00, 0x00, 0x00, 0xc8, 0x27, 0x00, 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00, +0x00, 0xfc, 0x7f, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, +0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + +}; diff --git a/bitmaps/g49o.bm b/bitmaps/g49o.bm new file mode 100644 index 0000000..12721fa --- /dev/null +++ b/bitmaps/g49o.bm @@ -0,0 +1,26 @@ +#define g49o_width 49 +#define g49o_height 49 +static char g49o_bits[] = { + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30}; diff --git a/bitmaps/g49s.bm b/bitmaps/g49s.bm new file mode 100644 index 0000000..ab00ac5 --- /dev/null +++ b/bitmaps/g49s.bm @@ -0,0 +1,26 @@ +#define g49s_width 49 +#define g49s_height 49 +static char g49s_bits[] = { + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30}; diff --git a/bitmaps/g72o.bm b/bitmaps/g72o.bm new file mode 100644 index 0000000..4a71f57 --- /dev/null +++ b/bitmaps/g72o.bm @@ -0,0 +1,47 @@ +#define g72o_width 72 +#define g72o_height 72 +static char g72o_bits[] = { + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30}; diff --git a/bitmaps/g72s.bm b/bitmaps/g72s.bm new file mode 100644 index 0000000..700ada1 --- /dev/null +++ b/bitmaps/g72s.bm @@ -0,0 +1,47 @@ +#define g72s_width 72 +#define g72s_height 72 +static char g72s_bits[] = { + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30}; diff --git a/bitmaps/h33o.bm b/bitmaps/h33o.bm new file mode 100644 index 0000000..418fec2 --- /dev/null +++ b/bitmaps/h33o.bm @@ -0,0 +1,16 @@ +#define h33o_width 33 +#define h33o_height 33 +static char h33o_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x01, 0x00, 0x00, 0x00, 0x32, 0x07, 0x00, 0x00, +0x00, 0x3a, 0x19, 0x00, 0x00, 0x00, 0x0e, 0x60, 0x00, 0x00, 0x00, 0x0f, 0xc0, 0x00, 0x00, +0x00, 0x1f, 0x80, 0x01, 0x00, 0x80, 0x39, 0x00, 0x03, 0x00, 0x80, 0x7d, 0x04, 0x03, 0x00, +0xc0, 0x3f, 0x04, 0x06, 0x00, 0x40, 0x1f, 0x04, 0x06, 0x00, 0x20, 0x0e, 0x04, 0x0c, 0x00, +0x20, 0x04, 0x02, 0x0c, 0x00, 0x10, 0x80, 0x03, 0x0c, 0x00, 0x10, 0x40, 0x02, 0x18, 0x00, +0x28, 0x30, 0x02, 0x18, 0x00, 0x28, 0x08, 0x01, 0x18, 0x00, 0x88, 0x04, 0x01, 0x18, 0x00, +0x88, 0x82, 0x00, 0x10, 0x00, 0xf0, 0x41, 0x00, 0x30, 0x00, 0x00, 0x20, 0x00, 0x30, 0x00, +0x00, 0x10, 0x00, 0x30, 0x00, 0x00, 0x08, 0x00, 0x30, 0x00, 0x00, 0x08, 0x00, 0x30, 0x00, +0x00, 0x04, 0x00, 0x30, 0x00, 0x00, 0x04, 0x00, 0x30, 0x00, 0x00, 0xfc, 0xff, 0x3f, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + +}; diff --git a/bitmaps/h33s.bm b/bitmaps/h33s.bm new file mode 100644 index 0000000..6d2ae80 --- /dev/null +++ b/bitmaps/h33s.bm @@ -0,0 +1,16 @@ +#define h33s_width 33 +#define h33s_height 33 +static char h33s_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x00, 0xce, 0x01, 0x00, 0x00, +0x00, 0xfe, 0x07, 0x00, 0x00, 0x00, 0xce, 0x19, 0x00, 0x00, 0x00, 0xf4, 0x67, 0x00, 0x00, +0x00, 0xfb, 0xdf, 0x00, 0x00, 0x00, 0xe1, 0xbf, 0x01, 0x00, 0x80, 0xc6, 0x7f, 0x03, 0x00, +0x80, 0x86, 0x7f, 0x02, 0x00, 0x40, 0xc0, 0xff, 0x06, 0x00, 0xc0, 0xe0, 0xff, 0x04, 0x00, +0xe0, 0xf1, 0xfd, 0x0d, 0x00, 0xe0, 0xfb, 0xff, 0x09, 0x00, 0xf0, 0xff, 0xff, 0x09, 0x00, +0xf0, 0x7f, 0xfe, 0x1b, 0x00, 0xd8, 0x1f, 0xfe, 0x13, 0x00, 0xd8, 0x0f, 0xff, 0x13, 0x00, +0xf8, 0x07, 0xff, 0x13, 0x00, 0xf8, 0x83, 0xff, 0x17, 0x00, 0xf0, 0xc1, 0xff, 0x37, 0x00, +0x00, 0xe0, 0xff, 0x27, 0x00, 0x00, 0xf0, 0xff, 0x27, 0x00, 0x00, 0xf8, 0xff, 0x27, 0x00, +0x00, 0xf8, 0xff, 0x27, 0x00, 0x00, 0xfc, 0xff, 0x27, 0x00, 0x00, 0xfc, 0xff, 0x3f, 0x00, +0x00, 0xfc, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + +}; diff --git a/bitmaps/h49o.bm b/bitmaps/h49o.bm new file mode 100644 index 0000000..5c3fe78 --- /dev/null +++ b/bitmaps/h49o.bm @@ -0,0 +1,26 @@ +#define h49o_width 49 +#define h49o_height 49 +static char h49o_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,0x10, + 0x20,0x00,0x00,0x00,0x00,0x00,0x70,0x50,0x00,0x00,0x00,0x00,0x00,0x90,0x90, + 0x00,0x00,0x00,0x00,0x00,0x10,0x89,0x00,0x00,0x00,0x00,0x00,0x10,0x8e,0x07, + 0x00,0x00,0x00,0x00,0x20,0x8b,0x38,0x00,0x00,0x00,0x00,0x90,0x00,0xc0,0x00, + 0x00,0x00,0x00,0x08,0x00,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x06,0x00, + 0x00,0x00,0x04,0x00,0x80,0x0b,0x00,0x00,0x00,0x82,0x00,0x00,0x3c,0x00,0x00, + 0x00,0x62,0x00,0x00,0xe0,0x03,0x00,0x00,0x22,0x00,0x00,0x20,0x0c,0x00,0x00, + 0x12,0x00,0x00,0x78,0x00,0x00,0x00,0x01,0x00,0x02,0xc0,0x07,0x00,0x00,0x01, + 0x00,0x02,0x80,0x18,0x00,0x00,0x01,0x00,0x02,0x00,0x01,0x00,0x80,0x00,0x00, + 0x02,0x30,0x01,0x00,0x80,0x00,0x00,0x01,0xc0,0x03,0x00,0x40,0x00,0x00,0x01, + 0x00,0x1e,0x00,0x20,0x00,0x80,0x02,0x00,0x62,0x00,0x20,0x00,0x40,0x02,0xc0, + 0x02,0x00,0x10,0x00,0x30,0x02,0x00,0x07,0x00,0x10,0x00,0x08,0x02,0x00,0x3c, + 0x00,0xc8,0x00,0x06,0x02,0x00,0x44,0x00,0x48,0x00,0x01,0x01,0xc0,0x04,0x00, + 0x08,0x80,0x00,0x01,0x00,0x0f,0x00,0x08,0x44,0x80,0x00,0x00,0x78,0x00,0x08, + 0x22,0x40,0x00,0x00,0x88,0x00,0x10,0x12,0x20,0x00,0x00,0x08,0x00,0xe0,0x0b, + 0x10,0x00,0x80,0x0b,0x00,0x00,0x0c,0x08,0x00,0x00,0x3c,0x00,0x00,0x00,0x04, + 0x00,0x00,0xd0,0x00,0x00,0x00,0x04,0x00,0x00,0x10,0x00,0x00,0x00,0x02,0x00, + 0x00,0x13,0x00,0x00,0x00,0x01,0x00,0x00,0x3c,0x00,0x00,0x80,0x00,0x00,0x00, + 0xd0,0x00,0x00,0x80,0x00,0x00,0x00,0x10,0x00,0x00,0x40,0x00,0x00,0x00,0x16, + 0x00,0x00,0x40,0x00,0x00,0x00,0x38,0x00,0x00,0x40,0x00,0x00,0x00,0xd0,0x00, + 0x00,0xc0,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}; diff --git a/bitmaps/h49s.bm b/bitmaps/h49s.bm new file mode 100644 index 0000000..a8c3fe8 --- /dev/null +++ b/bitmaps/h49s.bm @@ -0,0 +1,26 @@ +#define h49s_width 49 +#define h49s_height 49 +static char h49s_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,0x10, + 0x20,0x00,0x00,0x00,0x00,0x00,0x70,0x70,0x00,0x00,0x00,0x00,0x00,0xf0,0xf0, + 0x00,0x00,0x00,0x00,0x00,0xf0,0xf9,0x00,0x00,0x00,0x00,0x00,0xf0,0x77,0x07, + 0x00,0x00,0x00,0x00,0xe0,0x74,0x3f,0x00,0x00,0x00,0x00,0x70,0xff,0xff,0x00, + 0x00,0x00,0x00,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0xfc,0xff,0xff,0x07,0x00, + 0x00,0x00,0xfc,0xff,0x7f,0x0c,0x00,0x00,0x00,0x7e,0xff,0xff,0x33,0x00,0x00, + 0x00,0x9e,0xff,0xff,0xff,0x03,0x00,0x00,0xde,0xff,0xff,0x3f,0x0c,0x00,0x00, + 0xee,0xff,0xff,0x47,0x00,0x00,0x00,0xff,0xff,0xff,0xbf,0x07,0x00,0x00,0xff, + 0xff,0xff,0xff,0x18,0x00,0x00,0xff,0xff,0xff,0xff,0x01,0x00,0x80,0xff,0xff, + 0xff,0xcf,0x01,0x00,0x80,0xff,0xff,0xff,0x3f,0x02,0x00,0xc0,0xff,0xff,0xff, + 0xff,0x1d,0x00,0xe0,0xff,0xff,0xfe,0xff,0x63,0x00,0xe0,0xff,0x7f,0xfe,0x3f, + 0x03,0x00,0xf0,0xff,0x3f,0xfe,0xff,0x04,0x00,0xf0,0xff,0x0f,0xfe,0xff,0x3b, + 0x00,0x38,0xff,0x07,0xfe,0xff,0x47,0x00,0xb8,0xff,0x01,0xff,0x3f,0x07,0x00, + 0xf8,0xff,0x00,0xff,0xff,0x08,0x00,0xf8,0x7b,0x80,0xff,0xff,0x77,0x00,0xf8, + 0x3d,0xc0,0xff,0xff,0x8f,0x00,0xf0,0x1d,0xe0,0xff,0xff,0x0f,0x00,0xe0,0x0d, + 0xf0,0xff,0x7f,0x0c,0x00,0x00,0x0c,0xf8,0xff,0xff,0x23,0x00,0x00,0x00,0xfc, + 0xff,0xff,0xdf,0x00,0x00,0x00,0xfc,0xff,0xff,0x1f,0x00,0x00,0x00,0xfe,0xff, + 0xff,0x1c,0x00,0x00,0x00,0xff,0xff,0xff,0x23,0x00,0x00,0x80,0xff,0xff,0xff, + 0xdf,0x00,0x00,0x80,0xff,0xff,0xff,0x1f,0x00,0x00,0xc0,0xff,0xff,0xff,0x19, + 0x00,0x00,0xc0,0xff,0xff,0xff,0x27,0x00,0x00,0xc0,0xff,0xff,0xff,0xdf,0x00, + 0x00,0xc0,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}; diff --git a/bitmaps/h72o.bm b/bitmaps/h72o.bm new file mode 100644 index 0000000..961b190 --- /dev/null +++ b/bitmaps/h72o.bm @@ -0,0 +1,47 @@ +#define h72o_width 72 +#define h72o_height 72 +static char h72o_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,0x01,0x00,0x00,0x00,0x00, + 0x00,0x00,0x0e,0x80,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0xc0,0x03,0x00, + 0x00,0x00,0x00,0x00,0x00,0x7c,0xe0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xec, + 0x60,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0xcc,0x71,0x0e,0x00,0x00,0x00,0x00, + 0x00,0x00,0x8c,0x33,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x3f,0xfc,0x01, + 0x00,0x00,0x00,0x00,0x00,0x0c,0x3e,0xfc,0x0f,0x00,0x00,0x00,0x00,0x00,0x1c, + 0x37,0x18,0x7e,0x00,0x00,0x00,0x00,0x00,0x9c,0x03,0x18,0xf0,0x01,0x00,0x00, + 0x00,0x00,0xce,0x01,0x00,0xc0,0x07,0x00,0x00,0x00,0x00,0x47,0x00,0x00,0x00, + 0x0f,0x00,0x00,0x00,0x80,0x03,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0xc0,0x01, + 0x00,0x00,0x80,0x3f,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0xff,0x00,0x00, + 0x00,0xe0,0xc0,0x00,0x00,0x00,0xe0,0x07,0x00,0x00,0x60,0x70,0x00,0x00,0x00, + 0xc0,0x3f,0x00,0x00,0x60,0x78,0x00,0x00,0x00,0x80,0xf9,0x01,0x00,0x60,0x7c, + 0x00,0x00,0x00,0x70,0xc3,0x01,0x00,0x60,0x3c,0x00,0x00,0x00,0xf0,0x07,0x00, + 0x00,0x70,0x04,0x00,0x00,0x00,0x80,0x0f,0x00,0x00,0x30,0x00,0x00,0x60,0x00, + 0x00,0x7e,0x00,0x00,0x30,0x00,0x00,0x60,0x00,0x00,0xfc,0x03,0x00,0x38,0x00, + 0x00,0x60,0x00,0x00,0x9c,0x0f,0x00,0x18,0x00,0x00,0x60,0x00,0xc0,0x19,0x0c, + 0x00,0x1c,0x00,0x00,0x60,0x00,0xc0,0x3f,0x00,0x00,0x0c,0x00,0x00,0x70,0x00, + 0x00,0x7e,0x00,0x00,0x0e,0x00,0x00,0x30,0x00,0x00,0xf0,0x03,0x00,0x07,0x00, + 0x00,0x30,0x00,0x00,0xf0,0x1f,0x00,0x03,0x00,0x00,0x38,0x00,0x00,0x60,0x1c, + 0x80,0x03,0x00,0x00,0x3c,0x00,0x00,0x67,0x00,0xc0,0x01,0x00,0x00,0x3e,0x00, + 0x00,0xff,0x00,0xc0,0x00,0x00,0x80,0x37,0x00,0x00,0xf8,0x00,0xe0,0x00,0x00, + 0xe0,0x31,0x00,0x00,0xe0,0x07,0x60,0x00,0x00,0x78,0x30,0x00,0x00,0xc0,0x1f, + 0x60,0x06,0x00,0x1e,0x30,0x00,0x00,0xc0,0x19,0x70,0x0f,0x80,0x07,0x38,0x00, + 0x00,0x8e,0x01,0x30,0x0f,0xc0,0x01,0x18,0x00,0x00,0xfe,0x01,0x30,0x07,0xe0, + 0x00,0x1c,0x00,0x00,0xf0,0x01,0x30,0x07,0x70,0x00,0x0c,0x00,0x00,0x80,0x0f, + 0x30,0xc0,0x38,0x00,0x0e,0x00,0x00,0x80,0x3f,0x30,0xc0,0x1c,0x00,0x07,0x00, + 0x00,0x1c,0x33,0x70,0xe0,0x0c,0x00,0x03,0x00,0x00,0x7c,0x03,0xe0,0x70,0x0e, + 0x80,0x03,0x00,0x00,0xe0,0x03,0xc0,0x7f,0x07,0xc0,0x01,0x00,0x00,0x80,0x0f, + 0x00,0xef,0x03,0xe0,0x00,0x00,0x00,0x00,0x3f,0x00,0xc0,0x01,0x70,0x00,0x00, + 0x00,0x00,0x33,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x1c,0x03,0x00,0x00,0x00, + 0x18,0x00,0x00,0x00,0xfc,0x07,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0xe0,0x07, + 0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x00,0x1f,0x00,0x00,0x00,0x07,0x00,0x00, + 0x00,0x00,0x7e,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x66,0x00,0x00,0x80, + 0x03,0x00,0x00,0x00,0x1c,0x06,0x00,0x00,0xc0,0x01,0x00,0x00,0x00,0x7c,0x06, + 0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0xe0,0x07,0x00,0x00,0xc0,0x00,0x00,0x00, + 0x00,0x80,0x0f,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x60, + 0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x06, + 0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0xe0,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}; diff --git a/bitmaps/h72s.bm b/bitmaps/h72s.bm new file mode 100644 index 0000000..2f90e1e --- /dev/null +++ b/bitmaps/h72s.bm @@ -0,0 +1,47 @@ +#define h72s_width 72 +#define h72s_height 72 +static char h72s_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,0x01,0x00,0x00,0x00,0x00, + 0x00,0x00,0x0e,0x80,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0xc0,0x03,0x00, + 0x00,0x00,0x00,0x00,0x00,0x7c,0xe0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xfc, + 0xe0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xf1,0x0f,0x00,0x00,0x00,0x00, + 0x00,0x00,0xfc,0xf3,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xef,0xe7,0x01, + 0x00,0x00,0x00,0x00,0x00,0xfc,0xe9,0xe7,0x0f,0x00,0x00,0x00,0x00,0x00,0xfc, + 0xe0,0xcf,0x7f,0x00,0x00,0x00,0x00,0x00,0x7c,0xfc,0xcf,0xff,0x01,0x00,0x00, + 0x00,0x00,0x3e,0xfe,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0xbf,0xff,0xff,0xff, + 0x0f,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0xc0,0xff, + 0xff,0xff,0x7f,0x30,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xc0,0x00,0x00, + 0x00,0xe0,0x3f,0xff,0xff,0xff,0x0f,0x07,0x00,0x00,0xe0,0x8f,0xff,0xff,0xff, + 0x7f,0x3f,0x00,0x00,0xe0,0x87,0xff,0xff,0xff,0xff,0xf9,0x01,0x00,0xe0,0x83, + 0xff,0xff,0xff,0x8f,0xc3,0x01,0x00,0xe0,0xc3,0xff,0xff,0xff,0x0f,0x06,0x00, + 0x00,0xf0,0xfb,0xff,0xff,0xff,0x7f,0x08,0x00,0x00,0xf0,0xff,0xff,0x9f,0xff, + 0xff,0x71,0x00,0x00,0xf0,0xff,0xff,0x9f,0xff,0xff,0xe7,0x03,0x00,0xf8,0xff, + 0xff,0x9f,0xff,0xff,0x9f,0x0f,0x00,0xf8,0xff,0xff,0x9f,0xff,0x3f,0x1e,0x0c, + 0x00,0xfc,0xff,0xff,0x9f,0xff,0x3f,0x30,0x00,0x00,0xfc,0xff,0xff,0x8f,0xff, + 0xff,0x41,0x00,0x00,0xfe,0xff,0xff,0xcf,0xff,0xff,0xcf,0x03,0x00,0xff,0xff, + 0xff,0xcf,0xff,0xff,0xff,0x1f,0x00,0xff,0xff,0xff,0xcf,0xff,0xff,0x7f,0x1c, + 0x80,0xff,0xff,0xff,0xcf,0xff,0xff,0x78,0x00,0xc0,0xff,0xff,0xff,0xff,0xff, + 0xff,0xe0,0x00,0xc0,0xff,0xff,0xff,0xf7,0xff,0xff,0x87,0x00,0xe0,0xff,0xff, + 0xff,0xf1,0xff,0xff,0x3f,0x07,0xe0,0xff,0xff,0x7f,0xf0,0xff,0xff,0xff,0x1f, + 0xe0,0xf9,0xff,0x1f,0xf0,0xff,0xff,0xff,0x19,0xf0,0xf0,0xff,0x07,0xf8,0xff, + 0xff,0xf1,0x01,0xf0,0xf0,0xff,0x01,0xf8,0xff,0xff,0x81,0x01,0xf0,0xf8,0xff, + 0x00,0xfc,0xff,0xff,0x0f,0x01,0xf0,0xf8,0x7f,0x00,0xfc,0xff,0xff,0x7f,0x0e, + 0xf0,0x3f,0x3f,0x00,0xfe,0xff,0xff,0xff,0x3c,0xf0,0x3f,0x1f,0x00,0xff,0xff, + 0xff,0xe3,0x33,0xf0,0x1f,0x0f,0x00,0xff,0xff,0xff,0x83,0x03,0xe0,0x9f,0x0f, + 0x80,0xff,0xff,0xff,0x1f,0x02,0xc0,0x8f,0x07,0xc0,0xff,0xff,0xff,0x7f,0x0c, + 0x00,0xef,0x03,0xe0,0xff,0xff,0xff,0xff,0x3d,0x00,0xc0,0x01,0xf0,0xff,0xff, + 0xff,0xff,0x33,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xe3,0x03,0x00,0x00,0x00, + 0xf8,0xff,0xff,0xff,0x03,0x07,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0x1f,0x04, + 0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0x18,0x00,0x00,0x00,0xff,0xff,0xff, + 0xff,0xff,0x79,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0x67,0x00,0x00,0x80, + 0xff,0xff,0xff,0xff,0xe3,0x07,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0x83,0x07, + 0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0x1f,0x04,0x00,0x00,0xc0,0xff,0xff,0xff, + 0xff,0x7f,0x08,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0x3b,0x00,0x00,0xe0, + 0xff,0xff,0xff,0xff,0xff,0x37,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0x07, + 0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0xe0,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}; diff --git a/bitmaps/l33o.bm b/bitmaps/l33o.bm new file mode 100644 index 0000000..6cfc660 --- /dev/null +++ b/bitmaps/l33o.bm @@ -0,0 +1,16 @@ +#define l33o_width 33 +#define l33o_height 33 +static char l33o_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, +0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, +0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x80, 0x08, 0x00, 0x00, 0x00, 0x80, 0x08, 0x00, 0x00, +0x00, 0x80, 0x08, 0x00, 0x00, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x40, 0x10, 0x00, 0x00, +0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x20, 0x22, 0x00, 0x00, +0x00, 0x20, 0x22, 0x00, 0x00, 0x00, 0x10, 0x42, 0x00, 0x00, 0x00, 0x10, 0x42, 0x00, 0x00, +0x00, 0x90, 0x4f, 0x00, 0x00, 0x00, 0x08, 0x82, 0x00, 0x00, 0x00, 0x08, 0x82, 0x00, 0x00, +0x00, 0x08, 0x82, 0x00, 0x00, 0x00, 0x10, 0x42, 0x00, 0x00, 0x00, 0x20, 0x20, 0x00, 0x00, +0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, +0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, +0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + +}; diff --git a/bitmaps/l33s.bm b/bitmaps/l33s.bm new file mode 100644 index 0000000..43ad4d6 --- /dev/null +++ b/bitmaps/l33s.bm @@ -0,0 +1,16 @@ +#define l33s_width 33 +#define l33s_height 33 +static char l33s_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, +0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, +0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, +0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, +0x00, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0xe0, 0x3f, 0x00, 0x00, 0x00, 0xe0, 0x3d, 0x00, 0x00, +0x00, 0xe0, 0x3d, 0x00, 0x00, 0x00, 0xf0, 0x7d, 0x00, 0x00, 0x00, 0xf0, 0x7d, 0x00, 0x00, +0x00, 0x70, 0x70, 0x00, 0x00, 0x00, 0xf8, 0xfd, 0x00, 0x00, 0x00, 0xf8, 0xfd, 0x00, 0x00, +0x00, 0xf8, 0xfd, 0x00, 0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0x00, 0xe0, 0x3f, 0x00, 0x00, +0x00, 0xc0, 0x1d, 0x00, 0x00, 0x00, 0x80, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, +0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, +0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + +}; diff --git a/bitmaps/l37o.bm b/bitmaps/l37o.bm new file mode 100644 index 0000000..c1259af --- /dev/null +++ b/bitmaps/l37o.bm @@ -0,0 +1,17 @@ +#define l37o_width 37 +#define l37o_height 37 +static char l37o_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, +0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, +0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, +0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x80, 0x20, 0x00, 0x00, 0x00, 0x80, 0x20, 0x00, 0x00, +0x00, 0x80, 0x20, 0x00, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, +0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x20, 0x84, 0x00, 0x00, 0x00, 0x20, 0x84, 0x00, 0x00, +0x00, 0x20, 0x84, 0x00, 0x00, 0x00, 0x10, 0x04, 0x01, 0x00, 0x00, 0x10, 0x04, 0x01, 0x00, +0x00, 0x10, 0x1f, 0x01, 0x00, 0x00, 0x08, 0x04, 0x02, 0x00, 0x00, 0x08, 0x04, 0x02, 0x00, +0x00, 0x08, 0x04, 0x02, 0x00, 0x00, 0x10, 0x04, 0x01, 0x00, 0x00, 0x20, 0x80, 0x00, 0x00, +0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, +0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, +0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00 +}; diff --git a/bitmaps/l37s.bm b/bitmaps/l37s.bm new file mode 100644 index 0000000..4e4b2bf --- /dev/null +++ b/bitmaps/l37s.bm @@ -0,0 +1,17 @@ +#define l37s_width 37 +#define l37s_height 37 +static char l37s_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, +0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, +0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, +0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, +0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, +0x00, 0xc0, 0x7f, 0x00, 0x00, 0x00, 0xe0, 0xfb, 0x00, 0x00, 0x00, 0xe0, 0xfb, 0x00, 0x00, +0x00, 0xe0, 0xfb, 0x00, 0x00, 0x00, 0xf0, 0xfb, 0x01, 0x00, 0x00, 0xf0, 0xe0, 0x01, 0x00, +0x00, 0xf0, 0xfb, 0x01, 0x00, 0x00, 0xf8, 0xfb, 0x03, 0x00, 0x00, 0xf8, 0xfb, 0x03, 0x00, +0x00, 0xf8, 0xfb, 0x03, 0x00, 0x00, 0xf0, 0xff, 0x01, 0x00, 0x00, 0xe0, 0xff, 0x00, 0x00, +0x00, 0xc0, 0x7f, 0x00, 0x00, 0x00, 0x80, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, +0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, +0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00 +}; diff --git a/bitmaps/l40o.bm b/bitmaps/l40o.bm new file mode 100644 index 0000000..9696f6e --- /dev/null +++ b/bitmaps/l40o.bm @@ -0,0 +1,18 @@ +#define l40o_width 40 +#define l40o_height 40 +static char l40o_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, +0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, +0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, +0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, +0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, +0x00, 0x40, 0x00, 0x01, 0x00, 0x00, 0x20, 0x08, 0x02, 0x00, 0x00, 0x20, 0x08, 0x02, 0x00, +0x00, 0x20, 0x08, 0x02, 0x00, 0x00, 0x10, 0x08, 0x04, 0x00, 0x00, 0x10, 0x08, 0x04, 0x00, +0x00, 0x10, 0x7f, 0x04, 0x00, 0x00, 0x08, 0x08, 0x08, 0x00, 0x00, 0x08, 0x08, 0x08, 0x00, +0x00, 0x04, 0x08, 0x10, 0x00, 0x00, 0x04, 0x08, 0x10, 0x00, 0x00, 0x08, 0x08, 0x08, 0x00, +0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x20, 0x00, 0x02, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, +0x00, 0x80, 0x88, 0x00, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, +0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, +0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00 +}; diff --git a/bitmaps/l40s.bm b/bitmaps/l40s.bm new file mode 100644 index 0000000..b231c57 --- /dev/null +++ b/bitmaps/l40s.bm @@ -0,0 +1,18 @@ +#define l40s_width 40 +#define l40s_height 40 +static char l40s_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, +0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, +0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, +0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x80, 0xff, 0x00, 0x00, +0x00, 0x80, 0xff, 0x00, 0x00, 0x00, 0x80, 0xff, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x01, 0x00, +0x00, 0xc0, 0xff, 0x01, 0x00, 0x00, 0xe0, 0xf7, 0x03, 0x00, 0x00, 0xe0, 0xf7, 0x03, 0x00, +0x00, 0xe0, 0xf7, 0x03, 0x00, 0x00, 0xf0, 0xf7, 0x07, 0x00, 0x00, 0xf0, 0xf7, 0x07, 0x00, +0x00, 0xf0, 0x80, 0x07, 0x00, 0x00, 0xf8, 0xf7, 0x0f, 0x00, 0x00, 0xf8, 0xf7, 0x0f, 0x00, +0x00, 0xfc, 0xf7, 0x1f, 0x00, 0x00, 0xfc, 0xf7, 0x1f, 0x00, 0x00, 0xf8, 0xf7, 0x0f, 0x00, +0x00, 0xf0, 0xff, 0x07, 0x00, 0x00, 0xe0, 0xff, 0x03, 0x00, 0x00, 0xc0, 0xff, 0x01, 0x00, +0x00, 0x80, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, +0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, +0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00 +}; diff --git a/bitmaps/l45o.bm b/bitmaps/l45o.bm new file mode 100644 index 0000000..4c6411b --- /dev/null +++ b/bitmaps/l45o.bm @@ -0,0 +1,23 @@ +#define l45o_width 45 +#define l45o_height 45 +static char l45o_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, +0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, +0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, +0x00, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x08, +0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, +0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x02, +0x08, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x41, 0x10, 0x00, 0x00, +0x00, 0x00, 0x41, 0x10, 0x00, 0x00, 0x00, 0x00, 0x41, 0x10, 0x00, 0x00, 0x00, 0x80, 0x40, +0x20, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x00, 0x00, +0x00, 0x40, 0xf8, 0x43, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x40, 0x40, +0x40, 0x00, 0x00, 0x00, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x20, 0x40, 0x80, 0x00, 0x00, +0x00, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x80, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x01, +0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, +0x00, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x50, 0x01, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, +0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + +}; diff --git a/bitmaps/l45s.bm b/bitmaps/l45s.bm new file mode 100644 index 0000000..5289b68 --- /dev/null +++ b/bitmaps/l45s.bm @@ -0,0 +1,23 @@ +#define l45s_width 45 +#define l45s_height 45 +static char l45s_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, +0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, +0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, +0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf8, +0x03, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, +0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xfe, +0x0f, 0x00, 0x00, 0x00, 0x00, 0xbe, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xbf, 0x1f, 0x00, 0x00, +0x00, 0x00, 0xbf, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xbf, 0x1f, 0x00, 0x00, 0x00, 0x80, 0xbf, +0x3f, 0x00, 0x00, 0x00, 0x80, 0xbf, 0x3f, 0x00, 0x00, 0x00, 0x80, 0x07, 0x3c, 0x00, 0x00, +0x00, 0xc0, 0xbf, 0x7f, 0x00, 0x00, 0x00, 0xc0, 0xbf, 0x7f, 0x00, 0x00, 0x00, 0xc0, 0xbf, +0x7f, 0x00, 0x00, 0x00, 0xe0, 0xbf, 0xff, 0x00, 0x00, 0x00, 0xe0, 0xbf, 0xff, 0x00, 0x00, +0x00, 0xc0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x80, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xff, +0x1f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x07, 0x00, 0x00, +0x00, 0x00, 0x58, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, +0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + +}; diff --git a/bitmaps/l49o.bm b/bitmaps/l49o.bm new file mode 100644 index 0000000..289a1b5 --- /dev/null +++ b/bitmaps/l49o.bm @@ -0,0 +1,27 @@ +#define l49o_width 49 +#define l49o_height 49 +static char l49o_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, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x04, +0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x08, 0x00, +0x00, 0x00, 0x00, 0x00, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x08, 0x00, 0x00, +0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, +0x00, 0x00, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, +0x00, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, +0x04, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, +0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, +0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, +0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x80, 0xe0, 0x0f, 0x02, 0x00, +0x00, 0x00, 0x40, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x40, 0x00, 0x01, 0x04, 0x00, 0x00, +0x00, 0x20, 0x00, 0x01, 0x08, 0x00, 0x00, 0x00, 0x60, 0x00, 0x01, 0x0c, 0x00, 0x00, 0x00, +0xc0, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, +0x03, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, +0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x18, +0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, +0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, +0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, +0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; diff --git a/bitmaps/l49s.bm b/bitmaps/l49s.bm new file mode 100644 index 0000000..90857e7 --- /dev/null +++ b/bitmaps/l49s.bm @@ -0,0 +1,27 @@ +#define l49s_width 49 +#define l49s_height 49 +static char l49s_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, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, +0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x0f, 0x00, +0x00, 0x00, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, +0x00, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0x00, +0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0x00, 0x00, +0x00, 0xf8, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, +0xfc, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, +0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfe, +0x01, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfe, 0x01, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfe, 0x01, +0x00, 0x00, 0x00, 0x80, 0xff, 0xfe, 0x03, 0x00, 0x00, 0x00, 0x80, 0x1f, 0xf0, 0x03, 0x00, +0x00, 0x00, 0xc0, 0xff, 0xfe, 0x07, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xfe, 0x07, 0x00, 0x00, +0x00, 0xe0, 0xff, 0xfe, 0x0f, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xfe, 0x0f, 0x00, 0x00, 0x00, +0xc0, 0xff, 0xfe, 0x07, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, +0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x1f, +0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, +0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, +0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, +0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; diff --git a/bitmaps/l54o.bm b/bitmaps/l54o.bm new file mode 100644 index 0000000..bfb2428 --- /dev/null +++ b/bitmaps/l54o.bm @@ -0,0 +1,30 @@ +#define l54o_width 54 +#define l54o_height 54 +static char l54o_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x61, 0x00, +0x00, 0x00, 0x00, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x61, 0x00, 0x00, +0x00, 0x00, 0x00, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0x00, 0x00, 0x00, +0x00, 0x00, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x80, 0x01, 0x00, 0x00, 0x00, +0x00, 0x60, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x60, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, +0x30, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x30, +0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x18, 0x0c, +0x06, 0x00, 0x00, 0x00, 0x00, 0x18, 0x0c, 0x06, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x0c, +0x00, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x0c, 0x00, +0x00, 0x00, 0x00, 0x06, 0x0c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0c, 0x18, 0x00, 0x00, +0x00, 0x00, 0xc6, 0xff, 0x18, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xff, 0x30, 0x00, 0x00, 0x00, +0x00, 0x03, 0x0c, 0x30, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0c, 0x30, 0x00, 0x00, 0x00, 0x80, +0x01, 0x0c, 0x60, 0x00, 0x00, 0x00, 0x80, 0x01, 0x0c, 0x60, 0x00, 0x00, 0x00, 0x80, 0x03, +0x0c, 0x70, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, +0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x07, +0x00, 0x00, 0x00, 0x00, 0x70, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xcc, 0x01, 0x00, +0x00, 0x00, 0x00, 0xc0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x7f, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00 +}; diff --git a/bitmaps/l54s.bm b/bitmaps/l54s.bm new file mode 100644 index 0000000..c95c8ce --- /dev/null +++ b/bitmaps/l54s.bm @@ -0,0 +1,30 @@ +#define l54s_width 54 +#define l54s_height 54 +static char l54s_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x7f, 0x00, +0x00, 0x00, 0x00, 0x00, 0x80, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x7f, 0x00, 0x00, +0x00, 0x00, 0x00, 0xc0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x00, 0x00, 0x00, +0x00, 0x00, 0xc0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x01, 0x00, 0x00, 0x00, +0x00, 0xe0, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, +0xf0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, +0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xf3, +0x07, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xf3, 0x07, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xf3, 0x0f, +0x00, 0x00, 0x00, 0x00, 0xfc, 0xf3, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xf3, 0x0f, 0x00, +0x00, 0x00, 0x00, 0xfe, 0xf3, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xf3, 0x1f, 0x00, 0x00, +0x00, 0x00, 0x7e, 0x80, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x3f, 0x00, 0x00, 0x00, +0x00, 0xff, 0xf3, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf3, 0x3f, 0x00, 0x00, 0x00, 0x80, +0xff, 0xf3, 0x7f, 0x00, 0x00, 0x00, 0x80, 0xff, 0xf3, 0x7f, 0x00, 0x00, 0x00, 0x80, 0xff, +0xf3, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf3, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, +0x1f, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x07, +0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xf3, 0x01, 0x00, +0x00, 0x00, 0x00, 0xc0, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x6d, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00 +}; diff --git a/bitmaps/l58o.bm b/bitmaps/l58o.bm new file mode 100644 index 0000000..9b62db5 --- /dev/null +++ b/bitmaps/l58o.bm @@ -0,0 +1,35 @@ +#define l58o_width 58 +#define l58o_height 58 +static char l58o_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x86, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x01, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x06, 0x00, 0x00, +0x00, 0x00, 0x00, 0x80, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x06, 0x00, +0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x0c, +0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, +0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, +0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, +0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, +0x00, 0x18, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x30, 0x60, 0x00, 0x00, 0x00, +0x00, 0x00, 0x18, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x30, 0xc0, 0x00, 0x00, +0x00, 0x00, 0x00, 0x0c, 0xff, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xff, 0xc3, 0x00, +0x00, 0x00, 0x00, 0x00, 0x06, 0x30, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x06, 0x30, 0x80, +0x01, 0x00, 0x00, 0x00, 0x00, 0x06, 0x30, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0x30, +0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x07, 0x30, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x0e, +0x30, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, +0x38, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, +0x00, 0xe0, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x0e, 0x00, 0x00, 0x00, +0x00, 0x00, 0x80, 0x33, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; diff --git a/bitmaps/l58s.bm b/bitmaps/l58s.bm new file mode 100644 index 0000000..10bae53 --- /dev/null +++ b/bitmaps/l58s.bm @@ -0,0 +1,35 @@ +#define l58s_width 58 +#define l58s_height 58 +static char l58s_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0xfe, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x07, 0x00, 0x00, +0x00, 0x00, 0x00, 0x80, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x07, 0x00, +0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x0f, +0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, +0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, +0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, +0xf0, 0xcf, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xcf, 0x3f, 0x00, 0x00, 0x00, 0x00, +0x00, 0xf8, 0xcf, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xcf, 0x7f, 0x00, 0x00, 0x00, +0x00, 0x00, 0xf8, 0xcf, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xcf, 0xff, 0x00, 0x00, +0x00, 0x00, 0x00, 0xfc, 0xcf, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0xfc, 0x00, +0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0xfc, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xcf, 0xff, +0x01, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xcf, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0xff, 0xcf, +0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xff, 0xcf, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xfe, +0xcf, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xcf, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, +0xf8, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, +0x00, 0xe0, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x0f, 0x00, 0x00, 0x00, +0x00, 0x00, 0x80, 0xcf, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x03, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xb6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; diff --git a/bitmaps/l64o.bm b/bitmaps/l64o.bm new file mode 100644 index 0000000..0416302 --- /dev/null +++ b/bitmaps/l64o.bm @@ -0,0 +1,39 @@ +#define l64o_width 64 +#define l64o_height 64 +static char l64o_bits[] = { +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, 0x80, 0x01, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, +0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x30, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x0c, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x30, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x60, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, +0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, +0x80, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x81, 0x81, 0x01, 0x00, 0x00, 0x00, +0x00, 0xc0, 0x80, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x80, 0x01, 0x03, 0x00, 0x00, +0x00, 0x00, 0xc0, 0x80, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x60, 0x80, 0x01, 0x06, 0x00, +0x00, 0x00, 0x00, 0x60, 0x80, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x60, 0x80, 0x01, 0x06, +0x00, 0x00, 0x00, 0x00, 0x30, 0x80, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x30, 0xf8, 0x1f, +0x0c, 0x00, 0x00, 0x00, 0x00, 0x30, 0xf8, 0x1f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x18, 0x80, +0x01, 0x18, 0x00, 0x00, 0x00, 0x00, 0x18, 0x80, 0x01, 0x18, 0x00, 0x00, 0x00, 0x00, 0x18, +0x80, 0x01, 0x18, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x80, 0x01, 0x30, 0x00, 0x00, 0x00, 0x00, +0x0c, 0x80, 0x01, 0x30, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x80, 0x01, 0x38, 0x00, 0x00, 0x00, +0x00, 0x38, 0x80, 0x01, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x0e, 0x00, 0x00, +0x00, 0x00, 0xe0, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x80, 0x03, 0x00, +0x00, 0x00, 0x00, 0x80, 0x03, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xe0, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x39, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, +0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00 +}; diff --git a/bitmaps/l64s.bm b/bitmaps/l64s.bm new file mode 100644 index 0000000..cbbc5e9 --- /dev/null +++ b/bitmaps/l64s.bm @@ -0,0 +1,39 @@ +#define l64s_width 64 +#define l64s_height 64 +static char l64s_bits[] = { +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, 0x80, 0x01, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x7f, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, +0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, +0x80, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x7f, 0xfe, 0x01, 0x00, 0x00, 0x00, +0x00, 0xc0, 0x7f, 0xfe, 0x03, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x7f, 0xfe, 0x03, 0x00, 0x00, +0x00, 0x00, 0xc0, 0x7f, 0xfe, 0x03, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x7f, 0xfe, 0x07, 0x00, +0x00, 0x00, 0x00, 0xe0, 0x7f, 0xfe, 0x07, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x7f, 0xfe, 0x07, +0x00, 0x00, 0x00, 0x00, 0xf0, 0x7f, 0xfe, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x07, 0xe0, +0x0f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x07, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f, +0xfe, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f, 0xfe, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xf8, +0x7f, 0xfe, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x7f, 0xfe, 0x3f, 0x00, 0x00, 0x00, 0x00, +0xfc, 0x7f, 0xfe, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x7f, 0xfe, 0x3f, 0x00, 0x00, 0x00, +0x00, 0xf8, 0x7f, 0xfe, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, +0x00, 0x00, 0xe0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x03, 0x00, +0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, +0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00 +}; diff --git a/bitmaps/l72o.bm b/bitmaps/l72o.bm new file mode 100644 index 0000000..4ddc418 --- /dev/null +++ b/bitmaps/l72o.bm @@ -0,0 +1,48 @@ +#define l72o_width 72 +#define l72o_height 72 +static char l72o_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, 0x10, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x83, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x01, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x03, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xc0, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x06, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x40, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x0c, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x30, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x18, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x30, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x0c, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x60, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0xc0, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x38, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x03, 0x38, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x38, 0x80, 0x01, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x38, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x38, 0x00, +0x03, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x38, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0xc0, +0x00, 0x38, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x38, 0x00, 0x06, 0x00, 0x00, +0x00, 0x00, 0xc0, 0xc0, 0xff, 0x07, 0x06, 0x00, 0x00, 0x00, 0x00, 0x60, 0xc0, 0xff, 0x07, +0x0c, 0x00, 0x00, 0x00, 0x00, 0x60, 0xc0, 0xff, 0x07, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x30, +0x00, 0x38, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x38, 0x00, 0x18, 0x00, 0x00, +0x00, 0x00, 0x30, 0x00, 0x38, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x38, 0x00, +0x30, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x38, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x38, +0x00, 0x38, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1c, 0x00, 0x00, +0x00, 0x00, 0xe0, 0x00, 0x38, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x38, 0x00, +0x07, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x38, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, +0x07, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0xe0, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x1c, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x38, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x10, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xe0, 0x10, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x39, 0x07, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x80, 0xbb, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x01, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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/l72s.bm b/bitmaps/l72s.bm new file mode 100644 index 0000000..32419b9 --- /dev/null +++ b/bitmaps/l72s.bm @@ -0,0 +1,48 @@ +#define l72s_width 72 +#define l72s_height 72 +static char l72s_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, 0x10, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x03, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xc0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x07, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xc0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x0f, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xf0, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x1f, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xf0, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x3f, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xfc, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x7f, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xfc, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xc7, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xc7, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xc7, 0xff, 0x01, 0x00, 0x00, +0x00, 0x00, 0x00, 0xff, 0xc7, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xc7, 0xff, +0x03, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xc7, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xc0, +0xff, 0xc7, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xc7, 0xff, 0x07, 0x00, 0x00, +0x00, 0x00, 0xc0, 0x3f, 0x00, 0xf8, 0x07, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x3f, 0x00, 0xf8, +0x0f, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x3f, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf0, +0xff, 0xc7, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xc7, 0xff, 0x1f, 0x00, 0x00, +0x00, 0x00, 0xf0, 0xff, 0xc7, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xc7, 0xff, +0x3f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xc7, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xf8, +0xff, 0xc7, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xc7, 0xff, 0x1f, 0x00, 0x00, +0x00, 0x00, 0xe0, 0xff, 0xc7, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xc7, 0xff, +0x07, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xc7, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xfc, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x3f, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xe0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x07, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x80, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x01, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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/m33o.bm b/bitmaps/m33o.bm new file mode 100644 index 0000000..b70145e --- /dev/null +++ b/bitmaps/m33o.bm @@ -0,0 +1,16 @@ +#define m33o_width 33 +#define m33o_height 33 +static char m33o_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, 0x01, 0x00, 0x00, +0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, +0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, +0x00, 0x07, 0xc0, 0x01, 0x00, 0x80, 0x00, 0x00, 0x02, 0x00, 0x40, 0x00, 0x00, 0x04, 0x00, +0x40, 0x00, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x08, 0x00, 0x20, 0x00, 0x00, 0x08, 0x00, +0x20, 0x00, 0x00, 0x08, 0x00, 0x20, 0x00, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, +0x10, 0x00, 0x00, 0x10, 0x00, 0x10, 0xfc, 0x7f, 0x10, 0x00, 0xe8, 0x03, 0x80, 0x2f, 0x00, +0x18, 0x00, 0x00, 0x30, 0x00, 0x04, 0x00, 0x00, 0x40, 0x00, 0x04, 0x00, 0x00, 0x40, 0x00, +0x18, 0x00, 0x00, 0x30, 0x00, 0xe0, 0x03, 0x80, 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/m33s.bm b/bitmaps/m33s.bm new file mode 100644 index 0000000..049d725 --- /dev/null +++ b/bitmaps/m33s.bm @@ -0,0 +1,16 @@ +#define m33s_width 33 +#define m33s_height 33 +static 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, 0x00, 0x00, 0x00 + +}; diff --git a/bitmaps/m49o.bm b/bitmaps/m49o.bm new file mode 100644 index 0000000..6f36c88 --- /dev/null +++ b/bitmaps/m49o.bm @@ -0,0 +1,26 @@ +#define m49o_width 49 +#define m49o_height 49 +static char m49o_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,0x01,0x00,0x00,0x00,0x00,0x00,0x80,0x02,0x00,0x00,0x00,0x00,0x00,0x40, + 0x04,0x00,0x00,0x00,0x00,0x00,0x20,0x08,0x00,0x00,0x00,0x00,0x00,0x20,0x08, + 0x00,0x00,0x00,0x00,0x00,0x20,0x08,0x00,0x00,0x00,0x00,0x00,0x40,0x04,0x00, + 0x00,0x00,0x00,0x00,0x40,0x04,0x00,0x00,0x00,0x00,0x00,0x40,0x04,0x00,0x00, + 0x00,0x00,0x00,0x80,0x02,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0x01,0x00,0x00, + 0x00,0x80,0x01,0x00,0x03,0x00,0x00,0x00,0x70,0x00,0x00,0x1c,0x00,0x00,0x00, + 0x0c,0x00,0x00,0x60,0x00,0x00,0x00,0x02,0x00,0x00,0x80,0x00,0x00,0x00,0x02, + 0x00,0x00,0x80,0x00,0x00,0x00,0x02,0x00,0x00,0x80,0x00,0x00,0x00,0x01,0x00, + 0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00, + 0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x80,0x00,0x00,0x00,0x00, + 0x01,0x00,0x80,0x00,0x00,0x00,0x00,0x02,0x00,0x80,0x00,0xf8,0x3f,0x00,0x02, + 0x00,0x80,0xe0,0x01,0x00,0x0f,0x02,0x00,0x80,0x0c,0x00,0x00,0x60,0x02,0x00, + 0x40,0x00,0x00,0x00,0x00,0x04,0x00,0x40,0x00,0x00,0x00,0x00,0x04,0x00,0x40, + 0x00,0x00,0x00,0x00,0x04,0x00,0x20,0x80,0xff,0xff,0x03,0x08,0x00,0x10,0x7e, + 0x00,0x00,0xfc,0x10,0x00,0xc8,0x01,0x00,0x00,0x00,0x27,0x00,0x3c,0x03,0x00, + 0x00,0x80,0x79,0x00,0x06,0xfc,0x00,0x00,0x7e,0xc0,0x00,0x02,0x00,0xff,0xff, + 0x01,0x80,0x00,0x02,0x00,0x00,0x00,0x00,0x80,0x00,0x04,0x00,0x00,0x00,0x00, + 0x40,0x00,0x38,0x00,0x00,0x00,0x00,0x38,0x00,0xc0,0x01,0x00,0x00,0x00,0x07, + 0x00,0x00,0x7e,0x00,0x00,0xfc,0x00,0x00,0x00,0x80,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}; diff --git a/bitmaps/m49s.bm b/bitmaps/m49s.bm new file mode 100644 index 0000000..54c6c7b --- /dev/null +++ b/bitmaps/m49s.bm @@ -0,0 +1,26 @@ +#define m49s_width 49 +#define m49s_height 49 +static char m49s_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,0x01,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x00,0x00,0x00,0x00,0xc0, + 0x07,0x00,0x00,0x00,0x00,0x00,0xe0,0x0f,0x00,0x00,0x00,0x00,0x00,0xe0,0x0f, + 0x00,0x00,0x00,0x00,0x00,0xe0,0x0f,0x00,0x00,0x00,0x00,0x00,0xc0,0x07,0x00, + 0x00,0x00,0x00,0x00,0xc0,0x07,0x00,0x00,0x00,0x00,0x00,0xc0,0x07,0x00,0x00, + 0x00,0x00,0x00,0x40,0x04,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0x01,0x00,0x00, + 0x00,0x80,0xff,0xff,0x03,0x00,0x00,0x00,0xf0,0xff,0xff,0x1f,0x00,0x00,0x00, + 0xfc,0xff,0xff,0x7f,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x00,0x00,0x00,0xfe, + 0xff,0xff,0xff,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x00,0x00,0x00,0xff,0xff, + 0xff,0xff,0x01,0x00,0x00,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0xff,0xff,0xff, + 0xff,0x01,0x00,0x00,0xff,0xff,0xff,0xff,0x01,0x00,0x80,0xff,0xff,0xff,0xff, + 0x01,0x00,0x80,0xff,0xff,0xff,0xff,0x03,0x00,0x80,0xff,0x07,0xc0,0xff,0x03, + 0x00,0x80,0x1f,0xfe,0xff,0xf0,0x03,0x00,0x80,0xf3,0xff,0xff,0x9f,0x03,0x00, + 0xc0,0xff,0xff,0xff,0xff,0x07,0x00,0xc0,0xff,0xff,0xff,0xff,0x07,0x00,0xc0, + 0xff,0xff,0xff,0xff,0x07,0x00,0xe0,0x7f,0x00,0x00,0xfc,0x0f,0x00,0xf0,0x81, + 0xff,0xff,0x03,0x1f,0x00,0x38,0xfe,0xff,0xff,0xff,0x38,0x00,0xcc,0xfc,0xff, + 0xff,0x3f,0x67,0x00,0xf6,0x03,0xff,0xff,0xc1,0xdf,0x00,0xfe,0xff,0x00,0x00, + 0xfe,0xff,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0x00,0xfc,0xff,0xff,0xff,0xff, + 0x7f,0x00,0xf8,0xff,0xff,0xff,0xff,0x3f,0x00,0xc0,0xff,0xff,0xff,0xff,0x07, + 0x00,0x00,0xfe,0xff,0xff,0xff,0x00,0x00,0x00,0x80,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}; diff --git a/bitmaps/m72o.bm b/bitmaps/m72o.bm new file mode 100644 index 0000000..8da3304 --- /dev/null +++ b/bitmaps/m72o.bm @@ -0,0 +1,47 @@ +#define m72o_width 72 +#define m72o_height 72 +static char m72o_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,0x10,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x7c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xee,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xc7,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x83,0x03, + 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x03,0x00,0x00,0x00,0x00,0x00,0x00, + 0x80,0x01,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x83,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x83,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x83,0x01, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x83,0x01,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xc6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc6,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xf8,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff, + 0x03,0x00,0x00,0x00,0x00,0xe0,0x07,0x00,0xc0,0x0f,0x00,0x00,0x00,0x00,0xfc, + 0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x70,0x00,0x00, + 0x00,0x00,0x07,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x80,0x03,0x00,0x00,0x00, + 0xc0,0x01,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x80,0x01, + 0x00,0x00,0x00,0x80,0x01,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x03,0x00, + 0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0xc0,0x00,0x00,0x00,0x00, + 0x00,0x03,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x60,0x00, + 0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x06,0x00, + 0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x60,0x00,0x00,0x00,0x00, + 0x00,0x06,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x30,0x00, + 0xf8,0xff,0x7f,0x00,0x0c,0x00,0x00,0x30,0xf0,0xfb,0xff,0x7f,0x1f,0x0c,0x00, + 0x00,0x30,0xff,0x03,0x00,0x00,0xff,0x0c,0x00,0x00,0x30,0x0f,0x00,0x00,0x00, + 0xe0,0x0c,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x18,0x00, + 0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x18,0x00, + 0x00,0x1c,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x0e,0x00,0x00,0x00,0x00, + 0x00,0x70,0x00,0x00,0x07,0x80,0xff,0xff,0xff,0x01,0xe0,0x00,0x80,0x03,0xff, + 0xff,0xff,0xff,0xff,0xc0,0x01,0xc0,0xf9,0x7f,0x00,0x00,0x00,0xfc,0x9f,0x03, + 0xe0,0xff,0x00,0x00,0x00,0x00,0x80,0xff,0x07,0xf0,0xe3,0xff,0x03,0x00,0xc0, + 0xff,0xe7,0x0f,0x78,0x00,0xff,0xff,0xff,0xff,0xff,0x00,0x1e,0x38,0x00,0x00, + 0xfc,0xff,0x7f,0x00,0x00,0x1c,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c, + 0xf0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xe0,0x0f,0x00,0x00,0x00,0x00, + 0x00,0xf8,0x07,0x80,0xff,0x00,0x00,0x00,0x00,0xc0,0xff,0x01,0x00,0xf8,0xff, + 0x01,0x00,0xc0,0xff,0x1f,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0x00,0x00, + 0x00,0x00,0x80,0xff,0xff,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, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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/m72s.bm b/bitmaps/m72s.bm new file mode 100644 index 0000000..c4b1469 --- /dev/null +++ b/bitmaps/m72s.bm @@ -0,0 +1,47 @@ +#define m72s_width 72 +#define m72s_height 72 +static char m72s_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,0x10,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x7c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0x03, + 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00, + 0x80,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x01, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xc6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc6,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xf8,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff, + 0x03,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0xfc, + 0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x7f,0x00,0x00, + 0x00,0x00,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff, + 0xff,0x01,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x80,0xff, + 0xff,0xff,0xff,0xff,0x01,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0x03,0x00, + 0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0xc0,0xff,0xff,0xff,0xff, + 0xff,0x03,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0xe0,0xff, + 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0x07,0x00, + 0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0xe0,0xff,0xff,0xff,0xff, + 0xff,0x07,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0xf0,0xff, + 0x07,0x00,0x80,0xff,0x0f,0x00,0x00,0xf0,0x0f,0x04,0x00,0x80,0xe0,0x0f,0x00, + 0x00,0xf0,0x00,0xfc,0xff,0xff,0x00,0x0f,0x00,0x00,0xf0,0xf0,0xff,0xff,0xff, + 0x1f,0x0f,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0xf8,0xff, + 0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0x1f,0x00, + 0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0xfe,0xff,0xff,0xff,0xff, + 0xff,0x7f,0x00,0x00,0xff,0x7f,0x00,0x00,0x00,0xfe,0xff,0x00,0x80,0xff,0x00, + 0x00,0x00,0x00,0x00,0xff,0x01,0xc0,0x07,0x80,0xff,0xff,0xff,0x03,0xe0,0x03, + 0xe0,0x01,0xff,0xff,0xff,0xff,0x7f,0x80,0x07,0xf0,0x18,0x00,0xfc,0xff,0x3f, + 0x00,0x18,0x0f,0xf8,0xff,0x00,0x00,0x00,0x00,0x00,0xff,0x1f,0xf8,0xff,0xff, + 0x03,0x00,0x80,0xff,0xff,0x1f,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f, + 0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xe0,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0x07,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0xf8,0xff, + 0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0x00,0x00, + 0x00,0x00,0x80,0xff,0xff,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, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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/o33o.bm b/bitmaps/o33o.bm new file mode 100644 index 0000000..c036a30 --- /dev/null +++ b/bitmaps/o33o.bm @@ -0,0 +1,16 @@ +#define o33o_width 33 +#define o33o_height 33 +static char o33o_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x20, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, +0x90, 0x07, 0x00, 0x00, 0x00, 0x10, 0x38, 0x00, 0x00, 0x00, 0x08, 0xc0, 0x03, 0x00, 0x00, +0x1c, 0x00, 0x3c, 0x00, 0x00, 0x64, 0x00, 0xc0, 0x01, 0x00, 0x80, 0x01, 0x00, 0x1e, 0x00, +0x00, 0x06, 0x00, 0x60, 0x00, 0x00, 0xf8, 0x3f, 0x40, 0x00, 0x00, 0x10, 0x20, 0x40, 0x00, +0x00, 0x10, 0x20, 0xa0, 0x00, 0xf0, 0x1f, 0xe0, 0xbf, 0x00, 0x10, 0x00, 0x00, 0x70, 0x00, +0x10, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, +0x10, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, +0x10, 0x07, 0xe0, 0x10, 0x00, 0x90, 0x08, 0x10, 0x11, 0x00, 0xf0, 0xf8, 0x1f, 0x1f, 0x00, +0x80, 0x08, 0x10, 0x01, 0x00, 0x00, 0x07, 0xe0, 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/o33s.bm b/bitmaps/o33s.bm new file mode 100644 index 0000000..d8e599c --- /dev/null +++ b/bitmaps/o33s.bm @@ -0,0 +1,16 @@ +#define o33s_width 33 +#define o33s_height 33 +static char o33s_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x20, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, +0xf0, 0x07, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x03, 0x00, 0x00, +0xfc, 0xff, 0x3f, 0x00, 0x00, 0xe4, 0xff, 0xff, 0x01, 0x00, 0x80, 0xff, 0xff, 0x1f, 0x00, +0x00, 0xfe, 0xff, 0x7f, 0x00, 0x00, 0x08, 0xc0, 0x7f, 0x00, 0x00, 0xf0, 0xdf, 0x7f, 0x00, +0x00, 0xf0, 0xdf, 0xbf, 0x00, 0xf0, 0xff, 0x1f, 0xa0, 0x00, 0xf0, 0xff, 0xff, 0x6f, 0x00, +0xf0, 0xff, 0xff, 0x1f, 0x00, 0xf0, 0xff, 0xff, 0x1f, 0x00, 0xf0, 0xff, 0xff, 0x1f, 0x00, +0xf0, 0xff, 0xff, 0x1f, 0x00, 0xf0, 0xff, 0xff, 0x1f, 0x00, 0xf0, 0xf8, 0x1f, 0x1f, 0x00, +0x70, 0xf7, 0xef, 0x1e, 0x00, 0xb0, 0xef, 0xf7, 0x1d, 0x00, 0xf0, 0xff, 0xff, 0x1f, 0x00, +0x80, 0x0f, 0xf0, 0x01, 0x00, 0x00, 0x07, 0xe0, 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/o49o.bm b/bitmaps/o49o.bm new file mode 100644 index 0000000..c323135 --- /dev/null +++ b/bitmaps/o49o.bm @@ -0,0 +1,26 @@ +#define o49o_width 49 +#define o49o_height 49 +static char o49o_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,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x00,0x00,0x00, + 0x00,0x00,0x20,0x0e,0x00,0x00,0x00,0x00,0x00,0x20,0xf0,0x00,0x00,0x00,0x00, + 0x00,0x20,0x00,0x07,0x00,0x00,0x00,0x00,0x10,0x00,0x38,0x00,0x00,0x00,0x00, + 0x10,0x00,0xc0,0x03,0x00,0x00,0x00,0x70,0x00,0x00,0x1c,0x00,0x00,0x00,0x80, + 0x01,0x00,0xe0,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x07,0x00,0x00,0x00,0x18, + 0x00,0x00,0x78,0x00,0x00,0x00,0x60,0x00,0x00,0x80,0x03,0x00,0x00,0x80,0x01, + 0x00,0x00,0x0c,0x00,0x00,0x00,0xfe,0xff,0x03,0x10,0x00,0x00,0x00,0x02,0x00, + 0x02,0x10,0x00,0x00,0x00,0x02,0x00,0x02,0x18,0x00,0xc0,0xff,0x03,0x00,0xfe, + 0x0f,0x00,0x40,0x00,0x00,0x00,0x00,0x1c,0x00,0x40,0x00,0x00,0x00,0x00,0x14, + 0x00,0x40,0x00,0x00,0x00,0x00,0x1c,0x00,0x40,0x00,0x00,0x00,0x00,0x04,0x00, + 0x40,0x00,0x00,0x00,0x00,0x04,0x00,0x40,0x00,0x00,0x00,0x00,0x04,0x00,0x40, + 0x00,0x00,0x00,0x00,0x04,0x00,0x40,0x00,0x00,0x00,0x00,0x04,0x00,0x40,0x00, + 0x00,0x00,0x00,0x04,0x00,0x40,0x00,0x00,0x00,0x00,0x04,0x00,0x40,0x00,0x00, + 0x00,0x00,0x04,0x00,0x40,0x00,0x00,0x00,0x00,0x04,0x00,0x40,0x30,0x00,0x00, + 0x18,0x04,0x00,0x40,0xcc,0x00,0x00,0x66,0x04,0x00,0x40,0x84,0x00,0x00,0x42, + 0x04,0x00,0xc0,0x03,0xff,0xff,0x83,0x07,0x00,0x00,0x02,0x01,0x00,0x81,0x00, + 0x00,0x00,0x84,0x00,0x00,0x42,0x00,0x00,0x00,0xcc,0x00,0x00,0x66,0x00,0x00, + 0x00,0x30,0x00,0x00,0x18,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/o49s.bm b/bitmaps/o49s.bm new file mode 100644 index 0000000..477dce4 --- /dev/null +++ b/bitmaps/o49s.bm @@ -0,0 +1,26 @@ +#define o49s_width 49 +#define o49s_height 49 +static char o49s_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,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x00,0x00,0x00, + 0x00,0x00,0xe0,0x0f,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0x00,0x00,0x00,0x00, + 0x00,0xe0,0xff,0x07,0x00,0x00,0x00,0x00,0xf0,0xff,0x3f,0x00,0x00,0x00,0x00, + 0xf0,0xff,0xff,0x03,0x00,0x00,0x00,0xf0,0xff,0xff,0x1f,0x00,0x00,0x00,0x80, + 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0x07,0x00,0x00,0x00,0xf8, + 0xff,0xff,0x7f,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0x03,0x00,0x00,0x80,0xff, + 0xff,0xff,0x0f,0x00,0x00,0x00,0x02,0x00,0xfc,0x1f,0x00,0x00,0x00,0xfe,0xff, + 0xfd,0x1f,0x00,0x00,0x00,0xfe,0xff,0xfd,0x1f,0x00,0xc0,0xff,0xff,0xff,0x01, + 0x08,0x00,0xc0,0xff,0xff,0xff,0xff,0x1b,0x00,0xc0,0xff,0xff,0xff,0xff,0x1b, + 0x00,0xc0,0xff,0xff,0xff,0xff,0x1b,0x00,0xc0,0xff,0xff,0xff,0xff,0x07,0x00, + 0xc0,0xff,0xff,0xff,0xff,0x07,0x00,0xc0,0xff,0xff,0xff,0xff,0x07,0x00,0xc0, + 0xff,0xff,0xff,0xff,0x07,0x00,0xc0,0xff,0xff,0xff,0xff,0x07,0x00,0xc0,0xff, + 0xff,0xff,0xff,0x07,0x00,0xc0,0xff,0xff,0xff,0xff,0x07,0x00,0xc0,0xff,0xff, + 0xff,0xff,0x07,0x00,0xc0,0xff,0xff,0xff,0xff,0x07,0x00,0xc0,0xcf,0xff,0xff, + 0xe7,0x07,0x00,0xc0,0x87,0xff,0xff,0xc3,0x07,0x00,0xc0,0x03,0xff,0xff,0x81, + 0x07,0x00,0xc0,0x03,0xff,0xff,0x81,0x07,0x00,0x00,0x02,0x01,0x00,0x81,0x00, + 0x00,0x00,0x84,0x00,0x00,0x42,0x00,0x00,0x00,0xcc,0x00,0x00,0x66,0x00,0x00, + 0x00,0x30,0x00,0x00,0x18,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/o72o.bm b/bitmaps/o72o.bm new file mode 100644 index 0000000..e9c671f --- /dev/null +++ b/bitmaps/o72o.bm @@ -0,0 +1,47 @@ +#define o72o_width 72 +#define o72o_height 72 +static char o72o_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,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x1f,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x80,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xf1,0x0f, + 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x7f,0x00,0x00,0x00,0x00,0x00,0x00, + 0xc0,0x00,0xf8,0x03,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0xc0,0x1f,0x00,0x00, + 0x00,0x00,0x00,0xe0,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xf0,0x01,0x00, + 0xf0,0x07,0x00,0x00,0x00,0x00,0xf0,0x07,0x00,0x00,0x7f,0x00,0x00,0x00,0x00, + 0x30,0x1f,0x00,0x00,0xf8,0x03,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0xc0,0x1f, + 0x00,0x00,0x00,0x00,0xf0,0x03,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x80,0x0f, + 0x00,0x00,0xe0,0x07,0x00,0x00,0x00,0x00,0x7e,0x00,0x00,0x00,0x7f,0x00,0x00, + 0x00,0x00,0xf8,0x01,0x00,0x00,0xf8,0x03,0x00,0x00,0x00,0xe0,0x07,0x00,0x00, + 0xc0,0x1f,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0x03,0xfe,0x01,0x00,0x00,0xe0, + 0xff,0xff,0xff,0x03,0xe0,0x07,0x00,0x00,0x60,0x00,0x00,0x00,0x03,0x00,0x07, + 0x00,0x00,0x60,0x00,0x00,0x00,0x03,0x00,0x06,0x00,0xff,0x7f,0x00,0x00,0x00, + 0xff,0x7f,0x06,0x00,0xff,0x7f,0x00,0x00,0x00,0xff,0x7f,0x03,0x00,0x03,0x00, + 0x00,0x00,0x00,0x00,0x60,0x03,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x60,0x07, + 0x00,0x03,0x00,0x00,0x00,0x00,0x00,0xe0,0x0f,0x00,0x03,0x00,0x00,0x00,0x00, + 0x00,0xe0,0x0c,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0xe0,0x0c,0x00,0x03,0x00, + 0x00,0x00,0x00,0x00,0xe0,0x07,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0xe0,0x03, + 0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x03,0x00,0x00,0x00,0x00, + 0x00,0x60,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x03,0x00, + 0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x60,0x00, + 0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x03,0x00,0x00,0x00,0x00, + 0x00,0x60,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x03,0x00, + 0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x60,0x00, + 0x00,0x03,0xfc,0x00,0x00,0xc0,0x0f,0x60,0x00,0x00,0x03,0xfe,0x01,0x00,0xe0, + 0x1f,0x60,0x00,0x00,0x03,0x87,0x03,0x00,0x70,0x38,0x60,0x00,0x00,0x83,0x03, + 0x07,0x00,0x38,0x70,0x60,0x00,0x00,0xff,0x01,0xfe,0xff,0x1f,0xe0,0x7f,0x00, + 0x00,0xff,0x01,0xfe,0xff,0x1f,0xe0,0x7f,0x00,0x00,0x80,0x01,0x06,0x00,0x18, + 0x60,0x00,0x00,0x00,0x80,0x01,0x06,0x00,0x18,0x60,0x00,0x00,0x00,0x00,0x03, + 0x07,0x00,0x30,0x70,0x00,0x00,0x00,0x00,0x87,0x03,0x00,0x70,0x38,0x00,0x00, + 0x00,0x00,0xfe,0x01,0x00,0xe0,0x1f,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0xc0, + 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}; diff --git a/bitmaps/o72s.bm b/bitmaps/o72s.bm new file mode 100644 index 0000000..901ff59 --- /dev/null +++ b/bitmaps/o72s.bm @@ -0,0 +1,47 @@ +#define o72s_width 72 +#define o72s_height 72 +static char o72s_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,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x1f,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x80,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0x0f, + 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00, + 0xc0,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0x1f,0x00,0x00, + 0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff, + 0xff,0x07,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00, + 0x30,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0x1f, + 0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x80,0xff, + 0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x7f,0x00,0x00, + 0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0xe0,0xff,0xff,0xff, + 0xff,0x1f,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0xfc,0xff,0x01,0x00,0x00,0x60, + 0x00,0x00,0x00,0xfc,0xff,0x07,0x00,0x00,0xe0,0xff,0xff,0xff,0xfc,0xff,0x07, + 0x00,0x00,0xe0,0xff,0xff,0xff,0xfc,0xff,0x07,0x00,0xff,0xff,0xff,0xff,0xff, + 0x00,0x80,0x07,0x00,0xff,0xff,0xff,0xff,0xff,0x00,0x80,0x03,0x00,0xff,0xff, + 0xff,0xff,0xff,0xff,0x9f,0x03,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x9f,0x07, + 0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x9f,0x0f,0x00,0xff,0xff,0xff,0xff,0xff, + 0xff,0x9f,0x0f,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x9f,0x0f,0x00,0xff,0xff, + 0xff,0xff,0xff,0xff,0x9f,0x07,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03, + 0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0xff,0xff,0xff,0xff,0xff, + 0xff,0x7f,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0xff,0xff, + 0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00, + 0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0xff,0xff,0xff,0xff,0xff, + 0xff,0x7f,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0xff,0xff, + 0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00, + 0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0xff,0x87,0xff,0xff,0xff, + 0xf0,0x7f,0x00,0x00,0xff,0x03,0xff,0xff,0x7f,0xe0,0x7f,0x00,0x00,0xff,0x01, + 0xfe,0xff,0x3f,0xc0,0x7f,0x00,0x00,0xff,0x01,0xfe,0xff,0x3f,0xc0,0x7f,0x00, + 0x00,0xff,0x01,0xfe,0xff,0x3f,0xc0,0x7f,0x00,0x00,0x80,0x01,0x06,0x00,0x30, + 0xc0,0x00,0x00,0x00,0x80,0x01,0x06,0x00,0x30,0xc0,0x00,0x00,0x00,0x00,0x03, + 0x07,0x00,0x60,0xe0,0x00,0x00,0x00,0x00,0x87,0x03,0x00,0xe0,0x70,0x00,0x00, + 0x00,0x00,0xfe,0x01,0x00,0xc0,0x3f,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x80, + 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}; diff --git a/bitmaps/s49o.bm b/bitmaps/s49o.bm new file mode 100644 index 0000000..f8ad738 --- /dev/null +++ b/bitmaps/s49o.bm @@ -0,0 +1,27 @@ +#define s49o_width 49 +#define s49o_height 49 +static char s49o_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, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x41, +0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x01, +0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x00, +0x00, 0x00, 0xfe, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x03, 0x07, 0x00, 0x30, 0x00, 0x00, +0x00, 0x01, 0x38, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0x00, 0x80, +0x00, 0x00, 0x03, 0xc0, 0x01, 0x00, 0x40, 0x00, 0x00, 0x04, 0x06, 0x01, 0x00, 0x40, 0x00, +0x00, 0x08, 0x06, 0x02, 0x00, 0x40, 0x00, 0x00, 0x30, 0x00, 0x02, 0x00, 0x40, 0x00, 0x00, +0xd0, 0x00, 0x02, 0x00, 0x40, 0x00, 0x00, 0x08, 0x07, 0x03, 0x00, 0x40, 0x00, 0x00, 0x08, +0xf8, 0x02, 0x00, 0x80, 0x00, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x80, 0x00, 0x00, 0x04, 0x00, +0x70, 0x00, 0x80, 0x00, 0x00, 0x02, 0x00, 0x10, 0x00, 0x80, 0x00, 0x00, 0x02, 0x00, 0x20, +0x00, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, +0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, +0x02, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, +0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x40, +0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, +0x00, 0x00, 0x00, 0x00, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x40, 0x00, 0x00, +0x00, 0x00, 0x00, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x40, 0x00, 0x00, 0x00, +0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, +0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; diff --git a/bitmaps/s49s.bm b/bitmaps/s49s.bm new file mode 100644 index 0000000..5ced2c2 --- /dev/null +++ b/bitmaps/s49s.bm @@ -0,0 +1,27 @@ +#define s49s_width 49 +#define s49s_height 49 +static char s49s_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, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x7f, +0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x01, +0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x03, 0x00, +0x00, 0x00, 0x02, 0xff, 0xff, 0x0c, 0x00, 0x00, 0x00, 0xff, 0xf8, 0xff, 0x3f, 0x00, 0x00, +0x00, 0xff, 0xc7, 0xff, 0x7f, 0x00, 0x00, 0x80, 0xff, 0x3f, 0xff, 0xbf, 0x00, 0x00, 0x80, +0xff, 0xff, 0xfc, 0x3f, 0x01, 0x00, 0xc0, 0xff, 0xff, 0xfb, 0xf9, 0x01, 0x00, 0xc0, 0xff, +0xff, 0xf7, 0xf9, 0x03, 0x00, 0xc0, 0xff, 0xff, 0xef, 0xff, 0x03, 0x00, 0xc0, 0xff, 0xff, +0xdf, 0xff, 0x03, 0x00, 0xc0, 0xff, 0xff, 0x0f, 0xff, 0x03, 0x00, 0xc0, 0xff, 0xff, 0x0f, +0xf8, 0x02, 0x00, 0x80, 0xff, 0xff, 0x07, 0x00, 0x0c, 0x00, 0x80, 0xff, 0xff, 0x07, 0x00, +0x70, 0x00, 0x80, 0xff, 0xff, 0x03, 0x00, 0x10, 0x00, 0x80, 0xff, 0xff, 0x03, 0x00, 0x20, +0x00, 0x80, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, +0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, +0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, +0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f, +0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x7f, 0x00, +0x00, 0x00, 0x00, 0x00, 0xe0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x7f, 0x00, 0x00, +0x00, 0x00, 0x00, 0xe0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x7f, 0x00, 0x00, 0x00, +0x00, 0x00, 0xc0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x00, 0x00, 0x00, 0x00, +0x00, 0xc0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; diff --git a/bitmaps/s72o.bm b/bitmaps/s72o.bm new file mode 100644 index 0000000..aeadd43 --- /dev/null +++ b/bitmaps/s72o.bm @@ -0,0 +1,48 @@ +#define s72o_width 72 +#define s72o_height 72 +static char s72o_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, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x1f, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x60, 0x00, 0x00, 0x00, +0x00, 0x00, 0xf8, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0xc0, +0x01, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x80, 0x01, +0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x00, 0x00, 0x80, 0x1f, 0x00, 0x00, +0x00, 0xe0, 0xff, 0x07, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0x00, 0x70, 0x00, 0x3f, 0x00, 0x00, +0xe0, 0x00, 0x00, 0x00, 0x18, 0x00, 0xf8, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x18, 0x00, +0xe0, 0x07, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x1f, 0x00, 0x80, 0x07, 0x00, +0x00, 0x0c, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x06, 0x00, 0x00, 0xe0, 0x80, +0x07, 0x18, 0x00, 0x00, 0x06, 0x00, 0x00, 0xc0, 0x01, 0x07, 0x18, 0x00, 0x00, 0x06, 0x00, +0x00, 0x00, 0x03, 0x0f, 0x30, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x30, 0x00, +0x00, 0x06, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x30, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x73, +0x00, 0x30, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe3, 0x07, 0x38, 0x00, 0x00, 0x06, 0x00, +0x00, 0x80, 0x81, 0xff, 0x3f, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0x01, 0xf8, 0x77, 0x00, +0x00, 0x06, 0x00, 0x00, 0xc0, 0x01, 0x00, 0xe0, 0x01, 0x00, 0x06, 0x00, 0x00, 0xc0, 0x00, +0x00, 0xc0, 0x1f, 0x00, 0x0c, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x0c, 0x00, +0x00, 0x60, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0c, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x07, +0x00, 0x0c, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x0c, 0x00, 0x00, 0x18, 0x00, +0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, +0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, +0x00, 0x18, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x06, 0x00, +0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, +0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, +0x00, 0xc0, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x03, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, +0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x0c, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x03, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, +0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x03, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, +0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x06, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, +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 +}; diff --git a/bitmaps/s72s.bm b/bitmaps/s72s.bm new file mode 100644 index 0000000..acf8c0f --- /dev/null +++ b/bitmaps/s72s.bm @@ -0,0 +1,48 @@ +#define s72s_width 72 +#define s72s_height 72 +static char s72s_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, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x0f, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, +0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, +0x01, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x80, 0xff, +0xff, 0xff, 0x3f, 0x06, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xfe, 0xff, 0x1f, 0x1c, 0x00, 0x00, +0x00, 0x60, 0x00, 0xf8, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xc0, 0xff, 0xff, +0xff, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x07, 0xfe, 0xff, 0xff, 0x01, 0x00, 0x00, 0xf8, 0xff, +0x3f, 0xf0, 0xff, 0x3f, 0x02, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xc1, 0xff, 0x7f, 0x04, 0x00, +0x00, 0xfc, 0xff, 0xff, 0x87, 0xff, 0xff, 0x0c, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x1f, 0x7f, +0xf8, 0x1f, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x3f, 0xfe, 0xf8, 0x1f, 0x00, 0x00, 0xfe, 0xff, +0xff, 0x7f, 0xfc, 0xf0, 0x3f, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0x3f, 0x00, +0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xf3, +0xff, 0x3f, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xe3, 0xff, 0x3f, 0x00, 0x00, 0xfe, 0xff, +0xff, 0xff, 0x81, 0xff, 0x3f, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0xfc, 0x77, 0x00, +0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0xe0, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, +0x00, 0xc0, 0x1f, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x3f, 0x00, 0xfc, 0xff, +0xff, 0x7f, 0x00, 0x00, 0x00, 0x03, 0x00, 0xfc, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x07, +0x00, 0xfc, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0xfc, 0xff, 0xff, 0x1f, 0x00, +0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, +0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, +0x00, 0xf8, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x07, 0x00, +0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, +0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, +0x00, 0xc0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x03, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, +0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xfc, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x03, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, +0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xf8, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x03, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, +0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xf0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x07, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, +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 +}; diff --git a/bitmaps/test.c b/bitmaps/test.c new file mode 100644 index 0000000..23f144c --- /dev/null +++ b/bitmaps/test.c @@ -0,0 +1,13 @@ +#define NULL 0 +#define BlackPawn 22 +#include "bitmaps.h" + +/* + * This is a program that you can compile to test if the include tree + * of bitmaps is complete, and if all the bitmaps are without syntax errors + */ + +main() +{ + printf("Hi\n"); +} diff --git a/bitmaps/u49o.bm b/bitmaps/u49o.bm new file mode 100644 index 0000000..f6635d2 --- /dev/null +++ b/bitmaps/u49o.bm @@ -0,0 +1,27 @@ +#define u49o_width 49 +#define u49o_height 49 +static char u49o_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x10, +0x20, 0x00, 0x00, 0x00, 0x00, 0x50, 0x70, 0x50, 0x00, 0x00, 0x00, 0x00, 0x90, 0x90, 0x90, +0x00, 0x00, 0x00, 0x00, 0x20, 0x11, 0x89, 0x00, 0x00, 0x00, 0x00, 0x40, 0x12, 0x8e, 0x07, +0x00, 0x00, 0x00, 0x80, 0x24, 0x8b, 0x38, 0x00, 0x00, 0x00, 0x80, 0x98, 0x00, 0xc0, 0x00, +0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x06, 0x00, +0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x18, 0x00, 0x00, +0x00, 0x62, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, +0x12, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0xc0, 0x00, 0x00, 0x00, 0x01, +0x00, 0x02, 0xc0, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x80, 0x01, 0x00, 0x80, 0x00, 0x00, +0x02, 0x80, 0x01, 0x00, 0x80, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x40, 0x00, 0x00, 0x01, +0x00, 0x03, 0x00, 0x20, 0x00, 0x80, 0x02, 0x00, 0x03, 0x00, 0x20, 0x00, 0x40, 0x02, 0x00, +0x02, 0x00, 0x10, 0x00, 0x30, 0x02, 0x00, 0x06, 0x00, 0x10, 0x00, 0x08, 0x02, 0x00, 0x06, +0x00, 0xc8, 0x00, 0x06, 0x02, 0x00, 0x06, 0x00, 0x48, 0x00, 0x01, 0x01, 0x00, 0x04, 0x00, +0x08, 0x80, 0x00, 0x01, 0x00, 0x0c, 0x00, 0x08, 0xc4, 0x80, 0x00, 0x00, 0x0c, 0x00, 0x08, +0x22, 0x41, 0x00, 0x00, 0x0c, 0x00, 0x10, 0x12, 0x21, 0x00, 0x00, 0x0c, 0x00, 0xe0, 0x9b, +0x12, 0x00, 0x00, 0x0c, 0x00, 0x00, 0xac, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x40, 0x04, +0x00, 0x00, 0x18, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x02, 0x00, +0x00, 0x18, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x18, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, +0x18, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x18, +0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x18, 0x00, +0x00, 0xc0, 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 +}; diff --git a/bitmaps/u49s.bm b/bitmaps/u49s.bm new file mode 100644 index 0000000..a713050 --- /dev/null +++ b/bitmaps/u49s.bm @@ -0,0 +1,27 @@ +#define u49s_width 49 +#define u49s_height 49 +static char u49s_bits[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x10, +0x20, 0x00, 0x00, 0x00, 0x00, 0x50, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, 0x90, 0xf0, 0xf0, +0x00, 0x00, 0x00, 0x00, 0x20, 0xf1, 0xf9, 0x00, 0x00, 0x00, 0x00, 0x40, 0xf2, 0x77, 0x07, +0x00, 0x00, 0x00, 0x80, 0xe4, 0x74, 0x3f, 0x00, 0x00, 0x00, 0x80, 0x78, 0xff, 0xff, 0x00, +0x00, 0x00, 0x00, 0xf1, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xf2, 0xff, 0xff, 0x07, 0x00, +0x00, 0x00, 0xfc, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x7e, 0xff, 0xff, 0x1f, 0x00, 0x00, +0x00, 0x9e, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xde, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, +0xee, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfd, 0xff, 0x00, 0x00, 0x00, 0xff, +0xff, 0xfd, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfd, 0xff, 0x01, 0x00, 0x80, 0xff, 0xff, +0xfd, 0xff, 0x01, 0x00, 0x80, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0xc0, 0xff, 0xff, 0xff, +0xff, 0x03, 0x00, 0xe0, 0xff, 0xff, 0xfe, 0xff, 0x03, 0x00, 0xe0, 0xff, 0x7f, 0xfe, 0xff, +0x03, 0x00, 0xf0, 0xff, 0x3f, 0xfe, 0xff, 0x07, 0x00, 0xf0, 0xff, 0x0f, 0xfe, 0xff, 0x07, +0x00, 0x38, 0xff, 0x07, 0xfe, 0xff, 0x07, 0x00, 0xb8, 0xff, 0x01, 0xff, 0xff, 0x07, 0x00, +0xf8, 0xff, 0x00, 0xff, 0xff, 0x0f, 0x00, 0xf8, 0xfb, 0x80, 0xff, 0xff, 0x0f, 0x00, 0xf8, +0xbd, 0xc1, 0xff, 0xff, 0x0f, 0x00, 0xf0, 0xdd, 0xe1, 0xff, 0xff, 0x0f, 0x00, 0xe0, 0xfd, +0xf2, 0xff, 0xff, 0x0f, 0x00, 0x00, 0xec, 0xf8, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x40, 0xfc, +0xff, 0xff, 0x1f, 0x00, 0x00, 0x80, 0xfc, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0xfe, 0xff, +0xff, 0x1f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, +0x1f, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x1f, +0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x1f, 0x00, +0x00, 0xc0, 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 +}; diff --git a/bitmaps/u72o.bm b/bitmaps/u72o.bm new file mode 100644 index 0000000..1e85b1f --- /dev/null +++ b/bitmaps/u72o.bm @@ -0,0 +1,48 @@ +#define u72o_width 72 +#define u72o_height 72 +static char u72o_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, 0x06, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, +0x3c, 0x00, 0x0e, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x1c, 0xc0, 0x03, 0x00, +0x00, 0x00, 0x00, 0xd8, 0x00, 0x7c, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x03, 0xec, +0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x60, 0x06, 0xcc, 0x71, 0x0e, 0x00, 0x00, 0x00, 0x00, +0xc0, 0x0c, 0x8c, 0x33, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x80, 0x39, 0x0c, 0x3f, 0xfc, 0x01, +0x00, 0x00, 0x00, 0x00, 0x73, 0x0c, 0x3e, 0xfc, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x1c, +0x37, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x9d, 0x03, 0x18, 0xf0, 0x01, 0x00, 0x00, +0x00, 0x18, 0xcf, 0x01, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x30, 0x4e, 0x00, 0x00, 0x80, +0x0f, 0x00, 0x00, 0x00, 0x60, 0x0c, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0xc0, 0x0e, +0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, +0x00, 0xe0, 0xc3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x60, 0x70, 0x00, 0x00, 0x00, +0xf0, 0x01, 0x00, 0x00, 0x60, 0x78, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x60, 0x7c, +0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x60, 0x3c, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, +0x00, 0x70, 0x04, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, +0x00, 0x0f, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x38, 0x00, +0x00, 0x60, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, 0x00, 0x1e, 0x00, +0x00, 0x1c, 0x00, 0x00, 0x60, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x70, 0x00, +0x00, 0x3c, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x30, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x07, 0x00, +0x00, 0x30, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x03, 0x00, 0x00, 0x38, 0x00, 0x00, 0x78, 0x00, +0x80, 0x03, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x78, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x3e, 0x00, +0x00, 0xf8, 0x00, 0xc0, 0x00, 0x00, 0x80, 0x37, 0x00, 0x00, 0xf0, 0x00, 0xe0, 0x00, 0x00, +0xe0, 0x31, 0x00, 0x00, 0xf0, 0x00, 0x60, 0x00, 0x00, 0x78, 0x30, 0x00, 0x00, 0xf0, 0x00, +0x60, 0x06, 0x00, 0x1e, 0x30, 0x00, 0x00, 0xf0, 0x01, 0x70, 0x0f, 0x80, 0x07, 0x38, 0x00, +0x00, 0xe0, 0x01, 0x30, 0x0f, 0xc0, 0x01, 0x18, 0x00, 0x00, 0xe0, 0x01, 0x30, 0x07, 0xe0, +0x00, 0x1c, 0x00, 0x00, 0xe0, 0x01, 0x30, 0x07, 0x70, 0x00, 0x0c, 0x00, 0x00, 0xe0, 0x01, +0x30, 0xc0, 0x38, 0x00, 0x0e, 0x00, 0x00, 0xe0, 0x03, 0x30, 0xc0, 0x7c, 0x00, 0x07, 0x00, +0x00, 0xc0, 0x03, 0x70, 0xe0, 0xec, 0x01, 0x03, 0x00, 0x00, 0xc0, 0x03, 0xe0, 0x70, 0x8e, +0x81, 0x03, 0x00, 0x00, 0xc0, 0x03, 0xc0, 0x7f, 0xe7, 0xc0, 0x01, 0x00, 0x00, 0xc0, 0x03, +0x00, 0xef, 0xcf, 0xe0, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0xc0, 0x5d, 0x70, 0x00, 0x00, +0x00, 0xc0, 0x03, 0x00, 0x00, 0xf8, 0x38, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xf0, +0x18, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0xc0, 0x07, +0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, +0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x80, +0x03, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x80, 0x07, +0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, +0x00, 0x80, 0x07, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x60, +0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, +0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0xe0, 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 +}; diff --git a/bitmaps/u72s.bm b/bitmaps/u72s.bm new file mode 100644 index 0000000..24e4215 --- /dev/null +++ b/bitmaps/u72s.bm @@ -0,0 +1,48 @@ +#define u72s_width 72 +#define u72s_height 72 +static char u72s_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, 0x06, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, +0x3c, 0x00, 0x0e, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x1c, 0xc0, 0x03, 0x00, +0x00, 0x00, 0x00, 0xd8, 0x00, 0x7c, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x03, 0xfc, +0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x60, 0x06, 0xfc, 0xf1, 0x0f, 0x00, 0x00, 0x00, 0x00, +0xc0, 0x0c, 0xfc, 0xf3, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x80, 0x39, 0xfc, 0xef, 0xf7, 0x01, +0x00, 0x00, 0x00, 0x00, 0x73, 0xfc, 0xe5, 0xe7, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xfc, +0xf4, 0xe7, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x7d, 0xfc, 0xef, 0xff, 0x01, 0x00, 0x00, +0x00, 0x18, 0x3f, 0xfe, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x30, 0xbe, 0xff, 0xff, 0xff, +0x0f, 0x00, 0x00, 0x00, 0x60, 0xfc, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0xc0, 0xfe, +0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, +0x00, 0xe0, 0x3f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xe0, 0x8f, 0xff, 0xff, 0xff, +0xff, 0x01, 0x00, 0x00, 0xe0, 0x87, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0xe0, 0x83, +0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0xe0, 0xc3, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, +0x00, 0xf0, 0xfb, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, +0xff, 0x0f, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0xf8, 0xff, +0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, +0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, +0xff, 0x3f, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, +0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0x00, 0xe0, 0xff, 0xff, +0xff, 0xf1, 0xff, 0xff, 0xff, 0x00, 0xe0, 0xff, 0xff, 0x7f, 0xf0, 0xff, 0xff, 0xff, 0x00, +0xe0, 0xf9, 0xff, 0x1f, 0xf0, 0xff, 0xff, 0xff, 0x01, 0xf0, 0xf0, 0xff, 0x07, 0xf8, 0xff, +0xff, 0xff, 0x01, 0xf0, 0xf0, 0xff, 0x01, 0xf8, 0xff, 0xff, 0xff, 0x01, 0xf0, 0xf8, 0xff, +0x00, 0xfc, 0xff, 0xff, 0xff, 0x01, 0xf0, 0xf8, 0x7f, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x01, +0xf0, 0xff, 0x3f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x03, 0xf0, 0xff, 0x7f, 0x00, 0xff, 0xff, +0xff, 0xff, 0x03, 0xf0, 0xff, 0xef, 0x01, 0xff, 0xff, 0xff, 0xff, 0x03, 0xe0, 0xff, 0x8f, +0x81, 0xff, 0xff, 0xff, 0xff, 0x03, 0xc0, 0xff, 0xe7, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x03, +0x00, 0xef, 0xcf, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0xc0, 0x5d, 0xf0, 0xff, 0xff, +0xff, 0xff, 0x03, 0x00, 0x00, 0xf8, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0xf0, +0xf8, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x07, +0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, +0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x80, +0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, +0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, +0xff, 0xff, 0x07, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0xe0, +0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, +0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0xe0, 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 +}; diff --git a/bitmaps/v49o.bm b/bitmaps/v49o.bm new file mode 100644 index 0000000..a58687b --- /dev/null +++ b/bitmaps/v49o.bm @@ -0,0 +1,27 @@ +#define v49o_width 49 +#define v49o_height 49 +static char v49o_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, 0xe0, +0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x38, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0xc0, +0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x04, +0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0f, 0x10, 0x00, +0x00, 0x00, 0x08, 0xc0, 0x10, 0x10, 0x00, 0x00, 0x00, 0x04, 0x30, 0x26, 0x20, 0x00, 0x00, +0x00, 0x04, 0x1c, 0x26, 0xd8, 0x00, 0x00, 0x00, 0x04, 0x60, 0x10, 0x58, 0x03, 0x00, 0x00, +0x02, 0x80, 0x0f, 0x20, 0x0c, 0x00, 0x00, 0x02, 0x00, 0x00, 0x1c, 0x10, 0x00, 0x00, 0x02, +0x00, 0x00, 0x02, 0x10, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x20, 0x00, 0x00, 0x01, 0x00, +0xe0, 0x1f, 0x20, 0x00, 0x00, 0x01, 0x00, 0x30, 0xe0, 0x23, 0x00, 0x00, 0x01, 0x00, 0x40, +0xc0, 0x25, 0x00, 0x00, 0x01, 0x00, 0x80, 0x7f, 0x18, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, +0x18, 0x00, 0x00, 0x01, 0x00, 0x80, 0x00, 0x08, 0x00, 0x00, 0x01, 0x00, 0x40, 0x00, 0x00, +0x00, 0x80, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, +0x80, 0x00, 0x00, 0x30, 0x03, 0x00, 0x00, 0x80, 0x00, 0x00, 0x06, 0x04, 0x00, 0x00, 0x80, +0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x80, 0x00, +0x00, 0x00, 0x27, 0x00, 0x00, 0x80, 0x00, 0x00, 0xc0, 0x48, 0x00, 0x00, 0x80, 0x00, 0x00, +0x20, 0xb0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x10, 0x40, 0x01, 0x00, 0xe0, 0x00, 0x00, 0x08, +0x80, 0x03, 0x00, 0x90, 0x00, 0x00, 0x08, 0x00, 0x06, 0x00, 0x88, 0x00, 0x00, 0x04, 0x00, +0x08, 0x00, 0x08, 0x01, 0x00, 0x08, 0x00, 0x10, 0x00, 0x08, 0x01, 0x00, 0x08, 0x00, 0x20, +0x00, 0x08, 0x01, 0x00, 0x10, 0x00, 0x20, 0x00, 0x10, 0x02, 0x00, 0x10, 0x00, 0x20, 0x00, +0x10, 0x02, 0x00, 0x20, 0x00, 0x20, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; diff --git a/bitmaps/v49s.bm b/bitmaps/v49s.bm new file mode 100644 index 0000000..5b0cc55 --- /dev/null +++ b/bitmaps/v49s.bm @@ -0,0 +1,27 @@ +#define v49s_width 49 +#define v49s_height 49 +static char v49s_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, 0xe0, +0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, +0x01, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x07, +0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xf0, 0x1f, 0x00, +0x00, 0x00, 0xf8, 0x3f, 0xef, 0x1f, 0x00, 0x00, 0x00, 0xfc, 0xcf, 0xd9, 0x3f, 0x00, 0x00, +0x00, 0xfc, 0xe3, 0xd9, 0xe7, 0x00, 0x00, 0x00, 0xfc, 0x9f, 0xef, 0xa7, 0x03, 0x00, 0x00, +0xfe, 0x7f, 0xf0, 0xdf, 0x0f, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xe3, 0x1f, 0x00, 0x00, 0xfe, +0xff, 0xff, 0xfd, 0x1f, 0x00, 0x00, 0xff, 0xff, 0xff, 0xfe, 0x3f, 0x00, 0x00, 0xff, 0xff, +0x1f, 0xe0, 0x3f, 0x00, 0x00, 0xff, 0xff, 0xcf, 0x1f, 0x3e, 0x00, 0x00, 0xff, 0xff, 0xbf, +0xff, 0x3d, 0x00, 0x00, 0xff, 0xff, 0xff, 0x7f, 0x18, 0x00, 0x00, 0xff, 0xff, 0xff, 0x01, +0x18, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x08, 0x00, 0x00, 0xff, 0xff, 0x7f, 0x00, 0x00, +0x00, 0x80, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xbf, 0x00, 0x00, 0x00, +0x80, 0xff, 0xff, 0xcf, 0x03, 0x00, 0x00, 0x80, 0xff, 0xff, 0xf9, 0x07, 0x00, 0x00, 0x80, +0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x80, 0xff, +0xff, 0xff, 0x38, 0x00, 0x00, 0x80, 0xff, 0xff, 0x3f, 0x77, 0x00, 0x00, 0x80, 0xff, 0xff, +0xdf, 0xcf, 0x00, 0x00, 0x80, 0xff, 0xff, 0xef, 0xbf, 0x01, 0x00, 0x60, 0xff, 0xff, 0xf7, +0x7f, 0x02, 0x00, 0x70, 0xff, 0xff, 0xf7, 0xff, 0x05, 0x00, 0x78, 0xff, 0xff, 0xfb, 0xff, +0x0f, 0x00, 0xf8, 0xfe, 0xff, 0xf7, 0xff, 0x1f, 0x00, 0xf8, 0xfe, 0xff, 0xf7, 0xff, 0x3f, +0x00, 0xf8, 0xfe, 0xff, 0xef, 0xff, 0x3f, 0x00, 0xf0, 0xfd, 0xff, 0xef, 0xff, 0x3f, 0x00, +0xf0, 0xfd, 0xff, 0xdf, 0xff, 0x3f, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; diff --git a/bitmaps/v72o.bm b/bitmaps/v72o.bm new file mode 100644 index 0000000..ec9c2c0 --- /dev/null +++ b/bitmaps/v72o.bm @@ -0,0 +1,48 @@ +#define v72o_width 72 +#define v72o_height 72 +static char v72o_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, +0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x07, 0x00, 0x00, 0x00, +0x00, 0x00, 0x80, 0x3f, 0x80, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x78, +0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, +0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, +0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xfc, 0x00, +0x0c, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x8f, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x06, +0x80, 0x33, 0x03, 0x18, 0x00, 0x00, 0x00, 0x00, 0x03, 0xe0, 0x79, 0x06, 0x36, 0x00, 0x00, +0x00, 0x00, 0x03, 0x78, 0x78, 0x06, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x03, 0xe0, 0x31, 0x03, +0xef, 0x00, 0x00, 0x00, 0x80, 0x01, 0x80, 0x87, 0x01, 0xf6, 0x07, 0x00, 0x00, 0x80, 0x01, +0x00, 0xfe, 0x00, 0x18, 0x1f, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x38, 0x00, +0x00, 0xc0, 0x00, 0x00, 0x00, 0x80, 0x03, 0x30, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, +0x00, 0x30, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x78, 0x00, 0x60, 0x00, 0x00, 0xc0, 0x00, +0x00, 0x00, 0xfe, 0x0f, 0x60, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x87, 0xff, 0x67, 0x00, +0x00, 0x60, 0x00, 0x00, 0x00, 0x06, 0xf0, 0x6f, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0xfc, +0xff, 0x79, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0xf8, 0x0f, 0x70, 0x00, 0x00, 0x60, 0x00, +0x00, 0x00, 0x10, 0x00, 0x20, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x18, 0x00, 0x20, 0x00, +0x00, 0x60, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x0c, +0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, +0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x80, 0x1b, 0x00, 0x00, 0x00, +0x00, 0x30, 0x00, 0x00, 0x1c, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x0e, 0xe0, +0x01, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x30, 0x00, +0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, +0x00, 0x30, 0x00, 0x00, 0x00, 0xe0, 0x19, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0xfc, +0x37, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x1e, 0x6e, 0x00, 0x00, 0x00, 0x30, 0x00, +0x00, 0x00, 0x07, 0xd8, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x80, 0x03, 0xf0, 0x01, 0x00, +0x00, 0x3c, 0x00, 0x00, 0x80, 0x01, 0xe0, 0x03, 0x00, 0x00, 0x3e, 0x00, 0x00, 0xc0, 0x00, +0x80, 0x07, 0x00, 0x00, 0x37, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x0e, 0x00, 0x80, 0x63, 0x00, +0x00, 0x60, 0x00, 0x00, 0x18, 0x00, 0x80, 0x61, 0x00, 0x00, 0x60, 0x00, 0x00, 0x70, 0x00, +0x80, 0x61, 0x00, 0x00, 0x60, 0x00, 0x00, 0x70, 0x00, 0x80, 0xe1, 0x00, 0x00, 0x60, 0x00, +0x00, 0xc0, 0x00, 0x80, 0xc1, 0x00, 0x00, 0xe0, 0x00, 0x00, 0xc0, 0x00, 0x00, 0xc3, 0x00, +0x00, 0xc0, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x83, 0x01, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x00, +0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, +0xff, 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 +}; diff --git a/bitmaps/v72s.bm b/bitmaps/v72s.bm new file mode 100644 index 0000000..b12d1ac --- /dev/null +++ b/bitmaps/v72s.bm @@ -0,0 +1,48 @@ +#define v72s_width 72 +#define v72s_height 72 +static char v72s_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, +0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x07, 0x00, 0x00, 0x00, +0x00, 0x00, 0x80, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x7f, +0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, +0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, +0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x03, 0xff, +0x0f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x78, 0xfe, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xfe, +0x7f, 0xcc, 0xfc, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xff, 0x1f, 0x87, 0xf9, 0x39, 0x00, 0x00, +0x00, 0x00, 0xff, 0x87, 0x87, 0xf9, 0x78, 0x00, 0x00, 0x00, 0x00, 0xff, 0x1f, 0xcf, 0xfc, +0xdc, 0x00, 0x00, 0x00, 0x80, 0xff, 0x7f, 0x7c, 0xfe, 0xcf, 0x07, 0x00, 0x00, 0x80, 0xff, +0xff, 0x01, 0xff, 0xe7, 0x1f, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x3f, 0x00, +0x00, 0xc0, 0xff, 0xff, 0xff, 0x7f, 0xfc, 0x3f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x3f, +0xff, 0x7f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x87, 0xff, 0x7f, 0x00, 0x00, 0xc0, 0xff, +0xff, 0xff, 0x01, 0xfc, 0x7f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xf8, 0x80, 0x7f, 0x00, +0x00, 0xe0, 0xff, 0xff, 0xff, 0xf9, 0x1f, 0x7e, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xf3, +0xff, 0x79, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xf7, 0x1d, 0x30, 0x00, 0x00, 0xe0, 0xff, +0xff, 0xff, 0x1f, 0x00, 0x30, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x10, 0x00, +0x00, 0xe0, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x0f, +0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, +0xff, 0xff, 0x1c, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x7f, 0x1e, 0x00, 0x00, 0x00, +0x00, 0xf0, 0xff, 0xff, 0xe7, 0xff, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xf1, 0xff, +0x01, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0xf0, 0xff, +0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, +0x00, 0xf0, 0xff, 0xff, 0xff, 0x1f, 0x1e, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x03, +0x38, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xe1, 0x71, 0x00, 0x00, 0x00, 0xf0, 0xff, +0xff, 0xff, 0xf8, 0xe7, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x7f, 0xfc, 0x8f, 0x01, 0x00, +0x00, 0xdc, 0xff, 0xff, 0x7f, 0xfe, 0x1f, 0x03, 0x00, 0x00, 0xce, 0xff, 0xff, 0x3f, 0xff, +0x7f, 0x04, 0x00, 0x00, 0xcf, 0xff, 0xff, 0x3f, 0xff, 0xff, 0x0d, 0x00, 0x80, 0x9f, 0xff, +0xff, 0x9f, 0xff, 0xff, 0x1f, 0x00, 0x80, 0x9f, 0xff, 0xff, 0x9f, 0xff, 0xff, 0x7f, 0x00, +0x80, 0x9f, 0xff, 0xff, 0x9f, 0xff, 0xff, 0x7f, 0x00, 0x80, 0x1f, 0xff, 0xff, 0x9f, 0xff, +0xff, 0xff, 0x00, 0x80, 0x3f, 0xff, 0xff, 0x1f, 0xff, 0xff, 0xff, 0x00, 0x00, 0x3f, 0xff, +0xff, 0x3f, 0xff, 0xff, 0xff, 0x00, 0x00, 0x7f, 0xfe, 0xff, 0x3f, 0xff, 0xff, 0xff, 0x00, +0x00, 0x7f, 0xfe, 0xff, 0x3f, 0xff, 0xff, 0xff, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, +0xff, 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 +}; diff --git a/bitmaps/w33o.bm b/bitmaps/w33o.bm new file mode 100644 index 0000000..84118b5 --- /dev/null +++ b/bitmaps/w33o.bm @@ -0,0 +1,16 @@ +#define w33o_width 33 +#define w33o_height 33 +static char w33o_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, 0xc0, 0x07, 0x00, 0x00, +0x00, 0x38, 0x78, 0x00, 0x00, 0x00, 0x04, 0x80, 0x01, 0x00, 0x00, 0x0f, 0x00, 0x02, 0x00, +0x80, 0xf0, 0x00, 0x04, 0x00, 0x40, 0x00, 0x0f, 0x08, 0x00, 0x20, 0x00, 0x30, 0x10, 0x00, +0x20, 0x00, 0xc0, 0x10, 0x00, 0x20, 0x00, 0x07, 0x23, 0x00, 0x10, 0x80, 0x0f, 0x22, 0x00, +0x10, 0x80, 0x0f, 0x2c, 0x00, 0x10, 0x00, 0x07, 0x10, 0x00, 0xe0, 0x01, 0x07, 0x10, 0x00, +0x10, 0x3e, 0x02, 0x20, 0x00, 0x10, 0xc0, 0x00, 0x20, 0x00, 0x10, 0x00, 0x07, 0x20, 0x00, +0x10, 0xc0, 0x39, 0x20, 0x00, 0x10, 0x3c, 0xc0, 0x20, 0x00, 0x90, 0x03, 0x00, 0x17, 0x00, +0x50, 0x00, 0x00, 0x14, 0x00, 0x20, 0x00, 0x00, 0x18, 0x00, 0x20, 0x00, 0x00, 0x08, 0x00, +0xc0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x80, 0x03, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + +}; diff --git a/bitmaps/w33s.bm b/bitmaps/w33s.bm new file mode 100644 index 0000000..db5b4f2 --- /dev/null +++ b/bitmaps/w33s.bm @@ -0,0 +1,16 @@ +#define w33s_width 33 +#define w33s_height 33 +static char w33s_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, 0xc0, 0x07, 0x00, 0x00, +0x00, 0xf8, 0x7f, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x01, 0x00, 0x00, 0xf3, 0xff, 0x03, 0x00, +0x80, 0x0f, 0xff, 0x07, 0x00, 0xc0, 0xff, 0xf0, 0x0f, 0x00, 0xe0, 0xff, 0xcf, 0x1f, 0x00, +0xe0, 0xff, 0x3f, 0x1f, 0x00, 0xe0, 0xff, 0xf8, 0x3c, 0x00, 0xf0, 0x7f, 0xf0, 0x3d, 0x00, +0xf0, 0x7f, 0xf0, 0x33, 0x00, 0xf0, 0xff, 0xf8, 0x1f, 0x00, 0x20, 0xfe, 0xf8, 0x1f, 0x00, +0xf0, 0xc1, 0xfd, 0x3f, 0x00, 0xf0, 0x3f, 0xff, 0x3f, 0x00, 0xf0, 0xff, 0xf8, 0x3f, 0x00, +0xf0, 0x3f, 0xc6, 0x3f, 0x00, 0xf0, 0xc3, 0x3f, 0x3f, 0x00, 0x70, 0xfc, 0xff, 0x18, 0x00, +0xb0, 0xff, 0xff, 0x1b, 0x00, 0xe0, 0xff, 0xff, 0x17, 0x00, 0xe0, 0xff, 0xff, 0x0f, 0x00, +0xc0, 0xff, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + +}; diff --git a/bitmaps/w49o.bm b/bitmaps/w49o.bm new file mode 100644 index 0000000..47411c3 --- /dev/null +++ b/bitmaps/w49o.bm @@ -0,0 +1,26 @@ +#define w49o_width 49 +#define w49o_height 49 +static char w49o_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,0xf0,0xff,0x00,0x00, + 0x00,0x00,0x00,0x0c,0x00,0x03,0x00,0x00,0x00,0x00,0x03,0x00,0x1c,0x00,0x00, + 0x00,0x80,0x00,0x00,0x20,0x00,0x00,0x00,0x60,0x00,0x00,0x40,0x00,0x00,0x00, + 0x10,0x00,0x00,0x80,0x00,0x00,0x00,0xf8,0x7f,0x00,0x00,0x01,0x00,0x00,0x04, + 0x80,0x0f,0x00,0x02,0x00,0x00,0x02,0x00,0xf0,0x00,0x02,0x00,0x00,0x02,0x00, + 0x00,0x0f,0x04,0x00,0x00,0x01,0x00,0x00,0x30,0x04,0x00,0x80,0x00,0x00,0x1f, + 0xc0,0x04,0x00,0x80,0x00,0x80,0x3f,0x00,0x05,0x00,0x80,0x00,0x80,0x3f,0x00, + 0x06,0x00,0x80,0x00,0x80,0x3f,0x00,0x04,0x00,0x80,0x00,0x80,0x3f,0x00,0x08, + 0x00,0x80,0x00,0x00,0x1f,0x00,0x08,0x00,0x80,0x00,0x00,0x1f,0x00,0x10,0x00, + 0x80,0x00,0x00,0x0e,0x00,0x10,0x00,0x80,0x00,0x00,0x0e,0x00,0x10,0x00,0x00, + 0xff,0x03,0x00,0x00,0x10,0x00,0x80,0x00,0x7c,0x00,0x00,0x10,0x00,0x80,0x00, + 0x80,0x1f,0x00,0x10,0x00,0x80,0x80,0x7f,0xe0,0x03,0x10,0x00,0x80,0x60,0x00, + 0x00,0x1c,0x10,0x00,0x80,0x18,0x00,0x00,0xe0,0x08,0x00,0x80,0x04,0x00,0x00, + 0x00,0x09,0x00,0x80,0x02,0x00,0x00,0x00,0x06,0x00,0x80,0x01,0x00,0x00,0x00, + 0x04,0x00,0x00,0x01,0x00,0x00,0x80,0x07,0x00,0x00,0x02,0x00,0x00,0xe0,0x00, + 0x00,0x00,0x1c,0x00,0x00,0x38,0x00,0x00,0x00,0xe0,0x03,0x00,0x0e,0x00,0x00, + 0x00,0x00,0xfc,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/w49s.bm b/bitmaps/w49s.bm new file mode 100644 index 0000000..2a8a5e7 --- /dev/null +++ b/bitmaps/w49s.bm @@ -0,0 +1,26 @@ +#define w49s_width 49 +#define w49s_height 49 +static char w49s_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,0xf0,0xff,0x00,0x00, + 0x00,0x00,0x00,0xfc,0xff,0x03,0x00,0x00,0x00,0x00,0xff,0xff,0x1f,0x00,0x00, + 0x00,0x80,0xff,0xff,0x3f,0x00,0x00,0x00,0xe0,0xff,0xff,0x7f,0x00,0x00,0x00, + 0xf0,0xff,0xff,0xff,0x00,0x00,0x00,0x08,0x80,0xff,0xff,0x01,0x00,0x00,0xfc, + 0x7f,0xf0,0xff,0x03,0x00,0x00,0xfe,0xff,0x0f,0xff,0x03,0x00,0x00,0xfe,0xff, + 0xff,0xf0,0x07,0x00,0x00,0xff,0xff,0xff,0xcf,0x07,0x00,0x80,0xff,0xff,0xe0, + 0x3f,0x07,0x00,0x80,0xff,0x7f,0xc0,0xff,0x06,0x00,0x80,0xff,0x7f,0xc0,0xff, + 0x05,0x00,0x80,0xff,0x7f,0xc0,0xff,0x07,0x00,0x80,0xff,0x7f,0xc0,0xff,0x0f, + 0x00,0x80,0xff,0xff,0xe0,0xff,0x0f,0x00,0x80,0xff,0xff,0xe0,0xff,0x1f,0x00, + 0x80,0xff,0xff,0xf1,0xff,0x1f,0x00,0x80,0xff,0xff,0xf1,0xff,0x1f,0x00,0x00, + 0x01,0xfc,0xff,0xff,0x1f,0x00,0x80,0xff,0x83,0xff,0xff,0x1f,0x00,0x80,0xff, + 0x7f,0xe0,0xff,0x1f,0x00,0x80,0x7f,0x80,0x1f,0xfc,0x1f,0x00,0x80,0x9f,0xff, + 0xff,0xe3,0x1f,0x00,0x80,0xe7,0xff,0xff,0x1f,0x0f,0x00,0x80,0xfb,0xff,0xff, + 0xff,0x0e,0x00,0x80,0xfd,0xff,0xff,0xff,0x05,0x00,0x80,0xfe,0xff,0xff,0xff, + 0x07,0x00,0x00,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0xfe,0xff,0xff,0xff,0x00, + 0x00,0x00,0xfc,0xff,0xff,0x3f,0x00,0x00,0x00,0xe0,0xff,0xff,0x0f,0x00,0x00, + 0x00,0x00,0xfc,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/w72o.bm b/bitmaps/w72o.bm new file mode 100644 index 0000000..6c687e4 --- /dev/null +++ b/bitmaps/w72o.bm @@ -0,0 +1,47 @@ +#define w72o_width 72 +#define w72o_height 72 +static char w72o_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,0xfc,0x03,0x00,0x00,0x00,0x00,0x00,0x00, + 0xf0,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x03,0xfc,0x03,0x00,0x00, + 0x00,0x00,0x00,0x3e,0x00,0xc0,0x1f,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00, + 0x7e,0x00,0x00,0x00,0x00,0xc0,0x03,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0xe0, + 0x01,0x00,0x00,0xc0,0x01,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x80,0x03,0x00, + 0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x1f,0x00,0x00,0x00, + 0x00,0x07,0x00,0x00,0x80,0xff,0x7f,0x00,0x00,0x00,0x0e,0x00,0x00,0xc0,0xf1, + 0xff,0x3f,0x00,0x00,0x1c,0x00,0x00,0xc0,0x00,0xe0,0xff,0x03,0x00,0x18,0x00, + 0x00,0xe0,0x00,0x00,0xe0,0x7f,0x00,0x38,0x00,0x00,0x60,0x00,0x00,0x00,0xfe, + 0x07,0x30,0x00,0x00,0x70,0x00,0x00,0x00,0xc0,0x3f,0x30,0x00,0x00,0x30,0x00, + 0x00,0x00,0x00,0xfc,0x30,0x00,0x00,0x38,0x00,0x00,0xf0,0x03,0xe0,0x61,0x00, + 0x00,0x18,0x00,0x00,0xf0,0x03,0x80,0x67,0x00,0x00,0x1c,0x00,0x00,0xf8,0x07, + 0x00,0x7f,0x00,0x00,0x0c,0x00,0x00,0xf8,0x07,0x00,0xfc,0x00,0x00,0x0c,0x00, + 0x00,0xfc,0x0f,0x00,0xf0,0x01,0x00,0x0c,0x00,0x00,0xfc,0x0f,0x00,0x80,0x01, + 0x00,0x0c,0x00,0x00,0xf8,0x07,0x00,0x80,0x01,0x00,0x0c,0x00,0x00,0xf8,0x07, + 0x00,0x80,0x01,0x00,0x0c,0x00,0x00,0xf0,0x03,0x00,0x80,0x01,0x00,0x0c,0x00, + 0x00,0xf0,0x03,0x00,0x80,0x01,0x00,0x0c,0x00,0x00,0xe0,0x01,0x00,0x80,0x01, + 0x00,0x18,0x00,0x00,0xe0,0x01,0x00,0x80,0x01,0x00,0x18,0x00,0x00,0xc0,0x00, + 0x00,0x80,0x03,0x00,0x18,0xfe,0x03,0x00,0x00,0x00,0x00,0x03,0x00,0xf8,0xff, + 0xff,0x00,0x00,0x00,0x00,0x03,0x00,0xf8,0x03,0xfe,0x3f,0x00,0x00,0x00,0x03, + 0x00,0x1c,0x00,0x00,0xfe,0x0f,0x00,0x00,0x03,0x00,0x0c,0x00,0xf8,0xff,0xff, + 0x00,0x80,0x03,0x00,0x0c,0xc0,0xff,0x03,0xf8,0x07,0x80,0x03,0x00,0x0c,0xf8, + 0x0f,0x00,0x80,0x3f,0x80,0x01,0x00,0x0c,0x7e,0x00,0x00,0x00,0xfc,0xc1,0x01, + 0x00,0x1c,0x0f,0x00,0x00,0x00,0xe0,0xcf,0x00,0x00,0xd8,0x03,0x00,0x00,0x00, + 0x00,0xfe,0x00,0x00,0xf8,0x01,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x78,0x00, + 0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x60,0x00, + 0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x7c,0x00,0x00,0x30,0x00,0x00,0x00,0x00, + 0x00,0x3e,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0xc0,0x0f,0x00,0x00,0xc0,0x0f, + 0x00,0x00,0x00,0xf8,0x03,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x7e,0x00,0x00, + 0x00,0x00,0xf0,0x0f,0x00,0xc0,0x0f,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff, + 0x03,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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/w72s.bm b/bitmaps/w72s.bm new file mode 100644 index 0000000..bcbc883 --- /dev/null +++ b/bitmaps/w72s.bm @@ -0,0 +1,47 @@ +#define w72s_width 72 +#define w72s_height 72 +static char w72s_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,0xfc,0x03,0x00,0x00,0x00,0x00,0x00,0x00, + 0xf0,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x03,0x00,0x00, + 0x00,0x00,0x00,0xfe,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff, + 0x7f,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xe0, + 0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0x03,0x00, + 0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0xff,0xff,0xff,0xff, + 0xff,0x07,0x00,0x00,0x80,0x07,0x80,0xff,0xff,0xff,0x0f,0x00,0x00,0xc0,0x0f, + 0x00,0xc0,0xff,0xff,0x1f,0x00,0x00,0xc0,0xff,0x1f,0x00,0xfc,0xff,0x1f,0x00, + 0x00,0xe0,0xff,0xff,0x1f,0x80,0xff,0x3f,0x00,0x00,0xe0,0xff,0xff,0xff,0x01, + 0xf8,0x3f,0x00,0x00,0xf0,0xff,0xff,0xff,0x3f,0xc0,0x3f,0x00,0x00,0xf0,0xff, + 0xff,0xff,0xff,0x03,0x3f,0x00,0x00,0xf8,0xff,0xff,0x0f,0xfc,0x1f,0x7e,0x00, + 0x00,0xf8,0xff,0xff,0x0f,0xfc,0x7f,0x78,0x00,0x00,0xfc,0xff,0xff,0x07,0xf8, + 0xff,0x60,0x00,0x00,0xfc,0xff,0xff,0x07,0xf8,0xff,0xe3,0x00,0x00,0xfc,0xff, + 0xff,0x03,0xf0,0xff,0xcf,0x01,0x00,0xfc,0xff,0xff,0x03,0xf0,0xff,0xff,0x01, + 0x00,0xfc,0xff,0xff,0x07,0xf8,0xff,0xff,0x01,0x00,0xfc,0xff,0xff,0x07,0xf8, + 0xff,0xff,0x01,0x00,0xfc,0xff,0xff,0x0f,0xfc,0xff,0xff,0x01,0x00,0xfc,0xff, + 0xff,0x0f,0xfc,0xff,0xff,0x01,0x00,0xfc,0xff,0xff,0x1f,0xfe,0xff,0xff,0x01, + 0x00,0xf8,0xff,0xff,0x1f,0xfe,0xff,0xff,0x01,0x00,0xf8,0xff,0xff,0x3f,0xff, + 0xff,0xff,0x03,0x00,0xf8,0x01,0xfc,0xff,0xff,0xff,0xff,0x03,0x00,0x18,0x00, + 0x00,0xff,0xff,0xff,0xff,0x03,0x00,0x18,0xfc,0x01,0xc0,0xff,0xff,0xff,0x03, + 0x00,0xfc,0xff,0xff,0x01,0xf0,0xff,0xff,0x03,0x00,0xfc,0xff,0x07,0x00,0x00, + 0xff,0xff,0x03,0x00,0xfc,0x3f,0x00,0xfc,0x07,0xf8,0xff,0x03,0x00,0xfc,0x07, + 0xf0,0xff,0x7f,0xc0,0xff,0x01,0x00,0xfc,0x81,0xff,0xff,0xff,0x03,0xfe,0x01, + 0x00,0xfc,0xf0,0xff,0xff,0xff,0x1f,0xf0,0x00,0x00,0x38,0xfc,0xff,0xff,0xff, + 0xff,0xe1,0x00,0x00,0x38,0xfe,0xff,0xff,0xff,0xff,0xe7,0x00,0x00,0xb8,0xff, + 0xff,0xff,0xff,0xff,0x6f,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0x7f,0x00, + 0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0xf0,0xff,0xff,0xff,0xff, + 0xff,0x3f,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0xc0,0xff, + 0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x7f,0x00,0x00, + 0x00,0x00,0xf0,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff, + 0x03,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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/wl49o.bm b/bitmaps/wl49o.bm new file mode 100644 index 0000000..9c5a5e0 --- /dev/null +++ b/bitmaps/wl49o.bm @@ -0,0 +1,27 @@ +#define wl49o_width 49 +#define wl49o_height 49 +static char wl49o_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, 0xf0, 0xff, 0x00, 0x00, +0x00, 0x00, 0x00, 0x0c, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x1c, 0x00, 0x00, +0x00, 0x80, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, +0x10, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0x01, 0x00, 0x00, 0x04, +0x80, 0x0f, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, +0x00, 0x0f, 0x04, 0x00, 0x00, 0x01, 0x00, 0x0e, 0x30, 0x04, 0x00, 0x80, 0x00, 0x80, 0x31, +0xc0, 0x04, 0x00, 0x80, 0x00, 0x40, 0x40, 0x00, 0x05, 0x00, 0x80, 0x00, 0x40, 0x40, 0x00, +0x06, 0x00, 0x80, 0x00, 0x20, 0x80, 0x00, 0x04, 0x00, 0x80, 0x00, 0x20, 0x80, 0x00, 0x08, +0x00, 0x80, 0x00, 0x40, 0x40, 0x00, 0x08, 0x00, 0x80, 0x00, 0x40, 0x40, 0x00, 0x10, 0x00, +0x80, 0x00, 0x80, 0x31, 0x00, 0x10, 0x00, 0x80, 0x00, 0x00, 0x0e, 0x00, 0x10, 0x00, 0x00, +0xff, 0x03, 0x00, 0x00, 0x10, 0x00, 0x80, 0x00, 0x7c, 0x00, 0x00, 0x10, 0x00, 0x80, 0x00, +0x80, 0x1f, 0x00, 0x10, 0x00, 0x80, 0x80, 0x7f, 0xe0, 0x03, 0x10, 0x00, 0x80, 0x60, 0x00, +0x00, 0x1c, 0x10, 0x00, 0x80, 0x18, 0x00, 0x00, 0xe0, 0x08, 0x00, 0x80, 0x04, 0x00, 0x00, +0x00, 0x09, 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, +0x04, 0x00, 0x00, 0x01, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0xe0, 0x00, +0x00, 0x00, 0x1c, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x0e, 0x00, 0x00, +0x00, 0x00, 0xfc, 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/wl49s.bm b/bitmaps/wl49s.bm new file mode 100644 index 0000000..bfe02b5 --- /dev/null +++ b/bitmaps/wl49s.bm @@ -0,0 +1,27 @@ +#define wl49s_width 49 +#define wl49s_height 49 +static char wl49s_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, 0xf0, 0xff, 0x00, 0x00, +0x00, 0x00, 0x00, 0xfc, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1f, 0x00, 0x00, +0x00, 0x80, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, +0xf0, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x08, 0x80, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfc, +0x7f, 0xf0, 0xff, 0x03, 0x00, 0x00, 0xfe, 0xff, 0x0f, 0xff, 0x03, 0x00, 0x00, 0xfe, 0xff, +0xff, 0xf0, 0x07, 0x00, 0x00, 0xff, 0xff, 0xf1, 0xcf, 0x07, 0x00, 0x80, 0xff, 0x7f, 0xce, +0x3f, 0x07, 0x00, 0x80, 0xff, 0xbf, 0xbf, 0xff, 0x06, 0x00, 0x80, 0xff, 0xbf, 0xbf, 0xff, +0x05, 0x00, 0x80, 0xff, 0xdf, 0x7f, 0xff, 0x07, 0x00, 0x80, 0xff, 0xdf, 0x7f, 0xff, 0x0f, +0x00, 0x80, 0xff, 0xbf, 0xbf, 0xff, 0x0f, 0x00, 0x80, 0xff, 0xbf, 0xbf, 0xff, 0x1f, 0x00, +0x80, 0xff, 0x7f, 0xce, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0xf1, 0xff, 0x1f, 0x00, 0x00, +0x01, 0xfc, 0xff, 0xff, 0x1f, 0x00, 0x80, 0xff, 0x83, 0xff, 0xff, 0x1f, 0x00, 0x80, 0xff, +0x7f, 0xe0, 0xff, 0x1f, 0x00, 0x80, 0x7f, 0x80, 0x1f, 0xfc, 0x1f, 0x00, 0x80, 0x9f, 0xff, +0xff, 0xe3, 0x1f, 0x00, 0x80, 0xe7, 0xff, 0xff, 0x1f, 0x0f, 0x00, 0x80, 0xfb, 0xff, 0xff, +0xff, 0x0e, 0x00, 0x80, 0xfd, 0xff, 0xff, 0xff, 0x05, 0x00, 0x80, 0xfe, 0xff, 0xff, 0xff, +0x07, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, +0x00, 0x00, 0xfc, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x0f, 0x00, 0x00, +0x00, 0x00, 0xfc, 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/wl72o.bm b/bitmaps/wl72o.bm new file mode 100644 index 0000000..56170b3 --- /dev/null +++ b/bitmaps/wl72o.bm @@ -0,0 +1,48 @@ +#define wl72o_width 72 +#define wl72o_height 72 +static char wl72o_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, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xf0, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0xfc, 0x03, 0x00, 0x00, +0x00, 0x00, 0x00, 0x3e, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, +0x7e, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, +0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, +0x00, 0x07, 0x00, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0xc0, 0xf1, +0xff, 0x3f, 0x00, 0x00, 0x1c, 0x00, 0x00, 0xc0, 0x00, 0xe0, 0xff, 0x03, 0x00, 0x18, 0x00, +0x00, 0xe0, 0x00, 0x00, 0xe0, 0x7f, 0x00, 0x38, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0xfe, +0x07, 0x30, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x30, 0x00, 0x00, 0x30, 0x00, +0x00, 0x00, 0x00, 0xfc, 0x30, 0x00, 0x00, 0x38, 0x00, 0x00, 0xf0, 0x01, 0xe0, 0x61, 0x00, +0x00, 0x18, 0x00, 0x00, 0xf8, 0x03, 0x80, 0x67, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x1c, 0x07, +0x00, 0x7f, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x06, 0x0c, 0x00, 0xfc, 0x00, 0x00, 0x0c, 0x00, +0x00, 0x06, 0x0c, 0x00, 0xf0, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x03, 0x18, 0x00, 0x80, 0x01, +0x00, 0x0c, 0x00, 0x00, 0x03, 0x18, 0x00, 0x80, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x03, 0x18, +0x00, 0x80, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x06, 0x0c, 0x00, 0x80, 0x01, 0x00, 0x0c, 0x00, +0x00, 0x06, 0x0c, 0x00, 0x80, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x1c, 0x07, 0x00, 0x80, 0x01, +0x00, 0x18, 0x00, 0x00, 0xf8, 0x03, 0x00, 0x80, 0x01, 0x00, 0x18, 0x00, 0x00, 0xf0, 0x01, +0x00, 0x80, 0x03, 0x00, 0x18, 0xfe, 0x03, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0xf8, 0xff, +0xff, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0xf8, 0x03, 0xfe, 0x3f, 0x00, 0x00, 0x00, 0x03, +0x00, 0x1c, 0x00, 0x00, 0xfe, 0x0f, 0x00, 0x00, 0x03, 0x00, 0x0c, 0x00, 0xf8, 0xff, 0xff, +0x00, 0x80, 0x03, 0x00, 0x0c, 0xc0, 0xff, 0x03, 0xf8, 0x07, 0x80, 0x03, 0x00, 0x0c, 0xf8, +0x0f, 0x00, 0x80, 0x3f, 0x80, 0x01, 0x00, 0x0c, 0x7e, 0x00, 0x00, 0x00, 0xfc, 0xc1, 0x01, +0x00, 0x1c, 0x0f, 0x00, 0x00, 0x00, 0xe0, 0xcf, 0x00, 0x00, 0xd8, 0x03, 0x00, 0x00, 0x00, +0x00, 0xfe, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x78, 0x00, +0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, +0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, +0x00, 0x3e, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0xc0, 0x0f, +0x00, 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, +0x00, 0x00, 0xf0, 0x0f, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, +0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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/wl72s.bm b/bitmaps/wl72s.bm new file mode 100644 index 0000000..e6485be --- /dev/null +++ b/bitmaps/wl72s.bm @@ -0,0 +1,48 @@ +#define wl72s_width 72 +#define wl72s_height 72 +static char wl72s_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, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xf0, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x03, 0x00, 0x00, +0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, +0x7f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xe0, +0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, +0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0xe7, 0xff, 0xff, 0xff, +0xff, 0x07, 0x00, 0x00, 0x80, 0x03, 0x80, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0xc0, 0x0f, +0x00, 0xc0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xc0, 0xff, 0x1f, 0x00, 0xfc, 0xff, 0x1f, 0x00, +0x00, 0xe0, 0xff, 0xff, 0x1f, 0x80, 0xff, 0x3f, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x01, +0xf8, 0x3f, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x3f, 0xc0, 0x3f, 0x00, 0x00, 0xf0, 0xff, +0xff, 0xff, 0xff, 0x03, 0x3f, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x0f, 0xfe, 0x1f, 0x7e, 0x00, +0x00, 0xf8, 0xff, 0xff, 0x07, 0xfc, 0x7f, 0x78, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xe3, 0xf8, +0xff, 0x60, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xf9, 0xf3, 0xff, 0xe3, 0x00, 0x00, 0xfc, 0xff, +0xff, 0xf9, 0xf3, 0xff, 0xcf, 0x01, 0x00, 0xfc, 0xff, 0xff, 0xfc, 0xe7, 0xff, 0xff, 0x01, +0x00, 0xfc, 0xff, 0xff, 0xfc, 0xe7, 0xff, 0xff, 0x01, 0x00, 0xfc, 0xff, 0xff, 0xfc, 0xe7, +0xff, 0xff, 0x01, 0x00, 0xfc, 0xff, 0xff, 0xf9, 0xf3, 0xff, 0xff, 0x01, 0x00, 0xfc, 0xff, +0xff, 0xf9, 0xf3, 0xff, 0xff, 0x01, 0x00, 0xfc, 0xff, 0xff, 0xe3, 0xf8, 0xff, 0xff, 0x01, +0x00, 0xf8, 0xff, 0xff, 0x07, 0xfc, 0xff, 0xff, 0x01, 0x00, 0xf8, 0xff, 0xff, 0x0f, 0xfe, +0xff, 0xff, 0x03, 0x00, 0xf8, 0x01, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x18, 0x00, +0x00, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x18, 0xfc, 0x01, 0xc0, 0xff, 0xff, 0xff, 0x03, +0x00, 0xfc, 0xff, 0xff, 0x01, 0xf0, 0xff, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x07, 0x00, 0x00, +0xff, 0xff, 0x03, 0x00, 0xfc, 0x3f, 0x00, 0xfc, 0x07, 0xf8, 0xff, 0x03, 0x00, 0xfc, 0x07, +0xf0, 0xff, 0x7f, 0xc0, 0xff, 0x01, 0x00, 0xfc, 0x81, 0xff, 0xff, 0xff, 0x03, 0xfe, 0x01, +0x00, 0xfc, 0xf0, 0xff, 0xff, 0xff, 0x1f, 0xf0, 0x00, 0x00, 0x38, 0xfc, 0xff, 0xff, 0xff, +0xff, 0xc1, 0x00, 0x00, 0x18, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xc7, 0x00, 0x00, 0x98, 0xff, +0xff, 0xff, 0xff, 0xff, 0x6f, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, +0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, +0xff, 0x3f, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0xc0, 0xff, +0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, +0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, +0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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/wn49o.bm b/bitmaps/wn49o.bm new file mode 100644 index 0000000..3fa8f48 --- /dev/null +++ b/bitmaps/wn49o.bm @@ -0,0 +1,27 @@ +#define wn49o_width 49 +#define wn49o_height 49 +static char wn49o_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, 0xf0, 0xff, 0x00, 0x00, +0x00, 0x00, 0x00, 0x0c, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x1c, 0x00, 0x00, +0x00, 0x80, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, +0x10, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0x01, 0x00, 0x00, 0x04, +0x80, 0x0f, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, +0x00, 0x0f, 0x04, 0x00, 0x00, 0x01, 0x00, 0x3c, 0x30, 0x04, 0x00, 0x80, 0x00, 0x00, 0x7f, +0xc0, 0x04, 0x00, 0x80, 0x00, 0x80, 0x1f, 0x00, 0x05, 0x00, 0x80, 0x00, 0x80, 0x0f, 0x00, +0x06, 0x00, 0x80, 0x00, 0xc0, 0x07, 0x00, 0x04, 0x00, 0x80, 0x00, 0xc0, 0x07, 0x00, 0x08, +0x00, 0x80, 0x00, 0xc0, 0x07, 0x00, 0x08, 0x00, 0x80, 0x00, 0x80, 0x0f, 0x00, 0x10, 0x00, +0x80, 0x00, 0x80, 0x1f, 0x00, 0x10, 0x00, 0x80, 0x00, 0x00, 0x7f, 0x00, 0x10, 0x00, 0x00, +0xff, 0x03, 0x3c, 0x00, 0x10, 0x00, 0x80, 0x00, 0x7c, 0x00, 0x00, 0x10, 0x00, 0x80, 0x00, +0x80, 0x1f, 0x00, 0x10, 0x00, 0x80, 0x80, 0x7f, 0xe0, 0x03, 0x10, 0x00, 0x80, 0x60, 0x00, +0x00, 0x1c, 0x10, 0x00, 0x80, 0x18, 0x00, 0x00, 0xe0, 0x08, 0x00, 0x80, 0x04, 0x00, 0x00, +0x00, 0x09, 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, +0x04, 0x00, 0x00, 0x01, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0xe0, 0x00, +0x00, 0x00, 0x1c, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x0e, 0x00, 0x00, +0x00, 0x00, 0xfc, 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/wn49s.bm b/bitmaps/wn49s.bm new file mode 100644 index 0000000..9b18fb3 --- /dev/null +++ b/bitmaps/wn49s.bm @@ -0,0 +1,27 @@ +#define wn49s_width 49 +#define wn49s_height 49 +static char wn49s_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, 0xf0, 0xff, 0x00, 0x00, +0x00, 0x00, 0x00, 0xfc, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1f, 0x00, 0x00, +0x00, 0x80, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, +0xf0, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x08, 0x80, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfc, +0x7f, 0xf0, 0xff, 0x03, 0x00, 0x00, 0xfe, 0xff, 0x0f, 0xff, 0x03, 0x00, 0x00, 0xfe, 0xff, +0xff, 0xf0, 0x07, 0x00, 0x00, 0xff, 0xff, 0xc3, 0xcf, 0x07, 0x00, 0x80, 0xff, 0xff, 0x80, +0x3f, 0x07, 0x00, 0x80, 0xff, 0x7f, 0xe0, 0xff, 0x06, 0x00, 0x80, 0xff, 0x7f, 0xf0, 0xff, +0x05, 0x00, 0x80, 0xff, 0x3f, 0xf8, 0xff, 0x07, 0x00, 0x80, 0xff, 0x3f, 0xf8, 0xff, 0x0f, +0x00, 0x80, 0xff, 0x3f, 0xf8, 0xff, 0x0f, 0x00, 0x80, 0xff, 0x7f, 0xf0, 0xff, 0x1f, 0x00, +0x80, 0xff, 0x7f, 0xe0, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0x80, 0xff, 0x1f, 0x00, 0x00, +0x01, 0xfc, 0xc3, 0xff, 0x1f, 0x00, 0x80, 0xff, 0x83, 0xff, 0xff, 0x1f, 0x00, 0x80, 0xff, +0x7f, 0xe0, 0xff, 0x1f, 0x00, 0x80, 0x7f, 0x80, 0x1f, 0xfc, 0x1f, 0x00, 0x80, 0x9f, 0xff, +0xff, 0xe3, 0x1f, 0x00, 0x80, 0xe7, 0xff, 0xff, 0x1f, 0x0f, 0x00, 0x80, 0xfb, 0xff, 0xff, +0xff, 0x0e, 0x00, 0x80, 0xfd, 0xff, 0xff, 0xff, 0x05, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, +0x07, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, +0x00, 0x00, 0xfc, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x0f, 0x00, 0x00, +0x00, 0x00, 0xfc, 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/wn72o.bm b/bitmaps/wn72o.bm new file mode 100644 index 0000000..d7bb45b --- /dev/null +++ b/bitmaps/wn72o.bm @@ -0,0 +1,48 @@ +#define wn72o_width 72 +#define wn72o_height 72 +static char wn72o_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, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xf0, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0xfc, 0x03, 0x00, 0x00, +0x00, 0x00, 0x00, 0x3e, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, +0x7e, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, +0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, +0x00, 0x07, 0x00, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0xc0, 0xf1, +0xff, 0x3f, 0x00, 0x00, 0x1c, 0x00, 0x00, 0xc0, 0x00, 0xe0, 0xff, 0x03, 0x00, 0x18, 0x00, +0x00, 0xe0, 0x00, 0x00, 0xe0, 0x7f, 0x00, 0x38, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0xfe, +0x07, 0x30, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x30, 0x00, 0x00, 0x30, 0x00, +0x00, 0x00, 0x00, 0xfc, 0x30, 0x00, 0x00, 0x38, 0x00, 0x00, 0xc0, 0x0f, 0xe0, 0x61, 0x00, +0x00, 0x18, 0x00, 0x00, 0xf0, 0x1f, 0x80, 0x67, 0x00, 0x00, 0x1c, 0x00, 0x00, 0xf8, 0x07, +0x00, 0x7f, 0x00, 0x00, 0x0c, 0x00, 0x00, 0xfc, 0x01, 0x00, 0xfc, 0x00, 0x00, 0x0c, 0x00, +0x00, 0xfc, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x80, 0x01, +0x00, 0x0c, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x7e, 0x00, +0x00, 0x80, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0c, 0x00, +0x00, 0xfc, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0c, 0x00, 0x00, 0xfc, 0x01, 0x00, 0x80, 0x01, +0x00, 0x18, 0x00, 0x00, 0xf8, 0x07, 0x00, 0x80, 0x01, 0x00, 0x18, 0x00, 0x00, 0xf0, 0x1f, +0x00, 0x80, 0x03, 0x00, 0x18, 0xfe, 0x03, 0xc0, 0x0f, 0x00, 0x00, 0x03, 0x00, 0xf8, 0xff, +0xff, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0xf8, 0x03, 0xfe, 0x3f, 0x00, 0x00, 0x00, 0x03, +0x00, 0x1c, 0x00, 0x00, 0xfe, 0x0f, 0x00, 0x00, 0x03, 0x00, 0x0c, 0x00, 0xf8, 0xff, 0xff, +0x00, 0x80, 0x03, 0x00, 0x0c, 0xc0, 0xff, 0x03, 0xf8, 0x07, 0x80, 0x03, 0x00, 0x0c, 0xf8, +0x0f, 0x00, 0x80, 0x3f, 0x80, 0x01, 0x00, 0x0c, 0x7e, 0x00, 0x00, 0x00, 0xfc, 0xc1, 0x01, +0x00, 0x1c, 0x0f, 0x00, 0x00, 0x00, 0xe0, 0xcf, 0x00, 0x00, 0xd8, 0x03, 0x00, 0x00, 0x00, +0x00, 0xfe, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x78, 0x00, +0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, +0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, +0x00, 0x3e, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0xc0, 0x0f, +0x00, 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, +0x00, 0x00, 0xf0, 0x0f, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, +0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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/wn72s.bm b/bitmaps/wn72s.bm new file mode 100644 index 0000000..8eb6525 --- /dev/null +++ b/bitmaps/wn72s.bm @@ -0,0 +1,48 @@ +#define wn72s_width 72 +#define wn72s_height 72 +static char wn72s_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, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xf0, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x03, 0x00, 0x00, +0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, +0x7f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xe0, +0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, +0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0xe7, 0xff, 0xff, 0xff, +0xff, 0x07, 0x00, 0x00, 0x80, 0x03, 0x80, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0xc0, 0x0f, +0x00, 0xc0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xc0, 0xff, 0x1f, 0x00, 0xfc, 0xff, 0x1f, 0x00, +0x00, 0xe0, 0xff, 0xff, 0x1f, 0x80, 0xff, 0x3f, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x01, +0xf8, 0x3f, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x3f, 0xc0, 0x3f, 0x00, 0x00, 0xf0, 0xff, +0xff, 0xff, 0xff, 0x03, 0x3f, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x3f, 0xf0, 0x1f, 0x7e, 0x00, +0x00, 0xf8, 0xff, 0xff, 0x0f, 0xe0, 0x7f, 0x78, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x07, 0xf8, +0xff, 0x60, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x03, 0xfe, 0xff, 0xe3, 0x00, 0x00, 0xfc, 0xff, +0xff, 0x03, 0xff, 0xff, 0xcf, 0x01, 0x00, 0xfc, 0xff, 0xff, 0x81, 0xff, 0xff, 0xff, 0x01, +0x00, 0xfc, 0xff, 0xff, 0x81, 0xff, 0xff, 0xff, 0x01, 0x00, 0xfc, 0xff, 0xff, 0x81, 0xff, +0xff, 0xff, 0x01, 0x00, 0xfc, 0xff, 0xff, 0x81, 0xff, 0xff, 0xff, 0x01, 0x00, 0xfc, 0xff, +0xff, 0x03, 0xff, 0xff, 0xff, 0x01, 0x00, 0xfc, 0xff, 0xff, 0x03, 0xfe, 0xff, 0xff, 0x01, +0x00, 0xf8, 0xff, 0xff, 0x07, 0xf8, 0xff, 0xff, 0x01, 0x00, 0xf8, 0xff, 0xff, 0x0f, 0xe0, +0xff, 0xff, 0x03, 0x00, 0xf8, 0x01, 0xfc, 0x3f, 0xf0, 0xff, 0xff, 0x03, 0x00, 0x18, 0x00, +0x00, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x18, 0xfc, 0x01, 0xc0, 0xff, 0xff, 0xff, 0x03, +0x00, 0xfc, 0xff, 0xff, 0x01, 0xf0, 0xff, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x07, 0x00, 0x00, +0xff, 0xff, 0x03, 0x00, 0xfc, 0x3f, 0x00, 0xfc, 0x07, 0xf8, 0xff, 0x03, 0x00, 0xfc, 0x07, +0xf0, 0xff, 0x7f, 0xc0, 0xff, 0x01, 0x00, 0xfc, 0x81, 0xff, 0xff, 0xff, 0x03, 0xfe, 0x01, +0x00, 0xfc, 0xf0, 0xff, 0xff, 0xff, 0x1f, 0xf0, 0x00, 0x00, 0x38, 0xfc, 0xff, 0xff, 0xff, +0xff, 0xc1, 0x00, 0x00, 0x18, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xe7, 0x00, 0x00, 0x98, 0xff, +0xff, 0xff, 0xff, 0xff, 0x6f, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, +0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, +0xff, 0x3f, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0xc0, 0xff, +0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, +0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, +0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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/wp49o.bm b/bitmaps/wp49o.bm new file mode 100644 index 0000000..b092b46 --- /dev/null +++ b/bitmaps/wp49o.bm @@ -0,0 +1,27 @@ +#define wp49o_width 49 +#define wp49o_height 49 +static char wp49o_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, 0xf0, 0xff, 0x00, 0x00, +0x00, 0x00, 0x00, 0x0c, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x1c, 0x00, 0x00, +0x00, 0x80, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, +0x10, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0x01, 0x00, 0x00, 0x04, +0x80, 0x0f, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, +0x00, 0x0f, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, 0x30, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, +0xc0, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, +0x06, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x08, +0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, +0x80, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, +0xff, 0x03, 0x00, 0x00, 0x10, 0x00, 0x80, 0x00, 0x7c, 0x00, 0x00, 0x10, 0x00, 0x80, 0x00, +0x80, 0x1f, 0x00, 0x10, 0x00, 0x80, 0x80, 0x7f, 0xe0, 0x03, 0x10, 0x00, 0x80, 0x60, 0x00, +0x00, 0x1c, 0x10, 0x00, 0x80, 0x18, 0x00, 0x00, 0xe0, 0x08, 0x00, 0x80, 0x04, 0x00, 0x00, +0x00, 0x09, 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, +0x04, 0x00, 0x00, 0x01, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0xe0, 0x00, +0x00, 0x00, 0x1c, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x0e, 0x00, 0x00, +0x00, 0x00, 0xfc, 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/wp49s.bm b/bitmaps/wp49s.bm new file mode 100644 index 0000000..e315903 --- /dev/null +++ b/bitmaps/wp49s.bm @@ -0,0 +1,27 @@ +#define wp49s_width 49 +#define wp49s_height 49 +static char wp49s_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, 0xf0, 0xff, 0x00, 0x00, +0x00, 0x00, 0x00, 0xfc, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1f, 0x00, 0x00, +0x00, 0x80, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, +0xf0, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x08, 0x80, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfc, +0x7f, 0xf0, 0xff, 0x03, 0x00, 0x00, 0xfe, 0xff, 0x0f, 0xff, 0x03, 0x00, 0x00, 0xfe, 0xff, +0xff, 0xf0, 0x07, 0x00, 0x00, 0xff, 0xff, 0xff, 0xcf, 0x07, 0x00, 0x80, 0xff, 0xff, 0xff, +0x3f, 0x07, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x06, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, +0x05, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x0f, +0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, +0x80, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, +0x01, 0xfc, 0xff, 0xff, 0x1f, 0x00, 0x80, 0xff, 0x83, 0xff, 0xff, 0x1f, 0x00, 0x80, 0xff, +0x7f, 0xe0, 0xff, 0x1f, 0x00, 0x80, 0x7f, 0x80, 0x1f, 0xfc, 0x1f, 0x00, 0x80, 0x9f, 0xff, +0xff, 0xe3, 0x1f, 0x00, 0x80, 0xe7, 0xff, 0xff, 0x1f, 0x0f, 0x00, 0x80, 0xfb, 0xff, 0xff, +0xff, 0x0e, 0x00, 0x80, 0xfd, 0xff, 0xff, 0xff, 0x05, 0x00, 0x80, 0xfe, 0xff, 0xff, 0xff, +0x07, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, +0x00, 0x00, 0xfc, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x0f, 0x00, 0x00, +0x00, 0x00, 0xfc, 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/wp72o.bm b/bitmaps/wp72o.bm new file mode 100644 index 0000000..0b8e2b5 --- /dev/null +++ b/bitmaps/wp72o.bm @@ -0,0 +1,48 @@ +#define wp72o_width 72 +#define wp72o_height 72 +static char wp72o_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, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xf0, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0xfc, 0x03, 0x00, 0x00, +0x00, 0x00, 0x00, 0x3e, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, +0x7e, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, +0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, +0x00, 0x07, 0x00, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0xc0, 0xf1, +0xff, 0x3f, 0x00, 0x00, 0x1c, 0x00, 0x00, 0xc0, 0x00, 0xe0, 0xff, 0x03, 0x00, 0x18, 0x00, +0x00, 0xe0, 0x00, 0x00, 0xe0, 0x7f, 0x00, 0x38, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0xfe, +0x07, 0x30, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x30, 0x00, 0x00, 0x30, 0x00, +0x00, 0x00, 0x00, 0xfc, 0x30, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x61, 0x00, +0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x80, 0x67, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, +0x00, 0x7f, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x0c, 0x00, +0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, +0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, +0x00, 0x80, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0c, 0x00, +0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, +0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, +0x00, 0x80, 0x03, 0x00, 0x18, 0xfe, 0x03, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0xf8, 0xff, +0xff, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0xf8, 0x03, 0xfe, 0x3f, 0x00, 0x00, 0x00, 0x03, +0x00, 0x1c, 0x00, 0x00, 0xfe, 0x0f, 0x00, 0x00, 0x03, 0x00, 0x0c, 0x00, 0xf8, 0xff, 0xff, +0x00, 0x80, 0x03, 0x00, 0x0c, 0xc0, 0xff, 0x03, 0xf8, 0x07, 0x80, 0x03, 0x00, 0x0c, 0xf8, +0x0f, 0x00, 0x80, 0x3f, 0x80, 0x01, 0x00, 0x0c, 0x7e, 0x00, 0x00, 0x00, 0xfc, 0xc1, 0x01, +0x00, 0x1c, 0x0f, 0x00, 0x00, 0x00, 0xe0, 0xcf, 0x00, 0x00, 0xd8, 0x03, 0x00, 0x00, 0x00, +0x00, 0xfe, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x78, 0x00, +0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, +0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, +0x00, 0x3e, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0xc0, 0x0f, +0x00, 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, +0x00, 0x00, 0xf0, 0x0f, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, +0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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/wp72s.bm b/bitmaps/wp72s.bm new file mode 100644 index 0000000..960a04d --- /dev/null +++ b/bitmaps/wp72s.bm @@ -0,0 +1,48 @@ +#define wp72s_width 72 +#define wp72s_height 72 +static char wp72s_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, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xf0, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x03, 0x00, 0x00, +0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, +0x7f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xe0, +0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, +0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0xcf, 0xff, 0xff, 0xff, +0xff, 0x07, 0x00, 0x00, 0x80, 0x07, 0x80, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0xc0, 0x0f, +0x00, 0xc0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xc0, 0xff, 0x1f, 0x00, 0xfc, 0xff, 0x1f, 0x00, +0x00, 0xe0, 0xff, 0xff, 0x1f, 0x80, 0xff, 0x3f, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x01, +0xf8, 0x3f, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x3f, 0xc0, 0x3f, 0x00, 0x00, 0xf0, 0xff, +0xff, 0xff, 0xff, 0x03, 0x3f, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x7e, 0x00, +0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x78, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, +0xff, 0x60, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe3, 0x00, 0x00, 0xfc, 0xff, +0xff, 0xff, 0xff, 0xff, 0xcf, 0x01, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, +0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0x01, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xfc, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, +0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0x03, 0x00, 0xf8, 0x01, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x18, 0x00, +0x00, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x18, 0xfc, 0x01, 0xc0, 0xff, 0xff, 0xff, 0x03, +0x00, 0xfc, 0xff, 0xff, 0x01, 0xf0, 0xff, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x07, 0x00, 0x00, +0xff, 0xff, 0x03, 0x00, 0xfc, 0x3f, 0x00, 0xfc, 0x07, 0xf8, 0xff, 0x03, 0x00, 0xfc, 0x07, +0xf0, 0xff, 0x7f, 0xc0, 0xff, 0x01, 0x00, 0xfc, 0x81, 0xff, 0xff, 0xff, 0x03, 0xfe, 0x01, +0x00, 0xfc, 0xf0, 0xff, 0xff, 0xff, 0x1f, 0xf0, 0x00, 0x00, 0x38, 0xfc, 0xff, 0xff, 0xff, +0xff, 0xc1, 0x00, 0x00, 0x18, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xc7, 0x00, 0x00, 0x98, 0xff, +0xff, 0xff, 0xff, 0xff, 0x6f, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, +0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, +0xff, 0x3f, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0xc0, 0xff, +0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, +0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, +0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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/ws49o.bm b/bitmaps/ws49o.bm new file mode 100644 index 0000000..ad0cc6d --- /dev/null +++ b/bitmaps/ws49o.bm @@ -0,0 +1,27 @@ +#define ws49o_width 49 +#define ws49o_height 49 +static char ws49o_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, 0xf0, 0xff, 0x00, 0x00, +0x00, 0x00, 0x00, 0x0c, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x1c, 0x00, 0x00, +0x00, 0x80, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, +0x10, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0x01, 0x00, 0x00, 0x04, +0x80, 0x0f, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, +0x04, 0x0f, 0x04, 0x00, 0x00, 0x01, 0x00, 0x04, 0x30, 0x04, 0x00, 0x80, 0x00, 0x00, 0x0e, +0xc0, 0x04, 0x00, 0x80, 0x00, 0x00, 0x0e, 0x00, 0x05, 0x00, 0x80, 0x00, 0xf0, 0xff, 0x00, +0x06, 0x00, 0x80, 0x00, 0xe0, 0x7f, 0x00, 0x04, 0x00, 0x80, 0x00, 0x80, 0x1f, 0x00, 0x08, +0x00, 0x80, 0x00, 0x80, 0x1f, 0x00, 0x08, 0x00, 0x80, 0x00, 0x80, 0x1f, 0x00, 0x10, 0x00, +0x80, 0x00, 0xc0, 0x39, 0x00, 0x10, 0x00, 0x80, 0x00, 0x40, 0x20, 0x00, 0x10, 0x00, 0x00, +0xff, 0x03, 0x00, 0x00, 0x10, 0x00, 0x80, 0x00, 0x7c, 0x00, 0x00, 0x10, 0x00, 0x80, 0x00, +0x80, 0x1f, 0x00, 0x10, 0x00, 0x80, 0x80, 0x7f, 0xe0, 0x03, 0x10, 0x00, 0x80, 0x60, 0x00, +0x00, 0x1c, 0x10, 0x00, 0x80, 0x18, 0x00, 0x00, 0xe0, 0x08, 0x00, 0x80, 0x04, 0x00, 0x00, +0x00, 0x09, 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, +0x04, 0x00, 0x00, 0x01, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0xe0, 0x00, +0x00, 0x00, 0x1c, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x0e, 0x00, 0x00, +0x00, 0x00, 0xfc, 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/ws49s.bm b/bitmaps/ws49s.bm new file mode 100644 index 0000000..fd7e464 --- /dev/null +++ b/bitmaps/ws49s.bm @@ -0,0 +1,27 @@ +#define ws49s_width 49 +#define ws49s_height 49 +static char ws49s_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, 0xf0, 0xff, 0x00, 0x00, +0x00, 0x00, 0x00, 0xfc, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1f, 0x00, 0x00, +0x00, 0x80, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, +0xf0, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x08, 0x80, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfc, +0x7f, 0xf0, 0xff, 0x03, 0x00, 0x00, 0xfe, 0xff, 0x0f, 0xff, 0x03, 0x00, 0x00, 0xfe, 0xff, +0xfb, 0xf0, 0x07, 0x00, 0x00, 0xff, 0xff, 0xfb, 0xcf, 0x07, 0x00, 0x80, 0xff, 0xff, 0xf1, +0x3f, 0x07, 0x00, 0x80, 0xff, 0xff, 0xf1, 0xff, 0x06, 0x00, 0x80, 0xff, 0x0f, 0x00, 0xff, +0x05, 0x00, 0x80, 0xff, 0x1f, 0x80, 0xff, 0x07, 0x00, 0x80, 0xff, 0x7f, 0xe0, 0xff, 0x0f, +0x00, 0x80, 0xff, 0x7f, 0xe0, 0xff, 0x0f, 0x00, 0x80, 0xff, 0x7f, 0xe0, 0xff, 0x1f, 0x00, +0x80, 0xff, 0x3f, 0xc6, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xbf, 0xdf, 0xff, 0x1f, 0x00, 0x00, +0x01, 0xfc, 0xff, 0xff, 0x1f, 0x00, 0x80, 0xff, 0x83, 0xff, 0xff, 0x1f, 0x00, 0x80, 0xff, +0x7f, 0xe0, 0xff, 0x1f, 0x00, 0x80, 0x7f, 0x80, 0x1f, 0xfc, 0x1f, 0x00, 0x80, 0x9f, 0xff, +0xff, 0xe3, 0x1f, 0x00, 0x80, 0xe7, 0xff, 0xff, 0x1f, 0x0f, 0x00, 0x80, 0xfb, 0xff, 0xff, +0xff, 0x0e, 0x00, 0x80, 0xfd, 0xff, 0xff, 0xff, 0x05, 0x00, 0x80, 0xfe, 0xff, 0xff, 0xff, +0x07, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, +0x00, 0x00, 0xfc, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x0f, 0x00, 0x00, +0x00, 0x00, 0xfc, 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/ws72o.bm b/bitmaps/ws72o.bm new file mode 100644 index 0000000..eddde41 --- /dev/null +++ b/bitmaps/ws72o.bm @@ -0,0 +1,48 @@ +#define ws72o_width 72 +#define ws72o_height 72 +static char ws72o_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, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xf0, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0xfc, 0x03, 0x00, 0x00, +0x00, 0x00, 0x00, 0x3e, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, +0x7e, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, +0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, +0x00, 0x07, 0x00, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0xc0, 0xf1, +0xff, 0x3f, 0x00, 0x00, 0x1c, 0x00, 0x00, 0xc0, 0x00, 0xe0, 0xff, 0x03, 0x00, 0x18, 0x00, +0x00, 0xe0, 0x00, 0x00, 0xe0, 0x7f, 0x00, 0x38, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0xfe, +0x07, 0x30, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x30, 0x00, 0x00, 0x30, 0x00, +0x00, 0x20, 0x00, 0xfc, 0x30, 0x00, 0x00, 0x38, 0x00, 0x00, 0x20, 0x00, 0xe0, 0x61, 0x00, +0x00, 0x18, 0x00, 0x00, 0x70, 0x00, 0x80, 0x67, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x70, 0x00, +0x00, 0x7f, 0x00, 0x00, 0x0c, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x0c, 0x00, +0xc0, 0xff, 0x1f, 0x00, 0xf0, 0x01, 0x00, 0x0c, 0x00, 0x80, 0xff, 0x07, 0x00, 0x80, 0x01, +0x00, 0x0c, 0x00, 0x00, 0xfe, 0x03, 0x00, 0x80, 0x01, 0x00, 0x0c, 0x00, 0x00, 0xfc, 0x01, +0x00, 0x80, 0x01, 0x00, 0x0c, 0x00, 0x00, 0xfc, 0x01, 0x00, 0x80, 0x01, 0x00, 0x0c, 0x00, +0x00, 0xfe, 0x03, 0x00, 0x80, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x8e, 0x03, 0x00, 0x80, 0x01, +0x00, 0x18, 0x00, 0x00, 0x07, 0x07, 0x00, 0x80, 0x01, 0x00, 0x18, 0x00, 0x00, 0x01, 0x04, +0x00, 0x80, 0x03, 0x00, 0x18, 0xfe, 0x03, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0xf8, 0xff, +0xff, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0xf8, 0x03, 0xfe, 0x3f, 0x00, 0x00, 0x00, 0x03, +0x00, 0x1c, 0x00, 0x00, 0xfe, 0x0f, 0x00, 0x00, 0x03, 0x00, 0x0c, 0x00, 0xf8, 0xff, 0xff, +0x00, 0x80, 0x03, 0x00, 0x0c, 0xc0, 0xff, 0x03, 0xf8, 0x07, 0x80, 0x03, 0x00, 0x0c, 0xf8, +0x0f, 0x00, 0x80, 0x3f, 0x80, 0x01, 0x00, 0x0c, 0x7e, 0x00, 0x00, 0x00, 0xfc, 0xc1, 0x01, +0x00, 0x1c, 0x0f, 0x00, 0x00, 0x00, 0xe0, 0xcf, 0x00, 0x00, 0xd8, 0x03, 0x00, 0x00, 0x00, +0x00, 0xfe, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x78, 0x00, +0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, +0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, +0x00, 0x3e, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0xc0, 0x0f, +0x00, 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, +0x00, 0x00, 0xf0, 0x0f, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, +0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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/ws72s.bm b/bitmaps/ws72s.bm new file mode 100644 index 0000000..4e165bd --- /dev/null +++ b/bitmaps/ws72s.bm @@ -0,0 +1,48 @@ +#define ws72s_width 72 +#define ws72s_height 72 +static char ws72s_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, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xf0, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x03, 0x00, 0x00, +0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, +0x7f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xe0, +0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, +0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0xe7, 0xff, 0xff, 0xff, +0xff, 0x07, 0x00, 0x00, 0x80, 0x03, 0x80, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0xc0, 0x0f, +0x00, 0xc0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xc0, 0xff, 0x1f, 0x00, 0xfc, 0xff, 0x1f, 0x00, +0x00, 0xe0, 0xff, 0xff, 0x1f, 0x80, 0xff, 0x3f, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x01, +0xf8, 0x3f, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x3f, 0xc0, 0x3f, 0x00, 0x00, 0xf0, 0xff, +0xff, 0xdf, 0xff, 0x03, 0x3f, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xdf, 0xff, 0x1f, 0x7e, 0x00, +0x00, 0xf8, 0xff, 0xff, 0x8f, 0xff, 0x7f, 0x78, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x8f, 0xff, +0xff, 0x60, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x07, 0xff, 0xff, 0xe3, 0x00, 0x00, 0xfc, 0xff, +0x3f, 0x00, 0xe0, 0xff, 0xcf, 0x01, 0x00, 0xfc, 0xff, 0x7f, 0x00, 0xf8, 0xff, 0xff, 0x01, +0x00, 0xfc, 0xff, 0xff, 0x01, 0xfc, 0xff, 0xff, 0x01, 0x00, 0xfc, 0xff, 0xff, 0x03, 0xfe, +0xff, 0xff, 0x01, 0x00, 0xfc, 0xff, 0xff, 0x03, 0xfe, 0xff, 0xff, 0x01, 0x00, 0xfc, 0xff, +0xff, 0x01, 0xfc, 0xff, 0xff, 0x01, 0x00, 0xfc, 0xff, 0xff, 0x71, 0xfc, 0xff, 0xff, 0x01, +0x00, 0xf8, 0xff, 0xff, 0xf8, 0xf8, 0xff, 0xff, 0x01, 0x00, 0xf8, 0xff, 0xff, 0xfe, 0xfb, +0xff, 0xff, 0x03, 0x00, 0xf8, 0x01, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x18, 0x00, +0x00, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x18, 0xfc, 0x01, 0xc0, 0xff, 0xff, 0xff, 0x03, +0x00, 0xfc, 0xff, 0xff, 0x01, 0xf0, 0xff, 0xff, 0x03, 0x00, 0xfc, 0xff, 0x07, 0x00, 0x00, +0xff, 0xff, 0x03, 0x00, 0xfc, 0x3f, 0x00, 0xfc, 0x07, 0xf8, 0xff, 0x03, 0x00, 0xfc, 0x07, +0xf0, 0xff, 0x7f, 0xc0, 0xff, 0x01, 0x00, 0xfc, 0x81, 0xff, 0xff, 0xff, 0x03, 0xfe, 0x01, +0x00, 0xfc, 0xf0, 0xff, 0xff, 0xff, 0x1f, 0xf0, 0x00, 0x00, 0x38, 0xfc, 0xff, 0xff, 0xff, +0xff, 0xc1, 0x00, 0x00, 0x18, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xc7, 0x00, 0x00, 0x98, 0xff, +0xff, 0xff, 0xff, 0xff, 0x6f, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, +0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, +0xff, 0x3f, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0xc0, 0xff, +0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, +0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, +0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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/childio.h b/childio.h index 28250ce..3406dff 100644 --- a/childio.h +++ b/childio.h @@ -1,6 +1,6 @@ /* * childio.h -- set up communication with child processes - * $Id$ + * $Id: childio.h,v 2.1 2003/10/27 19:21:00 mann Exp $ * * Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts. * Enhancements Copyright 1992-95 Free Software Foundation, Inc. diff --git a/cmail.in b/cmail.in index d9f66f6..158ef15 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$: a tool to aid playing chess by email +## cmail $Revision: 2.1 $: a tool to aid playing chess by email ## Copyright (C) 1993 Free Software Foundation, Inc. ## ## cmail is free software; you can redistribute it and/or modify @@ -18,8 +18,8 @@ ## along with cmail; if not, write to the Free Software ## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -## Modified: $Date$ -## Revision: $Revision$ +## Modified: $Date: 2003/10/27 19:21:00 $ +## Revision: $Revision: 2.1 $ ## Email: evan@quadstone.co.uk ## Snailmail: Evan Welsh ## Quadstone Ltd @@ -1609,7 +1609,7 @@ sub main { &main () ; #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# __END__ -cmail $Revision$, Copyright (C) 1993 Free Software Foundation, Inc. +cmail $Revision: 2.1 $, 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 714a3b2..cde32fb 100644 --- a/common.h +++ b/common.h @@ -86,6 +86,8 @@ int pclose(FILE *); #define FALSE 0 #endif +#define UNKNOWN -1 /* [HGM] nps */ + #if !HAVE_RANDOM # if HAVE_RAND48 # define srandom srand48 @@ -242,6 +244,13 @@ typedef enum { SoundIcsDraw, SoundIcsUnfinished, NSoundClasses } SoundClass; +typedef enum { + SizeTiny, SizeTeeny, SizeDinky, SizePetite, SizeSlim, SizeSmall, + SizeMediocre, SizeMiddling, SizeAverage, SizeModerate, SizeMedium, + SizeBulky, SizeLarge, SizeBig, SizeHuge, SizeGiant, SizeColossal, + SizeTitanic, NUM_SIZES +} BoardSize; + /* Names for chess variants, not necessarily supported */ typedef enum { VariantNormal, /* Normal chess */ @@ -276,6 +285,9 @@ typedef enum { VariantFairy, VariantCylinder, VariantFalcon, + VariantCapaRandom, + VariantBerolina, + VariantJanus, VariantUnknown /* Catchall for other unknown variants */ } VariantClass; @@ -312,6 +324,8 @@ typedef enum { "fairy", \ "cylinder", \ "falcon",\ + "caparandom",\ + "berolina",\ "unknown" \ } @@ -554,6 +568,11 @@ typedef struct { int timeOddsMode; int firstAccumulateTC; int secondAccumulateTC; + int firstNPS; + int secondNPS; + Boolean autoKibitz; + int engineComments; + char *userName; } AppData, *AppDataPtr; /* [AS] PGN tags (for showing in the game list) */ diff --git a/configure b/configure index cf0fa51..16030dd 100755 --- a/configure +++ b/configure @@ -1281,8 +1281,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu PRODUCT=xboard -VERSION=4.2 -PATCHLEVEL=7 +VERSION=4.3 +PATCHLEVEL=14k if test -z "$CFLAGS" ; then CFLAGS=" " diff --git a/engine-intf.html b/engine-intf.html index 4252552..01f0e5b 100644 --- a/engine-intf.html +++ b/engine-intf.html @@ -1,1896 +1,2096 @@ - - -Chess Engine Communication Protocol - - - -
-

Chess Engine Communication Protocol

-

Tim Mann

-

-$Id$
-Version 2; implemented in xboard/WinBoard 4.2.1 and later.
-Changes since version 1 are indicated in red. -


- - - -
- -

1. Introduction

- -

-This document is a set of rough notes on the protocol that xboard and -WinBoard use to communicate with gnuchessx and other chess engines. -These notes may be useful if you want to connect a different chess -engine to xboard. Throughout the notes, "xboard" means both xboard -and WinBoard except where they are specifically contrasted. -

- -

-There are two reasons I can imagine someone wanting to do this: -

-
    -
  1. You have, or are developing, a chess engine but you don't want to -write your own graphical interface. -
  2. You have, or are developing,a chess engine, and you want to -interface it to the Internet Chess Server. -
- -

-In case (2), if you are using xboard, you will need to configure the -"Zippy" code into it, but WinBoard includes this code already. See -the file zippy.README -in the xboard or WinBoard distribution for more information. - -

- -

-These notes are unpolished, but I've attempted to make them complete -in this release. If you notice any errors, omissions, or misleading -statements, let me know. -

- -

-I'd like to hear from everyone who is trying to interface their own -chess engine to xboard/WinBoard. Please email me, -tim@tim-mann.org. Also, please join -the mailing list for authors of xboard/WinBoard compatible chess -engines. The list is now hosted by Yahoo Groups; you can join at http://www.egroups.com/group/chess-engines, or you can read the -list there without joining. The list is filtered to prevent spam. -

- -

2. Connection

- -

-An xboard chess engine runs as a separate process from xboard itself, -connected to xboard through a pair of anonymous pipes. The engine -does not have to do anything special to set up these pipes. xboard -sets up the pipes itself and starts the engine with one pipe as its -standard input and the other as its standard output. The engine then -reads commands from its standard input and writes responses to its -standard output. This is, unfortunately, a little more complicated to -do right than it sounds; see section 6 below. -

- -

-And yes, contrary to some people's expectations, exactly the same -thing is true for WinBoard. Pipes and standard input/output are -implemented in Win32 and work fine. You don't have to use DDE, COM, -DLLs, BSOD, or any of the other infinite complexity that -Microsoft has created just to talk between two programs. A WinBoard -chess engine is a Win32 console program that simply reads from its -standard input and writes to its standard output. See sections -5 and 6 below for additional details. -

- -

3. Debugging

- -

-To diagnose problems in your engine's interaction with xboard, use the --debug flag on xboard's command line to see the messages that are -being exchanged. In WinBoard, these messages are written to the file -WinBoard.debug instead of going to the screen. -

- -

-You can turn debug mode on or off while WinBoard is running by -pressing Ctrl+Alt+F12. You can turn debug mode on or off while xboard -is running by binding DebugProc to a shortcut key (and pressing the -key!); see the instructions on shortcut keys in the xboard man page. -

- -

-While your engine is running under xboard/WinBoard, you can send a -command directly to the engine by pressing Shift+1 (xboard) or Alt+1 -(WinBoard 4.0.3 and later). This brings up a dialog that you can type -your command into. Press Shift+2 (Alt+2) instead to send to the -second chess engine in Two Machines mode. On WinBoard 4.0.2 and earlier, -Ctrl+Alt is used in place of Alt; this had to be changed due to a conflict -with typing the @-sign on some European keyboards. -

- -

4. How it got this way

- -

-Originally, xboard was just trying to talk to the existing -command-line interface of GNU Chess 3.1+ and 4, which was designed -for people to type commands to. So the communication protocol is very -ad-hoc. It might have been good to redesign it early on, but because -xboard and GNU Chess are separate programs, I didn't want to force -people to upgrade them together to versions that matched. I -particularly wanted to keep new versions of xboard working with old -versions of GNU Chess, to make it easier to compare the play of old -and new gnuchess versions. I didn't foresee the need for a clean -protocol to be used with other chess engines in the future. -

- -

-Circumstances have changed over the years, and now there are many more -engines that work with xboard. I've had to make the protocol -description more precise, I've added some features that GNU Chess -does not support, and I've specified the standard semantics of a few -features to be slightly different from what GNU Chess 4 does. -

- -

- -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. - - - -

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 -particular new feature do not have to use it; new features are not -enabled unless the engine specifically requests them using the feature -command. If an engine does not send the feature command at all, the -protocol behavior is nearly identical to version 1. Several new -features can be selected by the feature command in version 2, -including the "ping" command (recommended for all engines), the -"setboard" command, and many optional parameters. Additional features -will probably be added in future versions. -

- - -

5. WinBoard requires Win32 engines

- -

-Due to some Microsoft brain damage that I don't understand, WinBoard -does not work with chess engines that were compiled to use a DOS -extender for 32-bit addressing. (Probably not with 16-bit DOS or -Windows programs either.) WinBoard works only with engines that are -compiled for the Win32 API. You can get a free compiler that targets -the Win32 API from http://sources.redhat.com/cygwin/. I think DJGPP 2.x should also -work if you use the RSXNTDJ extension, but I haven't tried it. Of -course, Microsoft Visual C++ will work. Most likely the other -commercial products that support Win32 will work too (Borland, etc.), -but I have not tried them. Delphi has been successfully used to write -engines for WinBoard; if you want to do this, Tony Werten has donated -some sample -code that should help you get started. -

- -

6. Hints on input/output

- -

-Beware of using buffered I/O in your chess engine. The C stdio -library, C++ streams, and the I/O packages in most other languages use -buffering both on input and output. That means two things. First, -when your engine tries to write some characters to xboard, the library -stashes them in an internal buffer and does not actually write them to -the pipe connected to xboard until either the buffer fills up or you -call a special library routine asking for it to be flushed. (In C -stdio, this routine is named fflush.) Second, when your engine tries -to read some characters from xboard, the library does not read just -the characters you asked for -- it reads all the characters that are -currently available (up to some limit) and stashes any characters you -are not yet ready for in an internal buffer. The next time you ask to -read, you get the characters from the buffer (if any) before the -library tries to read more data from the actual pipe. -

- -

-Why does this cause problems? First, on the output side, remember -that your engine produces output in small quantities (say, a few -characters for a move, or a line or two giving the current analysis), -and that data always needs to be delivered to xboard/WinBoard for -display immediately. If you use buffered output, the data you print -will sit in a buffer in your own address space instead of being -delivered. -

- -

-You can usually fix the output buffering problem by asking for the -buffering to be turned off. In C stdio, you do this by calling -setbuf(stdout, NULL). A more laborious and error-prone -method is to carefully call fflush(stdout) after every line -you output; I don't recommend this. In C++, you can try -cout.setf(ios::unitbuf), which is documented in current -editions of "The C++ Programming Language," but not older ones. -Another C++ method that might work is -cout.rdbuf()->setbuf(NULL, 0). Alternatively, you can -carefully call cout.flush() after every line you output; -again, I don't recommend this. -

- -

-Another way to fix the problem is to use unbuffered operating system -calls to write directly to the file descriptor for standard output. -On Unix, this means write(1, ...) -- see the man page for write(2). -On Win32, you can use either the Unix-like _write(1, ...) or Win32 -native routines like WriteFile. -

- -

-Second, on the input side, you are likely to want to poll during your -search and stop it if new input has come in. If you implement -pondering, you'll need this so that pondering stops when the user -makes a move. You should also poll during normal thinking on your -move, so that you can implement the "?" (move now) command, and so -that you can respond promptly to a "result", "force", or "quit" -command if xboard wants to end the game or terminate your engine. -Buffered input makes polling more complicated -- when you poll, you -must stop your search if there are either characters in the buffer -or characters available from the underlying file descriptor. -

- -

-The most direct way to fix this problem is to use unbuffered operating -system calls to read (and poll) the underlying file descriptor -directly. On Unix, use read(0, ...) to read from standard input, and -use select() to poll it. See the man pages read(2) and select(2). -(Don't follow the example of GNU Chess 4 and use the FIONREAD ioctl to -poll for input. It is not very portable; that is, it does not exist -on all versions of Unix, and is broken on some that do have it.) On -Win32, you can use either the Unix-like _read(0, ...) or the native -Win32 ReadFile() to read. Unfortunately, under Win32, the function to -use for polling is different depending on whether the input device is -a pipe, a console, or something else. (More Microsoft brain damage -here -- did they never hear of device independence?) For pipes, you -can use PeekNamedPipe to poll (even when the pipe is unnamed). -For consoles, -you can use GetNumberOfConsoleInputEvents. For sockets only, you can -use select(). It might be possible to use -WaitForSingleObject more -generally, but I have not tried it. Some code to do these things can -be found in Crafty's utility.c, but I don't guarantee that it's all -correct or optimal. -

- -

-A second way to fix the problem might be to ask your I/O library not -to buffer on input. It should then be safe to poll the underlying -file descriptor as described above. With C, you can try calling -setbuf(stdin, NULL). However, I have never tried this. Also, there -could be problems if you use scanf(), at least with certain patterns, -because scanf() sometimes needs to read one extra character and "push -it back" into the buffer; hence, there is a one-character pushback -buffer even if you asked for stdio to be unbuffered. With C++, you -can try cin.rdbuf()->setbuf(NULL, 0), but again, I have never tried -this. -

- -

-A third way to fix the problem is to check whether there are -characters in the buffer whenever you poll. C I/O libraries generally -do not provide any portable way to do this. Under C++, you can use -cin.rdbuf()->in_avail(). This method has been reported to -work with -EXchess. Remember that if there are no characters in the buffer, you -still have to poll the underlying file descriptor too, using the -method described above. -

- -

-A fourth way to fix the problem is to use a separate thread to read -from stdin. This way works well if you are familiar with thread -programming. This thread can be blocked waiting for input to come in -at all times, while the main thread of your engine does its thinking. -When input arrives, you have the thread put the input into a buffer -and set a flag in a global variable. Your search routine then -periodically tests the global variable to see if there is input to -process, and stops if there is. WinBoard and my Win32 ports of ICC -timestamp and FICS timeseal use threads to handle multiple input -sources. -

- -

7. Signals

- -

Engines that run on Unix need to be concerned with two Unix -signals: SIGTERM and SIGINT. This applies both to -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. - -Beginning with version 2, you can now turn off the use of -either or both -signals. See the "feature" command in section 9 below. - -

- -

First, when an engine is sent the "quit" command, it is also given -a SIGTERM signal shortly afterward to make sure it goes away. -If your engine reliably responds to "quit", and the signal causes -problems for you, you should either ignore it by calling -signal(SIGTERM, SIG_IGN) at the start of your program, -or disable it with the "feature" command.

- -

Second, xboard will send an interrupt signal (SIGINT) at -certain times when it believes the engine may not be listening to user -input (thinking or pondering). WinBoard currently does this only when -the engine is running remotely using the -firstHost or -secondHost -feature, not when it is running locally. You probably need to know -only enough about this grungy feature to keep it from getting in your -way. -

- -

-The SIGINTs are basically tailored to the needs of GNU Chess 4 -on systems where its input polling code is broken or disabled. -Because they work in a rather peculiar way, it is recommended that you -either ignore SIGINT by having your engine call -signal(SIGINT, SIG_IGN), or disable it with the "feature" -command.

- -

-Here are details for the curious. If xboard needs to send a command -when it is the chess engine's move (such as before the "?" command), -it sends a SIGINT first. If xboard needs to send commands when it is -not the chess engine's move, but the chess engine may be pondering -(thinking on its opponent's time) or analyzing (analysis or analyze -file mode), xboard sends a SIGINT before the first such command only. -Another SIGINT is not sent until another move is made, even if xboard -issues more commands. This behavior is necessary for GNU Chess 4. The -first SIGINT stops it from pondering until the next move, but on some -systems, GNU Chess 4 will die if it receives a SIGINT when not -actually thinking or pondering. -

- -

-There are two reasons why WinBoard does not send the Win32 equivalent -of SIGINT (which is called CTRL_C_EVENT) to local -engines. First, the Win32 GNU Chess 4 port does not need it. Second, I -could not find a way to get it to work. Win32 seems to be designed -under the assumption that only console applications, not windowed -applications, would ever want to send a CTRL_C_EVENT. -

- -

8. Commands from xboard to the engine

- -

-All commands from xboard to the engine end with a newline (\n), even -where that is not explicitly stated. All your output to xboard must -be in complete lines; any form of prompt or partial line will cause -problems. -

- -

-At the beginning of each game, xboard sends an initialization string. -This is currently "new\nrandom\n" unless the user changes it with the -initString or secondInitString option. -

- -

-xboard normally reuses the same chess engine process for multiple -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 - -either with the "feature" command (beginning in protocol version -2; see below) or - -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. -

- -
-
xboard -
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. -

- -

protover N -
-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 -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. - -

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. - -

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. - -

- -

accepted -
rejected -
-These commands may be sent to your engine in reply to the "feature" -command; see its documentation below. - -

- -

new -
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 -White. Reset clocks and time controls to the start of a new game. -Stop clocks. Do not ponder on this move, even if pondering is on. -Remove any search depth limit previously set by the sd command. -

- -

variant VARNAME -
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: - - -
wildcastleShuffle chess where king can castle from d file -
nocastleShuffle chess with no castling at all -
fischerandomFischer Random (not supported yet) -
bughouseBughouse, ICC/FICS rules -
crazyhouseCrazyhouse, ICC/FICS rules -
losersWin by losing all pieces or getting mated (ICC) -
suicideWin by losing all pieces including king, -or by having fewer pieces when one player has no legal moves (FICS) -
giveaway -Win by losing all pieces including king, -or by having no legal moves (ICC) -
twokingsWeird ICC wild 9 -
kriegspielKriegspiel (engines not supported) -
atomicAtomic -
3checkWin by giving check 3 times -
unknownUnknown variant (not supported) -
-

- -

quit -
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 Signals above. -

- -

random -
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. -

- -

force -
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. -

- -

go -
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. -

- -

playother -
- -(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 not on -move. Associate the opponent's clock with the color that is on move, -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. - -

- -

white -
- -(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.) - -Set White on move. Set the engine to play Black. Stop clocks. -

- -

black -
- -(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.) - -Set Black on move. Set the engine to play White. Stop clocks. -

- -

level MPS BASE INC -
Set time controls. See the Time Control section below. -

- -

st TIME -
Set time controls. See the Time Control section -below. The commands "level" and "st" are not used together. -

- -

sd DEPTH -
The engine should limit its thinking to DEPTH ply. -

- -

time N -
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. -

- -

otim N - -
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. -

-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. -

- -

- -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. - -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". -

- -
MOVE -
See below for the syntax of moves. If the move is illegal, print -an error message; see the section "Commands from the engine to -xboard". 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. -

-When xboard sends your engine a move, it normally sends coordinate -algebraic notation. Examples: -

- -
Normal moves:e2e4 -
Pawn promotion:e7e8q -
Castling:e1g1, e1c1, e8g8, e8c8 -
Bughouse/crazyhouse drop:P@h3 -
ICS Wild 0/1 castling:d1f1, d1b1, d8f8, d8b8 -
FischerRandom castling:O-O, O-O-O (oh, not zero) -
- -

- -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@h3. Note that the last form, -P@h3, is a extension to the PGN standard's definition of SAN, which does -not support bughouse or crazyhouse. - -

- -

-xboard doesn't reliably detect illegal moves, because it does not keep -track of castling unavailability due to king or rook moves, or en -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 "Commands from the engine to xboard". -

- -
usermove MOVE -
-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". - -

- -
? -
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. -

-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, - -or other commands - -while the engine is on move. -

- -
ping N -
- -In this command, N is a decimal number. When you receive the command, -reply by sending the string pong N, 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 -received before it. Pondering does not count; if you receive a ping -while pondering, you should reply immediately and continue pondering. -Because of the way xboard uses the ping command, if you implement the -other commands in this protocol, you should never see a "ping" command -when it is your move; however, if you do, you must not send the "pong" -reply to xboard until after you send your move. For example, xboard -may send "?" immediately followed by "ping". If you implement the "?" -command, you will have moved by the time you see the subsequent ping -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. - -

-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 -allow several race conditions that could occur in previous versions of -the protocol to be fixed, so it is highly recommended that you -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. -

-
- -
draw -
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. -

- -

result RESULT {COMMENT} -
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 -was a draw, or the game was unfinished. The COMMENT string is purely -a human-readable comment; its content is unspecified and subject to -change. In ICS mode, it is passed through from ICS uninterpreted. -Example:
result 1-0 {White mates}
-

-Here are some notes on interpreting the "result" command. Some apply -only to playing on ICS ("Zippy" mode). -

- -

-If you won but did not just play a mate, your opponent must have -resigned or forfeited. If you lost but were not just mated, you -probably forfeited on time, or perhaps the operator resigned manually. -If there was a draw for some nonobvious reason, perhaps your opponent -called your flag when he had insufficient mating material (or vice -versa), or perhaps the operator agreed to a draw manually. -

- -

-You will get a result command even if you already know the game ended --- for example, after you just checkmated your opponent. In fact, if -you send the "RESULT {COMMENT}" command (discussed below), you will -simply get the same thing fed back to you with "result" tacked in -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. -

- -
setboard FEN -
-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. - -

Illegal positions: 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.

-
-

- -

edit -
- -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. - -The edit command puts the chess engine into a special mode, where -it accepts the following subcommands: - -
cchange current piece color, initially white -
Pa4 (for example)place pawn of current color on a4 -
xa4 (for example)empty the square a4 (not used by xboard) -
#clear board -
.leave edit mode -
- -See the Idioms section below for additional subcommands used in -ChessBase's implementation of the protocol. - - -

The edit command does not change the side to move. To set up a -black-on-move position, xboard uses the following command sequence: -

-
-    new
-    force
-    a2a3
-    edit
-    <edit commands>
-    .
-
- -

-This sequence is used to avoid the "black" command, which is now -considered obsolete and which many engines never did implement as -specified in this document. -

- -

-After an edit command is complete, if a king and a rook are on their -home squares, castling is assumed to be available to them. En passant -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. -

- -
hint -
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). -

- -

bk -
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. -

- -

undo -
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.) -

- -

remove -
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. -

- -

hard -
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. -

- -

easy -
Turn off pondering. -

- -

post -
Turn on thinking/pondering output. -See Thinking Output section. -

- -

nopost -
Turn off thinking/pondering output. -

- -

analyze -
Enter analyze mode. See Analyze Mode section. -

- -

name X
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. - -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 -locally against another engine, xboard uses either the other engine's -filename or the name that the other engine supplied in the myname -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. - -

- -

rating -
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. - -In the future this command may also be used in other modes, if ratings -are known. - -Example:
rating 2600 1500
-

- -

ics HOSTNAME -
-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" - -

- -

computer -
The opponent is also a computer chess engine. Some engines alter -their playing style when they receive this command. -

- -

pause -
resume -
(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.) -The "pause" command puts the engine into a special state where it -does not think, ponder, or otherwise consume significant CPU time. -The current thinking or pondering (if any) is suspended and both -player's clocks are stopped. The only command that the interface may -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. - -
- -

Bughouse commands:

- -

-xboard now supports bughouse engines when in Zippy mode. See -zippy.README for information on Zippy mode and how to turn on the -bughouse support. The bughouse move format is given above. xboard -sends the following additional commands to the engine when in bughouse -mode. -Commands to inform your engine of the partner's game state may -be added in the future. -

- -
-
partner <player> -
<player> is now your partner for future games. Example:
partner mann
-

- -

partner -
Meaning: You no longer have a partner. -

- -

ptell <text> -
Your partner told you <text>, either with a ptell or an ordinary tell. -

- -

holding [<white>] [<black>] -
White currently holds <white>; black currently holds <black>. - Example:
holding [PPPRQ] []
- -
holding [<white>] [<black>] <color><piece> -
White currently holds <white>; black currently holds <black>, after - <color> acquired <piece>. Example:
holding [PPPRQ] [R] BR
-
- -

9. Commands from the engine to xboard

- -

- -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. - -

- -
-
-feature FEATURE1=VALUE1 FEATURE2=VALUE2 ... - - -
-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 -assigned. Features can take string, integer, or boolean values; the -type of value is listed for each feature. String values are written -in double quotes (for example, feature myname="Miracle Chess -0.9"), 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. - -

-Your engine should send one or more feature commands immediately after -receiving the "protover" command, since xboard needs to know the -values of some features before sending further commands to the engine. -Because engines that predate protocol version 2 do not send "feature", -xboard uses a timeout mechanism: when it first starts your engine, it -sends "xboard" and "protover N", then listens for feature commands for -two seconds before sending any other commands. To end this timeout -and avoid the wait, set the feature "done=1" at the end of your last -feature command. To increase the timeout, if needed, set the feature -"done=0" before your first feature command and "done=1" at the end. -If needed, it is okay for your engine to set done=0 soon as it starts, -even before it receives the xboard and protover commands. This can be -useful if your engine takes a long time to initialize itself. It -should be harmless even if you are talking to a (version 1) user -interface that does not understand the "feature" command, since such -interfaces generally ignore commands from the engine that they do not -understand. -

- -

-The feature command is designed to let the protocol change without -breaking engines that were written for older protocol versions. When -a new feature is added to the protocol, its default value is always -chosen to be compatible with older versions of the protocol that did -not have the feature. Any feature that your engine does not set in a -"feature" command retains its default value, so as the protocol -changes, you do not have to change your engine to keep up with it -unless you want to take advantage of a new feature. Because some -features are improvements to the protocol, while others are meant to -cater to engines that do not implement all the protocol features, the -recommended setting for a feature is not always the same as the -default setting. The listing below gives both default and recommended -settings for most features. -

- -

-You may want to code your engine so as to be able to work with -multiple versions of the engine protocol. Protocol version 1 does not -send the protover command and does not implement the feature command; -if you send a feature command in protocol version 1, it will have no -effect and there will be no response. In protocol version 2 or later, -each feature F that you set generates the response "accepted F" if the -feature is implemented, or "rejected F" if it is not. Thus an engine -author can request any feature without having to keep track of which -protocol version it was introduced in; you need only check whether the -feature is accepted or rejected. This mechanism also makes it -possible for a user interface author to implement a subset of a -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. -

- -

-Here are the features that are currently defined. -

-
- -
-
-ping (boolean, default 0, recommended 1) - -
-If ping=1, xboard may use the protocol's new "ping" command; -if ping=0, xboard will not use the command. - - -
-setboard (boolean, default 0, recommended 1) - -
-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. - - -
-playother (boolean, default 0, recommended 1) - -
-If playother=1, xboard will use the protocol's new "playother" command -when appropriate; if playother=0, it will not use the command. - - -
-san (boolean, default 0) - -
-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 -section 8 above for more details of both kinds of notation. - - -
-usermove (boolean, default 0) - -
-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. - - -
-time (boolean, default 1, recommended 1) - -
-If time=1, xboard will send the "time" and "otim" commands to -update the engine's clocks; if time=0, it will not. - - -
-draw (boolean, default 1, recommended 1) - -
-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. - - -
-sigint (boolean, default 1) - -
-If sigint=1, xboard may send SIGINT (the interrupt signal) to -the engine as section 7 above; if sigint=0, it will -not. - - -
-sigterm (boolean, default 1) - -
-If sigterm=1, xboard may send SIGTERM (the termination signal) to -the engine as section 7 above; if sigterm=0, it will -not. - - -
-reuse (boolean, default 1, recommended 1) - -
-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. - - -
-analyze (boolean, default 1, recommended 1) - -
-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. - - -
-myname (string, default determined from engine filename) - -
-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. - - -
-variants (string, see text below) - -
-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 section 8 above. If -you do not set this feature, xboard will assume by default that your -engine supports all variants. (However, the -zippyVariants -command-line option still limits which variants will be accepted in -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. - - -
-colors (boolean, default 1, recommended 0) - -
-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 "Idioms" section -below for details. If colors=0, xboard does not use the "white" and -"black" commands at all. - - -
-ics (boolean, default 0) - -
-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. - - -
-name (boolean, see text below) - -
-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. - - -
-pause (boolean, default 0) - -
-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. - - -
-done (integer, no default) - -
-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. - -
-

- -

Illegal move: MOVE -
Illegal move (REASON): MOVE -
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 -error on to the user and retract the move. The (REASON) is entirely -optional. Examples: - -
-  Illegal move: e2e4
-  Illegal move (in check): Nf3
-  Illegal move (moving into check): e1g1
-
-

-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. -

- -
Error (ERRORTYPE): COMMAND -
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: -
-  Error (ambiguous move): Nf3
-  Error (unknown command): analyze
-  Error (command not legal now): undo
-  Error (too many parameters): level 1 2 3 4 5 6 7
-
- -
move MOVE -
Your engine is making the move MOVE. Do not echo moves from -xboard with this command; send only new moves made by the engine. - - -

For the actual move text from your chess engine (in place of MOVE -above), your move should be either -

    -
  • in coordinate notation (e.g., -e2e4, e7e8q) with castling indicated by the King's two-square move (e.g., -e1g1), or -
  • 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@square (e.g., P@f7) to handle piece placement -in bughouse and crazyhouse. -
-xboard itself also accepts some variants of SAN, but for compatibility -with non-xboard interfaces, it is best not to rely on this behavior. -

- -

Warning: Even though all versions of this protocol specification -have indicated that xboard accepts SAN moves, some non-xboard -interfaces are known to accept only coordinate notation. See the -Idioms section for more information on the known limitations of some -non-xboard interfaces. It should be safe to send SAN moves if you -receive a "protover 2" (or later) command from the interface, but -otherwise it is best to stick to coordinate notation for maximum -compatibility. An even more conservative approach would be for your -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. -

-
- -
RESULT {COMMENT}
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 -"by rule" means that the game is definitely over because of what -happened on the board. In normal chess, this includes checkmate, -stalemate, triple repetition, the 50 move rule, or insufficient -material; it does not include loss on time or the like. -Examples: -
-  0-1 {Black mates}
-  1-0 {White mates}
-  1/2-1/2 {Draw by repetition}
-  1/2-1/2 {Stalemate}
-
- -

-xboard relays the result to the user, the ICS, the other engine in Two -Machines mode, and the PGN save file as required. -

- -
resign -
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. -

- -

offer draw -
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. -

- -

tellopponent MESSAGE -
-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, -including whitespace, to the end of the line. When the engine is -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. -

- -

tellothers MESSAGE -
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. -

- -

tellall MESSAGE -
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, -including whitespace, to the end of the line. When the engine is -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. - -

- -

telluser MESSAGE -
xboard pops up an information dialog containing the message. -MESSAGE consists of any characters, including whitespace, to the end -of the line. -

- -

tellusererror MESSAGE -
xboard pops up an error dialog containing the message. -MESSAGE consists of any characters, including whitespace, to the end -of the line. -

- -

askuser REPTAG MESSAGE -
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. -

- -

tellics MESSAGE -
In Zippy mode, xboard sends "MESSAGE\n" to ICS. MESSAGE consists -of any characters, including whitespace, to the end of the line. -

- -

tellicsnoalias MESSAGE -
-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. - -
-

- -

10. Thinking Output

- -

-If the user asks your engine to "show thinking", xboard sends your -engine the "post" command. It sends "nopost" to turn thinking off. -In post mode, your engine sends output lines to show the progress of -its thinking. The engine can send as many or few of these lines as it -wants to, whenever it wants to. Typically they would be sent when the -PV (principal variation) changes or the depth changes. The thinking -output should be in the following format: -

- -
ply score time nodes pv
- -Where: - -
plyInteger giving current search depth. -
scoreInteger giving current evaluation in centipawns. -
timeCurrent search time in centiseconds (ex: -1028 = 10.28 seconds). - -
nodesNodes searched. -
pvFreeform 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. -
- -

-Example: -

- -
  9 156 1084 48000 Nf3 Nc6 Nc3 Nf6
- -

-Meaning: -

- -9 ply, score=1.56, time = 10.84 seconds, nodes=48000, -PV = "Nf3 Nc6 Nc3 Nf6" - -

-Longer example from actual Crafty output: -

-
-  4    109      14   1435  1. e4 d5 2. Qf3 dxe4 3. Qxe4 Nc6
-  4    116      23   2252  1. Nf3 Nc6 2. e4 e6
-  4    116      27   2589  1. Nf3 Nc6 2. e4 e6
-  5    141      44   4539  1. Nf3 Nc6 2. O-O e5 3. e4
-  5    141      54   5568  1. Nf3 Nc6 2. O-O e5 3. e4
-
- -

-You can use the PV to show other things; for instance, while in book, -Crafty shows the observed frequency of different reply moves in its -book. In situations like this where your engine is not really -searching, start the PV with a '(' character: -

- -
-  0      0       0      0  (e4 64%, d4 24%)
-
- -

-GNU Chess output is very slightly different. The ply number is -followed by an extra nonblank character, and the time is in seconds, -not hundredths of seconds. For compatibility, xboard accepts the -extra character and takes it as a flag indicating the different time -units. Example: -

- -
- 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.     76    0      215   d1e2  e8e7  e2e3 
- 4&     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.     71    0     1669   d1e2  e8e7  e2e3  e7e6  e3f4 
- 6&     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.     48    0    10056   d1e2  e8e7  e2e3  e7e6  e3e4  f7f5  e4d4 
- 8&     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 
-                           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 
-                           d4e4  f7f5  e4f4 
-10.     34    9   173474   d1e2  e8e7  e2e3  e7e6  e3d4  h7h5  c2c4  h5h4 
-                           d4e4  f7f5  e4f4 
-
- -

If your engine is pondering (thinking on its opponent's time) in post -mode, it can show its thinking then too. In this case your engine may -omit the hint move (the move it is assuming its opponent will make) -from the thinking lines if and only if it sends xboard the move in -the usual "Hint: xxx" format before sending the first line. -

- -

11. Time control

- -

-xboard supports three styles of time control: conventional chess clocks, -the ICS-style incremental clock, and an exact number of seconds per move. -

- -

In conventional clock mode, every time control period is the same. -That is, if the time control is 40 moves in 5 minutes, then after each -side has made 40 moves, they each get an additional 5 minutes, and so -on, ad infinitum. At some future time it would be nice to support a -series of distinct time controls. This is very low on my personal -priority list, but code donations to the xboard project are accepted, -so feel free to take a swing at it. I suggest you talk to me first, -though. -

- -

-The command to set a conventional time control looks like this: -

- -
-  level 40 5 0
-  level 40 0:30 0
-
- -

-The 40 means that there are 40 moves per time control. The 5 means -there are 5 minutes in the control. In the second example, the 0:30 -means there are 30 seconds. The final 0 means that we are in -conventional clock mode. -

- -

-The command to set an incremental time control looks like this: -

- -
-  level 0 2 12
-
- -

-Here the 0 means "play the whole game in this time control period", -the 2 means "base=2 minutes", and the 12 means "inc=12 seconds". As -in conventional clock mode, the second argument to level can be in -minutes and seconds. -

- -

-At the start of the game, each player's clock is set to base minutes. -Immediately after a player makes a move, inc seconds are added to his -clock. A player's clock counts down while it is his turn. Your flag -can be called whenever your clock is zero or negative. (Your clock -can go negative and then become positive again because of the -increment.) -

- -

-A special rule on some ICS implementations: if you ask for a game with -base=0, the clocks really start at 10 seconds instead of 0. xboard -itself does not know about this rule, so it passes the 0 on to the -engine instead of changing it to 0:10. -

- -

-ICS also has time odds games. With time odds, each player has his own -(base, inc) pair, but otherwise things work the same as in normal -games. The Zippy xboard accepts time odds games but ignores the fact -that the opponent's parameters are different; this is perhaps not -quite the right thing to do, but gnuchess doesn't understand time -odds. Time odds games are always unrated. -

- -

-The command to set an exact number of seconds per move looks like this: -

- -
-  st 30
-
- -

-This means that each move must be made in at most 30 seconds. Time not used -on one move does not accumulate for use on later moves. -

- -

12. Analyze Mode

- -

xboard supports analyzing fresh games, edited positions, and games -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. - -Beginning in protocol version 2, -if your engine does not support analyze mode, it should use -the feature command to set analyze=0. - -The older method of -printing the error message "Error (unknown command): analyze" in -response to the "analyze" command will also work, however. -

- -

-To enter analyze mode, xboard sends the command sequence "post", "analyze". -Analyze mode in your engine should be -similar to force mode, except that your engine thinks about what move -it would make next if it were on move. Your engine should accept the -following commands while in analyze mode: -

- -
    -
  • Any legal move, as in force mode -
  • undo   Back up one move and analyze previous position. -
  • new   Reset position to start of game but stay in analyze mode. -
  • setboard if you have set feature setboard=1; otherwise edit. Exiting edit mode returns to analyze mode. - -
  • exit   Leave analyze mode. -
  • .   Send a search status update (optional); see below. -
  • -bk   Show book moves from this position, -if any; see above. -
  • -hint   Show the predicted move from this -position, if any; see above. -
- -

-If the user selects "Periodic Updates", xboard will send the string -".\n" to the chess engine periodically during analyze mode, unless the -last PV received began with a '(' character. -

- -

-The chess engine should respond to ".\n" with a line like this: -

- -
-stat01: time nodes ply mvleft mvtot mvname
-
- -Where: - -
timeElapsed search time in centiseconds (ie: 567 = 5.67 seconds). -
nodesNodes searched so far. -
plySearch depth so far. -
mvleftNumber of moves left to consider at this depth. -
mvtotTotal number of moves to consider. -
mvname -Move currently being considered (SAN or coordinate notation). Optional; -added in protocol version 2. -
- -

-Examples: -

-
-  stat01: 1234 30000 7 5 30
-  stat01: 1234 30000 7 5 30 Nf3
-
- -

-Meaning: -

- -

After 12.34 seconds, I've searched 7 ply/30000 nodes, there are a - total of 30 legal moves, and I have 5 more moves to search - before going to depth 8. In the second example, of the 30 legal - moves, the one I am currently searching is Nf3.

- -

-Implementation of the "." command is optional. If the engine does not -respond to the "." command with a "stat01..." line, xboard will stop -sending "." commands. If the engine does not implement this command, -the analysis window will use a shortened format to display the engine -info. -

- -

-To give the user some extra information, the chess engine can output -the strings "++\n" and "--\n", to indicate that the current search is -failing high or low, respectively. You don't have to send anything -else to say "Okay, I'm not failing high/low anymore." xboard will -figure this out itself. -

- -

13. Idioms and backward compatibility features

- -

-Some engines have variant interpretations of the force/go/white/black, -time/otim, and hard/easy command sets. -In order to accommodate these older engines, xboard uses these commands -only according to the stylized patterns ("idioms") given in this section. -The obsolete white and black commands -have historically been particularly troublesome, and it is recommended -that new engines set the feature colors=0 and/or ignore the commands. -

- -
- -
time N -
otim N -
MOVE -
Sent when the opponent makes a move and the engine is already -playing the opposite color. -

- -

white -
go -
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. - -If you set the feature colors=0, "white" is not sent. - -

- -

black -
go -
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. - -If you set the feature colors=0, "black" is not sent. - -

- -

white -
time N -
otim N -
black -
go -
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. - -If you set the feature colors=0, "white" and "black" are not sent. - -

- -

black -
time N -
otim N -
white -
go -
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. - -If you set the feature colors=0, "black" and "white" are not sent. - -

- -

hard -
easy -
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. - -
- -

-To support older engines, certain additional commands from the engine -to xboard are also recognized. (These are commands by themselves, not -values to be placed in the comment field of the PGN result code.) -These forms are not recommended for new engines; use the PGN result -code commands or the resign command instead. -

- - -
Command Interpreted as -
White resigns 0-1 {White resigns} -
Black resigns 1-0 {Black resigns} -
White 1-0 {White mates} -
Black 0-1 {Black mates} -
Draw 1/2-1/2 {Draw} -
computer mates 1-0 {White mates} or 0-1 {Black mates} -
opponent mates 1-0 {White mates} or 0-1 {Black mates} -
computer resigns 0-1 {White resigns} or 1-0 {Black resigns} -
game is a draw 1/2-1/2 {Draw} -
checkmate 1-0 {White mates} or 0-1 {Black mates} -
- -

-Commands in the above table are recognized if they begin a line and -arbitrary characters follow, so (for example) "White mates" will be -recognized as "White", and "game is a draw by the 50 move rule" will -be recognized as "game is a draw". All the commands are -case-sensitive. -

- -

-An alternative move syntax is also recognized: -

- - -
Command Interpreted as -
NUMBER ... MOVE move MOVE -
- -

-Here NUMBER means any string of decimal digits, optionally ending in a -period. MOVE is any string containing no whitespace. In this command -format, xboard requires the "..." even if your engine is playing -White. A command of the form NUMBER MOVE will be ignored. This odd -treatment of the commands is needed for compatibility with gnuchessx. -The original reasons for it are lost in the mists of time, but I -suspect it was originally a bug in the earliest versions of xboard, -before I started working on it, which someone "fixed" in the wrong -way, by creating a special version of gnuchess (gnuchessx) instead of -changing xboard. -

- -

-Any line that contains the words "offer" and "draw" is recognized as -"offer draw". -

- -

-The "Illegal move" message is recognized even if spelled "illegal -move" and even if the colon (":") is omitted. This accommodates GNU -Chess 4, which prints messages like "Illegal move (no matching -move)e2e4", and old versions of Crafty, which print just "illegal move". -

- -

-In Zippy mode, for compatibility with older versions of Crafty, -xboard passes through to ICS any line that begins "kibitz", "whisper", -"tell", or "draw". Do not use this feature in new code. Instead, use the -commands "tellall", "tellothers", "tellopponent", "tellics" (if needed), -"1/2-1/2 {COMMENT}", or "offer draw", as appropriate. -

- -

- -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. - -

- -

- -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 -1 TIME" instead, for the benefit of GNU Chess 4. Note that this is -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. - -

- - -

-In support of the -firstHost/-secondHost features, which allow a chess -engine to be run on another machine using the rsh protocol, xboard recognizes -error messages that are likely to come from rsh as fatal errors. The following -messages are currently recognized: -

- -
-unknown host
-No remote directory
-not found
-No such file
-can't alloc
-Permission denied
-
-
- -

- -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 -added the commands fritz, reset, and -ponder, and the edit subcommands -castle and ep. If you want your -engine to work well with the ChessBase/Fritz GUI, you may need to -implement these additional commands, and you should also be aware of -the peculiar way that ChessBase uses the protocol. See their web page for documentation. - -

- -

- -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. - -

- -
-
converted to HTML by Steffen A. Jakob
- - + + +Chess Engine Communication Protocol + + + +
+

Chess Engine Communication Protocol

+

Discussion Proposal

+

Tim Mann & H.G.Muller

+

+$Id: engine-intf.html,v 2.1 2003/10/27 19:21:00 mann Exp $
+Version 2; implemented in xboard/WinBoard 4.2.1 and later.
+Changes since version 1 are indicated in red.
+Changes for WinBoard 4.3.xx are indicated in green. +


+ + + +
+ +

1. Introduction

+ +

+This document is a set of rough notes on the protocol that xboard and +WinBoard use to communicate with gnuchessx and other chess engines. +These notes may be useful if you want to connect a different chess +engine to xboard. Throughout the notes, "xboard" means both xboard +and WinBoard except where they are specifically contrasted. +

+ +

+There are two reasons I can imagine someone wanting to do this: +

+
    +
  1. You have, or are developing, a chess engine but you don't want to +write your own graphical interface. +
  2. You have, or are developing,a chess engine, and you want to +interface it to the Internet Chess Server. +
+ +

+In case (2), if you are using xboard, you will need to configure the +"Zippy" code into it, but WinBoard includes this code already. See +the file zippy.README +in the xboard or WinBoard distribution for more information. + +

+ +

+These notes are unpolished, but I've attempted to make them complete +in this release. If you notice any errors, omissions, or misleading +statements, let me know. +

+ +

+I'd like to hear from everyone who is trying to interface their own +chess engine to xboard/WinBoard. Please email me, +tim@tim-mann.org. Also, please join +the mailing list for authors of xboard/WinBoard compatible chess +engines. The list is now hosted by Yahoo Groups; you can join at http://www.egroups.com/group/chess-engines, or you can read the +list there without joining. The list is filtered to prevent spam. +

+

+ +Note that the WinBoard 4.3.xx line is 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 +WinBoard forum. + +

+ +

2. Connection

+ +

+An xboard chess engine runs as a separate process from xboard itself, +connected to xboard through a pair of anonymous pipes. The engine +does not have to do anything special to set up these pipes. xboard +sets up the pipes itself and starts the engine with one pipe as its +standard input and the other as its standard output. The engine then +reads commands from its standard input and writes responses to its +standard output. This is, unfortunately, a little more complicated to +do right than it sounds; see section 6 below. +

+ +

+And yes, contrary to some people's expectations, exactly the same +thing is true for WinBoard. Pipes and standard input/output are +implemented in Win32 and work fine. You don't have to use DDE, COM, +DLLs, BSOD, or any of the other infinite complexity that +Microsoft has created just to talk between two programs. A WinBoard +chess engine is a Win32 console program that simply reads from its +standard input and writes to its standard output. See sections +5 and 6 below for additional details. +

+ +

3. Debugging

+ +

+To diagnose problems in your engine's interaction with xboard, use the +-debug flag on xboard's command line to see the messages that are +being exchanged. In WinBoard, these messages are written to the file +WinBoard.debug instead of going to the screen. +

+ +

+You can turn debug mode on or off while WinBoard is running by +pressing Ctrl+Alt+F12. You can turn debug mode on or off while xboard +is running by binding DebugProc to a shortcut key (and pressing the +key!); see the instructions on shortcut keys in the xboard man page. +

+ +

+While your engine is running under xboard/WinBoard, you can send a +command directly to the engine by pressing Shift+1 (xboard) or Alt+1 +(WinBoard 4.0.3 and later). This brings up a dialog that you can type +your command into. Press Shift+2 (Alt+2) instead to send to the +second chess engine in Two Machines mode. On WinBoard 4.0.2 and earlier, +Ctrl+Alt is used in place of Alt; this had to be changed due to a conflict +with typing the @-sign on some European keyboards. +

+ +

4. How it got this way

+ +

+Originally, xboard was just trying to talk to the existing +command-line interface of GNU Chess 3.1+ and 4, which was designed +for people to type commands to. So the communication protocol is very +ad-hoc. It might have been good to redesign it early on, but because +xboard and GNU Chess are separate programs, I didn't want to force +people to upgrade them together to versions that matched. I +particularly wanted to keep new versions of xboard working with old +versions of GNU Chess, to make it easier to compare the play of old +and new gnuchess versions. I didn't foresee the need for a clean +protocol to be used with other chess engines in the future. +

+ +

+Circumstances have changed over the years, and now there are many more +engines that work with xboard. I've had to make the protocol +description more precise, I've added some features that GNU Chess +does not support, and I've specified the standard semantics of a few +features to be slightly different from what GNU Chess 4 does. +

+ +

+ +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. + + + +

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 +particular new feature do not have to use it; new features are not +enabled unless the engine specifically requests them using the feature +command. If an engine does not send the feature command at all, the +protocol behavior is nearly identical to version 1. Several new +features can be selected by the feature command in version 2, +including the "ping" command (recommended for all engines), the +"setboard" command, and many optional parameters. Additional features +will probably be added in future versions. +

+ +

+ +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. +I just tried to clarify some ambiguities in the original definition, +now that the WinBoard 4.3.xx line has implemented them in a specific way. +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. +
+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. +
+ +
+ +

5. WinBoard requires Win32 engines

+ +

+Due to some Microsoft brain damage that I don't understand, WinBoard +does not work with chess engines that were compiled to use a DOS +extender for 32-bit addressing. (Probably not with 16-bit DOS or +Windows programs either.) WinBoard works only with engines that are +compiled for the Win32 API. You can get a free compiler that targets +the Win32 API from http://sources.redhat.com/cygwin/. I think DJGPP 2.x should also +work if you use the RSXNTDJ extension, but I haven't tried it. Of +course, Microsoft Visual C++ will work. Most likely the other +commercial products that support Win32 will work too (Borland, etc.), +but I have not tried them. Delphi has been successfully used to write +engines for WinBoard; if you want to do this, Tony Werten has donated +some sample +code that should help you get started. +

+ +

6. Hints on input/output

+ +

+Beware of using buffered I/O in your chess engine. The C stdio +library, C++ streams, and the I/O packages in most other languages use +buffering both on input and output. That means two things. First, +when your engine tries to write some characters to xboard, the library +stashes them in an internal buffer and does not actually write them to +the pipe connected to xboard until either the buffer fills up or you +call a special library routine asking for it to be flushed. (In C +stdio, this routine is named fflush.) Second, when your engine tries +to read some characters from xboard, the library does not read just +the characters you asked for -- it reads all the characters that are +currently available (up to some limit) and stashes any characters you +are not yet ready for in an internal buffer. The next time you ask to +read, you get the characters from the buffer (if any) before the +library tries to read more data from the actual pipe. +

+ +

+Why does this cause problems? First, on the output side, remember +that your engine produces output in small quantities (say, a few +characters for a move, or a line or two giving the current analysis), +and that data always needs to be delivered to xboard/WinBoard for +display immediately. If you use buffered output, the data you print +will sit in a buffer in your own address space instead of being +delivered. +

+ +

+You can usually fix the output buffering problem by asking for the +buffering to be turned off. In C stdio, you do this by calling +setbuf(stdout, NULL). A more laborious and error-prone +method is to carefully call fflush(stdout) after every line +you output; I don't recommend this. In C++, you can try +cout.setf(ios::unitbuf), which is documented in current +editions of "The C++ Programming Language," but not older ones. +Another C++ method that might work is +cout.rdbuf()->setbuf(NULL, 0). Alternatively, you can +carefully call cout.flush() after every line you output; +again, I don't recommend this. +

+ +

+Another way to fix the problem is to use unbuffered operating system +calls to write directly to the file descriptor for standard output. +On Unix, this means write(1, ...) -- see the man page for write(2). +On Win32, you can use either the Unix-like _write(1, ...) or Win32 +native routines like WriteFile. +

+ +

+Second, on the input side, you are likely to want to poll during your +search and stop it if new input has come in. If you implement +pondering, you'll need this so that pondering stops when the user +makes a move. You should also poll during normal thinking on your +move, so that you can implement the "?" (move now) command, and so +that you can respond promptly to a "result", "force", or "quit" +command if xboard wants to end the game or terminate your engine. +Buffered input makes polling more complicated -- when you poll, you +must stop your search if there are either characters in the buffer +or characters available from the underlying file descriptor. +

+ +

+The most direct way to fix this problem is to use unbuffered operating +system calls to read (and poll) the underlying file descriptor +directly. On Unix, use read(0, ...) to read from standard input, and +use select() to poll it. See the man pages read(2) and select(2). +(Don't follow the example of GNU Chess 4 and use the FIONREAD ioctl to +poll for input. It is not very portable; that is, it does not exist +on all versions of Unix, and is broken on some that do have it.) On +Win32, you can use either the Unix-like _read(0, ...) or the native +Win32 ReadFile() to read. Unfortunately, under Win32, the function to +use for polling is different depending on whether the input device is +a pipe, a console, or something else. (More Microsoft brain damage +here -- did they never hear of device independence?) For pipes, you +can use PeekNamedPipe to poll (even when the pipe is unnamed). +For consoles, +you can use GetNumberOfConsoleInputEvents. For sockets only, you can +use select(). It might be possible to use +WaitForSingleObject more +generally, but I have not tried it. Some code to do these things can +be found in Crafty's utility.c, but I don't guarantee that it's all +correct or optimal. +

+ +

+A second way to fix the problem might be to ask your I/O library not +to buffer on input. It should then be safe to poll the underlying +file descriptor as described above. With C, you can try calling +setbuf(stdin, NULL). However, I have never tried this. Also, there +could be problems if you use scanf(), at least with certain patterns, +because scanf() sometimes needs to read one extra character and "push +it back" into the buffer; hence, there is a one-character pushback +buffer even if you asked for stdio to be unbuffered. With C++, you +can try cin.rdbuf()->setbuf(NULL, 0), but again, I have never tried +this. +

+ +

+A third way to fix the problem is to check whether there are +characters in the buffer whenever you poll. C I/O libraries generally +do not provide any portable way to do this. Under C++, you can use +cin.rdbuf()->in_avail(). This method has been reported to +work with +EXchess. Remember that if there are no characters in the buffer, you +still have to poll the underlying file descriptor too, using the +method described above. +

+ +

+A fourth way to fix the problem is to use a separate thread to read +from stdin. This way works well if you are familiar with thread +programming. This thread can be blocked waiting for input to come in +at all times, while the main thread of your engine does its thinking. +When input arrives, you have the thread put the input into a buffer +and set a flag in a global variable. Your search routine then +periodically tests the global variable to see if there is input to +process, and stops if there is. WinBoard and my Win32 ports of ICC +timestamp and FICS timeseal use threads to handle multiple input +sources. +

+ +

7. Signals

+ +

Engines that run on Unix need to be concerned with two Unix +signals: SIGTERM and SIGINT. This applies both to +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. + +Beginning with version 2, you can now turn off the use of +either or both +signals. See the "feature" command in section 9 below. + +

+ +

First, when an engine is sent the "quit" command, it is also given +a SIGTERM signal shortly afterward to make sure it goes away. +If your engine reliably responds to "quit", and the signal causes +problems for you, you should either ignore it by calling +signal(SIGTERM, SIG_IGN) at the start of your program, +or disable it with the "feature" command.

+ +

Second, xboard will send an interrupt signal (SIGINT) at +certain times when it believes the engine may not be listening to user +input (thinking or pondering). WinBoard currently does this only when +the engine is running remotely using the -firstHost or -secondHost +feature, not when it is running locally. You probably need to know +only enough about this grungy feature to keep it from getting in your +way. +

+ +

+The SIGINTs are basically tailored to the needs of GNU Chess 4 +on systems where its input polling code is broken or disabled. +Because they work in a rather peculiar way, it is recommended that you +either ignore SIGINT by having your engine call +signal(SIGINT, SIG_IGN), or disable it with the "feature" +command.

+ +

+Here are details for the curious. If xboard needs to send a command +when it is the chess engine's move (such as before the "?" command), +it sends a SIGINT first. If xboard needs to send commands when it is +not the chess engine's move, but the chess engine may be pondering +(thinking on its opponent's time) or analyzing (analysis or analyze +file mode), xboard sends a SIGINT before the first such command only. +Another SIGINT is not sent until another move is made, even if xboard +issues more commands. This behavior is necessary for GNU Chess 4. The +first SIGINT stops it from pondering until the next move, but on some +systems, GNU Chess 4 will die if it receives a SIGINT when not +actually thinking or pondering. +

+ +

+There are two reasons why WinBoard does not send the Win32 equivalent +of SIGINT (which is called CTRL_C_EVENT) to local +engines. First, the Win32 GNU Chess 4 port does not need it. Second, I +could not find a way to get it to work. Win32 seems to be designed +under the assumption that only console applications, not windowed +applications, would ever want to send a CTRL_C_EVENT. +

+ +

8. Commands from xboard to the engine

+ +

+All commands from xboard to the engine end with a newline (\n), even +where that is not explicitly stated. All your output to xboard must +be in complete lines; any form of prompt or partial line will cause +problems. +

+ +

+At the beginning of each game, xboard sends an initialization string. +This is currently "new\nrandom\n" unless the user changes it with the +initString or secondInitString option. +

+ +

+xboard normally reuses the same chess engine process for multiple +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 + +either with the "feature" command (beginning in protocol version +2; see below) or + +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. +

+ +
+
xboard +
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. +

+ +

protover N +
+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 +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. + +

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. + +

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. + +

+ +

accepted +
rejected +
+These commands may be sent to your engine in reply to the "feature" +command; see its documentation below. + +

+ +

new +
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 +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. +

+ +

variant VARNAME +
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: + + +
wildcastleShuffle chess where king can castle from d file +
nocastleShuffle chess with no castling at all +
fischerandomFischer Random +
bughouseBughouse, ICC/FICS rules +
crazyhouseCrazyhouse, ICC/FICS rules +
losersWin by losing all pieces or getting mated (ICC) +
suicideWin by losing all pieces including king, +or by having fewer pieces when one player has no legal moves (FICS) +
giveaway +Win by losing all pieces including king, +or by having no legal moves (ICC) +
twokingsWeird ICC wild 9 +
kriegspielKriegspiel (engines not supported) +
atomicAtomic +
3checkWin by giving check 3 times +
xiangqi +Chinese Chess (9x10 board) +
shogi +Japanese Chess (9x9 bord) +
capablanca +Capablanca Chess (10x8 board, with Archbishop and Chancellor) +
gothic +Gothic Chess (10x8 board, same with better opening setup) +
falcon +Falcon Chess (10x8 board, with two Falcon pieces) +
shatranj +ancient Arabic Chess, with Elephants and General in stead of B and Q +
courier +Courier Chess (12x8 board, a medieval precursor of modern Chess +
knightmate +King moves as Knight and vice versa +
berolina +Pawns capture straight ahead, and move diagonally +
janus +Janus Chess (10x8, with two Archbishops) +
caparandom +shuffle variant like FRC (10x8 board) +
cylinder +Pieces wrap around between side edges, like board is a cylinder +
unknownUnknown variant (not supported) +
+

+ +

quit +
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 Signals above. +

+ +

random +
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. +

+ +

force +
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. +

+ +

go +
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. +

+ +

playother +
+ +(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 not on +move. Associate the opponent's clock with the color that is on move, +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. + +

+ +

white +
+ +(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.) + +Set White on move. Set the engine to play Black. Stop clocks. +

+ +

black +
+ +(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.) + +Set Black on move. Set the engine to play White. Stop clocks. +

+ +

level MPS BASE INC +
Set time controls. See the Time Control section below. +

+ +

st TIME +
Set time controls. See the Time Control section +below. +

+ +

sd DEPTH +
The engine should limit its thinking to DEPTH ply. +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. +

+ +

nps NODE_RATE +
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 section 10), +converted to seconds through dividing by the given NODE_RATE. +Example: after receiving the commands "st 8" and "nps 10000", +the engine should never use more that 80,000 nodes in the search for any move. +In this mode, the engine should report user CPU time used (in its thinking output), +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. + +

+ +

time N +
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. +

+ +

otim N + +
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. +

+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. +

+

+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. +Not 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. + +

+

+ +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. + +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". +

+ +
MOVE +
See below for the syntax of moves. If the move is illegal, print +an error message; see the section "Commands from the engine to +xboard". 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. +

+When xboard sends your engine a move, it normally sends coordinate +algebraic notation. Examples: +

+ +
Normal moves:e2e4 +
Pawn promotion:e7e8q +
Castling:e1g1, e1c1, e8g8, e8c8 +
Bughouse/crazyhouse drop:P@h3 +
ICS Wild 0/1 castling:d1f1, d1b1, d8f8, d8b8 +
FischerRandom castling:O-O, O-O-O (oh, not zero) +
+ +

+ +Note that on boards with more than 9 ranks, counting of the ranks starts at 0. + +

+

+ +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@h3. Note that the last form, +P@h3, is a extension to the PGN standard's definition of SAN, which does +not support bughouse or crazyhouse. + +

+ +

+xboard doesn't reliably detect illegal moves, because it does not keep +track of castling unavailability due to king or rook moves, or en +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 "Commands from the engine to xboard". +

+ +
usermove MOVE +
+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". + +

+ +
? +
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. +

+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, + +or other commands + +while the engine is on move. +

+ +
ping N +
+ +In this command, N is a decimal number. When you receive the command, +reply by sending the string pong N, 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 +received before it. Pondering does not count; if you receive a ping +while pondering, you should reply immediately and continue pondering. +Because of the way xboard uses the ping command, if you implement the +other commands in this protocol, you should never see a "ping" command +when it is your move; however, if you do, you must not send the "pong" +reply to xboard until after you send your move. For example, xboard +may send "?" immediately followed by "ping". If you implement the "?" +command, you will have moved by the time you see the subsequent ping +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. + +

+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 +allow several race conditions that could occur in previous versions of +the protocol to be fixed, so it is highly recommended that you +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. +

+
+ +
draw +
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. +

+ +

result RESULT {COMMENT} +
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 +was a draw, or the game was unfinished. The COMMENT string is purely +a human-readable comment; its content is unspecified and subject to +change. In ICS mode, it is passed through from ICS uninterpreted. +Example:
result 1-0 {White mates}
+

+Here are some notes on interpreting the "result" command. Some apply +only to playing on ICS ("Zippy" mode). +

+ +

+If you won but did not just play a mate, your opponent must have +resigned or forfeited. If you lost but were not just mated, you +probably forfeited on time, or perhaps the operator resigned manually. +If there was a draw for some nonobvious reason, perhaps your opponent +called your flag when he had insufficient mating material (or vice +versa), or perhaps the operator agreed to a draw manually. +

+ +

+You will get a result command even if you already know the game ended +-- for example, after you just checkmated your opponent. In fact, if +you send the "RESULT {COMMENT}" command (discussed below), you will +simply get the same thing fed back to you with "result" tacked in +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. +

+ +
setboard FEN +
+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. +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 + + +

Illegal positions: 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.

+
+

+ +

edit +
+ +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. + +The edit command puts the chess engine into a special mode, where +it accepts the following subcommands: + +
cchange current piece color, initially white +
Pa4 (for example)place pawn of current color on a4 +
xa4 (for example)empty the square a4 (not used by xboard) +
#clear board +
.leave edit mode +
+ +See the Idioms section below for additional subcommands used in +ChessBase's implementation of the protocol. + + +

The edit command does not change the side to move. To set up a +black-on-move position, xboard uses the following command sequence: +

+
+    new
+    force
+    a2a3
+    edit
+    <edit commands>
+    .
+
+ +

+This sequence is used to avoid the "black" command, which is now +considered obsolete and which many engines never did implement as +specified in this document. +

+ +

+After an edit command is complete, if a king and a rook are on their +home squares, castling is assumed to be available to them. En passant +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. + +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. +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...) + +

+ +
hint +
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). +

+ +

bk +
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. +

+ +

undo +
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.) +

+ +

remove +
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. +

+ +

hard +
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. +

+ +

easy +
Turn off pondering. +

+ +

post +
Turn on thinking/pondering output. +See Thinking Output section. +

+ +

nopost +
Turn off thinking/pondering output. +

+ +

analyze +
Enter analyze mode. See Analyze Mode section. +

+ +

name X
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. + +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 +locally against another engine, xboard uses either the other engine's +filename or the name that the other engine supplied in the myname +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. + +

+ +

rating +
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. + +In the future this command may also be used in other modes, if ratings +are known. + +Example:
rating 2600 1500
+

+ +

ics HOSTNAME +
+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" + +

+ +

computer +
The opponent is also a computer chess engine. Some engines alter +their playing style when they receive this command. +

+ +

pause +
resume +
(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.) +The "pause" command puts the engine into a special state where it +does not think, ponder, or otherwise consume significant CPU time. +The current thinking or pondering (if any) is suspended and both +player's clocks are stopped. The only command that the interface may +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. + +
+ +

Bughouse commands:

+ +

+xboard now supports bughouse engines when in Zippy mode. See +zippy.README for information on Zippy mode and how to turn on the +bughouse support. The bughouse move format is given above. xboard +sends the following additional commands to the engine when in bughouse +mode. +Commands to inform your engine of the partner's game state may +be added in the future. +

+ +
+
partner <player> +
<player> is now your partner for future games. Example:
partner mann
+

+ +

partner +
Meaning: You no longer have a partner. +

+ +

ptell <text> +
Your partner told you <text>, either with a ptell or an ordinary tell. +

+ +

holding [<white>] [<black>] +
White currently holds <white>; black currently holds <black>. + Example:
holding [PPPRQ] []
+ +
holding [<white>] [<black>] <color><piece> +
White currently holds <white>; black currently holds <black>, after + <color> acquired <piece>. Example:
holding [PPPRQ] [R] BR
+
+ +

9. Commands from the engine to xboard

+ +

+ +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. + +

+ +
+
+feature FEATURE1=VALUE1 FEATURE2=VALUE2 ... + + +
+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 +assigned. Features can take string, integer, or boolean values; the +type of value is listed for each feature. String values are written +in double quotes (for example, feature myname="Miracle Chess +0.9"), 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. + +

+Your engine should send one or more feature commands immediately after +receiving the "protover" command, since xboard needs to know the +values of some features before sending further commands to the engine. +Because engines that predate protocol version 2 do not send "feature", +xboard uses a timeout mechanism: when it first starts your engine, it +sends "xboard" and "protover N", then listens for feature commands for +two seconds before sending any other commands. To end this timeout +and avoid the wait, set the feature "done=1" at the end of your last +feature command. To increase the timeout, if needed, set the feature +"done=0" before your first feature command and "done=1" at the end. +If needed, it is okay for your engine to set done=0 soon as it starts, +even before it receives the xboard and protover commands. This can be +useful if your engine takes a long time to initialize itself. It +should be harmless even if you are talking to a (version 1) user +interface that does not understand the "feature" command, since such +interfaces generally ignore commands from the engine that they do not +understand. +

+ +

+The feature command is designed to let the protocol change without +breaking engines that were written for older protocol versions. When +a new feature is added to the protocol, its default value is always +chosen to be compatible with older versions of the protocol that did +not have the feature. Any feature that your engine does not set in a +"feature" command retains its default value, so as the protocol +changes, you do not have to change your engine to keep up with it +unless you want to take advantage of a new feature. Because some +features are improvements to the protocol, while others are meant to +cater to engines that do not implement all the protocol features, the +recommended setting for a feature is not always the same as the +default setting. The listing below gives both default and recommended +settings for most features. +

+ +

+You may want to code your engine so as to be able to work with +multiple versions of the engine protocol. Protocol version 1 does not +send the protover command and does not implement the feature command; +if you send a feature command in protocol version 1, it will have no +effect and there will be no response. In protocol version 2 or later, +each feature F that you set generates the response "accepted F" if the +feature is implemented, or "rejected F" if it is not. Thus an engine +author can request any feature without having to keep track of which +protocol version it was introduced in; you need only check whether the +feature is accepted or rejected. This mechanism also makes it +possible for a user interface author to implement a subset of a +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. +

+ +

+Here are the features that are currently defined. +

+
+ +
+
+ping (boolean, default 0, recommended 1) + +
+If ping=1, xboard may use the protocol's new "ping" command; +if ping=0, xboard will not use the command. + + +
+setboard (boolean, default 0, recommended 1) + +
+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. + + +
+playother (boolean, default 0, recommended 1) + +
+If playother=1, xboard will use the protocol's new "playother" command +when appropriate; if playother=0, it will not use the command. + + +
+san (boolean, default 0) + +
+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 +section 8 above for more details of both kinds of notation. + + +
+usermove (boolean, default 0) + +
+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. + + +
+time (boolean, default 1, recommended 1) + +
+If time=1, xboard will send the "time" and "otim" commands to +update the engine's clocks; if time=0, it will not. + + +
+draw (boolean, default 1, recommended 1) + +
+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. + + +
+sigint (boolean, default 1) + +
+If sigint=1, xboard may send SIGINT (the interrupt signal) to +the engine as section 7 above; if sigint=0, it will +not. + + +
+sigterm (boolean, default 1) + +
+If sigterm=1, xboard may send SIGTERM (the termination signal) to +the engine as section 7 above; if sigterm=0, it will +not. + + +
+reuse (boolean, default 1, recommended 1) + +
+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. + + +
+analyze (boolean, default 1, recommended 1) + +
+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. + + +
+myname (string, default determined from engine filename) + +
+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. + + +
+variants (string, see text below) + +
+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 section 8 above. If +you do not set this feature, xboard will assume by default that your +engine supports all variants. (However, the -zippyVariants +command-line option still limits which variants will be accepted in +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. +
+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. +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". +
+ +
+colors (boolean, default 1, recommended 0) + +
+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 "Idioms" section +below for details. If colors=0, xboard does not use the "white" and +"black" commands at all. + + +
+ics (boolean, default 0) + +
+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. + + +
+name (boolean, see text below) + +
+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. + + +
+pause (boolean, default 0) + +
+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. + + +
+nps (boolean, default ?) + +
+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. +The engine should properly respond with "Error (unkown command): nps" if it does not implement it, +(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. + + +
+debug (boolean, default 0) + +
+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, +so that not all protocol-2 supporting versions of WinBoard might implement it, +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. + + +
+done (integer, no default) + +
+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. + +
+

+ +

Illegal move: MOVE +
Illegal move (REASON): MOVE +
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 +error on to the user and retract the move. The (REASON) is entirely +optional. Examples: + +
+  Illegal move: e2e4
+  Illegal move (in check): Nf3
+  Illegal move (moving into check): e1g1
+
+

+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. +

+ +
Error (ERRORTYPE): COMMAND +
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: +
+  Error (ambiguous move): Nf3
+  Error (unknown command): analyze
+  Error (command not legal now): undo
+  Error (too many parameters): level 1 2 3 4 5 6 7
+
+ +
move MOVE +
Your engine is making the move MOVE. Do not echo moves from +xboard with this command; send only new moves made by the engine. + + +

For the actual move text from your chess engine (in place of MOVE +above), your move should be either +

    +
  • in coordinate notation (e.g., +e2e4, e7e8q) with castling indicated by the King's two-square move (e.g., +e1g1), or +
  • 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@square (e.g., P@f7) to handle piece placement +in bughouse and crazyhouse. +
+xboard itself also accepts some variants of SAN, but for compatibility +with non-xboard interfaces, it is best not to rely on this behavior. +

+ +

Warning: Even though all versions of this protocol specification +have indicated that xboard accepts SAN moves, some non-xboard +interfaces are known to accept only coordinate notation. See the +Idioms section for more information on the known limitations of some +non-xboard interfaces. It should be safe to send SAN moves if you +receive a "protover 2" (or later) command from the interface, but +otherwise it is best to stick to coordinate notation for maximum +compatibility. An even more conservative approach would be for your +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. +

+
+ +
RESULT {COMMENT}
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 +"by rule" means that the game is definitely over because of what +happened on the board. In normal chess, this includes checkmate, +stalemate, triple repetition, the 50 move rule, or insufficient +material; it does not include loss on time or the like. +Examples: +
+  0-1 {Black mates}
+  1-0 {White mates}
+  1/2-1/2 {Draw by repetition}
+  1/2-1/2 {Stalemate}
+
+ +

+xboard relays the result to the user, the ICS, the other engine in Two +Machines mode, and the PGN save file as required. +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 might not be valid +(because it is not your move, and the opponent already moved without you knowing it yet). +For offering and claiming draws, "offer draw" should be used. +

+ +
resign +
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. +

+ +

offer draw +
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. +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 would make you forfeit the game. +"offer draw" should also be used to claim 50-move and 3-fold-repetition draws +that will occur after your move, by sending it before making the move. +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. + +

+ +

tellopponent MESSAGE +
+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, +including whitespace, to the end of the line. When the engine is +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. +

+ +

tellothers MESSAGE +
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. +

+ +

tellall MESSAGE +
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, +including whitespace, to the end of the line. When the engine is +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. + +

+ +

telluser MESSAGE +
xboard pops up an information dialog containing the message. +MESSAGE consists of any characters, including whitespace, to the end +of the line. +

+ +

tellusererror MESSAGE +
xboard pops up an error dialog containing the message. +MESSAGE consists of any characters, including whitespace, to the end +of the line. +

+ +

askuser REPTAG MESSAGE +
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. +

+ +

tellics MESSAGE +
In Zippy mode, xboard sends "MESSAGE\n" to ICS. MESSAGE consists +of any characters, including whitespace, to the end of the line. +

+ +

tellicsnoalias MESSAGE +
+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. + +

+ +

# COMMENT +
+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. + +
+

+ +

10. Thinking Output

+ +

+If the user asks your engine to "show thinking", xboard sends your +engine the "post" command. It sends "nopost" to turn thinking off. +In post mode, your engine sends output lines to show the progress of +its thinking. The engine can send as many or few of these lines as it +wants to, whenever it wants to. Typically they would be sent when the +PV (principal variation) changes or the depth changes. The thinking +output should be in the following format: +

+ +
ply score time nodes pv
+ +Where: + +
plyInteger giving current search depth. +
scoreInteger giving current evaluation in centipawns. +
timeCurrent search time in centiseconds (ex: +1028 = 10.28 seconds). + +
nodesNodes searched. +
pvFreeform 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. +
+ +

+Example: +

+ +
  9 156 1084 48000 Nf3 Nc6 Nc3 Nf6
+ +

+Meaning: +

+ +9 ply, score=1.56, time = 10.84 seconds, nodes=48000, +PV = "Nf3 Nc6 Nc3 Nf6" + +

+Longer example from actual Crafty output: +

+
+  4    109      14   1435  1. e4 d5 2. Qf3 dxe4 3. Qxe4 Nc6
+  4    116      23   2252  1. Nf3 Nc6 2. e4 e6
+  4    116      27   2589  1. Nf3 Nc6 2. e4 e6
+  5    141      44   4539  1. Nf3 Nc6 2. O-O e5 3. e4
+  5    141      54   5568  1. Nf3 Nc6 2. O-O e5 3. e4
+
+ +

+You can use the PV to show other things; for instance, while in book, +Crafty shows the observed frequency of different reply moves in its +book. In situations like this where your engine is not really +searching, start the PV with a '(' character: +

+ +
+  0      0       0      0  (e4 64%, d4 24%)
+
+ +

+GNU Chess output is very slightly different. The ply number is +followed by an extra nonblank character, and the time is in seconds, +not hundredths of seconds. For compatibility, xboard accepts the +extra character and takes it as a flag indicating the different time +units. Example: +

+ +
+ 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.     76    0      215   d1e2  e8e7  e2e3 
+ 4&     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.     71    0     1669   d1e2  e8e7  e2e3  e7e6  e3f4 
+ 6&     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.     48    0    10056   d1e2  e8e7  e2e3  e7e6  e3e4  f7f5  e4d4 
+ 8&     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 
+                           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 
+                           d4e4  f7f5  e4f4 
+10.     34    9   173474   d1e2  e8e7  e2e3  e7e6  e3d4  h7h5  c2c4  h5h4 
+                           d4e4  f7f5  e4f4 
+
+ +

If your engine is pondering (thinking on its opponent's time) in post +mode, it can show its thinking then too. In this case your engine may +omit the hint move (the move it is assuming its opponent will make) +from the thinking lines if and only if it sends xboard the move in +the usual "Hint: xxx" format before sending the first line. +

+ +

11. Time control

+ +

+xboard supports three styles of time control: conventional chess clocks, +the ICS-style incremental clock, and an exact number of seconds per move. +

+ +

In conventional clock mode, every time control period is the same. +That is, if the time control is 40 moves in 5 minutes, then after each +side has made 40 moves, they each get an additional 5 minutes, and so +on, ad infinitum. At some future time it would be nice to support a +series of distinct time controls. This is very low on my personal +priority list, but code donations to the xboard project are accepted, +so feel free to take a swing at it. I suggest you talk to me first, +though. +

+ +

+The command to set a conventional time control looks like this: +

+ +
+  level 40 5 0
+  level 40 0:30 0
+
+ +

+The 40 means that there are 40 moves per time control. The 5 means +there are 5 minutes in the control. In the second example, the 0:30 +means there are 30 seconds. The final 0 means that we are in +conventional clock mode. +

+ +

+ +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, +i.e. following the MIN or MIN:SEC specification. +Future protocol versions might (under control of an appropriate feature) +append such extra characters to this argument, +in order to inform the engine in advance of the time control it can expect after the current session completes. +E.g. "level 40 25+5 0" could mean that the engine has to play 40 moves in 25 minutes, +but should expect to get only 5 minutes for the entire remainder of the game after that, +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. + +

+ +

+The command to set an incremental time control looks like this: +

+ +
+  level 0 2 12
+
+ +

+Here the 0 means "play the whole game in this time control period", +the 2 means "base=2 minutes", and the 12 means "inc=12 seconds". As +in conventional clock mode, the second argument to level can be in +minutes and seconds. +

+ +

+At the start of the game, each player's clock is set to base minutes. +Immediately after a player makes a move, inc seconds are added to his +clock. A player's clock counts down while it is his turn. Your flag +can be called whenever your clock is zero or negative. (Your clock +can go negative and then become positive again because of the +increment.) +

+ +

+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 +some moves have already been played. +The time given should be interpreted as the time left on its clock +(including any time left over from the previous sessions), +and not necessarily the time that will be added to the clock +after the specified number of moves has been played. +This is only relevant in WinBoard 4.3.xx, which might send the engine +"level" commands during a game, +just before the engine has to start thinking about the first move of +a new time-control session. +Example: if at the start of the game "level 40 60 0" was given +(40 moves per hour), +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). +

+ +

+A special rule on some ICS implementations: if you ask for a game with +base=0, the clocks really start at 10 seconds instead of 0. xboard +itself does not know about this rule, so it passes the 0 on to the +engine instead of changing it to 0:10. +

+ +

+ICS also has time odds games. With time odds, each player has his own +(base, inc) pair, but otherwise things work the same as in normal +games. The Zippy xboard accepts time odds games but ignores the fact +that the opponent's parameters are different; this is perhaps not +quite the right thing to do, but gnuchess doesn't understand time +odds. Time odds games are always unrated. +

+ +

+The command to set an exact number of seconds per move looks like this: +

+ +
+  st 30
+
+ +

+This means that each move must be made in at most 30 seconds. Time not used +on one move does not accumulate for use on later moves. +

+ +

12. Analyze Mode

+ +

xboard supports analyzing fresh games, edited positions, and games +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. + +Beginning in protocol version 2, +if your engine does not support analyze mode, it should use +the feature command to set analyze=0. + +The older method of +printing the error message "Error (unknown command): analyze" in +response to the "analyze" command will also work, however. +

+ +

+To enter analyze mode, xboard sends the command sequence "post", "analyze". +Analyze mode in your engine should be +similar to force mode, except that your engine thinks about what move +it would make next if it were on move. Your engine should accept the +following commands while in analyze mode: +

+ +
    +
  • Any legal move, as in force mode +
  • undo   Back up one move and analyze previous position. +
  • new   Reset position to start of game but stay in analyze mode. +
  • setboard if you have set feature setboard=1; otherwise edit. Exiting edit mode returns to analyze mode. + +
  • exit   Leave analyze mode. +
  • .   Send a search status update (optional); see below. +
  • +bk   Show book moves from this position, +if any; see above. +
  • +hint   Show the predicted move from this +position, if any; see above. +
+ +

+If the user selects "Periodic Updates", xboard will send the string +".\n" to the chess engine periodically during analyze mode, unless the +last PV received began with a '(' character. +

+ +

+The chess engine should respond to ".\n" with a line like this: +

+ +
+stat01: time nodes ply mvleft mvtot mvname
+
+ +Where: + +
timeElapsed search time in centiseconds (ie: 567 = 5.67 seconds). +
nodesNodes searched so far. +
plySearch depth so far. +
mvleftNumber of moves left to consider at this depth. +
mvtotTotal number of moves to consider. +
mvname +Move currently being considered (SAN or coordinate notation). Optional; +added in protocol version 2. +
+ +

+Examples: +

+
+  stat01: 1234 30000 7 5 30
+  stat01: 1234 30000 7 5 30 Nf3
+
+ +

+Meaning: +

+ +

After 12.34 seconds, I've searched 7 ply/30000 nodes, there are a + total of 30 legal moves, and I have 5 more moves to search + before going to depth 8. In the second example, of the 30 legal + moves, the one I am currently searching is Nf3.

+ +

+Implementation of the "." command is optional. If the engine does not +respond to the "." command with a "stat01..." line, xboard will stop +sending "." commands. If the engine does not implement this command, +the analysis window will use a shortened format to display the engine +info. +

+ +

+To give the user some extra information, the chess engine can output +the strings "++\n" and "--\n", to indicate that the current search is +failing high or low, respectively. You don't have to send anything +else to say "Okay, I'm not failing high/low anymore." xboard will +figure this out itself. +

+ +

13. Idioms and backward compatibility features

+ +

+Some engines have variant interpretations of the force/go/white/black, +time/otim, and hard/easy command sets. +In order to accommodate these older engines, xboard uses these commands +only according to the stylized patterns ("idioms") given in this section. +The obsolete white and black commands +have historically been particularly troublesome, and it is recommended +that new engines set the feature colors=0 and/or ignore the commands. +

+ +
+ +
time N +
otim N +
MOVE +
Sent when the opponent makes a move and the engine is already +playing the opposite color. +

+ +

white +
go +
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. + +If you set the feature colors=0, "white" is not sent. + +

+ +

black +
go +
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. + +If you set the feature colors=0, "black" is not sent. + +

+ +

white +
time N +
otim N +
black +
go +
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. + +If you set the feature colors=0, "white" and "black" are not sent. + +

+ +

black +
time N +
otim N +
white +
go +
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. + +If you set the feature colors=0, "black" and "white" are not sent. + +

+ +

hard +
easy +
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. + +
+ +

+To support older engines, certain additional commands from the engine +to xboard are also recognized. (These are commands by themselves, not +values to be placed in the comment field of the PGN result code.) +These forms are not recommended for new engines; use the PGN result +code commands or the resign command instead. +

+ + +
Command Interpreted as +
White resigns 0-1 {White resigns} +
Black resigns 1-0 {Black resigns} +
White 1-0 {White mates} +
Black 0-1 {Black mates} +
Draw 1/2-1/2 {Draw} +
computer mates 1-0 {White mates} or 0-1 {Black mates} +
opponent mates 1-0 {White mates} or 0-1 {Black mates} +
computer resigns 0-1 {White resigns} or 1-0 {Black resigns} +
game is a draw 1/2-1/2 {Draw} +
checkmate 1-0 {White mates} or 0-1 {Black mates} +
+ +

+Commands in the above table are recognized if they begin a line and +arbitrary characters follow, so (for example) "White mates" will be +recognized as "White", and "game is a draw by the 50 move rule" will +be recognized as "game is a draw". All the commands are +case-sensitive. +

+ +

+An alternative move syntax is also recognized: +

+ + +
Command Interpreted as +
NUMBER ... MOVE move MOVE +
+ +

+Here NUMBER means any string of decimal digits, optionally ending in a +period. MOVE is any string containing no whitespace. In this command +format, xboard requires the "..." even if your engine is playing +White. A command of the form NUMBER MOVE will be ignored. This odd +treatment of the commands is needed for compatibility with gnuchessx. +The original reasons for it are lost in the mists of time, but I +suspect it was originally a bug in the earliest versions of xboard, +before I started working on it, which someone "fixed" in the wrong +way, by creating a special version of gnuchess (gnuchessx) instead of +changing xboard. +

+ +

+Any line that contains the words "offer" and "draw" is recognized as +"offer draw". +

+ +

+The "Illegal move" message is recognized even if spelled "illegal +move" and even if the colon (":") is omitted. This accommodates GNU +Chess 4, which prints messages like "Illegal move (no matching +move)e2e4", and old versions of Crafty, which print just "illegal move". +

+ +

+In Zippy mode, for compatibility with older versions of Crafty, +xboard passes through to ICS any line that begins "kibitz", "whisper", +"tell", or "draw". Do not use this feature in new code. Instead, use the +commands "tellall", "tellothers", "tellopponent", "tellics" (if needed), +"1/2-1/2 {COMMENT}", or "offer draw", as appropriate. +

+ +

+ +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. + +

+ +

+ +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 +1 TIME" instead, for the benefit of GNU Chess 4. Note that this is +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. + +

+ + +

+In support of the -firstHost/-secondHost features, which allow a chess +engine to be run on another machine using the rsh protocol, xboard recognizes +error messages that are likely to come from rsh as fatal errors. The following +messages are currently recognized: +

+ +
+unknown host
+No remote directory
+not found
+No such file
+can't alloc
+Permission denied
+
+
+ +

+ +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 +added the commands fritz, reset, and +ponder, and the edit subcommands +castle and ep. If you want your +engine to work well with the ChessBase/Fritz GUI, you may need to +implement these additional commands, and you should also be aware of +the peculiar way that ChessBase uses the protocol. See their web page for documentation. + +

+ +

+ +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. + +

+ +
+
converted to HTML by Steffen A. Jakob
+ + diff --git a/frontend.h b/frontend.h index dacd12a..f3556e6 100644 --- a/frontend.h +++ b/frontend.h @@ -1,186 +1,186 @@ -/* - * frontend.h -- Interface exported by all XBoard front ends - * $Id: frontend.h,v 2.2 2003/11/06 07:22:14 mann Exp $ - * - * Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts. - * Enhancements Copyright 1992-95 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: - * ------------------------------------------------------------------------ - * 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 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * ------------------------------------------------------------------------ - */ - -#ifndef _FRONTEND -#define _FRONTEND - -#include - -typedef VOIDSTAR ProcRef; -#define NoProc ((ProcRef) 0) -typedef VOIDSTAR InputSourceRef; - -void ModeHighlight P((void)); -void SetICSMode P((void)); -void SetGNUMode P((void)); -void SetNCPMode P((void)); -void SetCmailMode P((void)); -void SetTrainingModeOn P((void)); -void SetTrainingModeOff P((void)); -void SetUserThinkingEnables P((void)); -void SetMachineThinkingEnables P((void)); -void DisplayTitle P((String title)); -void DisplayMessage P((String message, String extMessage)); -void DisplayError P((String message, int error)); -void DisplayMoveError P((String message)); - -/* If status == 0, we are exiting with a benign message, not an error */ -void DisplayFatalError P((String message, int error, int status)); - -void DisplayInformation P((String message)); -void DisplayNote P((String message)); -void AskQuestion P((String title, String question, String replyPrefix, - ProcRef pr)); -void DisplayIcsInteractionTitle P((String title)); -void DrawPosition P((int fullRedraw, Board board)); -void ResetFrontEnd P((void)); -void CommentPopUp P((String title, String comment)); -void CommentPopDown P((void)); -void EditCommentPopUp P((int index, String title, String text)); - -void RingBell P((void)); -void PlayIcsWinSound P((void)); -void PlayIcsLossSound P((void)); -void PlayIcsDrawSound P((void)); -void PlayIcsUnfinishedSound P((void)); -void PlayAlarmSound P((void)); -void EchoOn P((void)); -void EchoOff P((void)); -void Raw P((void)); -void Colorize P((ColorClass cc, int continuation)); - -char *UserName P((void)); -char *HostName P((void)); - -int ClockTimerRunning P((void)); -int StopClockTimer P((void)); -void StartClockTimer P((long millisec)); -void DisplayWhiteClock P((long timeRemaining, int highlight)); -void DisplayBlackClock P((long timeRemaining, int highlight)); - -int LoadGameTimerRunning P((void)); -int StopLoadGameTimer P((void)); -void StartLoadGameTimer P((long millisec)); -void AutoSaveGame P((void)); - -typedef void (*DelayedEventCallback) P((void)); -void ScheduleDelayedEvent P((DelayedEventCallback cb, long millisec)); -DelayedEventCallback GetDelayedEvent P((void)); -void CancelDelayedEvent P((void)); - -int StartChildProcess P((char *cmdLine, char *dir, ProcRef *pr)); -void DestroyChildProcess P((ProcRef pr, int/*boolean*/ signal)); -void InterruptChildProcess P((ProcRef pr)); - -int OpenTelnet P((char *host, char *port, ProcRef *pr)); -int OpenTCP P((char *host, char *port, ProcRef *pr)); -int OpenCommPort P((char *name, ProcRef *pr)); -int OpenLoopback P((ProcRef *pr)); -int OpenRcmd P((char *host, char *user, char *cmd, ProcRef *pr)); - -typedef void (*InputCallback) P((InputSourceRef isr, VOIDSTAR closure, - char *buf, int count, int error)); -/* pr == NoProc means the local keyboard */ -InputSourceRef AddInputSource P((ProcRef pr, int lineByLine, - InputCallback func, VOIDSTAR closure)); -void RemoveInputSource P((InputSourceRef isr)); - -/* pr == NoProc means the local display */ -int OutputToProcess P((ProcRef pr, char *message, int count, int *outError)); -int OutputToProcessDelayed P((ProcRef pr, char *message, int count, - int *outError, long msdelay)); - -void CmailSigHandlerCallBack P((InputSourceRef isr, VOIDSTAR closure, - char *buf, int count, int error)); - -extern ProcRef cmailPR; - -/* these are in wgamelist.c */ -void GameListPopUp P((FILE *fp, char *filename)); -void GameListPopDown P((void)); -void GameListHighlight P((int index)); -void GameListDestroy P((void)); - -/* these are in wedittags.c */ -void EditTagsPopUp P((char *tags)); -void TagsPopUp P((char *tags, char *msg)); -void TagsPopDown P((void)); - -void ICSInitScript P((void)); -void StartAnalysisClock P((void)); -void AnalysisPopUp P((char *title, char *label)); -void AnalysisPopDown P((void)); - -void SetHighlights P((int fromX, int fromY, int toX, int toY)); -void ClearHighlights P((void)); -void SetPremoveHighlights P((int fromX, int fromY, int toX, int toY)); -void ClearPremoveHighlights P((void)); - -void ShutDownFrontEnd P((void)); -void BoardToTop P((void)); -void AnimateMove P((Board board, int fromX, int fromY, int toX, int toY)); -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; - -typedef struct FrontEndProgramStats_TAG { - int which; - int depth; - unsigned long nodes; - int score; - int time; - char * pv; - char * hint; - int an_move_index; - int an_move_count; -} FrontEndProgramStats; - -void SetProgramStats P(( FrontEndProgramStats * stats )); /* [AS] */ - -#endif +/* + * frontend.h -- Interface exported by all XBoard front ends + * $Id: frontend.h,v 2.2 2003/11/06 07:22:14 mann Exp $ + * + * Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts. + * Enhancements Copyright 1992-95 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: + * ------------------------------------------------------------------------ + * 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 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * ------------------------------------------------------------------------ + */ + +#ifndef _FRONTEND +#define _FRONTEND + +#include + +typedef VOIDSTAR ProcRef; +#define NoProc ((ProcRef) 0) +typedef VOIDSTAR InputSourceRef; + +void ModeHighlight P((void)); +void SetICSMode P((void)); +void SetGNUMode P((void)); +void SetNCPMode P((void)); +void SetCmailMode P((void)); +void SetTrainingModeOn P((void)); +void SetTrainingModeOff P((void)); +void SetUserThinkingEnables P((void)); +void SetMachineThinkingEnables P((void)); +void DisplayTitle P((String title)); +void DisplayMessage P((String message, String extMessage)); +void DisplayError P((String message, int error)); +void DisplayMoveError P((String message)); + +/* If status == 0, we are exiting with a benign message, not an error */ +void DisplayFatalError P((String message, int error, int status)); + +void DisplayInformation P((String message)); +void DisplayNote P((String message)); +void AskQuestion P((String title, String question, String replyPrefix, + ProcRef pr)); +void DisplayIcsInteractionTitle P((String title)); +void DrawPosition P((int fullRedraw, Board board)); +void ResetFrontEnd P((void)); +void CommentPopUp P((String title, String comment)); +void CommentPopDown P((void)); +void EditCommentPopUp P((int index, String title, String text)); + +void RingBell P((void)); +void PlayIcsWinSound P((void)); +void PlayIcsLossSound P((void)); +void PlayIcsDrawSound P((void)); +void PlayIcsUnfinishedSound P((void)); +void PlayAlarmSound P((void)); +void EchoOn P((void)); +void EchoOff P((void)); +void Raw P((void)); +void Colorize P((ColorClass cc, int continuation)); + +char *UserName P((void)); +char *HostName P((void)); + +int ClockTimerRunning P((void)); +int StopClockTimer P((void)); +void StartClockTimer P((long millisec)); +void DisplayWhiteClock P((long timeRemaining, int highlight)); +void DisplayBlackClock P((long timeRemaining, int highlight)); + +int LoadGameTimerRunning P((void)); +int StopLoadGameTimer P((void)); +void StartLoadGameTimer P((long millisec)); +void AutoSaveGame P((void)); + +typedef void (*DelayedEventCallback) P((void)); +void ScheduleDelayedEvent P((DelayedEventCallback cb, long millisec)); +DelayedEventCallback GetDelayedEvent P((void)); +void CancelDelayedEvent P((void)); + +int StartChildProcess P((char *cmdLine, char *dir, ProcRef *pr)); +void DestroyChildProcess P((ProcRef pr, int/*boolean*/ signal)); +void InterruptChildProcess P((ProcRef pr)); + +int OpenTelnet P((char *host, char *port, ProcRef *pr)); +int OpenTCP P((char *host, char *port, ProcRef *pr)); +int OpenCommPort P((char *name, ProcRef *pr)); +int OpenLoopback P((ProcRef *pr)); +int OpenRcmd P((char *host, char *user, char *cmd, ProcRef *pr)); + +typedef void (*InputCallback) P((InputSourceRef isr, VOIDSTAR closure, + char *buf, int count, int error)); +/* pr == NoProc means the local keyboard */ +InputSourceRef AddInputSource P((ProcRef pr, int lineByLine, + InputCallback func, VOIDSTAR closure)); +void RemoveInputSource P((InputSourceRef isr)); + +/* pr == NoProc means the local display */ +int OutputToProcess P((ProcRef pr, char *message, int count, int *outError)); +int OutputToProcessDelayed P((ProcRef pr, char *message, int count, + int *outError, long msdelay)); + +void CmailSigHandlerCallBack P((InputSourceRef isr, VOIDSTAR closure, + char *buf, int count, int error)); + +extern ProcRef cmailPR; + +/* these are in wgamelist.c */ +void GameListPopUp P((FILE *fp, char *filename)); +void GameListPopDown P((void)); +void GameListHighlight P((int index)); +void GameListDestroy P((void)); + +/* these are in wedittags.c */ +void EditTagsPopUp P((char *tags)); +void TagsPopUp P((char *tags, char *msg)); +void TagsPopDown P((void)); + +void ICSInitScript P((void)); +void StartAnalysisClock P((void)); +void AnalysisPopUp P((char *title, char *label)); +void AnalysisPopDown P((void)); + +void SetHighlights P((int fromX, int fromY, int toX, int toY)); +void ClearHighlights P((void)); +void SetPremoveHighlights P((int fromX, int fromY, int toX, int toY)); +void ClearPremoveHighlights P((void)); + +void ShutDownFrontEnd P((void)); +void BoardToTop P((void)); +void AnimateMove P((Board board, int fromX, int fromY, int toX, int toY)); +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; + +typedef struct FrontEndProgramStats_TAG { + int which; + int depth; + unsigned long nodes; + int score; + int time; + char * pv; + char * hint; + int an_move_index; + int an_move_count; +} FrontEndProgramStats; + +void SetProgramStats P(( FrontEndProgramStats * stats )); /* [AS] */ + +#endif diff --git a/gamelist.c b/gamelist.c index 0d24d1d..33510da 100644 --- a/gamelist.c +++ b/gamelist.c @@ -1,419 +1,419 @@ -/* - * gamelist.c -- Functions to manage a gamelist - * XBoard $Id: gamelist.c,v 2.1 2003/10/27 19:21:00 mann Exp $ - * - * Copyright 1995 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 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., 59 Temple Place, Suite 330, Boston, MA 02111 USA. - * ------------------------------------------------------------------------ - */ - -#include "config.h" - -#include -#include -#if STDC_HEADERS -# include -# include -#else /* not STDC_HEADERS */ -# if HAVE_STRING_H -# include -# else /* not HAVE_STRING_H */ -# include -# endif /* not HAVE_STRING_H */ -#endif /* not STDC_HEADERS */ - -#include "common.h" -#include "frontend.h" -#include "backend.h" -#include "parser.h" - - -/* Variables - */ -List gameList; - - -/* Local function prototypes - */ -static void GameListDeleteGame P((ListGame *)); -static ListGame *GameListCreate P((void)); -static void GameListFree P((List *)); -static int GameListNewGame P((ListGame **)); - -/* Delete a ListGame; implies removint it from a list. - */ -static void GameListDeleteGame(listGame) - ListGame *listGame; -{ - if (listGame) { - if (listGame->gameInfo.event) free(listGame->gameInfo.event); - if (listGame->gameInfo.site) free(listGame->gameInfo.site); - if (listGame->gameInfo.date) free(listGame->gameInfo.date); - if (listGame->gameInfo.round) free(listGame->gameInfo.round); - if (listGame->gameInfo.white) free(listGame->gameInfo.white); - if (listGame->gameInfo.black) free(listGame->gameInfo.black); - if (listGame->gameInfo.fen) free(listGame->gameInfo.fen); - if (listGame->gameInfo.resultDetails) free(listGame->gameInfo.resultDetails); - if (listGame->gameInfo.timeControl) free(listGame->gameInfo.timeControl); - if (listGame->gameInfo.extraTags) free(listGame->gameInfo.extraTags); - if (listGame->gameInfo.outOfBook) free(listGame->gameInfo.outOfBook); - ListNodeFree((ListNode *) listGame); - } -} - - -/* Free the previous list of games. - */ -static void GameListFree(gameList) - List *gameList; -{ - while (!ListEmpty(gameList)) - { - GameListDeleteGame((ListGame *) gameList->head); - } -} - - - -/* Initialize a new GameInfo structure. - */ -void GameListInitGameInfo(gameInfo) - GameInfo *gameInfo; -{ - gameInfo->event = NULL; - gameInfo->site = NULL; - gameInfo->date = NULL; - gameInfo->round = NULL; - gameInfo->white = NULL; - gameInfo->black = NULL; - gameInfo->result = GameUnfinished; - gameInfo->fen = NULL; - gameInfo->resultDetails = NULL; - gameInfo->timeControl = NULL; - gameInfo->extraTags = NULL; - gameInfo->whiteRating = -1; /* unknown */ - gameInfo->blackRating = -1; /* unknown */ - gameInfo->variant = VariantNormal; - gameInfo->outOfBook = NULL; -} - - -/* Create empty ListGame; returns ListGame or NULL, if out of memory. - * - * Note, that the ListGame is *not* added to any list - */ -static ListGame *GameListCreate() - -{ - ListGame *listGame; - - if ((listGame = (ListGame *) ListNodeCreate(sizeof(*listGame)))) { - GameListInitGameInfo(&listGame->gameInfo); - } - return(listGame); -} - - -/* Creates a new game for the gamelist. - */ -static int GameListNewGame(listGamePtr) - ListGame **listGamePtr; -{ - if (!(*listGamePtr = (ListGame *) GameListCreate())) { - GameListFree(&gameList); - return(ENOMEM); - } - ListAddTail(&gameList, (ListNode *) *listGamePtr); - return(0); -} - - -/* Build the list of games in the open file f. - * Returns 0 for success or error number. - */ -int GameListBuild(f) - FILE *f; -{ - ChessMove cm, lastStart; - int gameNumber; - ListGame *currentListGame = NULL; - int error; - int offset; - - GameListFree(&gameList); - yynewfile(f); - gameNumber = 0; - - lastStart = (ChessMove) 0; - yyskipmoves = FALSE; - do { - yyboardindex = 0; - offset = yyoffset(); - cm = (ChessMove) yylex(); - switch (cm) { - case GNUChessGame: - if ((error = GameListNewGame(¤tListGame))) { - rewind(f); - yyskipmoves = FALSE; - return(error); - } - currentListGame->number = ++gameNumber; - currentListGame->offset = offset; - if (currentListGame->gameInfo.event != NULL) { - free(currentListGame->gameInfo.event); - } - currentListGame->gameInfo.event = StrSave(yy_text); - lastStart = cm; - break; - case XBoardGame: - lastStart = cm; - break; - case MoveNumberOne: - switch (lastStart) { - case GNUChessGame: - break; /* ignore */ - case PGNTag: - lastStart = cm; - break; /* Already started */ - case (ChessMove) 0: - case MoveNumberOne: - case XBoardGame: - if ((error = GameListNewGame(¤tListGame))) { - rewind(f); - yyskipmoves = FALSE; - return(error); - } - currentListGame->number = ++gameNumber; - currentListGame->offset = offset; - lastStart = cm; - break; - default: - break; /* impossible */ - } - break; - case PGNTag: - lastStart = cm; - if ((error = GameListNewGame(¤tListGame))) { - rewind(f); - yyskipmoves = FALSE; - return(error); - } - currentListGame->number = ++gameNumber; - currentListGame->offset = offset; - ParsePGNTag(yy_text, ¤tListGame->gameInfo); - do { - yyboardindex = 1; - offset = yyoffset(); - cm = (ChessMove) yylex(); - if (cm == PGNTag) { - ParsePGNTag(yy_text, ¤tListGame->gameInfo); - } - } while (cm == PGNTag || cm == Comment); - break; - case NormalMove: - /* Allow the first game to start with an unnumbered move */ - yyskipmoves = TRUE; - if (lastStart == (ChessMove) 0) { - if ((error = GameListNewGame(¤tListGame))) { - rewind(f); - yyskipmoves = FALSE; - return(error); - } - currentListGame->number = ++gameNumber; - currentListGame->offset = offset; - lastStart = MoveNumberOne; - } - break; - default: - break; - } - } - while (cm != (ChessMove) 0); - - - if (appData.debugMode) { - for (currentListGame = (ListGame *) gameList.head; - currentListGame->node.succ; - currentListGame = (ListGame *) currentListGame->node.succ) { - - fprintf(debugFP, "Parsed game number %d, offset %ld:\n", - currentListGame->number, currentListGame->offset); - PrintPGNTags(debugFP, ¤tListGame->gameInfo); - } - } - - rewind(f); - yyskipmoves = FALSE; - return 0; -} - - -/* Clear an existing GameInfo structure. - */ -void ClearGameInfo(gameInfo) - GameInfo *gameInfo; -{ - if (gameInfo->event != NULL) { - free(gameInfo->event); - } - if (gameInfo->site != NULL) { - free(gameInfo->site); - } - if (gameInfo->date != NULL) { - free(gameInfo->date); - } - if (gameInfo->round != NULL) { - free(gameInfo->round); - } - if (gameInfo->white != NULL) { - free(gameInfo->white); - } - if (gameInfo->black != NULL) { - free(gameInfo->black); - } - if (gameInfo->resultDetails != NULL) { - free(gameInfo->resultDetails); - } - if (gameInfo->fen != NULL) { - free(gameInfo->fen); - } - if (gameInfo->timeControl != NULL) { - free(gameInfo->timeControl); - } - if (gameInfo->extraTags != NULL) { - free(gameInfo->extraTags); - } - if (gameInfo->outOfBook != NULL) { - free(gameInfo->outOfBook); - } - - GameListInitGameInfo(gameInfo); -} - -/* [AS] Replaced by "dynamic" tag selection below */ -char * -GameListLineOld(number, gameInfo) - int number; - GameInfo *gameInfo; -{ - char *event = (gameInfo->event && strcmp(gameInfo->event, "?") != 0) ? - gameInfo->event : gameInfo->site ? gameInfo->site : "?"; - char *white = gameInfo->white ? gameInfo->white : "?"; - char *black = gameInfo->black ? gameInfo->black : "?"; - char *date = gameInfo->date ? gameInfo->date : "?"; - int len = 10 + strlen(event) + 2 + strlen(white) + 1 + - strlen(black) + 11 + strlen(date) + 1; - char *ret = (char *) malloc(len); - sprintf(ret, "%d. %s, %s-%s, %s, %s", - number, event, white, black, PGNResult(gameInfo->result), date); - return ret; -} - -#define MAX_FIELD_LEN 64 /* To avoid overflowing the buffer */ - -char * GameListLine( int number, GameInfo * gameInfo ) -{ - char buffer[1024]; - char * buf = buffer; - char * glt = appData.gameListTags; - - buf += sprintf( buffer, "%d.", number ); - - while( *glt != '\0' ) { - *buf++ = ' '; - - switch( *glt ) { - case GLT_EVENT: - strncpy( buf, gameInfo->event ? gameInfo->event : "?", MAX_FIELD_LEN ); - break; - case GLT_SITE: - strncpy( buf, gameInfo->site ? gameInfo->site : "?", MAX_FIELD_LEN ); - break; - case GLT_DATE: - strncpy( buf, gameInfo->date ? gameInfo->date : "?", MAX_FIELD_LEN ); - break; - case GLT_ROUND: - strncpy( buf, gameInfo->round ? gameInfo->round : "?", MAX_FIELD_LEN ); - break; - case GLT_PLAYERS: - strncpy( buf, gameInfo->white ? gameInfo->white : "?", MAX_FIELD_LEN ); - buf[ MAX_FIELD_LEN-1 ] = '\0'; - buf += strlen( buf ); - *buf++ = '-'; - strncpy( buf, gameInfo->black ? gameInfo->black : "?", MAX_FIELD_LEN ); - break; - case GLT_RESULT: - strcpy( buf, PGNResult(gameInfo->result) ); - break; - case GLT_WHITE_ELO: - if( gameInfo->whiteRating > 0 ) - sprintf( buf, "%d", gameInfo->whiteRating ); - else - strcpy( buf, "?" ); - break; - case GLT_BLACK_ELO: - if( gameInfo->blackRating > 0 ) - sprintf( buf, "%d", gameInfo->blackRating ); - else - strcpy( buf, "?" ); - break; - case GLT_TIME_CONTROL: - strncpy( buf, gameInfo->timeControl ? gameInfo->timeControl : "?", MAX_FIELD_LEN ); - break; - case GLT_VARIANT: - break; - case GLT_OUT_OF_BOOK: - strncpy( buf, gameInfo->outOfBook ? gameInfo->outOfBook : "?", MAX_FIELD_LEN ); - break; - default: - break; - } - - buf[MAX_FIELD_LEN-1] = '\0'; - - buf += strlen( buf ); - - glt++; - - if( *glt != '\0' ) { - *buf++ = ','; - } - } - - *buf = '\0'; - - return strdup( buffer ); -} - -char * GameListLineFull( int number, GameInfo * gameInfo ) -{ - char * event = gameInfo->event ? gameInfo->event : "?"; - char * site = gameInfo->site ? gameInfo->site : "?"; - char * white = gameInfo->white ? gameInfo->white : "?"; - char * black = gameInfo->black ? gameInfo->black : "?"; - char * round = gameInfo->round ? gameInfo->round : "?"; - char * date = gameInfo->date ? gameInfo->date : "?"; - char * oob = gameInfo->outOfBook ? gameInfo->outOfBook : ""; - - int len = 64 + strlen(event) + strlen(site) + strlen(white) + strlen(black) + strlen(date) + strlen(oob); - - 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 ); - - return ret; -} +/* + * gamelist.c -- Functions to manage a gamelist + * XBoard $Id: gamelist.c,v 2.1 2003/10/27 19:21:00 mann Exp $ + * + * Copyright 1995 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 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., 59 Temple Place, Suite 330, Boston, MA 02111 USA. + * ------------------------------------------------------------------------ + */ + +#include "config.h" + +#include +#include +#if STDC_HEADERS +# include +# include +#else /* not STDC_HEADERS */ +# if HAVE_STRING_H +# include +# else /* not HAVE_STRING_H */ +# include +# endif /* not HAVE_STRING_H */ +#endif /* not STDC_HEADERS */ + +#include "common.h" +#include "frontend.h" +#include "backend.h" +#include "parser.h" + + +/* Variables + */ +List gameList; + + +/* Local function prototypes + */ +static void GameListDeleteGame P((ListGame *)); +static ListGame *GameListCreate P((void)); +static void GameListFree P((List *)); +static int GameListNewGame P((ListGame **)); + +/* Delete a ListGame; implies removint it from a list. + */ +static void GameListDeleteGame(listGame) + ListGame *listGame; +{ + if (listGame) { + if (listGame->gameInfo.event) free(listGame->gameInfo.event); + if (listGame->gameInfo.site) free(listGame->gameInfo.site); + if (listGame->gameInfo.date) free(listGame->gameInfo.date); + if (listGame->gameInfo.round) free(listGame->gameInfo.round); + if (listGame->gameInfo.white) free(listGame->gameInfo.white); + if (listGame->gameInfo.black) free(listGame->gameInfo.black); + if (listGame->gameInfo.fen) free(listGame->gameInfo.fen); + if (listGame->gameInfo.resultDetails) free(listGame->gameInfo.resultDetails); + if (listGame->gameInfo.timeControl) free(listGame->gameInfo.timeControl); + if (listGame->gameInfo.extraTags) free(listGame->gameInfo.extraTags); + if (listGame->gameInfo.outOfBook) free(listGame->gameInfo.outOfBook); + ListNodeFree((ListNode *) listGame); + } +} + + +/* Free the previous list of games. + */ +static void GameListFree(gameList) + List *gameList; +{ + while (!ListEmpty(gameList)) + { + GameListDeleteGame((ListGame *) gameList->head); + } +} + + + +/* Initialize a new GameInfo structure. + */ +void GameListInitGameInfo(gameInfo) + GameInfo *gameInfo; +{ + gameInfo->event = NULL; + gameInfo->site = NULL; + gameInfo->date = NULL; + gameInfo->round = NULL; + gameInfo->white = NULL; + gameInfo->black = NULL; + gameInfo->result = GameUnfinished; + gameInfo->fen = NULL; + gameInfo->resultDetails = NULL; + gameInfo->timeControl = NULL; + gameInfo->extraTags = NULL; + gameInfo->whiteRating = -1; /* unknown */ + gameInfo->blackRating = -1; /* unknown */ + gameInfo->variant = VariantNormal; + gameInfo->outOfBook = NULL; +} + + +/* Create empty ListGame; returns ListGame or NULL, if out of memory. + * + * Note, that the ListGame is *not* added to any list + */ +static ListGame *GameListCreate() + +{ + ListGame *listGame; + + if ((listGame = (ListGame *) ListNodeCreate(sizeof(*listGame)))) { + GameListInitGameInfo(&listGame->gameInfo); + } + return(listGame); +} + + +/* Creates a new game for the gamelist. + */ +static int GameListNewGame(listGamePtr) + ListGame **listGamePtr; +{ + if (!(*listGamePtr = (ListGame *) GameListCreate())) { + GameListFree(&gameList); + return(ENOMEM); + } + ListAddTail(&gameList, (ListNode *) *listGamePtr); + return(0); +} + + +/* Build the list of games in the open file f. + * Returns 0 for success or error number. + */ +int GameListBuild(f) + FILE *f; +{ + ChessMove cm, lastStart; + int gameNumber; + ListGame *currentListGame = NULL; + int error; + int offset; + + GameListFree(&gameList); + yynewfile(f); + gameNumber = 0; + + lastStart = (ChessMove) 0; + yyskipmoves = FALSE; + do { + yyboardindex = 0; + offset = yyoffset(); + cm = (ChessMove) yylex(); + switch (cm) { + case GNUChessGame: + if ((error = GameListNewGame(¤tListGame))) { + rewind(f); + yyskipmoves = FALSE; + return(error); + } + currentListGame->number = ++gameNumber; + currentListGame->offset = offset; + if (currentListGame->gameInfo.event != NULL) { + free(currentListGame->gameInfo.event); + } + currentListGame->gameInfo.event = StrSave(yy_text); + lastStart = cm; + break; + case XBoardGame: + lastStart = cm; + break; + case MoveNumberOne: + switch (lastStart) { + case GNUChessGame: + break; /* ignore */ + case PGNTag: + lastStart = cm; + break; /* Already started */ + case (ChessMove) 0: + case MoveNumberOne: + case XBoardGame: + if ((error = GameListNewGame(¤tListGame))) { + rewind(f); + yyskipmoves = FALSE; + return(error); + } + currentListGame->number = ++gameNumber; + currentListGame->offset = offset; + lastStart = cm; + break; + default: + break; /* impossible */ + } + break; + case PGNTag: + lastStart = cm; + if ((error = GameListNewGame(¤tListGame))) { + rewind(f); + yyskipmoves = FALSE; + return(error); + } + currentListGame->number = ++gameNumber; + currentListGame->offset = offset; + ParsePGNTag(yy_text, ¤tListGame->gameInfo); + do { + yyboardindex = 1; + offset = yyoffset(); + cm = (ChessMove) yylex(); + if (cm == PGNTag) { + ParsePGNTag(yy_text, ¤tListGame->gameInfo); + } + } while (cm == PGNTag || cm == Comment); + break; + case NormalMove: + /* Allow the first game to start with an unnumbered move */ + yyskipmoves = TRUE; + if (lastStart == (ChessMove) 0) { + if ((error = GameListNewGame(¤tListGame))) { + rewind(f); + yyskipmoves = FALSE; + return(error); + } + currentListGame->number = ++gameNumber; + currentListGame->offset = offset; + lastStart = MoveNumberOne; + } + break; + default: + break; + } + } + while (cm != (ChessMove) 0); + + + if (appData.debugMode) { + for (currentListGame = (ListGame *) gameList.head; + currentListGame->node.succ; + currentListGame = (ListGame *) currentListGame->node.succ) { + + fprintf(debugFP, "Parsed game number %d, offset %ld:\n", + currentListGame->number, currentListGame->offset); + PrintPGNTags(debugFP, ¤tListGame->gameInfo); + } + } + + rewind(f); + yyskipmoves = FALSE; + return 0; +} + + +/* Clear an existing GameInfo structure. + */ +void ClearGameInfo(gameInfo) + GameInfo *gameInfo; +{ + if (gameInfo->event != NULL) { + free(gameInfo->event); + } + if (gameInfo->site != NULL) { + free(gameInfo->site); + } + if (gameInfo->date != NULL) { + free(gameInfo->date); + } + if (gameInfo->round != NULL) { + free(gameInfo->round); + } + if (gameInfo->white != NULL) { + free(gameInfo->white); + } + if (gameInfo->black != NULL) { + free(gameInfo->black); + } + if (gameInfo->resultDetails != NULL) { + free(gameInfo->resultDetails); + } + if (gameInfo->fen != NULL) { + free(gameInfo->fen); + } + if (gameInfo->timeControl != NULL) { + free(gameInfo->timeControl); + } + if (gameInfo->extraTags != NULL) { + free(gameInfo->extraTags); + } + if (gameInfo->outOfBook != NULL) { + free(gameInfo->outOfBook); + } + + GameListInitGameInfo(gameInfo); +} + +/* [AS] Replaced by "dynamic" tag selection below */ +char * +GameListLineOld(number, gameInfo) + int number; + GameInfo *gameInfo; +{ + char *event = (gameInfo->event && strcmp(gameInfo->event, "?") != 0) ? + gameInfo->event : gameInfo->site ? gameInfo->site : "?"; + char *white = gameInfo->white ? gameInfo->white : "?"; + char *black = gameInfo->black ? gameInfo->black : "?"; + char *date = gameInfo->date ? gameInfo->date : "?"; + int len = 10 + strlen(event) + 2 + strlen(white) + 1 + + strlen(black) + 11 + strlen(date) + 1; + char *ret = (char *) malloc(len); + sprintf(ret, "%d. %s, %s-%s, %s, %s", + number, event, white, black, PGNResult(gameInfo->result), date); + return ret; +} + +#define MAX_FIELD_LEN 64 /* To avoid overflowing the buffer */ + +char * GameListLine( int number, GameInfo * gameInfo ) +{ + char buffer[1024]; + char * buf = buffer; + char * glt = appData.gameListTags; + + buf += sprintf( buffer, "%d.", number ); + + while( *glt != '\0' ) { + *buf++ = ' '; + + switch( *glt ) { + case GLT_EVENT: + strncpy( buf, gameInfo->event ? gameInfo->event : "?", MAX_FIELD_LEN ); + break; + case GLT_SITE: + strncpy( buf, gameInfo->site ? gameInfo->site : "?", MAX_FIELD_LEN ); + break; + case GLT_DATE: + strncpy( buf, gameInfo->date ? gameInfo->date : "?", MAX_FIELD_LEN ); + break; + case GLT_ROUND: + strncpy( buf, gameInfo->round ? gameInfo->round : "?", MAX_FIELD_LEN ); + break; + case GLT_PLAYERS: + strncpy( buf, gameInfo->white ? gameInfo->white : "?", MAX_FIELD_LEN ); + buf[ MAX_FIELD_LEN-1 ] = '\0'; + buf += strlen( buf ); + *buf++ = '-'; + strncpy( buf, gameInfo->black ? gameInfo->black : "?", MAX_FIELD_LEN ); + break; + case GLT_RESULT: + strcpy( buf, PGNResult(gameInfo->result) ); + break; + case GLT_WHITE_ELO: + if( gameInfo->whiteRating > 0 ) + sprintf( buf, "%d", gameInfo->whiteRating ); + else + strcpy( buf, "?" ); + break; + case GLT_BLACK_ELO: + if( gameInfo->blackRating > 0 ) + sprintf( buf, "%d", gameInfo->blackRating ); + else + strcpy( buf, "?" ); + break; + case GLT_TIME_CONTROL: + strncpy( buf, gameInfo->timeControl ? gameInfo->timeControl : "?", MAX_FIELD_LEN ); + break; + case GLT_VARIANT: + break; + case GLT_OUT_OF_BOOK: + strncpy( buf, gameInfo->outOfBook ? gameInfo->outOfBook : "?", MAX_FIELD_LEN ); + break; + default: + break; + } + + buf[MAX_FIELD_LEN-1] = '\0'; + + buf += strlen( buf ); + + glt++; + + if( *glt != '\0' ) { + *buf++ = ','; + } + } + + *buf = '\0'; + + return strdup( buffer ); +} + +char * GameListLineFull( int number, GameInfo * gameInfo ) +{ + char * event = gameInfo->event ? gameInfo->event : "?"; + char * site = gameInfo->site ? gameInfo->site : "?"; + char * white = gameInfo->white ? gameInfo->white : "?"; + char * black = gameInfo->black ? gameInfo->black : "?"; + char * round = gameInfo->round ? gameInfo->round : "?"; + char * date = gameInfo->date ? gameInfo->date : "?"; + char * oob = gameInfo->outOfBook ? gameInfo->outOfBook : ""; + + int len = 64 + strlen(event) + strlen(site) + strlen(white) + strlen(black) + strlen(date) + strlen(oob); + + 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 ); + + return ret; +} diff --git a/ics-parsing.txt b/ics-parsing.txt index 4603237..41e22fc 100644 --- a/ics-parsing.txt +++ b/ics-parsing.txt @@ -1,6 +1,6 @@ Parsing of ICS Output Updated to match xboard/WinBoard 4.0.2 -$Id$ +$Id: ics-parsing.txt,v 2.1 2003/10/27 19:21:00 mann Exp $ ============================================================================== This document describes how xboard and WinBoard parse ICS output. The diff --git a/lists.c b/lists.c index 8d9bb20..a9e0d41 100644 --- a/lists.c +++ b/lists.c @@ -1,149 +1,149 @@ -/* - * lists.c -- Functions to implement a double linked list - * XBoard $Id: lists.c,v 2.1 2003/10/27 19:21:00 mann Exp $ - * - * Copyright 1995 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 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., 59 Temple Place, Suite 330, Boston, MA 02111 USA. - * ------------------------------------------------------------------------ - * - * This file could well be a part of backend.c, but I prefer it this - * way. - */ - -#include "config.h" - -#include -#if STDC_HEADERS -# include -#endif /* not STDC_HEADERS */ - -#include "common.h" -#include "lists.h" - - - -/* Check, if List l is empty; returns TRUE, if it is, FALSE - * otherwise. - */ -int ListEmpty(l) - List *l; -{ - return(l->head == (ListNode *) &l->tail); -} - - -/* Initialize a list. Must be executed before list is used. - */ -void ListNew(l) - List *l; -{ - l->head = (ListNode *) &l->tail; - l->tail = NULL; - l->tailPred = (ListNode *) l; -} - - -/* Remove node n from the list it is inside. - */ -void ListRemove(n) - ListNode *n; -{ - if (n->succ != NULL) { /* Be safe */ - n->pred->succ = n->succ; - n->succ->pred = n->pred; - n->succ = NULL; /* Mark node as no longer being member */ - n->pred = NULL; /* of a list. */ - } -} - - -/* Delete node n. - */ -void ListNodeFree(n) - ListNode *n; -{ - if (n) { - ListRemove(n); - free(n); - } -} - - -/* Create a list node with size s. Returns NULL, if out of memory. - */ -ListNode *ListNodeCreate(s) - size_t s; -{ - ListNode *n; - - if ((n = (ListNode*) malloc(s))) { - n->succ = NULL; /* Mark node as not being member of a list. */ - n->pred = NULL; - } - return(n); -} - - -/* Insert node n into the list of node m after m. - */ -void ListInsert(m, n) - ListNode *m, *n; -{ - n->succ = m->succ; - n->pred = m; - m->succ = n; - n->succ->pred = n; -} - - -/* Add node n to the head of list l. - */ -void ListAddHead(l, n) - List *l; - ListNode *n; -{ - ListInsert((ListNode *) &l->head, n); -} - - -/* Add node n to the tail of list l. - */ -void ListAddTail(l, n) - List *l; - ListNode *n; -{ - ListInsert((ListNode *) l->tailPred, n); -} - - -/* Return element with number n of list l. (NULL, if n doesn't exist.) - * Counting starts with 0. - */ -ListNode *ListElem(l, n) - List *l; - int n; -{ - ListNode *ln; - - for (ln = l->head; ln->succ; ln = ln->succ) { - if (!n--) { - return (ln); - } - } - - return(NULL); -} +/* + * lists.c -- Functions to implement a double linked list + * XBoard $Id: lists.c,v 2.1 2003/10/27 19:21:00 mann Exp $ + * + * Copyright 1995 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 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., 59 Temple Place, Suite 330, Boston, MA 02111 USA. + * ------------------------------------------------------------------------ + * + * This file could well be a part of backend.c, but I prefer it this + * way. + */ + +#include "config.h" + +#include +#if STDC_HEADERS +# include +#endif /* not STDC_HEADERS */ + +#include "common.h" +#include "lists.h" + + + +/* Check, if List l is empty; returns TRUE, if it is, FALSE + * otherwise. + */ +int ListEmpty(l) + List *l; +{ + return(l->head == (ListNode *) &l->tail); +} + + +/* Initialize a list. Must be executed before list is used. + */ +void ListNew(l) + List *l; +{ + l->head = (ListNode *) &l->tail; + l->tail = NULL; + l->tailPred = (ListNode *) l; +} + + +/* Remove node n from the list it is inside. + */ +void ListRemove(n) + ListNode *n; +{ + if (n->succ != NULL) { /* Be safe */ + n->pred->succ = n->succ; + n->succ->pred = n->pred; + n->succ = NULL; /* Mark node as no longer being member */ + n->pred = NULL; /* of a list. */ + } +} + + +/* Delete node n. + */ +void ListNodeFree(n) + ListNode *n; +{ + if (n) { + ListRemove(n); + free(n); + } +} + + +/* Create a list node with size s. Returns NULL, if out of memory. + */ +ListNode *ListNodeCreate(s) + size_t s; +{ + ListNode *n; + + if ((n = (ListNode*) malloc(s))) { + n->succ = NULL; /* Mark node as not being member of a list. */ + n->pred = NULL; + } + return(n); +} + + +/* Insert node n into the list of node m after m. + */ +void ListInsert(m, n) + ListNode *m, *n; +{ + n->succ = m->succ; + n->pred = m; + m->succ = n; + n->succ->pred = n; +} + + +/* Add node n to the head of list l. + */ +void ListAddHead(l, n) + List *l; + ListNode *n; +{ + ListInsert((ListNode *) &l->head, n); +} + + +/* Add node n to the tail of list l. + */ +void ListAddTail(l, n) + List *l; + ListNode *n; +{ + ListInsert((ListNode *) l->tailPred, n); +} + + +/* Return element with number n of list l. (NULL, if n doesn't exist.) + * Counting starts with 0. + */ +ListNode *ListElem(l, n) + List *l; + int n; +{ + ListNode *ln; + + for (ln = l->head; ln->succ; ln = ln->succ) { + if (!n--) { + return (ln); + } + } + + return(NULL); +} diff --git a/lists.h b/lists.h index b291894..31d6f5b 100644 --- a/lists.h +++ b/lists.h @@ -1,66 +1,66 @@ -/* - * lists.c -- Includefile of lists.c - * XBoard $Id: lists.h,v 2.1 2003/10/27 19:21:00 mann Exp $ - * - * Copyright 1995 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 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., 59 Temple Place, Suite 330, Boston, MA 02111 USA. - * ------------------------------------------------------------------------ - * - * This file could well be a part of backend.c, but I prefer it this - * way. - */ - -#ifndef _LISTS_H -#define _LISTS_H - - -/* Type definition: Node of a double linked list. - */ -typedef struct _ListNode { - struct _ListNode *succ; - struct _ListNode *pred; -} ListNode; - - -/* Type definition: Double linked list. - * - * The list structure consists of two ListNode's: The pred entry of - * the head being the succ entry of the tail. Thus a list is empty - * if and only if it consists of 2 nodes. :-) - */ -typedef struct { - struct _ListNode *head; /* The list structure consists of two */ - struct _ListNode *tail; /* ListNode's: The pred entry of the */ - struct _ListNode *tailPred; /* head being the succ entry of the */ -} List; /* tail. */ - - - -/* Function prototypes - */ -extern int ListEmpty P((List *)); -void ListNew P((List *)); -void ListRemove P((ListNode *)); -void ListNodeFree P((ListNode *)); -ListNode *ListNodeCreate P((size_t)); -void ListInsert P((ListNode *, ListNode *)); -void ListAddHead P((List *, ListNode *)); -void ListAddTail P((List *, ListNode *)); -ListNode *ListElem P((List *, int)); - - -#endif +/* + * lists.c -- Includefile of lists.c + * XBoard $Id: lists.h,v 2.1 2003/10/27 19:21:00 mann Exp $ + * + * Copyright 1995 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 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., 59 Temple Place, Suite 330, Boston, MA 02111 USA. + * ------------------------------------------------------------------------ + * + * This file could well be a part of backend.c, but I prefer it this + * way. + */ + +#ifndef _LISTS_H +#define _LISTS_H + + +/* Type definition: Node of a double linked list. + */ +typedef struct _ListNode { + struct _ListNode *succ; + struct _ListNode *pred; +} ListNode; + + +/* Type definition: Double linked list. + * + * The list structure consists of two ListNode's: The pred entry of + * the head being the succ entry of the tail. Thus a list is empty + * if and only if it consists of 2 nodes. :-) + */ +typedef struct { + struct _ListNode *head; /* The list structure consists of two */ + struct _ListNode *tail; /* ListNode's: The pred entry of the */ + struct _ListNode *tailPred; /* head being the succ entry of the */ +} List; /* tail. */ + + + +/* Function prototypes + */ +extern int ListEmpty P((List *)); +void ListNew P((List *)); +void ListRemove P((ListNode *)); +void ListNodeFree P((ListNode *)); +ListNode *ListNodeCreate P((size_t)); +void ListInsert P((ListNode *, ListNode *)); +void ListAddHead P((List *, ListNode *)); +void ListAddTail P((List *, ListNode *)); +ListNode *ListElem P((List *, int)); + + +#endif diff --git a/mkinstalldirs b/mkinstalldirs index d0fd194..f3c85d0 100755 --- a/mkinstalldirs +++ b/mkinstalldirs @@ -4,7 +4,7 @@ # Created: 1993-05-16 # Public domain -# $Id$ +# $Id: mkinstalldirs,v 2.1 2003/10/27 19:21:00 mann Exp $ errstatus=0 diff --git a/moves.c b/moves.c index deac69f..edccef8 100644 --- a/moves.c +++ b/moves.c @@ -783,11 +783,12 @@ int GenLegal(board, flags, epfile, castlingRights, callback, closure) (ignoreCheck || (!CheckTest(board, flags, 0, ff, 0, ff + 1, FALSE) && !CheckTest(board, flags, 0, ff, 0, BOARD_RGHT-3, FALSE) && + (gameInfo.variant != VariantJanus || !CheckTest(board, flags, 0, ff, 0, BOARD_RGHT-2, FALSE)) && !CheckTest(board, flags, 0, ff, 0, ff + 2, FALSE)))) { callback(board, flags, ff==BOARD_WIDTH>>1 ? WhiteKingSideCastle : WhiteKingSideCastleWild, - 0, ff, 0, ff + ((gameInfo.boardWidth+2)>>2), closure); + 0, ff, 0, ff + ((gameInfo.boardWidth+2)>>2) + (gameInfo.variant == VariantJanus), closure); } if ((flags & F_WHITE_ON_MOVE) && (flags & F_WHITE_QCASTLE_OK) && @@ -801,7 +802,7 @@ int GenLegal(board, flags, epfile, castlingRights, callback, closure) ( castlingRights[2] == ff || castlingRights[6] == ff ) && (ignoreCheck || (!CheckTest(board, flags, 0, ff, 0, ff - 1, FALSE) && - !CheckTest(board, flags, 0, ff, 0, BOARD_LEFT+3, FALSE) && + !CheckTest(board, flags, 0, ff, 0, BOARD_LEFT+3, FALSE) && !CheckTest(board, flags, 0, ff, 0, ff - 2, FALSE)))) { callback(board, flags, @@ -821,11 +822,12 @@ int GenLegal(board, flags, epfile, castlingRights, callback, closure) (ignoreCheck || (!CheckTest(board, flags, BOARD_HEIGHT-1, ff, BOARD_HEIGHT-1, ff + 1, FALSE) && !CheckTest(board, flags, BOARD_HEIGHT-1, ff, BOARD_HEIGHT-1, BOARD_RGHT-3, FALSE) && + (gameInfo.variant != VariantJanus || !CheckTest(board, flags, BOARD_HEIGHT-1, ff, BOARD_HEIGHT-1, BOARD_RGHT-2, FALSE)) && !CheckTest(board, flags, BOARD_HEIGHT-1, ff, BOARD_HEIGHT-1, ff + 2, FALSE)))) { callback(board, flags, ff==BOARD_WIDTH>>1 ? BlackKingSideCastle : BlackKingSideCastleWild, - BOARD_HEIGHT-1, ff, BOARD_HEIGHT-1, ff + ((gameInfo.boardWidth+2)>>2), closure); + BOARD_HEIGHT-1, ff, BOARD_HEIGHT-1, ff + ((gameInfo.boardWidth+2)>>2) + (gameInfo.variant == VariantJanus), closure); } if (!(flags & F_WHITE_ON_MOVE) && (flags & F_BLACK_QCASTLE_OK) && @@ -839,7 +841,7 @@ int GenLegal(board, flags, epfile, castlingRights, callback, closure) ( castlingRights[5] == ff || castlingRights[7] == ff ) && (ignoreCheck || (!CheckTest(board, flags, BOARD_HEIGHT-1, ff, BOARD_HEIGHT-1, ff - 1, FALSE) && - !CheckTest(board, flags, BOARD_HEIGHT-1, ff, BOARD_HEIGHT-1, BOARD_LEFT+3, FALSE) && + !CheckTest(board, flags, BOARD_HEIGHT-1, ff, BOARD_HEIGHT-1, BOARD_LEFT+3, FALSE) && !CheckTest(board, flags, BOARD_HEIGHT-1, ff, BOARD_HEIGHT-1, ff - 2, FALSE)))) { callback(board, flags, @@ -856,7 +858,7 @@ int GenLegal(board, flags, epfile, castlingRights, callback, closure) if ((flags & F_WHITE_ON_MOVE) != 0) { ff = castlingRights[2]; /* King file if we have any rights */ - if(ff > 0) { + if(ff > 0 && board[0][ff] == WhiteKing) { if (appData.debugMode) { fprintf(debugFP, "FRC castling, %d %d %d %d %d %d\n", castlingRights[0],castlingRights[1],ff,castlingRights[3],castlingRights[4],castlingRights[5]); @@ -869,7 +871,7 @@ int GenLegal(board, flags, epfile, castlingRights, callback, closure) if(k != ft && board[0][k] != EmptySquare) ft = -1; for(k=left; k= 0; k++) /* then if not checked */ if(!ignoreCheck && CheckTest(board, flags, 0, ff, 0, k, FALSE)) ft = -1; - if(ft >= 0) + if(ft >= 0 && board[0][ft] == WhiteRook) callback(board, flags, WhiteHSideCastleFR, 0, ff, 0, ft, closure); ft = castlingRights[1]; /* Rook file if we have A-side rights */ @@ -881,13 +883,12 @@ int GenLegal(board, flags, epfile, castlingRights, callback, closure) if(ff > BOARD_LEFT+2) for(k=left+1; k<=right && ft >= 0; k++) /* then if not checked */ if(!ignoreCheck && CheckTest(board, flags, 0, ff, 0, k, FALSE)) ft = -1; - - if(ft >= 0) + if(ft >= 0 && board[0][ft] == WhiteRook) callback(board, flags, WhiteASideCastleFR, 0, ff, 0, ft, closure); } } else { ff = castlingRights[5]; /* King file if we have any rights */ - if(ff > 0) { + if(ff > 0 && board[BOARD_HEIGHT-1][ff] == BlackKing) { ft = castlingRights[3]; /* Rook file if we have H-side rights */ left = ff+1; right = BOARD_RGHT-2; @@ -896,7 +897,7 @@ int GenLegal(board, flags, epfile, castlingRights, callback, closure) if(k != ft && board[BOARD_HEIGHT-1][k] != EmptySquare) ft = -1; for(k=left; k= 0; k++) /* then if not checked */ if(!ignoreCheck && CheckTest(board, flags, BOARD_HEIGHT-1, ff, BOARD_HEIGHT-1, k, FALSE)) ft = -1; - if(ft >= 0) + if(ft >= 0 && board[BOARD_HEIGHT-1][ft] == BlackRook) callback(board, flags, BlackHSideCastleFR, BOARD_HEIGHT-1, ff, BOARD_HEIGHT-1, ft, closure); ft = castlingRights[4]; /* Rook file if we have A-side rights */ @@ -908,8 +909,7 @@ int GenLegal(board, flags, epfile, castlingRights, callback, closure) if(ff > BOARD_LEFT+2) for(k=left+1; k<=right && ft >= 0; k++) /* then if not checked */ if(!ignoreCheck && CheckTest(board, flags, BOARD_HEIGHT-1, ff, BOARD_HEIGHT-1, k, FALSE)) ft = -1; - - if(ft >= 0) + if(ft >= 0 && board[BOARD_HEIGHT-1][ft] == BlackRook) callback(board, flags, BlackASideCastleFR, BOARD_HEIGHT-1, ff, BOARD_HEIGHT-1, ft, closure); } } @@ -1144,7 +1144,7 @@ int MateTest(board, flags, epfile, castlingRights) if (cl.count > 0) { return inCheck ? MT_CHECK : MT_NONE; } else { - return inCheck || gameInfo.variant == VariantXiangqi ? + return inCheck || gameInfo.variant == VariantXiangqi || gameInfo.variant == VariantShatranj ? MT_CHECKMATE : MT_STALEMATE; } } @@ -1191,6 +1191,11 @@ void Disambiguate(board, flags, epfile, closure) closure->count = 0; closure->rf = closure->ff = closure->rt = closure->ft = 0; closure->kind = ImpossibleMove; + if (appData.debugMode) { + fprintf(debugFP, "Disambiguate in: %d(%d,%d)-(%d,%d) = %d (%c)\n", + closure->pieceIn,closure->ffIn,closure->rfIn,closure->ftIn,closure->rtIn, + closure->promoCharIn, closure->promoCharIn >= ' ' ? closure->promoCharIn : '-'); + } GenLegal(board, flags, epfile, initialRights, DisambiguateCallback, (VOIDSTAR) closure); if (closure->count == 0) { /* See if it's an illegal move due to check */ @@ -1199,15 +1204,17 @@ void Disambiguate(board, flags, epfile, closure) (VOIDSTAR) closure); if (closure->count == 0) { /* No, it's not even that */ + if (appData.debugMode) { int i, j; + for(i=BOARD_HEIGHT-1; i>=0; i--) { + for(j=0; jpieceIn,closure->ffIn,closure->rfIn,closure->ftIn,closure->rtIn, - closure->promoCharIn,closure->promoCharIn); - } if(gameInfo.variant == VariantShogi) { /* [HGM] Shogi promotions. '=' means defer */ if(closure->rfIn != DROP_RANK && closure->kind == NormalMove) { @@ -1290,7 +1297,8 @@ void Disambiguate(board, flags, epfile, closure) closure->promoChar = closure->promoCharIn; if (appData.debugMode) { fprintf(debugFP, "Disambiguate out: %d(%d,%d)-(%d,%d) = %d (%c)\n", - closure->piece,closure->ff,closure->rf,closure->ft,closure->rt,closure->promoChar,closure->promoChar); + closure->piece,closure->ff,closure->rf,closure->ft,closure->rt,closure->promoChar, + closure->promoChar >= ' ' ? closure->promoChar:'-'); } } @@ -1374,7 +1382,7 @@ ChessMove CoordsToAlgebraic(board, flags, epfile, if(PieceToChar(piece)=='~') piece = (ChessSquare)(DEMOTED piece); if (appData.debugMode) - fprintf(debugFP, "CoordsToAlgebraic, piece=%d (%d,%d)-(%d,%d) %c\n", (int)piece,ff,rf,ft,rt,promoChar ); + fprintf(debugFP, "CoordsToAlgebraic, piece=%d (%d,%d)-(%d,%d) %c\n", (int)piece,ff,rf,ft,rt,promoChar >= ' ' ? promoChar : '-'); switch (piece) { case WhitePawn: case BlackPawn: @@ -1406,7 +1414,7 @@ ChessMove CoordsToAlgebraic(board, flags, epfile, /* Use promotion suffix style "=Q" */ *outp = NULLCHAR; if (appData.debugMode) - fprintf(debugFP, "movetype=%d, promochar=%d=%c\n", (int)kind, promoChar, promoChar); + fprintf(debugFP, "movetype=%d, promochar=%d=%c\n", (int)kind, promoChar, promoChar >= ' ' ? promoChar : '-'); if (promoChar != NULLCHAR) { if(gameInfo.variant == VariantShogi) { /* [HGM] ... but not in Shogi! */ diff --git a/moves.h b/moves.h index f50ea08..569fc89 100644 --- a/moves.h +++ b/moves.h @@ -84,6 +84,7 @@ typedef void (*MoveCallback) P((Board board, int flags, ChessMove kind, #define EP_RULE_DRAW (-14) #define EP_INSUF_DRAW (-13) #define EP_DRAWS (-10) +#define EP_BEROLIN_A 16 /* [HGM] berolina: add to file if pawn to be taken of a-side of e.p.file */ /* Call callback once for each pseudo-legal move in the given position, except castling moves. A move is pseudo-legal if it is diff --git a/pgntags.c b/pgntags.c index f21bccc..6317c8b 100644 --- a/pgntags.c +++ b/pgntags.c @@ -1,265 +1,265 @@ -/* - * pgntags.c -- Functions to manage PGN tags - * XBoard $Id: pgntags.c,v 2.1 2003/10/27 19:21:00 mann Exp $ - * - * Copyright 1995 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 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., 59 Temple Place, Suite 330, Boston, MA 02111 USA. - * ------------------------------------------------------------------------ - * - * This file could well be a part of backend.c, but I prefer it this - * way. - */ - -#include "config.h" - -#include -#include -#include -#if STDC_HEADERS -# include -# include -#else /* not STDC_HEADERS */ -# if HAVE_STRING_H -# include -# else /* not HAVE_STRING_H */ -# include -# endif /* not HAVE_STRING_H */ -#endif /* not STDC_HEADERS */ - -#include "common.h" -#include "frontend.h" -#include "backend.h" -#include "parser.h" - -static char *PGNTagsStatic P((GameInfo *)); - - - -/* Parse PGN tags; returns 0 for success or error number - */ -int ParsePGNTag(tag, gameInfo) - char *tag; - GameInfo *gameInfo; -{ - char *name, *value, *p, *oldTags; - int len; - int success; - - name = tag; - while (!isalpha(*name) && !isdigit(*name)) { - name++; - } - p = name; - while (*p != ' ' && *p != '\t' && *p != '\n') { - p++; - } - *p = NULLCHAR; - value = strchr(p + 1, '"') + 1; - p = strrchr(value, '"'); - *p = NULLCHAR; - - if (StrCaseCmp(name, "Event") == 0) { - success = StrSavePtr(value, &gameInfo->event) != NULL; - } else if (StrCaseCmp(name, "Site") == 0) { - success = StrSavePtr(value, &gameInfo->site) != NULL; - } else if (StrCaseCmp(name, "Date") == 0) { - success = StrSavePtr(value, &gameInfo->date) != NULL; - } else if (StrCaseCmp(name, "Round") == 0) { - success = StrSavePtr(value, &gameInfo->round) != NULL; - } else if (StrCaseCmp(name, "White") == 0) { - success = StrSavePtr(value, &gameInfo->white) != NULL; - } else if (StrCaseCmp(name, "Black") == 0) { - success = StrSavePtr(value, &gameInfo->black) != NULL; - } - /* Fold together the various ways of denoting White/Black rating */ - else if ((StrCaseCmp(name, "WhiteElo")==0) || - (StrCaseCmp(name, "WhiteUSCF")==0) ) { - success = TRUE; - gameInfo->whiteRating = atoi( value ); - } else if ((StrCaseCmp(name, "BlackElo")==0) || - (StrCaseCmp(name, "BlackUSCF")==0)) { - success = TRUE; - gameInfo->blackRating = atoi( value ); - } - else if (StrCaseCmp(name, "Result") == 0) { - if (strcmp(value, "1-0") == 0) - gameInfo->result = WhiteWins; - else if (strcmp(value, "0-1") == 0) - gameInfo->result = BlackWins; - else if (strcmp(value, "1/2-1/2") == 0) - gameInfo->result = GameIsDrawn; - else - gameInfo->result = GameUnfinished; - success = TRUE; - } else if (StrCaseCmp(name, "FEN") == 0) { - success = StrSavePtr(value, &gameInfo->fen) != NULL; - } else if (StrCaseCmp(name, "SetUp") == 0) { - /* ignore on input; presence of FEN governs */ - success = TRUE; - } else if (StrCaseCmp(name, "Variant") == 0) { - /* xboard-defined extension */ - gameInfo->variant = StringToVariant(value); - success = TRUE; - } else if (StrCaseCmp(name, PGN_OUT_OF_BOOK) == 0) { - /* [AS] Out of book annotation */ - success = StrSavePtr(value, &gameInfo->outOfBook) != NULL; - } else { - if (gameInfo->extraTags == NULL) { - oldTags = ""; - } else { - oldTags = gameInfo->extraTags; - } - /* Buffer size includes 7 bytes of space for [ ""]\n\0 */ - len = strlen(oldTags) + strlen(value) + strlen(name) + 7; - if ((p = (char *) malloc(len)) != NULL) { - sprintf(p, "%s[%s \"%s\"]\n", oldTags, name, value); - if (gameInfo->extraTags != NULL) free(gameInfo->extraTags); - gameInfo->extraTags = p; - success = TRUE; - } else { - success = FALSE; - } - } - return(success ? 0 : ENOMEM); -} - - - -/* Return a static buffer with a game's data. - */ -static char *PGNTagsStatic(gameInfo) - GameInfo *gameInfo; -{ - static char buf[8192]; - char buf1[MSG_SIZ]; - - buf[0] = NULLCHAR; - - sprintf(buf1, "[Event \"%s\"]\n", - gameInfo->event ? gameInfo->event : "?"); - strcat(buf, buf1); - sprintf(buf1, "[Site \"%s\"]\n", - gameInfo->site ? gameInfo->site : "?"); - strcat(buf, buf1); - sprintf(buf1, "[Date \"%s\"]\n", - gameInfo->date ? gameInfo->date : "?"); - strcat(buf, buf1); - sprintf(buf1, "[Round \"%s\"]\n", - gameInfo->round ? gameInfo->round : "-"); - strcat(buf, buf1); - sprintf(buf1, "[White \"%s\"]\n", - gameInfo->white ? gameInfo->white : "?"); - strcat(buf, buf1); - sprintf(buf1, "[Black \"%s\"]\n", - gameInfo->black ? gameInfo->black : "?"); - strcat(buf, buf1); - sprintf(buf1, "[Result \"%s\"]\n", PGNResult(gameInfo->result)); - strcat(buf, buf1); - - if (gameInfo->whiteRating >= 0 ) { - sprintf(buf1, "[WhiteElo \"%d\"]\n", gameInfo->whiteRating ); - strcat(buf, buf1); - } - if ( gameInfo->blackRating >= 0 ) { - sprintf(buf1, "[BlackElo \"%d\"]\n", gameInfo->blackRating ); - strcat(buf, buf1); - } - if (gameInfo->timeControl != NULL) { - sprintf(buf1, "[TimeControl \"%s\"]\n", gameInfo->timeControl); - strcat(buf, buf1); - } - if (gameInfo->variant != VariantNormal) { - sprintf(buf1, "[Variant \"%s\"]\n", VariantName(gameInfo->variant)); - strcat(buf, buf1); - } - if (gameInfo->extraTags != NULL) { - strcat(buf, gameInfo->extraTags); - } - return buf; -} - - - -/* Print game info - */ -void PrintPGNTags(fp, gameInfo) - FILE *fp; - GameInfo *gameInfo; -{ - fprintf(fp, "%s", PGNTagsStatic(gameInfo)); -} - - -/* Return a non-static buffer with a games info. - */ -char *PGNTags(gameInfo) - GameInfo *gameInfo; -{ - return StrSave(PGNTagsStatic(gameInfo)); -} - - -/* Returns pointer to a static string with a result. - */ -char *PGNResult(result) - ChessMove result; -{ - switch (result) { - case GameUnfinished: - default: - return "*"; - case WhiteWins: - return "1-0"; - case BlackWins: - return "0-1"; - case GameIsDrawn: - return "1/2-1/2"; - } -} - -/* Returns 0 for success, nonzero for error */ -int -ReplaceTags(tags, gameInfo) - char *tags; - GameInfo *gameInfo; -{ - ChessMove moveType; - int err; - - ClearGameInfo(gameInfo); - yynewstr(tags); - for (;;) { - yyboardindex = 0; - moveType = (ChessMove) yylex(); - if (moveType == (ChessMove) 0) { - break; - } else if (moveType == PGNTag) { - err = ParsePGNTag(yy_text, gameInfo); - if (err != 0) return err; - } - } - /* just one problem...if there is a result in the new tags, - * DisplayMove() won't ever show it because ClearGameInfo() set - * gameInfo->resultDetails to NULL. So we must plug something in if there - * is a result. - */ - if (gameInfo->result != GameUnfinished) { - if (gameInfo->resultDetails) free(gameInfo->resultDetails); - gameInfo->resultDetails = strdup(""); - } - return 0; -} +/* + * pgntags.c -- Functions to manage PGN tags + * XBoard $Id: pgntags.c,v 2.1 2003/10/27 19:21:00 mann Exp $ + * + * Copyright 1995 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 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., 59 Temple Place, Suite 330, Boston, MA 02111 USA. + * ------------------------------------------------------------------------ + * + * This file could well be a part of backend.c, but I prefer it this + * way. + */ + +#include "config.h" + +#include +#include +#include +#if STDC_HEADERS +# include +# include +#else /* not STDC_HEADERS */ +# if HAVE_STRING_H +# include +# else /* not HAVE_STRING_H */ +# include +# endif /* not HAVE_STRING_H */ +#endif /* not STDC_HEADERS */ + +#include "common.h" +#include "frontend.h" +#include "backend.h" +#include "parser.h" + +static char *PGNTagsStatic P((GameInfo *)); + + + +/* Parse PGN tags; returns 0 for success or error number + */ +int ParsePGNTag(tag, gameInfo) + char *tag; + GameInfo *gameInfo; +{ + char *name, *value, *p, *oldTags; + int len; + int success; + + name = tag; + while (!isalpha(*name) && !isdigit(*name)) { + name++; + } + p = name; + while (*p != ' ' && *p != '\t' && *p != '\n') { + p++; + } + *p = NULLCHAR; + value = strchr(p + 1, '"') + 1; + p = strrchr(value, '"'); + *p = NULLCHAR; + + if (StrCaseCmp(name, "Event") == 0) { + success = StrSavePtr(value, &gameInfo->event) != NULL; + } else if (StrCaseCmp(name, "Site") == 0) { + success = StrSavePtr(value, &gameInfo->site) != NULL; + } else if (StrCaseCmp(name, "Date") == 0) { + success = StrSavePtr(value, &gameInfo->date) != NULL; + } else if (StrCaseCmp(name, "Round") == 0) { + success = StrSavePtr(value, &gameInfo->round) != NULL; + } else if (StrCaseCmp(name, "White") == 0) { + success = StrSavePtr(value, &gameInfo->white) != NULL; + } else if (StrCaseCmp(name, "Black") == 0) { + success = StrSavePtr(value, &gameInfo->black) != NULL; + } + /* Fold together the various ways of denoting White/Black rating */ + else if ((StrCaseCmp(name, "WhiteElo")==0) || + (StrCaseCmp(name, "WhiteUSCF")==0) ) { + success = TRUE; + gameInfo->whiteRating = atoi( value ); + } else if ((StrCaseCmp(name, "BlackElo")==0) || + (StrCaseCmp(name, "BlackUSCF")==0)) { + success = TRUE; + gameInfo->blackRating = atoi( value ); + } + else if (StrCaseCmp(name, "Result") == 0) { + if (strcmp(value, "1-0") == 0) + gameInfo->result = WhiteWins; + else if (strcmp(value, "0-1") == 0) + gameInfo->result = BlackWins; + else if (strcmp(value, "1/2-1/2") == 0) + gameInfo->result = GameIsDrawn; + else + gameInfo->result = GameUnfinished; + success = TRUE; + } else if (StrCaseCmp(name, "FEN") == 0) { + success = StrSavePtr(value, &gameInfo->fen) != NULL; + } else if (StrCaseCmp(name, "SetUp") == 0) { + /* ignore on input; presence of FEN governs */ + success = TRUE; + } else if (StrCaseCmp(name, "Variant") == 0) { + /* xboard-defined extension */ + gameInfo->variant = StringToVariant(value); + success = TRUE; + } else if (StrCaseCmp(name, PGN_OUT_OF_BOOK) == 0) { + /* [AS] Out of book annotation */ + success = StrSavePtr(value, &gameInfo->outOfBook) != NULL; + } else { + if (gameInfo->extraTags == NULL) { + oldTags = ""; + } else { + oldTags = gameInfo->extraTags; + } + /* Buffer size includes 7 bytes of space for [ ""]\n\0 */ + len = strlen(oldTags) + strlen(value) + strlen(name) + 7; + if ((p = (char *) malloc(len)) != NULL) { + sprintf(p, "%s[%s \"%s\"]\n", oldTags, name, value); + if (gameInfo->extraTags != NULL) free(gameInfo->extraTags); + gameInfo->extraTags = p; + success = TRUE; + } else { + success = FALSE; + } + } + return(success ? 0 : ENOMEM); +} + + + +/* Return a static buffer with a game's data. + */ +static char *PGNTagsStatic(gameInfo) + GameInfo *gameInfo; +{ + static char buf[8192]; + char buf1[MSG_SIZ]; + + buf[0] = NULLCHAR; + + sprintf(buf1, "[Event \"%s\"]\n", + gameInfo->event ? gameInfo->event : "?"); + strcat(buf, buf1); + sprintf(buf1, "[Site \"%s\"]\n", + gameInfo->site ? gameInfo->site : "?"); + strcat(buf, buf1); + sprintf(buf1, "[Date \"%s\"]\n", + gameInfo->date ? gameInfo->date : "?"); + strcat(buf, buf1); + sprintf(buf1, "[Round \"%s\"]\n", + gameInfo->round ? gameInfo->round : "-"); + strcat(buf, buf1); + sprintf(buf1, "[White \"%s\"]\n", + gameInfo->white ? gameInfo->white : "?"); + strcat(buf, buf1); + sprintf(buf1, "[Black \"%s\"]\n", + gameInfo->black ? gameInfo->black : "?"); + strcat(buf, buf1); + sprintf(buf1, "[Result \"%s\"]\n", PGNResult(gameInfo->result)); + strcat(buf, buf1); + + if (gameInfo->whiteRating >= 0 ) { + sprintf(buf1, "[WhiteElo \"%d\"]\n", gameInfo->whiteRating ); + strcat(buf, buf1); + } + if ( gameInfo->blackRating >= 0 ) { + sprintf(buf1, "[BlackElo \"%d\"]\n", gameInfo->blackRating ); + strcat(buf, buf1); + } + if (gameInfo->timeControl != NULL) { + sprintf(buf1, "[TimeControl \"%s\"]\n", gameInfo->timeControl); + strcat(buf, buf1); + } + if (gameInfo->variant != VariantNormal) { + sprintf(buf1, "[Variant \"%s\"]\n", VariantName(gameInfo->variant)); + strcat(buf, buf1); + } + if (gameInfo->extraTags != NULL) { + strcat(buf, gameInfo->extraTags); + } + return buf; +} + + + +/* Print game info + */ +void PrintPGNTags(fp, gameInfo) + FILE *fp; + GameInfo *gameInfo; +{ + fprintf(fp, "%s", PGNTagsStatic(gameInfo)); +} + + +/* Return a non-static buffer with a games info. + */ +char *PGNTags(gameInfo) + GameInfo *gameInfo; +{ + return StrSave(PGNTagsStatic(gameInfo)); +} + + +/* Returns pointer to a static string with a result. + */ +char *PGNResult(result) + ChessMove result; +{ + switch (result) { + case GameUnfinished: + default: + return "*"; + case WhiteWins: + return "1-0"; + case BlackWins: + return "0-1"; + case GameIsDrawn: + return "1/2-1/2"; + } +} + +/* Returns 0 for success, nonzero for error */ +int +ReplaceTags(tags, gameInfo) + char *tags; + GameInfo *gameInfo; +{ + ChessMove moveType; + int err; + + ClearGameInfo(gameInfo); + yynewstr(tags); + for (;;) { + yyboardindex = 0; + moveType = (ChessMove) yylex(); + if (moveType == (ChessMove) 0) { + break; + } else if (moveType == PGNTag) { + err = ParsePGNTag(yy_text, gameInfo); + if (err != 0) return err; + } + } + /* just one problem...if there is a result in the new tags, + * DisplayMove() won't ever show it because ClearGameInfo() set + * gameInfo->resultDetails to NULL. So we must plug something in if there + * is a result. + */ + if (gameInfo->result != GameUnfinished) { + if (gameInfo->resultDetails) free(gameInfo->resultDetails); + gameInfo->resultDetails = strdup(""); + } + return 0; +} diff --git a/pixmaps/README.pixmaps b/pixmaps/README.pixmaps index e2fb412..98f6ef7 100644 --- a/pixmaps/README.pixmaps +++ b/pixmaps/README.pixmaps @@ -1,2 +1,8 @@ -See ../bitmaps/README. These pixmaps were converted from the bitmaps there, -and the same notices apply. +See ../bitmaps/README. These pixmaps were converted from the bitmaps there, +and the same notices apply. + +[HGM] The non-orthodox pieces were converted from ../winboard/bitmaps/*.bmp, +by the program 'convert.c' in this folder. If you like the WinBoard pieces +better than the traditional xboard bitmaps, you could run that program again +to convert the orthodox pieces from their WinBoard bitmaps, and overwrite +the xboard pixmaps with them. diff --git a/pixmaps/add33.xpm b/pixmaps/add33.xpm new file mode 100644 index 0000000..6463900 --- /dev/null +++ b/pixmaps/add33.xpm @@ -0,0 +1,41 @@ +/* XPM */ +static char *add33[] = { +/* columns rows colors chars-per-pixel */ +"33 33 2 1", +" c black s dark_piece", +". c green s dark_square", +/* pixels */ +".................................", +".................................", +".................................", +".................................", +".................................", +".............. ..............", +"............. .............", +"............ ............", +".......... ..........", +"........ ........", +"...... . ......", +".... . ....", +"... . ...", +"... ..... ...", +".... . ....", +"...... . ......", +"........ ........", +"......... .........", +".......... ..........", +"........... ......... ...........", +"........... ...........", +".......... ......... ..........", +".......... . . ..........", +".......... ..........", +"........... ...........", +".............. ... ..............", +".... ....", +"... ...", +"... . ...", +".... ..... ....", +".... ....................... ....", +".................................", +"................................." +}; diff --git a/pixmaps/add37.xpm b/pixmaps/add37.xpm new file mode 100644 index 0000000..db60d50 --- /dev/null +++ b/pixmaps/add37.xpm @@ -0,0 +1,45 @@ +/* XPM */ +static char *add37[] = { +/* columns rows colors chars-per-pixel */ +"37 37 2 1", +" c black s dark_piece", +". c green s dark_square", +/* pixels */ +".....................................", +".....................................", +".....................................", +".....................................", +".....................................", +"................. .................", +"............... ...............", +"............ ............", +"......... .........", +"....... .......", +"..... .....", +".... ....", +"... ...", +"... . ...", +"... . ...", +".... ....... ....", +".... . ....", +"..... . .....", +"....... . .......", +"......... .........", +"........... ...........", +"............ ............", +"............ ........... ............", +"............ ............", +"............ ............", +"............ ........... ............", +"........... ...........", +"........... ...........", +"............. .............", +"................ ... ................", +"........ .... .... ........", +".... ....", +"... . ...", +".... ..... ....", +".... ......................... ....", +".....................................", +"....................................." +}; diff --git a/pixmaps/add40.xpm b/pixmaps/add40.xpm new file mode 100644 index 0000000..61d58bc --- /dev/null +++ b/pixmaps/add40.xpm @@ -0,0 +1,48 @@ +/* XPM */ +static char *add40[] = { +/* columns rows colors chars-per-pixel */ +"40 40 2 1", +" c black s dark_piece", +". c green s dark_square", +/* pixels */ +"........................................", +"........................................", +"........................................", +"........................................", +"........................................", +"........................................", +".................. .................", +"................ ...............", +"............... ..............", +"............. ............", +"........... ..........", +"......... ........", +"....... . ......", +"...... . .....", +"..... . ....", +"..... ....... ....", +"...... . .....", +"....... . ......", +"........ . .......", +".......... .........", +"........... ..........", +"............ ...........", +"............. ......... ............", +".............. . . .............", +".............. .............", +"............. ............", +"............. ............. ............", +"............ ...........", +"............ ...........", +"............... ..............", +"................... ..................", +"................. ................", +"...... .....", +".... ...", +"... . ..", +".... ..... ...", +"..... ............................. ....", +"........................................", +"........................................", +"........................................" +}; diff --git a/pixmaps/add45.xpm b/pixmaps/add45.xpm new file mode 100644 index 0000000..90d9e6a --- /dev/null +++ b/pixmaps/add45.xpm @@ -0,0 +1,53 @@ +/* XPM */ +static char *add45[] = { +/* 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/add49.xpm b/pixmaps/add49.xpm new file mode 100644 index 0000000..75dd13d --- /dev/null +++ b/pixmaps/add49.xpm @@ -0,0 +1,57 @@ +/* XPM */ +static char *add49[] = { +/* columns rows colors chars-per-pixel */ +"49 49 2 1", +" c black s dark_piece", +". c green s dark_square", +/* pixels */ +".................................................", +".................................................", +".................................................", +".................................................", +".................................................", +".................................................", +".................................................", +".................................................", +"....................... .......................", +".................... ....................", +"................... ...................", +"................. .................", +"................ ................", +".............. ..............", +"............ ............", +".......... ..........", +"........ . ........", +"...... . ......", +"..... . .....", +".... . ....", +"..... ......... .....", +"...... . ......", +"....... . .......", +"......... . .........", +"........... . ...........", +"............ ............", +"............. .............", +".............. ..............", +"............... ...............", +"................ ........... ................", +"................ .. .. ................", +"................ ................", +"................ ................", +"................ ................", +"............... ............... ...............", +"............... ...............", +".............. ..............", +".............. ..............", +".................. ... ..................", +"...................... ......................", +".................... ....................", +"........ ........", +"..... . .....", +".... ..... ....", +".... ......... ....", +".... ................................. ....", +".................................................", +".................................................", +"................................................." +}; diff --git a/pixmaps/add54.xpm b/pixmaps/add54.xpm new file mode 100644 index 0000000..e097455 --- /dev/null +++ b/pixmaps/add54.xpm @@ -0,0 +1,62 @@ +/* XPM */ +static char *add54[] = { +/* 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/add58.xpm b/pixmaps/add58.xpm new file mode 100644 index 0000000..1594b34 --- /dev/null +++ b/pixmaps/add58.xpm @@ -0,0 +1,66 @@ +/* XPM */ +static char *add58[] = { +/* columns rows colors chars-per-pixel */ +"58 58 2 1", +" c black s dark_piece", +". c green s dark_square", +/* pixels */ +"..........................................................", +"..........................................................", +"..........................................................", +"..........................................................", +"..........................................................", +"..........................................................", +"..........................................................", +"..........................................................", +"..........................................................", +".......................... ..........................", +"....................... .......................", +"..................... .....................", +".................... ....................", +".................. ..................", +"................. .................", +"............... ...............", +"............. .............", +"........... ...........", +"......... .. .........", +"....... .. .......", +"...... .. ......", +"..... .. .....", +"..... .......... .....", +"..... .......... .....", +"...... .. ......", +"....... .. .......", +"........ .. ........", +".......... .. ..........", +"............ .. ............", +".............. ..............", +"................ ................", +"................. .................", +".................. ..................", +"................... ................ ...................", +"................... ................ ...................", +"................... ...................", +".................. ..................", +".................. ..................", +".................. .................. ..................", +"................. .................. .................", +"................. .................", +"................. .................", +"................. .................", +"...................... ......................", +".......................... .. ..........................", +"........................ ........................", +"........ ........", +"...... ......", +".... ....", +".... ....", +"..... .....", +"..... .. .....", +"...... ...... ......", +"....... ........ .......... ........ .......", +"..........................................................", +"..........................................................", +"..........................................................", +".........................................................." +}; diff --git a/pixmaps/add64.xpm b/pixmaps/add64.xpm new file mode 100644 index 0000000..cfa345e --- /dev/null +++ b/pixmaps/add64.xpm @@ -0,0 +1,72 @@ +/* XPM */ +static char *add64[] = { +/* columns rows colors chars-per-pixel */ +"64 64 2 1", +" c black s dark_piece", +". c green s dark_square", +/* pixels */ +"................................................................", +"................................................................", +"................................................................", +"................................................................", +"................................................................", +"................................................................", +"................................................................", +"................................................................", +"................................................................", +"................................................................", +"................................................................", +"................................................................", +"............................ ............................", +"......................... .........................", +"....................... .......................", +"...................... ......................", +"..................... .....................", +"................... ...................", +"................. .................", +".............. ..............", +"............ ............", +".......... .. ..........", +"........ .. ........", +"....... .. .......", +"...... .. ......", +"...... ............ ......", +"...... ............ ......", +"...... .. ......", +"....... .. .......", +"......... .. .........", +".......... .. ..........", +"............ ............", +".............. .............", +"............... ...............", +"................. .................", +"................... ...................", +".................... .............. ....................", +"..................... ................... .....................", +"..................... .. ... .....................", +"..................... .....................", +"..................... .....................", +".................... ....................", +".................... .................. ....................", +".................... .................... ....................", +"................... .. .. ...................", +"................... ...................", +"................... ...................", +".................... ....................", +"......................... .........................", +"............................ .... ............................", +".......................... .... ..........................", +"......... .........", +"....... .......", +"..... .....", +".... ....", +"..... .....", +"...... .. ......", +"...... ...... ......", +"....... ........ .......... ........ .......", +"........ .............................................. ........", +"................................................................", +"................................................................", +"................................................................", +"................................................................" +}; diff --git a/pixmaps/add72.xpm b/pixmaps/add72.xpm new file mode 100644 index 0000000..13749d6 --- /dev/null +++ b/pixmaps/add72.xpm @@ -0,0 +1,80 @@ +/* XPM */ +static char *add72[] = { +/* columns rows colors chars-per-pixel */ +"72 72 2 1", +" c black s dark_piece", +". c green s dark_square", +/* pixels */ +"........................................................................", +"........................................................................", +"........................................................................", +"........................................................................", +"........................................................................", +"........................................................................", +"........................................................................", +"........................................................................", +"........................................................................", +"........................................................................", +"............................... ...............................", +"............................. .............................", +"............................ ............................", +"........................... ...........................", +".......................... ..........................", +"........................ ........................", +"...................... ......................", +".................... ....................", +".................. ..................", +"................ ................", +".............. ..............", +"............. .............", +"........... ...........", +"......... .. .........", +"........ .. ........", +"...... .. ......", +"...... .. ......", +"..... .. .....", +"..... .. .....", +"..... .............. .....", +"....... .............. ......", +"....... .. .......", +"......... .. .........", +"............ .. ...........", +".............. .. .............", +"............... .. ...............", +"................ ................", +"................. .................", +".................. ..................", +"................... ...................", +".................... ....................", +"..................... .....................", +"...................... ................ ......................", +"....................... ..................... .......................", +"........................ .. ... ........................", +"....................... .......................", +"....................... .......................", +"....................... .......................", +"...................... ......................", +"...................... .................. ......................", +"..................... .......................... .....................", +"..................... .... .... .....................", +"..................... .....................", +".................... ....................", +".................... ....................", +"...................... ......................", +"............................ ............................", +"................................ ................................", +"............................... ...............................", +"............................. .............................", +"........... ...........", +"....... .......", +"..... .....", +".... ....", +".... .. ....", +".... ...... ....", +"..... ............ .....", +"...... ................................................ ......", +"....... ...................................................... .......", +"........................................................................", +"........................................................................", +"........................................................................" +}; diff --git a/pixmaps/adl33.xpm b/pixmaps/adl33.xpm new file mode 100644 index 0000000..fe06352 --- /dev/null +++ b/pixmaps/adl33.xpm @@ -0,0 +1,41 @@ +/* XPM */ +static char *adl33[] = { +/* columns rows colors chars-per-pixel */ +"33 33 2 1", +" c black s dark_piece", +". c gray s light_square", +/* pixels */ +".................................", +".................................", +".................................", +".................................", +".................................", +".............. ..............", +"............. .............", +"............ ............", +".......... ..........", +"........ ........", +"...... . ......", +".... . ....", +"... . ...", +"... ..... ...", +".... . ....", +"...... . ......", +"........ ........", +"......... .........", +".......... ..........", +"........... ......... ...........", +"........... ...........", +".......... ......... ..........", +".......... . . ..........", +".......... ..........", +"........... ...........", +".............. ... ..............", +".... ....", +"... ...", +"... . ...", +".... ..... ....", +".... ....................... ....", +".................................", +"................................." +}; diff --git a/pixmaps/adl37.xpm b/pixmaps/adl37.xpm new file mode 100644 index 0000000..c4d85b3 --- /dev/null +++ b/pixmaps/adl37.xpm @@ -0,0 +1,45 @@ +/* XPM */ +static char *adl37[] = { +/* columns rows colors chars-per-pixel */ +"37 37 2 1", +" c black s dark_piece", +". c gray s light_square", +/* pixels */ +".....................................", +".....................................", +".....................................", +".....................................", +".....................................", +"................. .................", +"............... ...............", +"............ ............", +"......... .........", +"....... .......", +"..... .....", +".... ....", +"... ...", +"... . ...", +"... . ...", +".... ....... ....", +".... . ....", +"..... . .....", +"....... . .......", +"......... .........", +"........... ...........", +"............ ............", +"............ ........... ............", +"............ ............", +"............ ............", +"............ ........... ............", +"........... ...........", +"........... ...........", +"............. .............", +"................ ... ................", +"........ .... .... ........", +".... ....", +"... . ...", +".... ..... ....", +".... ......................... ....", +".....................................", +"....................................." +}; diff --git a/pixmaps/adl40.xpm b/pixmaps/adl40.xpm new file mode 100644 index 0000000..0485369 --- /dev/null +++ b/pixmaps/adl40.xpm @@ -0,0 +1,48 @@ +/* XPM */ +static char *adl40[] = { +/* columns rows colors chars-per-pixel */ +"40 40 2 1", +" c black s dark_piece", +". c gray s light_square", +/* pixels */ +"........................................", +"........................................", +"........................................", +"........................................", +"........................................", +"........................................", +".................. .................", +"................ ...............", +"............... ..............", +"............. ............", +"........... ..........", +"......... ........", +"....... . ......", +"...... . .....", +"..... . ....", +"..... ....... ....", +"...... . .....", +"....... . ......", +"........ . .......", +".......... .........", +"........... ..........", +"............ ...........", +"............. ......... ............", +".............. . . .............", +".............. .............", +"............. ............", +"............. ............. ............", +"............ ...........", +"............ ...........", +"............... ..............", +"................... ..................", +"................. ................", +"...... .....", +".... ...", +"... . ..", +".... ..... ...", +"..... ............................. ....", +"........................................", +"........................................", +"........................................" +}; diff --git a/pixmaps/adl45.xpm b/pixmaps/adl45.xpm new file mode 100644 index 0000000..898b725 --- /dev/null +++ b/pixmaps/adl45.xpm @@ -0,0 +1,53 @@ +/* XPM */ +static char *adl45[] = { +/* 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/adl49.xpm b/pixmaps/adl49.xpm new file mode 100644 index 0000000..c40f67d --- /dev/null +++ b/pixmaps/adl49.xpm @@ -0,0 +1,57 @@ +/* XPM */ +static char *adl49[] = { +/* columns rows colors chars-per-pixel */ +"49 49 2 1", +" c black s dark_piece", +". c gray s light_square", +/* pixels */ +".................................................", +".................................................", +".................................................", +".................................................", +".................................................", +".................................................", +".................................................", +".................................................", +"....................... .......................", +".................... ....................", +"................... ...................", +"................. .................", +"................ ................", +".............. ..............", +"............ ............", +".......... ..........", +"........ . ........", +"...... . ......", +"..... . .....", +".... . ....", +"..... ......... .....", +"...... . ......", +"....... . .......", +"......... . .........", +"........... . ...........", +"............ ............", +"............. .............", +".............. ..............", +"............... ...............", +"................ ........... ................", +"................ .. .. ................", +"................ ................", +"................ ................", +"................ ................", +"............... ............... ...............", +"............... ...............", +".............. ..............", +".............. ..............", +".................. ... ..................", +"...................... ......................", +".................... ....................", +"........ ........", +"..... . .....", +".... ..... ....", +".... ......... ....", +".... ................................. ....", +".................................................", +".................................................", +"................................................." +}; diff --git a/pixmaps/adl54.xpm b/pixmaps/adl54.xpm new file mode 100644 index 0000000..8a0d3da --- /dev/null +++ b/pixmaps/adl54.xpm @@ -0,0 +1,62 @@ +/* XPM */ +static char *adl54[] = { +/* 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/adl58.xpm b/pixmaps/adl58.xpm new file mode 100644 index 0000000..83c92d7 --- /dev/null +++ b/pixmaps/adl58.xpm @@ -0,0 +1,66 @@ +/* XPM */ +static char *adl58[] = { +/* columns rows colors chars-per-pixel */ +"58 58 2 1", +" c black s dark_piece", +". c gray s light_square", +/* pixels */ +"..........................................................", +"..........................................................", +"..........................................................", +"..........................................................", +"..........................................................", +"..........................................................", +"..........................................................", +"..........................................................", +"..........................................................", +".......................... ..........................", +"....................... .......................", +"..................... .....................", +".................... ....................", +".................. ..................", +"................. .................", +"............... ...............", +"............. .............", +"........... ...........", +"......... .. .........", +"....... .. .......", +"...... .. ......", +"..... .. .....", +"..... .......... .....", +"..... .......... .....", +"...... .. ......", +"....... .. .......", +"........ .. ........", +".......... .. ..........", +"............ .. ............", +".............. ..............", +"................ ................", +"................. .................", +".................. ..................", +"................... ................ ...................", +"................... ................ ...................", +"................... ...................", +".................. ..................", +".................. ..................", +".................. .................. ..................", +"................. .................. .................", +"................. .................", +"................. .................", +"................. .................", +"...................... ......................", +".......................... .. ..........................", +"........................ ........................", +"........ ........", +"...... ......", +".... ....", +".... ....", +"..... .....", +"..... .. .....", +"...... ...... ......", +"....... ........ .......... ........ .......", +"..........................................................", +"..........................................................", +"..........................................................", +".........................................................." +}; diff --git a/pixmaps/adl64.xpm b/pixmaps/adl64.xpm new file mode 100644 index 0000000..2724965 --- /dev/null +++ b/pixmaps/adl64.xpm @@ -0,0 +1,72 @@ +/* XPM */ +static char *adl64[] = { +/* columns rows colors chars-per-pixel */ +"64 64 2 1", +" c black s dark_piece", +". c gray s light_square", +/* pixels */ +"................................................................", +"................................................................", +"................................................................", +"................................................................", +"................................................................", +"................................................................", +"................................................................", +"................................................................", +"................................................................", +"................................................................", +"................................................................", +"................................................................", +"............................ ............................", +"......................... .........................", +"....................... .......................", +"...................... ......................", +"..................... .....................", +"................... ...................", +"................. .................", +".............. ..............", +"............ ............", +".......... .. ..........", +"........ .. ........", +"....... .. .......", +"...... .. ......", +"...... ............ ......", +"...... ............ ......", +"...... .. ......", +"....... .. .......", +"......... .. .........", +".......... .. ..........", +"............ ............", +".............. .............", +"............... ...............", +"................. .................", +"................... ...................", +".................... .............. ....................", +"..................... ................... .....................", +"..................... .. ... .....................", +"..................... .....................", +"..................... .....................", +".................... ....................", +".................... .................. ....................", +".................... .................... ....................", +"................... .. .. ...................", +"................... ...................", +"................... ...................", +".................... ....................", +"......................... .........................", +"............................ .... ............................", +".......................... .... ..........................", +"......... .........", +"....... .......", +"..... .....", +".... ....", +"..... .....", +"...... .. ......", +"...... ...... ......", +"....... ........ .......... ........ .......", +"........ .............................................. ........", +"................................................................", +"................................................................", +"................................................................", +"................................................................" +}; diff --git a/pixmaps/adl72.xpm b/pixmaps/adl72.xpm new file mode 100644 index 0000000..ec46e92 --- /dev/null +++ b/pixmaps/adl72.xpm @@ -0,0 +1,80 @@ +/* XPM */ +static char *adl72[] = { +/* columns rows colors chars-per-pixel */ +"72 72 2 1", +" c black s dark_piece", +". c gray s light_square", +/* pixels */ +"........................................................................", +"........................................................................", +"........................................................................", +"........................................................................", +"........................................................................", +"........................................................................", +"........................................................................", +"........................................................................", +"........................................................................", +"........................................................................", +"............................... ...............................", +"............................. .............................", +"............................ ............................", +"........................... ...........................", +".......................... ..........................", +"........................ ........................", +"...................... ......................", +".................... ....................", +".................. ..................", +"................ ................", +".............. ..............", +"............. .............", +"........... ...........", +"......... .. .........", +"........ .. ........", +"...... .. ......", +"...... .. ......", +"..... .. .....", +"..... .. .....", +"..... .............. .....", +"....... .............. ......", +"....... .. .......", +"......... .. .........", +"............ .. ...........", +".............. .. .............", +"............... .. ...............", +"................ ................", +"................. .................", +".................. ..................", +"................... ...................", +".................... ....................", +"..................... .....................", +"...................... ................ ......................", +"....................... ..................... .......................", +"........................ .. ... ........................", +"....................... .......................", +"....................... .......................", +"....................... .......................", +"...................... ......................", +"...................... .................. ......................", +"..................... .......................... .....................", +"..................... .... .... .....................", +"..................... .....................", +".................... ....................", +".................... ....................", +"...................... ......................", +"............................ ............................", +"................................ ................................", +"............................... ...............................", +"............................. .............................", +"........... ...........", +"....... .......", +"..... .....", +".... ....", +".... .. ....", +".... ...... ....", +"..... ............ .....", +"...... ................................................ ......", +"....... ...................................................... .......", +"........................................................................", +"........................................................................", +"........................................................................" +}; diff --git a/pixmaps/ald33.xpm b/pixmaps/ald33.xpm new file mode 100644 index 0000000..0390229 --- /dev/null +++ b/pixmaps/ald33.xpm @@ -0,0 +1,42 @@ +/* XPM */ +static char *ald33[] = { +/* 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 */ +".................................", +".................................", +".................................", +".................................", +".................................", +".............. ..............", +"............. XXXXX .............", +"............ XXXXXXX ............", +".......... XXXXXXXXX ..........", +"........ XXXXXXXXXXXXX ........", +"...... XXXXXXXX XXXXXXXX ......", +".... XXXXXXXXXX XXXXXXXXXX ....", +"... XXXXXXXXXXXX XXXXXXXXXXXX ...", +"... XXXXXXXXXX XXXXXXXXXX ...", +".... XXXXXXXXXX XXXXXXXXXX ....", +"...... XXXXXXXX XXXXXXXX ......", +"........ XXXXXXXXXXXXXXX ........", +"......... XXXXXXXXXXXXX .........", +".......... XXXXXXXXXXX ..........", +"........... ...........", +"........... XXXXXXXXX ...........", +".......... X X ..........", +".......... XXXXXXXXX ..........", +".......... XXXXXXXXXXX ..........", +"........... ...........", +".............. X ..............", +".... XXXXX ....", +"... XXXXXXXXXXXX XXXXXXXXXXXX ...", +"... XXXXXXXXXX . XXXXXXXXXX ...", +".... ..... ....", +".... ....................... ....", +".................................", +"................................." +}; diff --git a/pixmaps/ald37.xpm b/pixmaps/ald37.xpm new file mode 100644 index 0000000..7286277 --- /dev/null +++ b/pixmaps/ald37.xpm @@ -0,0 +1,46 @@ +/* XPM */ +static char *ald37[] = { +/* columns rows colors chars-per-pixel */ +"37 37 3 1", +" c black s dark_piece", +". c green s dark_square", +"X c white s light_piece", +/* pixels */ +".....................................", +".....................................", +".....................................", +".....................................", +".....................................", +"................. .................", +"............... XXX ...............", +"............ XXXXXXX ............", +"......... XXXXXXXXXXXXX .........", +"....... XXXXXXXXXXXXXXXXXXX .......", +"..... XXXXXXXXXXXXXXXXXXXXXXXX .....", +".... XXXXXXXXXXXXXXXXXXXXXXXXXXX ....", +"... XXXXXXXXXXXXXXXXXXXXXXXXXXXXX ...", +"... XXXXXXXXXXXXXX XXXXXXXXXXXXXX ...", +"... XXXXXXXXXXXXXX XXXXXXXXXXXXXX ...", +".... XXXXXXXXXX XXXXXXXXXX ....", +".... XXXXXXXXXXXXX XXXXXXXXXXXXX ....", +"..... XXXXXXXXXXX XXXXXXXXXXX .....", +"....... XXXXXXXXX XXXXXXXXX .......", +"......... XXXXXXXXXXXXXXX .........", +"........... XXXXXXXXXXXXX ...........", +"............ XXXXXXXXXXX ............", +"............ ............", +"............ XXXXXXXXXXX ............", +"............ XXXXXXXXXXX ............", +"............ ............", +"........... XXXXXXXXXXX ...........", +"........... XXXXXXXXXXX ...........", +"............. .............", +"................ X X................", +"........ .... XXXXX .... ........", +".... XX XXXX XXXX XX ....", +"... XXXXXXXXXXXX . XXXXXXXXXXXX ...", +".... X ..... X ....", +".... ......................... ....", +".....................................", +"....................................." +}; diff --git a/pixmaps/ald40.xpm b/pixmaps/ald40.xpm new file mode 100644 index 0000000..7a6a764 --- /dev/null +++ b/pixmaps/ald40.xpm @@ -0,0 +1,49 @@ +/* XPM */ +static char *ald40[] = { +/* columns rows colors chars-per-pixel */ +"40 40 3 1", +" c black s dark_piece", +". c green s dark_square", +"X c white s light_piece", +/* pixels */ +"........................................", +"........................................", +"........................................", +"........................................", +"........................................", +"........................................", +".................. .................", +"................ XXXXX ...............", +"............... XXXXXXXXX ..............", +"............. XXXXXXXXXXX ............", +"........... XXXXXXXXXXXXXXX ..........", +"......... XXXXXXXXXXXXXXXXXXX ........", +"....... XXXXXXXXXXX XXXXXXXXXXX ......", +"...... XXXXXXXXXXXXX XXXXXXXXXXXXX .....", +"..... XXXXXXXXXXXXXX XXXXXXXXXXXXXX ....", +"..... XXXXXXXXXXX XXXXXXXXXXX ....", +"...... XXXXXXXXXXXXX XXXXXXXXXXXXX .....", +"....... XXXXXXXXXXXX XXXXXXXXXXXX ......", +"........ XXXXXXXXXX XXXXXXXXXX .......", +".......... XXXXXXXXXXXXXXXXXXX .........", +"........... XXXXXXXXXXXXXXXXX ..........", +"............ XXXXXXXXXXXXXXX ...........", +"............. XX XX ............", +".............. XXXXXXXXX .............", +".............. XXXXXXXXXXX .............", +"............. XXXXXXXXXXXXX ............", +"............. ............", +"............ XXXXXXXXXXXXX ...........", +"............ XXXXXXXXXXX ...........", +"............... ..............", +"................... X ..................", +"................. XXX ................", +"...... XXXXXXX .....", +".... XXXXXXXXXXXXXX XXXXXXXXXXXXXX ...", +"... XXXXXXXXXXXXXX . XXXXXXXXXXXXXX ..", +".... X ..... X ...", +"..... ............................. ....", +"........................................", +"........................................", +"........................................" +}; diff --git a/pixmaps/ald45.xpm b/pixmaps/ald45.xpm new file mode 100644 index 0000000..3ab06a5 --- /dev/null +++ b/pixmaps/ald45.xpm @@ -0,0 +1,54 @@ +/* XPM */ +static char *ald45[] = { +/* 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 */ +".............................................", +".............................................", +".............................................", +".............................................", +".............................................", +".............................................", +".............................................", +".............................................", +".................... ....................", +"................... XXXXX ...................", +"................. XXXXXXX .................", +"............... XXXXXXXXXXX ...............", +"............. XXXXXXXXXXXXXXX .............", +"........... XXXXXXXXXXXXXXXXXXX ...........", +"......... XXXXXXXXXXXXXXXXXXXXXXX .........", +"....... XXXXXXXXXXXXX XXXXXXXXXXXXX .......", +"..... XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX .....", +".... XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXX ....", +".... XXXXXXXXXXXXX XXXXXXXXXXXXX ....", +".... XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXX ....", +"..... XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX .....", +"..... XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX .....", +"...... XXXXXXXXXXXXXX XXXXXXXXXXXXXX ......", +"........ XXXXXXXXXXXXXXXXXXXXXXXXX ........", +".......... XXXXXXXXXXXXXXXXXXXXX ..........", +"............ XXXXXXXXXXXXXXXXX ............", +".............. XXXXXXXXXXXXXXX ..............", +".............. ..............", +"............... XXXXXXXXXXXXX ...............", +"............... XXXXXXXXXXXXX ...............", +".............. XXXXXXXXXXXXXXX ..............", +".............. X X ..............", +".............. XXXXXXXXXXXXX ..............", +"............. XXXXXXXXXXXXXXXXX .............", +"............. XXXXXXXXXXXXX .............", +"................ ................", +".................... X ....................", +".................. XXXXX ..................", +"....... XXXX XXXX .......", +".... XXXXXXXXXXXXX . XXXXXXXXXXXXX ....", +"... XXXXXXXXXXXXXXX ..... XXXXXXXXXXXXXXX ...", +"... XX ....... XX ...", +".... ................................. ....", +".............................................", +"............................................." +}; diff --git a/pixmaps/ald49.xpm b/pixmaps/ald49.xpm new file mode 100644 index 0000000..d9ddb67 --- /dev/null +++ b/pixmaps/ald49.xpm @@ -0,0 +1,58 @@ +/* XPM */ +static char *ald49[] = { +/* columns rows colors chars-per-pixel */ +"49 49 3 1", +" c black s dark_piece", +". c green s dark_square", +"X c white s light_piece", +/* pixels */ +".................................................", +".................................................", +".................................................", +".................................................", +".................................................", +".................................................", +".................................................", +".................................................", +"....................... .......................", +".................... XXX ....................", +"................... XXXXXXXXX ...................", +"................. XXXXXXXXXXX .................", +"................ XXXXXXXXXXXXXXX ................", +".............. XXXXXXXXXXXXXXXXX ..............", +"............ XXXXXXXXXXXXXXXXXXXXX ............", +".......... XXXXXXXXXXXXXXXXXXXXXXXXX ..........", +"........ XXXXXXXXXXXXXX XXXXXXXXXXXXXX ........", +"...... XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX ......", +"..... XXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXX .....", +".... XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX ....", +"..... XXXXXXXXXXXXXX XXXXXXXXXXXXXX .....", +"...... XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXX ......", +"....... XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX .......", +"......... XXXXXXXXXXXXX XXXXXXXXXXXXX .........", +"........... XXXXXXXXXXXX XXXXXXXXXXXX ...........", +"............ XXXXXXXXXXXXXXXXXXXXXXX ............", +"............. XXXXXXXXXXXXXXXXXXXXX .............", +".............. XXXXXXXXXXXXXXXXXXX ..............", +"............... XXXXXXXXXXXXXXXXX ...............", +"................ XX XX ................", +"................ XXXXXXXXXXX ................", +"................ XXXXXXXXXXXXXXX ................", +"................ XXXXXXXXXXXXXXX ................", +"................ XXXXXXXXXXXXXXX ................", +"............... ...............", +"............... XXXXXXXXXXXXXXXXX ...............", +".............. XXXXXXXXXXXXXXXXXXX ..............", +".............. XXXXXXXXXXXXX ..............", +".................. ..................", +"...................... X ......................", +".................... XXXXX ....................", +"........ XXXX XXXX ........", +"..... XXXXXXXXXXXXXX . XXXXXXXXXXXXXX .....", +".... XXXXXXXXXXXXXXX ..... XXXXXXXXXXXXXXX ....", +".... XXX ......... XXX ....", +".... ................................. ....", +".................................................", +".................................................", +"................................................." +}; diff --git a/pixmaps/ald54.xpm b/pixmaps/ald54.xpm new file mode 100644 index 0000000..b33900a --- /dev/null +++ b/pixmaps/ald54.xpm @@ -0,0 +1,63 @@ +/* XPM */ +static char *ald54[] = { +/* 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 */ +"......................................................", +"......................................................", +"......................................................", +"......................................................", +"......................................................", +"......................................................", +"......................................................", +"......................................................", +"......................................................", +"...................... ......................", +".................... ....................", +"................... XXXXXXXXXX ...................", +".................. XXXXXXXXXXXX ..................", +"................. XXXXXXXXXXXXXX .................", +".............. XXXXXXXXXXXXXXXX ..............", +"........... XXXXXXXXXXXXXXXXXXXX ...........", +"......... XXXXXXXXXXXXXXXXXXXXXXXXXX .........", +"........ XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX ........", +"....... XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX .......", +"...... XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXX ......", +"..... XXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXX .....", +"..... XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX .....", +"..... XXXXXXXXXXXXXX XXXXXXXXXXXXXX .....", +"...... XXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXX ......", +"...... XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXX ......", +"....... XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX .......", +"......... XXXXXXXXXXXXX XXXXXXXXXXXXX .........", +"........... XXXXXXXXXXXXXXXXXXXXXXXX ...........", +"............. XXXXXXXXXXXXXXXXXXXX .............", +"............... XXXXXXXXXXXXXXXXXX ...............", +"................ XX XX ................", +"................. .................", +".................. XXXXXXXXXXXX ..................", +".................. XXXXXXXXXXXXXX ..................", +"................. XXXXXXXXXXXXXX .................", +"................. X X .................", +"................ ................", +"................ XXXXXXXXXXXXXX ................", +"................ XXXXXXXXXXXXXXXXXX ................", +"............... XXXXXXXXXXXXXX ...............", +"................ ................", +".................... ....................", +"...................... XX ......................", +"....... XXXXXX .......", +"..... XXXXXXXXXX .....", +"... XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ...", +".... XXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXX ....", +".... XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX ....", +"..... .. .....", +"...... ........ ......", +"....... ...................................... .......", +"......................................................", +"......................................................", +"......................................................" +}; diff --git a/pixmaps/ald58.xpm b/pixmaps/ald58.xpm new file mode 100644 index 0000000..c92fe22 --- /dev/null +++ b/pixmaps/ald58.xpm @@ -0,0 +1,67 @@ +/* XPM */ +static char *ald58[] = { +/* columns rows colors chars-per-pixel */ +"58 58 3 1", +" c black s dark_piece", +". c green s dark_square", +"X c white s light_piece", +/* pixels */ +"..........................................................", +"..........................................................", +"..........................................................", +"..........................................................", +"..........................................................", +"..........................................................", +"..........................................................", +"..........................................................", +"..........................................................", +".......................... ..........................", +"....................... .......................", +"..................... XXXXXX .....................", +".................... XXXXXXXXXXXX ....................", +".................. XXXXXXXXXXXXXX ..................", +"................. XXXXXXXXXXXXXXXXXX .................", +"............... XXXXXXXXXXXXXXXXXXXX ...............", +"............. XXXXXXXXXXXXXXXXXXXXXXXX .............", +"........... XXXXXXXXXXXXXXXXXXXXXXXXXXXX ...........", +"......... XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX .........", +"....... XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXX .......", +"...... XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX ......", +"..... XXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXX .....", +"..... XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXX .....", +"..... XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX .....", +"...... XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX ......", +"....... XXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXX .......", +"........ XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX ........", +".......... XXXXXXXXXXXXXX XXXXXXXXXXXXXX ..........", +"............ XXXXXXXXXXXX XXXXXXXXXXXX ............", +".............. XXXXXXXXXXXXXXXXXXXXXX ..............", +"................ XXXXXXXXXXXXXXXXXXXX ................", +"................. XXXXXXXXXXXXXXXXXX .................", +".................. XXXXXXXXXXXXXXXX ..................", +"................... ...................", +"................... ...................", +"................... XXXXXXXXXXXXXXXX ...................", +".................. XXXXXXXXXXXXXXXX ..................", +".................. XXXXXXXXXXXXXXXXXX ..................", +".................. ..................", +"................. .................", +"................. XXXXXXXXXXXXXXXXXX .................", +"................. XXXXXXXXXXXXXX .................", +"................. .................", +"...................... ......................", +".......................... ..........................", +"........................ XX ........................", +"........ XXXXXX ........", +"...... XXXXXXXXXX ......", +".... XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ....", +".... XXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXX ....", +"..... XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX .....", +"..... X XXXXXXX .. XXXXXXX X .....", +"...... ...... ......", +"....... ........ .......... ........ .......", +"..........................................................", +"..........................................................", +"..........................................................", +".........................................................." +}; diff --git a/pixmaps/ald64.xpm b/pixmaps/ald64.xpm new file mode 100644 index 0000000..4584002 --- /dev/null +++ b/pixmaps/ald64.xpm @@ -0,0 +1,73 @@ +/* XPM */ +static char *ald64[] = { +/* columns rows colors chars-per-pixel */ +"64 64 3 1", +" c black s dark_piece", +". c green s dark_square", +"X c white s light_piece", +/* pixels */ +"................................................................", +"................................................................", +"................................................................", +"................................................................", +"................................................................", +"................................................................", +"................................................................", +"................................................................", +"................................................................", +"................................................................", +"................................................................", +"................................................................", +"............................ ............................", +"......................... .........................", +"....................... XXXXXXXX .......................", +"...................... XXXXXXXXXXXX ......................", +"..................... XXXXXXXXXXXXXXXX .....................", +"................... XXXXXXXXXXXXXXXXXX ...................", +"................. XXXXXXXXXXXXXXXXXXXXXX .................", +".............. XXXXXXXXXXXXXXXXXXXXXXXXXX ..............", +"............ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ............", +".......... XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXX ..........", +"........ XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX ........", +"....... XXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXX .......", +"...... XXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXX ......", +"...... XXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXX ......", +"...... XXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXX ......", +"...... XXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXX ......", +"....... XXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXX .......", +"......... XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX .........", +".......... XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXX ..........", +"............ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ............", +".............. XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .............", +"............... XXXXXXXXXXXXXXXXXXXXXXXXXX ...............", +"................. XXXXXXXXXXXXXXXXXXXXXX .................", +"................... XXXXXXXXXXXXXXXXXXXX ...................", +".................... XX XX ....................", +"..................... .....................", +"..................... XXXXXXXXXXXXXX .....................", +"..................... XXXXXXXXXXXXXXXXXX .....................", +"..................... XXXXXXXXXXXXXXXXXX .....................", +".................... XXXXXXXXXXXXXXXXXX ....................", +".................... X X ....................", +".................... ....................", +"................... XXXXXXXXXXXXXXXXXX ...................", +"................... XXXXXXXXXXXXXXXXXXXXXX ...................", +"................... XXXXXXXXXXXXXX ...................", +".................... ....................", +"......................... .........................", +"............................ ............................", +".......................... XXXX ..........................", +"......... XXXXXXXX .........", +"....... XXXXXXXXXXXX .......", +"..... XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .....", +".... XXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXX ....", +"..... XXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXX .....", +"...... XXX XXXXXXXX .. XXXXXXXX XXX ......", +"...... ...... ......", +"....... ........ .......... ........ .......", +"........ .............................................. ........", +"................................................................", +"................................................................", +"................................................................", +"................................................................" +}; diff --git a/pixmaps/ald72.xpm b/pixmaps/ald72.xpm new file mode 100644 index 0000000..51aec18 --- /dev/null +++ b/pixmaps/ald72.xpm @@ -0,0 +1,81 @@ +/* XPM */ +static char *ald72[] = { +/* columns rows colors chars-per-pixel */ +"72 72 3 1", +" c black s dark_piece", +". c green s dark_square", +"X c white s light_piece", +/* pixels */ +"........................................................................", +"........................................................................", +"........................................................................", +"........................................................................", +"........................................................................", +"........................................................................", +"........................................................................", +"........................................................................", +"........................................................................", +"........................................................................", +"............................... ...............................", +"............................. .............................", +"............................ XXXXXXXX ............................", +"........................... XXXXXXXXXX ...........................", +".......................... XXXXXXXXXXXX ..........................", +"........................ XXXXXXXXXXXXXXXX ........................", +"...................... XXXXXXXXXXXXXXXXXX ......................", +".................... XXXXXXXXXXXXXXXXXXXXXX ....................", +".................. XXXXXXXXXXXXXXXXXXXXXXXXXX ..................", +"................ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ................", +".............. XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ..............", +"............. XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .............", +"........... XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ...........", +"......... XXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXX .........", +"........ XXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXX ........", +"...... XXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXX ......", +"...... XXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXX ......", +"..... XXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXX .....", +"..... XXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXX .....", +"..... XXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXX .....", +"....... XXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX ......", +"....... XXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXX .......", +"......... XXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXX .........", +"............ XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX ...........", +".............. XXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXX .............", +"............... XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXX ...............", +"................ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ................", +"................. XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .................", +".................. XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ..................", +"................... XXXXXXXXXXXXXXXXXXXXXXXXXXXX ...................", +".................... XXXXXXXXXXXXXXXXXXXXXXXXX ....................", +"..................... XXXXXXXXXXXXXXXXXXXXXXXX .....................", +"...................... XXX XXX ......................", +"....................... .......................", +"........................ XXXXXXXXXXXXXXXX ........................", +"....................... XXXXXXXXXXXXXXXXXXXX .......................", +"....................... XXXXXXXXXXXXXXXXXXXXXX .......................", +"....................... XXXXXXXXXXXXXXXXXXXXXX .......................", +"...................... XXXXXXXXXXXXXXXXXXXXXX ......................", +"...................... XXX XXX ......................", +"..................... .....................", +"..................... XXXXXXXXXXXXXXXXXX .....................", +"..................... XXXXXXXXXXXXXXXXXXXXXXXXXX .....................", +".................... XXXXXXXXXXXXXXXXXXXXXXXXXX ....................", +".................... XXXXXXXXXXXXXXXX ....................", +"...................... ......................", +"............................ ............................", +"................................ ................................", +"............................... XXXX ...............................", +"............................. XXXXXX .............................", +"........... XXXXXXXXXX ...........", +"....... XXXXXXXXXXXXXX .......", +"..... XXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXX .....", +".... XXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXX ....", +".... XXXXXXXXXXXXXXXXXXXXXXXX .. XXXXXXXXXXXXXXXXXXXXXXXX ....", +".... XXXXX ...... XXXXX ....", +"..... X ............ X .....", +"...... ................................................ ......", +"....... ...................................................... .......", +"........................................................................", +"........................................................................", +"........................................................................" +}; diff --git a/pixmaps/all33.xpm b/pixmaps/all33.xpm new file mode 100644 index 0000000..fae3a2f --- /dev/null +++ b/pixmaps/all33.xpm @@ -0,0 +1,42 @@ +/* XPM */ +static char *all33[] = { +/* 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 */ +".................................", +".................................", +".................................", +".................................", +".................................", +".............. ..............", +"............. XXXXX .............", +"............ XXXXXXX ............", +".......... XXXXXXXXX ..........", +"........ XXXXXXXXXXXXX ........", +"...... XXXXXXXX XXXXXXXX ......", +".... XXXXXXXXXX XXXXXXXXXX ....", +"... XXXXXXXXXXXX XXXXXXXXXXXX ...", +"... XXXXXXXXXX XXXXXXXXXX ...", +".... XXXXXXXXXX XXXXXXXXXX ....", +"...... XXXXXXXX XXXXXXXX ......", +"........ XXXXXXXXXXXXXXX ........", +"......... XXXXXXXXXXXXX .........", +".......... XXXXXXXXXXX ..........", +"........... ...........", +"........... XXXXXXXXX ...........", +".......... X X ..........", +".......... XXXXXXXXX ..........", +".......... XXXXXXXXXXX ..........", +"........... ...........", +".............. X ..............", +".... XXXXX ....", +"... XXXXXXXXXXXX XXXXXXXXXXXX ...", +"... XXXXXXXXXX . XXXXXXXXXX ...", +".... ..... ....", +".... ....................... ....", +".................................", +"................................." +}; diff --git a/pixmaps/all37.xpm b/pixmaps/all37.xpm new file mode 100644 index 0000000..866f4cc --- /dev/null +++ b/pixmaps/all37.xpm @@ -0,0 +1,46 @@ +/* XPM */ +static char *all37[] = { +/* columns rows colors chars-per-pixel */ +"37 37 3 1", +" c black s dark_piece", +". c gray s light_square", +"X c white s light_piece", +/* pixels */ +".....................................", +".....................................", +".....................................", +".....................................", +".....................................", +"................. .................", +"............... XXX ...............", +"............ XXXXXXX ............", +"......... XXXXXXXXXXXXX .........", +"....... XXXXXXXXXXXXXXXXXXX .......", +"..... XXXXXXXXXXXXXXXXXXXXXXXX .....", +".... XXXXXXXXXXXXXXXXXXXXXXXXXXX ....", +"... XXXXXXXXXXXXXXXXXXXXXXXXXXXXX ...", +"... XXXXXXXXXXXXXX XXXXXXXXXXXXXX ...", +"... XXXXXXXXXXXXXX XXXXXXXXXXXXXX ...", +".... XXXXXXXXXX XXXXXXXXXX ....", +".... XXXXXXXXXXXXX XXXXXXXXXXXXX ....", +"..... XXXXXXXXXXX XXXXXXXXXXX .....", +"....... XXXXXXXXX XXXXXXXXX .......", +"......... XXXXXXXXXXXXXXX .........", +"........... XXXXXXXXXXXXX ...........", +"............ XXXXXXXXXXX ............", +"............ ............", +"............ XXXXXXXXXXX ............", +"............ XXXXXXXXXXX ............", +"............ ............", +"........... XXXXXXXXXXX ...........", +"........... XXXXXXXXXXX ...........", +"............. .............", +"................ X X................", +"........ .... XXXXX .... ........", +".... XX XXXX XXXX XX ....", +"... XXXXXXXXXXXX . XXXXXXXXXXXX ...", +".... X ..... X ....", +".... ......................... ....", +".....................................", +"....................................." +}; diff --git a/pixmaps/all40.xpm b/pixmaps/all40.xpm new file mode 100644 index 0000000..b3cf44b --- /dev/null +++ b/pixmaps/all40.xpm @@ -0,0 +1,49 @@ +/* XPM */ +static char *all40[] = { +/* columns rows colors chars-per-pixel */ +"40 40 3 1", +" c black s dark_piece", +". c gray s light_square", +"X c white s light_piece", +/* pixels */ +"........................................", +"........................................", +"........................................", +"........................................", +"........................................", +"........................................", +".................. .................", +"................ XXXXX ...............", +"............... XXXXXXXXX ..............", +"............. XXXXXXXXXXX ............", +"........... XXXXXXXXXXXXXXX ..........", +"......... XXXXXXXXXXXXXXXXXXX ........", +"....... XXXXXXXXXXX XXXXXXXXXXX ......", +"...... XXXXXXXXXXXXX XXXXXXXXXXXXX .....", +"..... XXXXXXXXXXXXXX XXXXXXXXXXXXXX ....", +"..... XXXXXXXXXXX XXXXXXXXXXX ....", +"...... XXXXXXXXXXXXX XXXXXXXXXXXXX .....", +"....... XXXXXXXXXXXX XXXXXXXXXXXX ......", +"........ XXXXXXXXXX XXXXXXXXXX .......", +".......... XXXXXXXXXXXXXXXXXXX .........", +"........... XXXXXXXXXXXXXXXXX ..........", +"............ XXXXXXXXXXXXXXX ...........", +"............. XX XX ............", +".............. XXXXXXXXX .............", +".............. XXXXXXXXXXX .............", +"............. XXXXXXXXXXXXX ............", +"............. ............", +"............ XXXXXXXXXXXXX ...........", +"............ XXXXXXXXXXX ...........", +"............... ..............", +"................... X ..................", +"................. XXX ................", +"...... XXXXXXX .....", +".... XXXXXXXXXXXXXX XXXXXXXXXXXXXX ...", +"... XXXXXXXXXXXXXX . XXXXXXXXXXXXXX ..", +".... X ..... X ...", +"..... ............................. ....", +"........................................", +"........................................", +"........................................" +}; diff --git a/pixmaps/all45.xpm b/pixmaps/all45.xpm new file mode 100644 index 0000000..53f6395 --- /dev/null +++ b/pixmaps/all45.xpm @@ -0,0 +1,54 @@ +/* XPM */ +static char *all45[] = { +/* 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 */ +".............................................", +".............................................", +".............................................", +".............................................", +".............................................", +".............................................", +".............................................", +".............................................", +".................... ....................", +"................... XXXXX ...................", +"................. XXXXXXX .................", +"............... XXXXXXXXXXX ...............", +"............. XXXXXXXXXXXXXXX .............", +"........... XXXXXXXXXXXXXXXXXXX ...........", +"......... XXXXXXXXXXXXXXXXXXXXXXX .........", +"....... XXXXXXXXXXXXX XXXXXXXXXXXXX .......", +"..... XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX .....", +".... XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXX ....", +".... XXXXXXXXXXXXX XXXXXXXXXXXXX ....", +".... XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXX ....", +"..... XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX .....", +"..... XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX .....", +"...... XXXXXXXXXXXXXX XXXXXXXXXXXXXX ......", +"........ XXXXXXXXXXXXXXXXXXXXXXXXX ........", +".......... XXXXXXXXXXXXXXXXXXXXX ..........", +"............ XXXXXXXXXXXXXXXXX ............", +".............. XXXXXXXXXXXXXXX ..............", +".............. ..............", +"............... XXXXXXXXXXXXX ...............", +"............... XXXXXXXXXXXXX ...............", +".............. XXXXXXXXXXXXXXX ..............", +".............. X X ..............", +".............. XXXXXXXXXXXXX ..............", +"............. XXXXXXXXXXXXXXXXX .............", +"............. XXXXXXXXXXXXX .............", +"................ ................", +".................... X ....................", +".................. XXXXX ..................", +"....... XXXX XXXX .......", +".... XXXXXXXXXXXXX . XXXXXXXXXXXXX ....", +"... XXXXXXXXXXXXXXX ..... XXXXXXXXXXXXXXX ...", +"... XX ....... XX ...", +".... ................................. ....", +".............................................", +"............................................." +}; diff --git a/pixmaps/all49.xpm b/pixmaps/all49.xpm new file mode 100644 index 0000000..5300de0 --- /dev/null +++ b/pixmaps/all49.xpm @@ -0,0 +1,58 @@ +/* XPM */ +static char *all49[] = { +/* columns rows colors chars-per-pixel */ +"49 49 3 1", +" c black s dark_piece", +". c gray s light_square", +"X c white s light_piece", +/* pixels */ +".................................................", +".................................................", +".................................................", +".................................................", +".................................................", +".................................................", +".................................................", +".................................................", +"....................... .......................", +".................... XXX ....................", +"................... XXXXXXXXX ...................", +"................. XXXXXXXXXXX .................", +"................ XXXXXXXXXXXXXXX ................", +".............. XXXXXXXXXXXXXXXXX ..............", +"............ XXXXXXXXXXXXXXXXXXXXX ............", +".......... XXXXXXXXXXXXXXXXXXXXXXXXX ..........", +"........ XXXXXXXXXXXXXX XXXXXXXXXXXXXX ........", +"...... XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX ......", +"..... XXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXX .....", +".... XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX ....", +"..... XXXXXXXXXXXXXX XXXXXXXXXXXXXX .....", +"...... XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXX ......", +"....... XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX .......", +"......... XXXXXXXXXXXXX XXXXXXXXXXXXX .........", +"........... XXXXXXXXXXXX XXXXXXXXXXXX ...........", +"............ XXXXXXXXXXXXXXXXXXXXXXX ............", +"............. XXXXXXXXXXXXXXXXXXXXX .............", +".............. XXXXXXXXXXXXXXXXXXX ..............", +"............... XXXXXXXXXXXXXXXXX ...............", +"................ XX XX ................", +"................ XXXXXXXXXXX ................", +"................ XXXXXXXXXXXXXXX ................", +"................ XXXXXXXXXXXXXXX ................", +"................ XXXXXXXXXXXXXXX ................", +"............... ...............", +"............... XXXXXXXXXXXXXXXXX ...............", +".............. XXXXXXXXXXXXXXXXXXX ..............", +".............. XXXXXXXXXXXXX ..............", +".................. ..................", +"...................... X ......................", +".................... XXXXX ....................", +"........ XXXX XXXX ........", +"..... XXXXXXXXXXXXXX . XXXXXXXXXXXXXX .....", +".... XXXXXXXXXXXXXXX ..... XXXXXXXXXXXXXXX ....", +".... XXX ......... XXX ....", +".... ................................. ....", +".................................................", +".................................................", +"................................................." +}; diff --git a/pixmaps/all54.xpm b/pixmaps/all54.xpm new file mode 100644 index 0000000..4f2c6c4 --- /dev/null +++ b/pixmaps/all54.xpm @@ -0,0 +1,63 @@ +/* XPM */ +static char *all54[] = { +/* 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 */ +"......................................................", +"......................................................", +"......................................................", +"......................................................", +"......................................................", +"......................................................", +"......................................................", +"......................................................", +"......................................................", +"...................... ......................", +".................... ....................", +"................... XXXXXXXXXX ...................", +".................. XXXXXXXXXXXX ..................", +"................. XXXXXXXXXXXXXX .................", +".............. XXXXXXXXXXXXXXXX ..............", +"........... XXXXXXXXXXXXXXXXXXXX ...........", +"......... XXXXXXXXXXXXXXXXXXXXXXXXXX .........", +"........ XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX ........", +"....... XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX .......", +"...... XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXX ......", +"..... XXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXX .....", +"..... XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX .....", +"..... XXXXXXXXXXXXXX XXXXXXXXXXXXXX .....", +"...... XXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXX ......", +"...... XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXX ......", +"....... XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX .......", +"......... XXXXXXXXXXXXX XXXXXXXXXXXXX .........", +"........... XXXXXXXXXXXXXXXXXXXXXXXX ...........", +"............. XXXXXXXXXXXXXXXXXXXX .............", +"............... XXXXXXXXXXXXXXXXXX ...............", +"................ XX XX ................", +"................. .................", +".................. XXXXXXXXXXXX ..................", +".................. XXXXXXXXXXXXXX ..................", +"................. XXXXXXXXXXXXXX .................", +"................. X X .................", +"................ ................", +"................ XXXXXXXXXXXXXX ................", +"................ XXXXXXXXXXXXXXXXXX ................", +"............... XXXXXXXXXXXXXX ...............", +"................ ................", +".................... ....................", +"...................... XX ......................", +"....... XXXXXX .......", +"..... XXXXXXXXXX .....", +"... XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ...", +".... XXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXX ....", +".... XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX ....", +"..... .. .....", +"...... ........ ......", +"....... ...................................... .......", +"......................................................", +"......................................................", +"......................................................" +}; diff --git a/pixmaps/all58.xpm b/pixmaps/all58.xpm new file mode 100644 index 0000000..8f69b46 --- /dev/null +++ b/pixmaps/all58.xpm @@ -0,0 +1,67 @@ +/* XPM */ +static char *all58[] = { +/* columns rows colors chars-per-pixel */ +"58 58 3 1", +" c black s dark_piece", +". c gray s light_square", +"X c white s light_piece", +/* pixels */ +"..........................................................", +"..........................................................", +"..........................................................", +"..........................................................", +"..........................................................", +"..........................................................", +"..........................................................", +"..........................................................", +"..........................................................", +".......................... ..........................", +"....................... .......................", +"..................... XXXXXX .....................", +".................... XXXXXXXXXXXX ....................", +".................. XXXXXXXXXXXXXX ..................", +"................. XXXXXXXXXXXXXXXXXX .................", +"............... XXXXXXXXXXXXXXXXXXXX ...............", +"............. XXXXXXXXXXXXXXXXXXXXXXXX .............", +"........... XXXXXXXXXXXXXXXXXXXXXXXXXXXX ...........", +"......... XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX .........", +"....... XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXX .......", +"...... XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX ......", +"..... XXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXX .....", +"..... XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXX .....", +"..... XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX .....", +"...... XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX ......", +"....... XXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXX .......", +"........ XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX ........", +".......... XXXXXXXXXXXXXX XXXXXXXXXXXXXX ..........", +"............ XXXXXXXXXXXX XXXXXXXXXXXX ............", +".............. XXXXXXXXXXXXXXXXXXXXXX ..............", +"................ XXXXXXXXXXXXXXXXXXXX ................", +"................. XXXXXXXXXXXXXXXXXX .................", +".................. XXXXXXXXXXXXXXXX ..................", +"................... ...................", +"................... ...................", +"................... XXXXXXXXXXXXXXXX ...................", +".................. XXXXXXXXXXXXXXXX ..................", +".................. XXXXXXXXXXXXXXXXXX ..................", +".................. ..................", +"................. .................", +"................. XXXXXXXXXXXXXXXXXX .................", +"................. XXXXXXXXXXXXXX .................", +"................. .................", +"...................... ......................", +".......................... ..........................", +"........................ XX ........................", +"........ XXXXXX ........", +"...... XXXXXXXXXX ......", +".... XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ....", +".... XXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXX ....", +"..... XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX .....", +"..... X XXXXXXX .. XXXXXXX X .....", +"...... ...... ......", +"....... ........ .......... ........ .......", +"..........................................................", +"..........................................................", +"..........................................................", +".........................................................." +}; diff --git a/pixmaps/all64.xpm b/pixmaps/all64.xpm new file mode 100644 index 0000000..92751f7 --- /dev/null +++ b/pixmaps/all64.xpm @@ -0,0 +1,73 @@ +/* XPM */ +static char *all64[] = { +/* columns rows colors chars-per-pixel */ +"64 64 3 1", +" c black s dark_piece", +". c gray s light_square", +"X c white s light_piece", +/* pixels */ +"................................................................", +"................................................................", +"................................................................", +"................................................................", +"................................................................", +"................................................................", +"................................................................", +"................................................................", +"................................................................", +"................................................................", +"................................................................", +"................................................................", +"............................ ............................", +"......................... .........................", +"....................... XXXXXXXX .......................", +"...................... XXXXXXXXXXXX ......................", +"..................... XXXXXXXXXXXXXXXX .....................", +"................... XXXXXXXXXXXXXXXXXX ...................", +"................. XXXXXXXXXXXXXXXXXXXXXX .................", +".............. XXXXXXXXXXXXXXXXXXXXXXXXXX ..............", +"............ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ............", +".......... XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXX ..........", +"........ XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX ........", +"....... XXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXX .......", +"...... XXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXX ......", +"...... XXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXX ......", +"...... XXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXX ......", +"...... XXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXX ......", +"....... XXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXX .......", +"......... XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX .........", +".......... XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXX ..........", +"............ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ............", +".............. XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .............", +"............... XXXXXXXXXXXXXXXXXXXXXXXXXX ...............", +"................. XXXXXXXXXXXXXXXXXXXXXX .................", +"................... XXXXXXXXXXXXXXXXXXXX ...................", +".................... XX XX ....................", +"..................... .....................", +"..................... XXXXXXXXXXXXXX .....................", +"..................... XXXXXXXXXXXXXXXXXX .....................", +"..................... XXXXXXXXXXXXXXXXXX .....................", +".................... XXXXXXXXXXXXXXXXXX ....................", +".................... X X ....................", +".................... ....................", +"................... XXXXXXXXXXXXXXXXXX ...................", +"................... XXXXXXXXXXXXXXXXXXXXXX ...................", +"................... XXXXXXXXXXXXXX ...................", +".................... ....................", +"......................... .........................", +"............................ ............................", +".......................... XXXX ..........................", +"......... XXXXXXXX .........", +"....... XXXXXXXXXXXX .......", +"..... XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .....", +".... XXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXX ....", +"..... XXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXX .....", +"...... XXX XXXXXXXX .. XXXXXXXX XXX ......", +"...... ...... ......", +"....... ........ .......... ........ .......", +"........ .............................................. ........", +"................................................................", +"................................................................", +"................................................................", +"................................................................" +}; diff --git a/pixmaps/all72.xpm b/pixmaps/all72.xpm new file mode 100644 index 0000000..288ddba --- /dev/null +++ b/pixmaps/all72.xpm @@ -0,0 +1,81 @@ +/* XPM */ +static char *all72[] = { +/* columns rows colors chars-per-pixel */ +"72 72 3 1", +" c black s dark_piece", +". c gray s light_square", +"X c white s light_piece", +/* pixels */ +"........................................................................", +"........................................................................", +"........................................................................", +"........................................................................", +"........................................................................", +"........................................................................", +"........................................................................", +"........................................................................", +"........................................................................", +"........................................................................", +"............................... ...............................", +"............................. .............................", +"............................ XXXXXXXX ............................", +"........................... XXXXXXXXXX ...........................", +".......................... XXXXXXXXXXXX ..........................", +"........................ XXXXXXXXXXXXXXXX ........................", +"...................... XXXXXXXXXXXXXXXXXX ......................", +".................... XXXXXXXXXXXXXXXXXXXXXX ....................", +".................. XXXXXXXXXXXXXXXXXXXXXXXXXX ..................", +"................ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ................", +".............. XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ..............", +"............. XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .............", +"........... XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ...........", +"......... XXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXX .........", +"........ XXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXX ........", +"...... XXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXX ......", +"...... XXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXX ......", +"..... XXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXX .....", +"..... XXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXX .....", +"..... XXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXX .....", +"....... XXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX ......", +"....... XXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXX .......", +"......... XXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXX .........", +"............ XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX ...........", +".............. XXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXX .............", +"............... XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXX ...............", +"................ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ................", +"................. XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .................", +".................. XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ..................", +"................... XXXXXXXXXXXXXXXXXXXXXXXXXXXX ...................", +".................... XXXXXXXXXXXXXXXXXXXXXXXXX ....................", +"..................... XXXXXXXXXXXXXXXXXXXXXXXX .....................", +"...................... XXX XXX ......................", +"....................... .......................", +"........................ XXXXXXXXXXXXXXXX ........................", +"....................... XXXXXXXXXXXXXXXXXXXX .......................", +"....................... XXXXXXXXXXXXXXXXXXXXXX .......................", +"....................... XXXXXXXXXXXXXXXXXXXXXX .......................", +"...................... XXXXXXXXXXXXXXXXXXXXXX ......................", +"...................... XXX XXX ......................", +"..................... .....................", +"..................... XXXXXXXXXXXXXXXXXX .....................", +"..................... XXXXXXXXXXXXXXXXXXXXXXXXXX .....................", +".................... XXXXXXXXXXXXXXXXXXXXXXXXXX ....................", +".................... XXXXXXXXXXXXXXXX ....................", +"...................... ......................", +"............................ ............................", +"................................ ................................", +"............................... XXXX ...............................", +"............................. XXXXXX .............................", +"........... XXXXXXXXXX ...........", +"....... XXXXXXXXXXXXXX .......", +"..... XXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXX .....", +".... XXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXX ....", +".... XXXXXXXXXXXXXXXXXXXXXXXX .. XXXXXXXXXXXXXXXXXXXXXXXX ....", +".... XXXXX ...... XXXXX ....", +"..... X ............ X .....", +"...... ................................................ ......", +"....... ...................................................... .......", +"........................................................................", +"........................................................................", +"........................................................................" +}; diff --git a/pixmaps/asdd33.xpm b/pixmaps/asdd33.xpm new file mode 100644 index 0000000..0dd075a --- /dev/null +++ b/pixmaps/asdd33.xpm @@ -0,0 +1,41 @@ +/* XPM */ +static char *asdd33[] = { +/* columns rows colors chars-per-pixel */ +"33 33 2 1", +" c black s dark_piece", +". c green s dark_square", +/* pixels */ +".................................", +".................................", +".................................", +"... ............... ...", +"... ............. ...", +"... ........... . ...", +"... . ......... . ...", +"... . ....... . ...", +"... . ..... . ...", +".... . ... . ....", +"..... . . . .....", +"...... . . . ......", +"....... . . .......", +"........ . . ........", +"......... . . .........", +".......... . . ..........", +"........... . ...........", +".......... . . ..........", +"... ... . . ... ...", +".. . . . . ..", +".. . . . . . ..", +"... . . . . ...", +".... . . . ....", +"...... . ... . ......", +"..... . . ..... . . .....", +".... . ....... . ....", +"... . ..... . ...", +".. . ... . ..", +". .. ... .. .", +". .... ... .... .", +".. ...... ..... ...... ..", +"... ....................... ...", +"................................." +}; diff --git a/pixmaps/asdd45.xpm b/pixmaps/asdd45.xpm new file mode 100644 index 0000000..a7052b5 --- /dev/null +++ b/pixmaps/asdd45.xpm @@ -0,0 +1,53 @@ +/* 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 new file mode 100644 index 0000000..153cba9 --- /dev/null +++ b/pixmaps/asdd49.xpm @@ -0,0 +1,57 @@ +/* XPM */ +static char *asdd49[] = { +/* columns rows colors chars-per-pixel */ +"49 49 2 1", +" c black s dark_piece", +". c green s dark_square", +/* pixels */ +".................................................", +".................................................", +".................................................", +".................................................", +".................................................", +"....... ................... .......", +"....... ................. .......", +"....... ............... .......", +"....... ............. .......", +"....... ........... . .......", +"....... . ......... . .......", +"....... . ....... . .......", +"....... . ..... . .......", +"........ . ... . ........", +"......... . . . .........", +".......... . . . ..........", +"........... . . . ...........", +"............ . . . ............", +"............. . . .............", +".............. . . ..............", +"............... . . ...............", +"................ . . ................", +"................. . .................", +"................ . . ................", +"............... . . ...............", +".............. . . ..... .......", +"...... ..... . . ... ......", +"..... ... . . . . .....", +".... . . . . . .....", +".... . . . . . ......", +"..... . . . . .......", +"...... . ... . .........", +"........ . ..... . ..........", +"......... . ....... . . .........", +"........ . . ......... . . ........", +"....... . . ........... . .......", +"...... . ........... . ......", +"..... . ......... . .....", +".... . ....... ... ....", +"... ... ...... .... ....", +"... .... ....... ...... ....", +"... ...... ......... ........ .....", +".... ........ ..................... ......", +"..... .........................................", +".................................................", +".................................................", +".................................................", +".................................................", +"................................................." +}; diff --git a/pixmaps/asdd72.xpm b/pixmaps/asdd72.xpm new file mode 100644 index 0000000..313020b --- /dev/null +++ b/pixmaps/asdd72.xpm @@ -0,0 +1,80 @@ +/* XPM */ +static char *asdd72[] = { +/* columns rows colors chars-per-pixel */ +"72 72 2 1", +" c black s dark_piece", +". c green s dark_square", +/* pixels */ +"........................................................................", +"........................................................................", +"........................................................................", +"........................................................................", +"........................................................................", +"........................................................................", +"........................................................................", +"........ ...................................................", +"........ ............................ .........", +"........ .......................... .........", +"........ ........................ .........", +"........ ...................... .........", +"........ .................... .........", +"........ . .................. .........", +"........ .. ................ . .........", +"........ .. .............. .. .........", +"........ .. ............ .. .........", +"........ .. .......... .. .........", +"........ .. ........ .. .........", +"........ .. ...... .. .........", +"........ .. .... .. .........", +"......... .. .. .. .........", +".......... .. .. ..........", +"........... .. .. .. ...........", +"............ .. .. .. ............", +"............. .. .. .. .............", +".............. .. .. .. ..............", +"............... .. .. ...............", +"................ .. .. ................", +"................. .. .. .................", +".................. .. .. ..................", +"................... .. .. ...................", +".................... .. .. ....................", +"..................... .. .. .....................", +"...................... .. ......................", +"....................... .. .......................", +"...................... .. ......................", +"........ .......... .. .. .......... ........", +"....... ........ .. .. ........ .......", +"...... ...... .. .. ...... ......", +"..... .... .. .. .... .....", +".... .. .. .. .. ....", +".... .. .. .. .. ....", +".... .. .. .. .. ....", +".... .. . .. .. .. ....", +"..... .. .. .. .. .. .....", +"...... .. . .. . .. ......", +"....... .. . .. .......", +"........ .. .. ........", +"......... .. .. .. .........", +"............ .. .... .. ............", +"............. .. ...... .. .............", +"............ . .. ........ .. . ............", +"........... . .. .......... .. . ...........", +".......... . ................ . ..........", +"......... . .............. . .........", +"........ . ............ . ........", +"....... . .......... . .......", +"...... . ........ . ......", +"..... .. ...... .. .....", +".... .... .... .... ....", +"... ..... .... ..... ...", +"... ...... .... ...... ...", +"... ........ ...... ........ ...", +".... .......... ........ .......... ....", +"..... ............ .......... ............ .....", +"...... .............. ............ .............. ......", +"....... .................................................. .......", +"........................................................................", +"........................................................................", +"........................................................................", +"........................................................................" +}; diff --git a/pixmaps/asdl33.xpm b/pixmaps/asdl33.xpm new file mode 100644 index 0000000..898af2b --- /dev/null +++ b/pixmaps/asdl33.xpm @@ -0,0 +1,41 @@ +/* XPM */ +static char *asdl33[] = { +/* columns rows colors chars-per-pixel */ +"33 33 2 1", +" c black s dark_piece", +". c gray s light_square", +/* pixels */ +".................................", +".................................", +".................................", +"... ............... ...", +"... ............. ...", +"... ........... . ...", +"... . ......... . ...", +"... . ....... . ...", +"... . ..... . ...", +".... . ... . ....", +"..... . . . .....", +"...... . . . ......", +"....... . . .......", +"........ . . ........", +"......... . . .........", +".......... . . ..........", +"........... . ...........", +".......... . . ..........", +"... ... . . ... ...", +".. . . . . ..", +".. . . . . . ..", +"... . . . . ...", +".... . . . ....", +"...... . ... . ......", +"..... . . ..... . . .....", +".... . ....... . ....", +"... . ..... . ...", +".. . ... . ..", +". .. ... .. .", +". .... ... .... .", +".. ...... ..... ...... ..", +"... ....................... ...", +"................................." +}; diff --git a/pixmaps/asdl45.xpm b/pixmaps/asdl45.xpm new file mode 100644 index 0000000..fc81752 --- /dev/null +++ b/pixmaps/asdl45.xpm @@ -0,0 +1,53 @@ +/* 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 new file mode 100644 index 0000000..a61f0bb --- /dev/null +++ b/pixmaps/asdl49.xpm @@ -0,0 +1,57 @@ +/* XPM */ +static char *asdl49[] = { +/* columns rows colors chars-per-pixel */ +"49 49 2 1", +" c black s dark_piece", +". c gray s light_square", +/* pixels */ +".................................................", +".................................................", +".................................................", +".................................................", +".................................................", +"....... ................... .......", +"....... ................. .......", +"....... ............... .......", +"....... ............. .......", +"....... ........... . .......", +"....... . ......... . .......", +"....... . ....... . .......", +"....... . ..... . .......", +"........ . ... . ........", +"......... . . . .........", +".......... . . . ..........", +"........... . . . ...........", +"............ . . . ............", +"............. . . .............", +".............. . . ..............", +"............... . . ...............", +"................ . . ................", +"................. . .................", +"................ . . ................", +"............... . . ...............", +".............. . . ..... .......", +"...... ..... . . ... ......", +"..... ... . . . . .....", +".... . . . . . .....", +".... . . . . . ......", +"..... . . . . .......", +"...... . ... . .........", +"........ . ..... . ..........", +"......... . ....... . . .........", +"........ . . ......... . . ........", +"....... . . ........... . .......", +"...... . ........... . ......", +"..... . ......... . .....", +".... . ....... ... ....", +"... ... ...... .... ....", +"... .... ....... ...... ....", +"... ...... ......... ........ .....", +".... ........ ..................... ......", +"..... .........................................", +".................................................", +".................................................", +".................................................", +".................................................", +"................................................." +}; diff --git a/pixmaps/asdl72.xpm b/pixmaps/asdl72.xpm new file mode 100644 index 0000000..7f987f2 --- /dev/null +++ b/pixmaps/asdl72.xpm @@ -0,0 +1,80 @@ +/* XPM */ +static char *asdl72[] = { +/* columns rows colors chars-per-pixel */ +"72 72 2 1", +" c black s dark_piece", +". c gray s light_square", +/* pixels */ +"........................................................................", +"........................................................................", +"........................................................................", +"........................................................................", +"........................................................................", +"........................................................................", +"........................................................................", +"........ ...................................................", +"........ ............................ .........", +"........ .......................... .........", +"........ ........................ .........", +"........ ...................... .........", +"........ .................... .........", +"........ . .................. .........", +"........ .. ................ . .........", +"........ .. .............. .. .........", +"........ .. ............ .. .........", +"........ .. .......... .. .........", +"........ .. ........ .. .........", +"........ .. ...... .. .........", +"........ .. .... .. .........", +"......... .. .. .. .........", +".......... .. .. ..........", +"........... .. .. .. ...........", +"............ .. .. .. ............", +"............. .. .. .. .............", +".............. .. .. .. ..............", +"............... .. .. ...............", +"................ .. .. ................", +"................. .. .. .................", +".................. .. .. ..................", +"................... .. .. ...................", +".................... .. .. ....................", +"..................... .. .. .....................", +"...................... .. ......................", +"....................... .. .......................", +"...................... .. ......................", +"........ .......... .. .. .......... ........", +"....... ........ .. .. ........ .......", +"...... ...... .. .. ...... ......", +"..... .... .. .. .... .....", +".... .. .. .. .. ....", +".... .. .. .. .. ....", +".... .. .. .. .. ....", +".... .. . .. .. .. ....", +"..... .. .. .. .. .. .....", +"...... .. . .. . .. ......", +"....... .. . .. .......", +"........ .. .. ........", +"......... .. .. .. .........", +"............ .. .... .. ............", +"............. .. ...... .. .............", +"............ . .. ........ .. . ............", +"........... . .. .......... .. . ...........", +".......... . ................ . ..........", +"......... . .............. . .........", +"........ . ............ . ........", +"....... . .......... . .......", +"...... . ........ . ......", +"..... .. ...... .. .....", +".... .... .... .... ....", +"... ..... .... ..... ...", +"... ...... .... ...... ...", +"... ........ ...... ........ ...", +".... .......... ........ .......... ....", +"..... ............ .......... ............ .....", +"...... .............. ............ .............. ......", +"....... .................................................. .......", +"........................................................................", +"........................................................................", +"........................................................................", +"........................................................................" +}; diff --git a/pixmaps/asld33.xpm b/pixmaps/asld33.xpm new file mode 100644 index 0000000..23936aa --- /dev/null +++ b/pixmaps/asld33.xpm @@ -0,0 +1,42 @@ +/* XPM */ +static char *asld33[] = { +/* 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 */ +".................................", +".................................", +".................................", +"... ............... ...", +"... XXXXX ............. XXXXX ...", +"... XXXXXX ........... XXXXXX ...", +"... XX XXXX ......... XXXX XX ...", +"... XXX XXXX ....... XXXX XXX ...", +"... XXXX XXXX ..... XXXX XXXX ...", +".... XXXX XXXX ... XXXX XXXX ....", +"..... XXXX XXXX . XXXX XXXX .....", +"...... XXXX XXXX XXXX XXXX ......", +"....... XXXX XXXX XX XXXX .......", +"........ XXXX XXXX XXXXX ........", +"......... XXXX XXXX XXX .........", +".......... XXXX XXXX X ..........", +"........... XXXX XXXX ...........", +".......... X XXXX XXXX ..........", +"... ... XXX XXXX XXXX ... ...", +".. XXX . XXXXX XXXX XXXX . XXX ..", +".. XXXX XXXX XX XXXX XXXX XXXX ..", +"... XXXX XX XXXX XXXX XX XXXX ...", +".... XXX XXXXX . XXXXX XXX ....", +"...... XXX XXX ... XXX XXX ......", +"..... X XXX X ..... X XXX X .....", +".... XXX XXX ....... XXX XXX ....", +"... XXXXX XXX ..... XXX XXXXX ...", +".. XXXXX . XXX ... XXX . XXXXX ..", +". XXXXX .. XXX ... XXX .. XXXXX .", +". XXXX .... XX ... XX .... XXXX .", +".. XX ...... ..... ...... XX ..", +"... ....................... ...", +"................................." +}; diff --git a/pixmaps/asld45.xpm b/pixmaps/asld45.xpm new file mode 100644 index 0000000..3b019cb --- /dev/null +++ b/pixmaps/asld45.xpm @@ -0,0 +1,54 @@ +/* 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/asld49.xpm b/pixmaps/asld49.xpm new file mode 100644 index 0000000..85b9e52 --- /dev/null +++ b/pixmaps/asld49.xpm @@ -0,0 +1,58 @@ +/* XPM */ +static char *asld49[] = { +/* columns rows colors chars-per-pixel */ +"49 49 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 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 ..... .......", +"...... ..... XXXXXXX XXXXXX XXXXXX ... XX ......", +"..... XX ... XXXXXX XX XXXXXX XXXXXX . XXXX .....", +".... XXXX . XXXXXX XXXX XXXXXX XXXXXX XXXXX .....", +".... XXXXX XXXXXX XXXXXX XXXXXX XXXX XXXXX ......", +"..... XXXXX XXXX XXXXXX . XXXXXX XX XXXX .......", +"...... XXXX XX XXXXXX ... XXXXXXX XXXX .........", +"........ XXXX XXXXXXX ..... XXXXX XXXX ..........", +"......... XXXX XXXXX ....... XXX XXXX X .........", +"........ X XXXX XXX ......... X XXXX XXX ........", +"....... XXX XXXX X ........... XXXX XXXXX .......", +"...... XXXXX XXXX ........... XXXX XXXXXXX ......", +"..... XXXXXXX XXXX ......... XXXX . XXXXXXX .....", +".... XXXXXXX . XXXX ....... XXXX ... XXXXXXX ....", +"... XXXXXXX ... XXXX ...... XXXX .... XXXXXX ....", +"... XXXXXX .... XXXX ....... XX ...... XXXXX ....", +"... XXXXX ...... XX ......... ........ XXX .....", +".... XXX ........ ..................... ......", +"..... .........................................", +".................................................", +".................................................", +".................................................", +".................................................", +"................................................." +}; diff --git a/pixmaps/asld72.xpm b/pixmaps/asld72.xpm new file mode 100644 index 0000000..c47054f --- /dev/null +++ b/pixmaps/asld72.xpm @@ -0,0 +1,81 @@ +/* XPM */ +static char *asld72[] = { +/* columns rows colors chars-per-pixel */ +"72 72 3 1", +" c black s dark_piece", +". c green s dark_square", +"X c white s light_piece", +/* pixels */ +"........ ...............................................................", +"........................................................................", +"........................................................................", +"........................................................................", +"........................................................................", +"........................................................................", +"........................................................................", +"........ ..................................................", +"........ .......................... .........", +"........ XXXXXXXXXXX ........................ .........", +"........ XXXXXXXXXXXX ...................... XXXXXXXXXXXX .........", +"........ XXXXXXXXXXXXX .................... XXXXXXXXXXXXX .........", +"........ XXXXXXXXXXXXXX .................. XXXXXXXXXXXXXX .........", +"........ XXXXXXXXXXXXXXX ................ XXXXXXXXXXXXXXX .........", +"........ XXXXXXXXXXXXXXXX .............. XXXXXXXXXXXXXXXX .........", +"........ XXXXXX XXXXXXXXXX ............ XXXXXXXXXX XXXXX .........", +"........ XXXXXX XXXXXXXXXX .......... XXXXXXXXXX XXXXXX .........", +"........ XXXXXXX XXXXXXXXXX ........ XXXXXXXXXX XXXXXXX .........", +"........ XXXXXXXX XXXXXXXXXX ...... XXXXXXXXXX XXXXXXXX .........", +"........ XXXXXXXXX XXXXXXXXXX .... XXXXXXXXXX XXXXXXXXX .........", +"........ XXXXXXXXXX XXXXXXXXXX .. XXXXXXXXXX XXXXXXXXXX .........", +"......... XXXXXXXXXX XXXXXXXXXX XXXXXXXXXX XXXXXXXXXX .........", +".......... XXXXXXXXXX XXXXXXXXXX XXXXXXXXXX XXXXXXXXXX ..........", +"........... XXXXXXXXXX XXXXXXXXXX XXXXXXXX XXXXXXXXXX ...........", +"............ XXXXXXXXXX XXXXXXXXXX XXXXXX XXXXXXXXXX ............", +"............. XXXXXXXXXX XXXXXXXXXX XXXX XXXXXXXXXX .............", +".............. XXXXXXXXXX XXXXXXXXXX XX XXXXXXXXXX ..............", +"............... XXXXXXXXXX XXXXXXXXXX X XXXXXXXXXX ...............", +"................ XXXXXXXXXX XXXXXXXXXX XXXXXXXXXX ................", +"................. XXXXXXXXXX XXXXXXXXXX XXXXXXXX .................", +".................. XXXXXXXXXX XXXXXXXXXX XXXXXX ..................", +"................... XXXXXXXXXX XXXXXXXXXX XXXX ...................", +".................... XXXXXXXXXX XXXXXXXXXX XX ....................", +"..................... XXXXXXXXXX XXXXXXXXXX .....................", +"...................... XXXXXXXXXX XXXXXXXXXX ......................", +"...................... XXXXXXXXXX XXXXXXXXXX ......................", +"..................... X XXXXXXXXXX XXXXXXXXXX .....................", +"........ ......... XXX XXXXXXXXXX XXXXXXXXXX ......... ........", +"....... ....... XXXXX XXXXXXXXXX XXXXXXXXXX ....... .......", +"...... XX ..... XXXXXXX XXXXXXXXXX XXXXXXXXXX ..... XX ......", +"..... XXXX ... XXXXXXXXX XXXXXXXXXX XXXXXXXXXX ... XXXX .....", +".... XXXXXX . XXXXXXXXXXX XXXXXXXXXX XXXXXXXXXX . XXXXXX ....", +".... XXXXXXXX XXXXXXXXXX X XXXXXXXXXX XXXXXXXXXX XXXXXXXX ....", +".... XXXXXXXXX XXXXXXXXX XXX XXXXXXXXXX XXXXXXXXXX XXXXXXXXX ....", +".... XXXXXXXXX XXXXXXX XXXXX XXXXXXXXXX XXXXXXXX XXXXXXXXX ....", +"..... XXXXXXXXX XXXXX XXXXXXX XXXXXXXXXX XXXXXX XXXXXXXXX .....", +"...... XXXXXXXXX XXX XXXXXXXXX XXXXXXXXXX XXXX XXXXXXXXX ......", +"....... XXXXXXXXX XXXXXXXXXXXXX XXXXXXXXXX XXX XXXXXXXXX .......", +"........ XXXXXXX XXXXXXXXXXX XXXXXXXXXXXX XXXXXXX ........", +"......... XXXXXXX XXXXXXXXX .. XXXXXXXXXX XXXXXXX .........", +"............ XXXXXXX XXXXXXX .... XXXXXXXX XXXXXXX ............", +"............. XXXXXXX XXXXX ...... XXXXXX XXXXXXX .............", +"............ XXXXXXX XXX ........ XXXX XXXXXXX ............", +"........... XX XXXXXXX X .......... XX XXXXXXX X ...........", +".......... XXXX XXXXXXX ............ XXXXXXX XXX ..........", +"......... XXXXXX XXXXXXX .............. XXXXXXX XXXXX .........", +"........ XXXXXXXX XXXXXXX ............ XXXXXXX XXXXXXX ........", +"....... XXXXXXXXX XXXXXXX .......... XXXXXXX XXXXXXXXX .......", +"...... XXXXXXXXX XXXXXXX ........ XXXXXXX XXXXXXXXX ......", +"..... XXXXXXXXX .. XXXXXXX ...... XXXXXXX .. XXXXXXXXX .....", +".... XXXXXXXXX .... XXXXXXX .... XXXXXXXX .... XXXXXXXXX ....", +"... XXXXXXXXX ..... XXXXXXXX .... XXXXXXXXX ..... XXXXXXXXX ...", +"... XXXXXXXX ...... XXXXXXX .... XXXXXXX ...... XXXXXXXXX ...", +"... XXXXXXX ........ XXXXX ...... XXXXX ........ XXXXXXX ...", +".... XXXXX .......... XXX ........ XXX .......... XXXXX ....", +"..... XXX ............ X .......... X ............ XXX .....", +"...... X .............. ............ .............. X ......", +"....... .................................................. .......", +"........................................................................", +"........................................................................", +"........................................................................", +"........................................................................" +}; diff --git a/pixmaps/asll33.xpm b/pixmaps/asll33.xpm new file mode 100644 index 0000000..90d4a94 --- /dev/null +++ b/pixmaps/asll33.xpm @@ -0,0 +1,42 @@ +/* XPM */ +static char *asll33[] = { +/* 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 */ +".................................", +".................................", +".................................", +"... ............... ...", +"... XXXXX ............. XXXXX ...", +"... XXXXXX ........... XXXXXX ...", +"... XX XXXX ......... XXXX XX ...", +"... XXX XXXX ....... XXXX XXX ...", +"... XXXX XXXX ..... XXXX XXXX ...", +".... XXXX XXXX ... XXXX XXXX ....", +"..... XXXX XXXX . XXXX XXXX .....", +"...... XXXX XXXX XXXX XXXX ......", +"....... XXXX XXXX XX XXXX .......", +"........ XXXX XXXX XXXXX ........", +"......... XXXX XXXX XXX .........", +".......... XXXX XXXX X ..........", +"........... XXXX XXXX ...........", +".......... X XXXX XXXX ..........", +"... ... XXX XXXX XXXX ... ...", +".. XXX . XXXXX XXXX XXXX . XXX ..", +".. XXXX XXXX XX XXXX XXXX XXXX ..", +"... XXXX XX XXXX XXXX XX XXXX ...", +".... XXX XXXXX . XXXXX XXX ....", +"...... XXX XXX ... XXX XXX ......", +"..... X XXX X ..... X XXX X .....", +".... XXX XXX ....... XXX XXX ....", +"... XXXXX XXX ..... XXX XXXXX ...", +".. XXXXX . XXX ... XXX . XXXXX ..", +". XXXXX .. XXX ... XXX .. XXXXX .", +". XXXX .... XX ... XX .... XXXX .", +".. XX ...... ..... ...... XX ..", +"... ....................... ...", +"................................." +}; diff --git a/pixmaps/asll45.xpm b/pixmaps/asll45.xpm new file mode 100644 index 0000000..85201b4 --- /dev/null +++ b/pixmaps/asll45.xpm @@ -0,0 +1,54 @@ +/* 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/asll49.xpm b/pixmaps/asll49.xpm new file mode 100644 index 0000000..dae6af5 --- /dev/null +++ b/pixmaps/asll49.xpm @@ -0,0 +1,58 @@ +/* XPM */ +static char *asll49[] = { +/* columns rows colors chars-per-pixel */ +"49 49 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 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 ..... .......", +"...... ..... XXXXXXX XXXXXX XXXXXX ... XX ......", +"..... XX ... XXXXXX XX XXXXXX XXXXXX . XXXX .....", +".... XXXX . XXXXXX XXXX XXXXXX XXXXXX XXXXX .....", +".... XXXXX XXXXXX XXXXXX XXXXXX XXXX XXXXX ......", +"..... XXXXX XXXX XXXXXX . XXXXXX XX XXXX .......", +"...... XXXX XX XXXXXX ... XXXXXXX XXXX .........", +"........ XXXX XXXXXXX ..... XXXXX XXXX ..........", +"......... XXXX XXXXX ....... XXX XXXX X .........", +"........ X XXXX XXX ......... X XXXX XXX ........", +"....... XXX XXXX X ........... XXXX XXXXX .......", +"...... XXXXX XXXX ........... XXXX XXXXXXX ......", +"..... XXXXXXX XXXX ......... XXXX . XXXXXXX .....", +".... XXXXXXX . XXXX ....... XXXX ... XXXXXXX ....", +"... XXXXXXX ... XXXX ...... XXXX .... XXXXXX ....", +"... XXXXXX .... XXXX ....... XX ...... XXXXX ....", +"... XXXXX ...... XX ......... ........ XXX .....", +".... XXX ........ ..................... ......", +"..... .........................................", +".................................................", +".................................................", +".................................................", +".................................................", +"................................................." +}; diff --git a/pixmaps/asll72.xpm b/pixmaps/asll72.xpm new file mode 100644 index 0000000..7b1bbc0 --- /dev/null +++ b/pixmaps/asll72.xpm @@ -0,0 +1,81 @@ +/* XPM */ +static char *asll72[] = { +/* columns rows colors chars-per-pixel */ +"72 72 3 1", +" c black s dark_piece", +". c gray s light_square", +"X c white s light_piece", +/* pixels */ +"........ ...............................................................", +"........................................................................", +"........................................................................", +"........................................................................", +"........................................................................", +"........................................................................", +"........................................................................", +"........ ..................................................", +"........ .......................... .........", +"........ XXXXXXXXXXX ........................ .........", +"........ XXXXXXXXXXXX ...................... XXXXXXXXXXXX .........", +"........ XXXXXXXXXXXXX .................... XXXXXXXXXXXXX .........", +"........ XXXXXXXXXXXXXX .................. XXXXXXXXXXXXXX .........", +"........ XXXXXXXXXXXXXXX ................ XXXXXXXXXXXXXXX .........", +"........ XXXXXXXXXXXXXXXX .............. XXXXXXXXXXXXXXXX .........", +"........ XXXXXX XXXXXXXXXX ............ XXXXXXXXXX XXXXX .........", +"........ XXXXXX XXXXXXXXXX .......... XXXXXXXXXX XXXXXX .........", +"........ XXXXXXX XXXXXXXXXX ........ XXXXXXXXXX XXXXXXX .........", +"........ XXXXXXXX XXXXXXXXXX ...... XXXXXXXXXX XXXXXXXX .........", +"........ XXXXXXXXX XXXXXXXXXX .... XXXXXXXXXX XXXXXXXXX .........", +"........ XXXXXXXXXX XXXXXXXXXX .. XXXXXXXXXX XXXXXXXXXX .........", +"......... XXXXXXXXXX XXXXXXXXXX XXXXXXXXXX XXXXXXXXXX .........", +".......... XXXXXXXXXX XXXXXXXXXX XXXXXXXXXX XXXXXXXXXX ..........", +"........... XXXXXXXXXX XXXXXXXXXX XXXXXXXX XXXXXXXXXX ...........", +"............ XXXXXXXXXX XXXXXXXXXX XXXXXX XXXXXXXXXX ............", +"............. XXXXXXXXXX XXXXXXXXXX XXXX XXXXXXXXXX .............", +".............. XXXXXXXXXX XXXXXXXXXX XX XXXXXXXXXX ..............", +"............... XXXXXXXXXX XXXXXXXXXX X XXXXXXXXXX ...............", +"................ XXXXXXXXXX XXXXXXXXXX XXXXXXXXXX ................", +"................. XXXXXXXXXX XXXXXXXXXX XXXXXXXX .................", +".................. XXXXXXXXXX XXXXXXXXXX XXXXXX ..................", +"................... XXXXXXXXXX XXXXXXXXXX XXXX ...................", +".................... XXXXXXXXXX XXXXXXXXXX XX ....................", +"..................... XXXXXXXXXX XXXXXXXXXX .....................", +"...................... XXXXXXXXXX XXXXXXXXXX ......................", +"...................... XXXXXXXXXX XXXXXXXXXX ......................", +"..................... X XXXXXXXXXX XXXXXXXXXX .....................", +"........ ......... XXX XXXXXXXXXX XXXXXXXXXX ......... ........", +"....... ....... XXXXX XXXXXXXXXX XXXXXXXXXX ....... .......", +"...... XX ..... XXXXXXX XXXXXXXXXX XXXXXXXXXX ..... XX ......", +"..... XXXX ... XXXXXXXXX XXXXXXXXXX XXXXXXXXXX ... XXXX .....", +".... XXXXXX . XXXXXXXXXXX XXXXXXXXXX XXXXXXXXXX . XXXXXX ....", +".... XXXXXXXX XXXXXXXXXX X XXXXXXXXXX XXXXXXXXXX XXXXXXXX ....", +".... XXXXXXXXX XXXXXXXXX XXX XXXXXXXXXX XXXXXXXXXX XXXXXXXXX ....", +".... XXXXXXXXX XXXXXXX XXXXX XXXXXXXXXX XXXXXXXX XXXXXXXXX ....", +"..... XXXXXXXXX XXXXX XXXXXXX XXXXXXXXXX XXXXXX XXXXXXXXX .....", +"...... XXXXXXXXX XXX XXXXXXXXX XXXXXXXXXX XXXX XXXXXXXXX ......", +"....... XXXXXXXXX XXXXXXXXXXXXX XXXXXXXXXX XXX XXXXXXXXX .......", +"........ XXXXXXX XXXXXXXXXXX XXXXXXXXXXXX XXXXXXX ........", +"......... XXXXXXX XXXXXXXXX .. XXXXXXXXXX XXXXXXX .........", +"............ XXXXXXX XXXXXXX .... XXXXXXXX XXXXXXX ............", +"............. XXXXXXX XXXXX ...... XXXXXX XXXXXXX .............", +"............ XXXXXXX XXX ........ XXXX XXXXXXX ............", +"........... XX XXXXXXX X .......... XX XXXXXXX X ...........", +".......... XXXX XXXXXXX ............ XXXXXXX XXX ..........", +"......... XXXXXX XXXXXXX .............. XXXXXXX XXXXX .........", +"........ XXXXXXXX XXXXXXX ............ XXXXXXX XXXXXXX ........", +"....... XXXXXXXXX XXXXXXX .......... XXXXXXX XXXXXXXXX .......", +"...... XXXXXXXXX XXXXXXX ........ XXXXXXX XXXXXXXXX ......", +"..... XXXXXXXXX .. XXXXXXX ...... XXXXXXX .. XXXXXXXXX .....", +".... XXXXXXXXX .... XXXXXXX .... XXXXXXXX .... XXXXXXXXX ....", +"... XXXXXXXXX ..... XXXXXXXX .... XXXXXXXXX ..... XXXXXXXXX ...", +"... XXXXXXXX ...... XXXXXXX .... XXXXXXX ...... XXXXXXXXX ...", +"... XXXXXXX ........ XXXXX ...... XXXXX ........ XXXXXXX ...", +".... XXXXX .......... XXX ........ XXX .......... XXXXX ....", +"..... XXX ............ X .......... X ............ XXX .....", +"...... X .............. ............ .............. X ......", +"....... .................................................. .......", +"........................................................................", +"........................................................................", +"........................................................................", +"........................................................................" +}; diff --git a/pixmaps/cdd33.xpm b/pixmaps/cdd33.xpm new file mode 100644 index 0000000..3847077 --- /dev/null +++ b/pixmaps/cdd33.xpm @@ -0,0 +1,41 @@ +/* XPM */ +static char *cdd33[] = { +/* columns rows colors chars-per-pixel */ +"33 33 2 1", +" c black s dark_piece", +". c green s dark_square", +/* pixels */ +".................................", +".................................", +"............... ................", +".............. .. ...............", +".............. .. ...............", +"............... ................", +".............. ...............", +"............. ..............", +".... ...... ...... .....", +"... .. .. ....", +"... .. .... .. ....", +".... .. .. .....", +"...... . . .......", +"...... . . .......", +"....... . . ........", +"....... . . ........", +"........ . . .........", +"....... . . ........", +"....... . . ........", +"...... . . .......", +"...... . . .......", +".... .. .. .....", +"... .. .... .. ....", +"... .. .. ....", +".... ...... ...... .....", +"............. ..............", +".............. ...............", +"............... ................", +".............. .. ...............", +".............. .. ...............", +"............... ................", +".................................", +"................................." +}; diff --git a/pixmaps/cdd37.xpm b/pixmaps/cdd37.xpm new file mode 100644 index 0000000..61297c7 --- /dev/null +++ b/pixmaps/cdd37.xpm @@ -0,0 +1,45 @@ +/* XPM */ +static char *cdd37[] = { +/* columns rows colors chars-per-pixel */ +"37 37 2 1", +" c black s dark_piece", +". c green s dark_square", +/* pixels */ +".....................................", +"................. .................", +"................ ... ................", +"................ ... ................", +"................ ... ................", +"................. .................", +"................ ................", +"............... ...............", +"... ......... ......... ...", +".. ... ....... ....... ... ..", +".. ... ... ..", +".. ... ..... ... ..", +"... .. .. ...", +"...... . . ......", +"....... . . .......", +"....... . . .......", +"........ . . ........", +"........ . . ........", +"......... . . .........", +"........ . . ........", +"........ . . ........", +"....... . . .......", +"....... . . .......", +"...... . . ......", +"... .. .. ...", +".. ... ..... ... ..", +".. ... ... ..", +".. ... ....... ....... ... ..", +"... ......... ......... ...", +"............... ...............", +"................ ................", +"................. .................", +"................ ... ................", +"................ ... ................", +"................ ... ................", +"................. .................", +"....................................." +}; diff --git a/pixmaps/cdd40.xpm b/pixmaps/cdd40.xpm new file mode 100644 index 0000000..1728fc0 --- /dev/null +++ b/pixmaps/cdd40.xpm @@ -0,0 +1,48 @@ +/* XPM */ +static char *cdd40[] = { +/* columns rows colors chars-per-pixel */ +"40 40 2 1", +" c black s dark_piece", +". c green s dark_square", +/* pixels */ +"........................................", +"................... ..................", +".................. ... .................", +".................. ... .................", +".................. ... .................", +"................... ..................", +"................... ..................", +".................. .................", +".................. .................", +"..... ......... ........ .....", +".... ... ... ....", +".... ... ... ....", +".... ... ...... ... ....", +"..... . . .....", +"........ . . .......", +"......... . . ........", +"......... . . ........", +".......... . . .........", +"........... . . ..........", +"........... . . ...........", +".......... . . ...........", +"......... . . ..........", +"........ . . .........", +"........ . . .........", +"....... . . ........", +"..... ...... .....", +".... ... ... ....", +".... ... ... ....", +".... ... ........ ...... ... ....", +"..... ......... ........ .....", +".................. .................", +".................. .................", +"................... ..................", +"................... ..................", +".................. ... .................", +".................. ... .................", +".................. ... .................", +"................... ..................", +"........................................", +"........................................" +}; diff --git a/pixmaps/cdd45.xpm b/pixmaps/cdd45.xpm new file mode 100644 index 0000000..19399d5 --- /dev/null +++ b/pixmaps/cdd45.xpm @@ -0,0 +1,53 @@ +/* XPM */ +static char *cdd45[] = { +/* 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/cdd49.xpm b/pixmaps/cdd49.xpm new file mode 100644 index 0000000..f988e1c --- /dev/null +++ b/pixmaps/cdd49.xpm @@ -0,0 +1,57 @@ +/* XPM */ +static char *cdd49[] = { +/* columns rows colors chars-per-pixel */ +"49 49 2 1", +" c black s dark_piece", +". c green s dark_square", +/* pixels */ +".................................................", +".................................................", +"....................... .......................", +"...................... ... ......................", +"...................... ... ......................", +"...................... ... ......................", +"....................... .......................", +"...................... ......................", +"..................... .....................", +"..................... .....................", +".................... ....................", +".................... ....................", +"...... .......... ......... .......", +"..... ... ... ......", +"..... ... ... ......", +"..... ... .... ... ......", +"...... ... ... .......", +"......... . . ..........", +".......... . . ...........", +".......... . . ...........", +"........... . . ............", +"........... . . .............", +"............ . . .............", +"............ . . ..............", +"............. . . ..............", +"............. . . .............", +"............ . . .............", +"............ . . ............", +"........... . . ...........", +".......... . . ...........", +".......... . . ..........", +"......... ... ... ..........", +"...... .... .......", +"..... ... ... ......", +"..... ... ... ......", +"..... ... ......... ........ ... ......", +"...... ........... .......... .......", +".................... ....................", +"..................... .....................", +"..................... .....................", +"...................... ......................", +"....................... .......................", +"...................... ... ......................", +"...................... ... ......................", +"...................... ... ......................", +"....................... .......................", +".................................................", +".................................................", +"................................................." +}; diff --git a/pixmaps/cdd54.xpm b/pixmaps/cdd54.xpm new file mode 100644 index 0000000..815bcef --- /dev/null +++ b/pixmaps/cdd54.xpm @@ -0,0 +1,62 @@ +/* XPM */ +static char *cdd54[] = { +/* 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/cdd58.xpm b/pixmaps/cdd58.xpm new file mode 100644 index 0000000..f0c3e3a --- /dev/null +++ b/pixmaps/cdd58.xpm @@ -0,0 +1,66 @@ +/* XPM */ +static char *cdd58[] = { +/* columns rows colors chars-per-pixel */ +"58 58 2 1", +" c black s dark_piece", +". c green s dark_square", +/* pixels */ +"..........................................................", +".......................... ...........................", +"......................... ..........................", +"......................... ... ..........................", +"......................... ... ..........................", +"......................... ... ..........................", +"......................... ..........................", +".......................... ...........................", +"......................... ..........................", +"........................ .........................", +"........................ .........................", +"....................... ........................", +"....................... ........................", +".... ............. ............. .....", +"... ............ ............ ....", +"... ... ... ....", +"... ... ... ....", +"... ... ..... ... ....", +"... ........... ....", +".... ..... ..... .....", +"........ ... ... .........", +"......... ... ... ..........", +"......... ... ... ..........", +".......... .. .. ...........", +".......... .. .. ...........", +"........... .. .. ............", +"............ .. .. .............", +"............ .. .. .............", +"............. .. .. ..............", +"............. .. .. ..............", +"............. .. .. ..............", +"............ .. .. .............", +"........... .. .. ............", +"........... .. .. ............", +".......... .. .. ...........", +".......... .. .. ...........", +"......... ... ... ..........", +"......... ... ... ..........", +"........ ... ... .........", +".... ..... ..... .....", +"... ........... ....", +"... ... ..... ... ....", +"... ... ... ....", +"... ... ... ....", +"... ............ ............ ....", +".... .............. .............. .....", +"....................... ........................", +"........................ .........................", +"........................ .........................", +"......................... ..........................", +".......................... ...........................", +"......................... ..........................", +"......................... ... ..........................", +"......................... ... ..........................", +"......................... ... ..........................", +"......................... ..........................", +".......................... ...........................", +".........................................................." +}; diff --git a/pixmaps/cdd64.xpm b/pixmaps/cdd64.xpm new file mode 100644 index 0000000..a372823 --- /dev/null +++ b/pixmaps/cdd64.xpm @@ -0,0 +1,72 @@ +/* XPM */ +static char *cdd64[] = { +/* columns rows colors chars-per-pixel */ +"64 64 2 1", +" c black s dark_piece", +". c green s dark_square", +/* pixels */ +"................................................................", +"................................................................", +"................................................................", +"............................... ...............................", +"............................. .............................", +"............................ .. ............................", +"............................ .... ............................", +"............................ .... ............................", +"............................ .. ............................", +"............................. .............................", +".............................. ..............................", +"............................. .............................", +"............................ ............................", +"............................ ............................", +"........................... ...........................", +"....... .................. .................. .......", +"..... ............... ............... .....", +".... .. ............. ............. .. ....", +".... .... .... ....", +".... .... .... ....", +".... .. .... .. ....", +"..... ............ .....", +"...... ..... ..... ......", +"......... .... .... .........", +".......... ... ... ..........", +".......... .. .. ..........", +"........... .. .. ...........", +"............ ... ... ............", +"............ .. .. ............", +"............. .. .. .............", +"............. . . .............", +".............. .. .. ..............", +"............... .. .. ...............", +"............... .. .. ...............", +"............... .. .. ...............", +".............. . . ..............", +".............. .. .. ..............", +"............. .. .. .............", +"............ ... ... ............", +"............ .. .. ............", +"........... .. .. ...........", +"........... ... ... ...........", +"....... . .... .... . .......", +"..... ..... ..... .....", +".... .. ............ .. ....", +".... .... .... .... ....", +".... .... .... ....", +".... .. ............ ............ .. ....", +"..... .............. .............. .....", +"...... ............... ............... ......", +".......................... ..........................", +"........................... ...........................", +"........................... ...........................", +"............................ ............................", +"............................. .............................", +"............................ .. ............................", +"............................ .... ............................", +"............................ .... ............................", +"............................ .. ............................", +"............................. .............................", +".............................. ..............................", +"................................................................", +"................................................................", +"................................................................" +}; diff --git a/pixmaps/cdd72.xpm b/pixmaps/cdd72.xpm new file mode 100644 index 0000000..7dd3f36 --- /dev/null +++ b/pixmaps/cdd72.xpm @@ -0,0 +1,80 @@ +/* XPM */ +static char *cdd72[] = { +/* columns rows colors chars-per-pixel */ +"72 72 2 1", +" c black s dark_piece", +". c green s dark_square", +/* pixels */ +"........................................................................", +"........................................................................", +"........................................................................", +".................................. .................................", +"................................. ................................", +"................................ ... ...............................", +"................................ ..... ...............................", +"................................ ..... ...............................", +"................................ ..... ...............................", +"................................ ... ...............................", +"................................. ................................", +".................................. ................................", +"................................. ................................", +"................................ ...............................", +"................................ ...............................", +"............................... ..............................", +"......... ................ ..............................", +"........ ............... ............... .........", +"....... ... ............. .............. ........", +"....... ..... ............ ............ ... .......", +"....... ..... ..... .......", +"....... ..... ..... .......", +"....... ... ..... .......", +"........ ... .......", +"......... ....... ........", +".............. ........... .........", +".............. .... .... ..............", +"............... ... ... ..............", +"............... ... ... ...............", +"................ ... ... ...............", +"................ ... ... ................", +"................. ... .. ................", +"................. .. ... .................", +".................. ... .. .................", +".................. .. .. ..................", +"................... .. .. ..................", +"................... .. .. ...................", +".................. .. .. ..................", +".................. ... ... ..................", +"................. .. .. .................", +"................. .. .. .................", +"................ .. .. ................", +"............... ... ... ................", +"............... ... ... ...............", +".............. ... ... ...............", +"......... .... ... ...........", +"........ ........... ..........", +"....... ... ....... ... .........", +"....... ..... ..... .........", +"....... ..... ..... .........", +"....... ..... ..... .........", +"....... ... ........... .......... ... .........", +"........ ............. ........... ..........", +"......... .............. ............. ...........", +"............................. .............................", +"............................. ..............................", +".............................. ..............................", +".............................. ...............................", +"............................... ...............................", +"............................... ................................", +"................................ .................................", +"................................ .................................", +"............................... ... ................................", +"............................... ..... ................................", +"............................... ..... ................................", +"............................... ..... ................................", +"............................... ... ................................", +"................................ .................................", +"................................. ..................................", +"........................................................................", +"........................................................................", +"........................................................................" +}; diff --git a/pixmaps/cdl33.xpm b/pixmaps/cdl33.xpm new file mode 100644 index 0000000..46af57e --- /dev/null +++ b/pixmaps/cdl33.xpm @@ -0,0 +1,41 @@ +/* XPM */ +static char *cdl33[] = { +/* columns rows colors chars-per-pixel */ +"33 33 2 1", +" c black s dark_piece", +". c gray s light_square", +/* pixels */ +".................................", +".................................", +"............... ................", +".............. .. ...............", +".............. .. ...............", +"............... ................", +".............. ...............", +"............. ..............", +".... ...... ...... .....", +"... .. .. ....", +"... .. .... .. ....", +".... .. .. .....", +"...... . . .......", +"...... . . .......", +"....... . . ........", +"....... . . ........", +"........ . . .........", +"....... . . ........", +"....... . . ........", +"...... . . .......", +"...... . . .......", +".... .. .. .....", +"... .. .... .. ....", +"... .. .. ....", +".... ...... ...... .....", +"............. ..............", +".............. ...............", +"............... ................", +".............. .. ...............", +".............. .. ...............", +"............... ................", +".................................", +"................................." +}; diff --git a/pixmaps/cdl37.xpm b/pixmaps/cdl37.xpm new file mode 100644 index 0000000..be292b4 --- /dev/null +++ b/pixmaps/cdl37.xpm @@ -0,0 +1,45 @@ +/* XPM */ +static char *cdl37[] = { +/* columns rows colors chars-per-pixel */ +"37 37 2 1", +" c black s dark_piece", +". c gray s light_square", +/* pixels */ +".....................................", +"................. .................", +"................ ... ................", +"................ ... ................", +"................ ... ................", +"................. .................", +"................ ................", +"............... ...............", +"... ......... ......... ...", +".. ... ....... ....... ... ..", +".. ... ... ..", +".. ... ..... ... ..", +"... .. .. ...", +"...... . . ......", +"....... . . .......", +"....... . . .......", +"........ . . ........", +"........ . . ........", +"......... . . .........", +"........ . . ........", +"........ . . ........", +"....... . . .......", +"....... . . .......", +"...... . . ......", +"... .. .. ...", +".. ... ..... ... ..", +".. ... ... ..", +".. ... ....... ....... ... ..", +"... ......... ......... ...", +"............... ...............", +"................ ................", +"................. .................", +"................ ... ................", +"................ ... ................", +"................ ... ................", +"................. .................", +"....................................." +}; diff --git a/pixmaps/cdl40.xpm b/pixmaps/cdl40.xpm new file mode 100644 index 0000000..da28ae9 --- /dev/null +++ b/pixmaps/cdl40.xpm @@ -0,0 +1,48 @@ +/* XPM */ +static char *cdl40[] = { +/* columns rows colors chars-per-pixel */ +"40 40 2 1", +" c black s dark_piece", +". c gray s light_square", +/* pixels */ +"........................................", +"................... ..................", +".................. ... .................", +".................. ... .................", +".................. ... .................", +"................... ..................", +"................... ..................", +".................. .................", +".................. .................", +"..... ......... ........ .....", +".... ... ... ....", +".... ... ... ....", +".... ... ...... ... ....", +"..... . . .....", +"........ . . .......", +"......... . . ........", +"......... . . ........", +".......... . . .........", +"........... . . ..........", +"........... . . ...........", +".......... . . ...........", +"......... . . ..........", +"........ . . .........", +"........ . . .........", +"....... . . ........", +"..... ...... .....", +".... ... ... ....", +".... ... ... ....", +".... ... ........ ...... ... ....", +"..... ......... ........ .....", +".................. .................", +".................. .................", +"................... ..................", +"................... ..................", +".................. ... .................", +".................. ... .................", +".................. ... .................", +"................... ..................", +"........................................", +"........................................" +}; diff --git a/pixmaps/cdl45.xpm b/pixmaps/cdl45.xpm new file mode 100644 index 0000000..97cff7b --- /dev/null +++ b/pixmaps/cdl45.xpm @@ -0,0 +1,53 @@ +/* XPM */ +static char *cdl45[] = { +/* 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/cdl49.xpm b/pixmaps/cdl49.xpm new file mode 100644 index 0000000..81efd4d --- /dev/null +++ b/pixmaps/cdl49.xpm @@ -0,0 +1,57 @@ +/* XPM */ +static char *cdl49[] = { +/* columns rows colors chars-per-pixel */ +"49 49 2 1", +" c black s dark_piece", +". c gray s light_square", +/* pixels */ +".................................................", +".................................................", +"....................... .......................", +"...................... ... ......................", +"...................... ... ......................", +"...................... ... ......................", +"....................... .......................", +"...................... ......................", +"..................... .....................", +"..................... .....................", +".................... ....................", +".................... ....................", +"...... .......... ......... .......", +"..... ... ... ......", +"..... ... ... ......", +"..... ... .... ... ......", +"...... ... ... .......", +"......... . . ..........", +".......... . . ...........", +".......... . . ...........", +"........... . . ............", +"........... . . .............", +"............ . . .............", +"............ . . ..............", +"............. . . ..............", +"............. . . .............", +"............ . . .............", +"............ . . ............", +"........... . . ...........", +".......... . . ...........", +".......... . . ..........", +"......... ... ... ..........", +"...... .... .......", +"..... ... ... ......", +"..... ... ... ......", +"..... ... ......... ........ ... ......", +"...... ........... .......... .......", +".................... ....................", +"..................... .....................", +"..................... .....................", +"...................... ......................", +"....................... .......................", +"...................... ... ......................", +"...................... ... ......................", +"...................... ... ......................", +"....................... .......................", +".................................................", +".................................................", +"................................................." +}; diff --git a/pixmaps/cdl54.xpm b/pixmaps/cdl54.xpm new file mode 100644 index 0000000..9b8d859 --- /dev/null +++ b/pixmaps/cdl54.xpm @@ -0,0 +1,62 @@ +/* XPM */ +static char *cdl54[] = { +/* 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/cdl58.xpm b/pixmaps/cdl58.xpm new file mode 100644 index 0000000..8842800 --- /dev/null +++ b/pixmaps/cdl58.xpm @@ -0,0 +1,66 @@ +/* XPM */ +static char *cdl58[] = { +/* columns rows colors chars-per-pixel */ +"58 58 2 1", +" c black s dark_piece", +". c gray s light_square", +/* pixels */ +"..........................................................", +".......................... ...........................", +"......................... ..........................", +"......................... ... ..........................", +"......................... ... ..........................", +"......................... ... ..........................", +"......................... ..........................", +".......................... ...........................", +"......................... ..........................", +"........................ .........................", +"........................ .........................", +"....................... ........................", +"....................... ........................", +".... ............. ............. .....", +"... ............ ............ ....", +"... ... ... ....", +"... ... ... ....", +"... ... ..... ... ....", +"... ........... ....", +".... ..... ..... .....", +"........ ... ... .........", +"......... ... ... ..........", +"......... ... ... ..........", +".......... .. .. ...........", +".......... .. .. ...........", +"........... .. .. ............", +"............ .. .. .............", +"............ .. .. .............", +"............. .. .. ..............", +"............. .. .. ..............", +"............. .. .. ..............", +"............ .. .. .............", +"........... .. .. ............", +"........... .. .. ............", +".......... .. .. ...........", +".......... .. .. ...........", +"......... ... ... ..........", +"......... ... ... ..........", +"........ ... ... .........", +".... ..... ..... .....", +"... ........... ....", +"... ... ..... ... ....", +"... ... ... ....", +"... ... ... ....", +"... ............ ............ ....", +".... .............. .............. .....", +"....................... ........................", +"........................ .........................", +"........................ .........................", +"......................... ..........................", +".......................... ...........................", +"......................... ..........................", +"......................... ... ..........................", +"......................... ... ..........................", +"......................... ... ..........................", +"......................... ..........................", +".......................... ...........................", +".........................................................." +}; diff --git a/pixmaps/cdl64.xpm b/pixmaps/cdl64.xpm new file mode 100644 index 0000000..f07a4a8 --- /dev/null +++ b/pixmaps/cdl64.xpm @@ -0,0 +1,72 @@ +/* XPM */ +static char *cdl64[] = { +/* columns rows colors chars-per-pixel */ +"64 64 2 1", +" c black s dark_piece", +". c gray s light_square", +/* pixels */ +"................................................................", +"................................................................", +"................................................................", +"............................... ...............................", +"............................. .............................", +"............................ .. ............................", +"............................ .... ............................", +"............................ .... ............................", +"............................ .. ............................", +"............................. .............................", +".............................. ..............................", +"............................. .............................", +"............................ ............................", +"............................ ............................", +"........................... ...........................", +"....... .................. .................. .......", +"..... ............... ............... .....", +".... .. ............. ............. .. ....", +".... .... .... ....", +".... .... .... ....", +".... .. .... .. ....", +"..... ............ .....", +"...... ..... ..... ......", +"......... .... .... .........", +".......... ... ... ..........", +".......... .. .. ..........", +"........... .. .. ...........", +"............ ... ... ............", +"............ .. .. ............", +"............. .. .. .............", +"............. . . .............", +".............. .. .. ..............", +"............... .. .. ...............", +"............... .. .. ...............", +"............... .. .. ...............", +".............. . . ..............", +".............. .. .. ..............", +"............. .. .. .............", +"............ ... ... ............", +"............ .. .. ............", +"........... .. .. ...........", +"........... ... ... ...........", +"....... . .... .... . .......", +"..... ..... ..... .....", +".... .. ............ .. ....", +".... .... .... .... ....", +".... .... .... ....", +".... .. ............ ............ .. ....", +"..... .............. .............. .....", +"...... ............... ............... ......", +".......................... ..........................", +"........................... ...........................", +"........................... ...........................", +"............................ ............................", +"............................. .............................", +"............................ .. ............................", +"............................ .... ............................", +"............................ .... ............................", +"............................ .. ............................", +"............................. .............................", +".............................. ..............................", +"................................................................", +"................................................................", +"................................................................" +}; diff --git a/pixmaps/cdl72.xpm b/pixmaps/cdl72.xpm new file mode 100644 index 0000000..7dab174 --- /dev/null +++ b/pixmaps/cdl72.xpm @@ -0,0 +1,80 @@ +/* XPM */ +static char *cdl72[] = { +/* columns rows colors chars-per-pixel */ +"72 72 2 1", +" c black s dark_piece", +". c gray s light_square", +/* pixels */ +"........................................................................", +"........................................................................", +"........................................................................", +".................................. .................................", +"................................. ................................", +"................................ ... ...............................", +"................................ ..... ...............................", +"................................ ..... ...............................", +"................................ ..... ...............................", +"................................ ... ...............................", +"................................. ................................", +".................................. ................................", +"................................. ................................", +"................................ ...............................", +"................................ ...............................", +"............................... ..............................", +"......... ................ ..............................", +"........ ............... ............... .........", +"....... ... ............. .............. ........", +"....... ..... ............ ............ ... .......", +"....... ..... ..... .......", +"....... ..... ..... .......", +"....... ... ..... .......", +"........ ... .......", +"......... ....... ........", +".............. ........... .........", +".............. .... .... ..............", +"............... ... ... ..............", +"............... ... ... ...............", +"................ ... ... ...............", +"................ ... ... ................", +"................. ... .. ................", +"................. .. ... .................", +".................. ... .. .................", +".................. .. .. ..................", +"................... .. .. ..................", +"................... .. .. ...................", +".................. .. .. ..................", +".................. ... ... ..................", +"................. .. .. .................", +"................. .. .. .................", +"................ .. .. ................", +"............... ... ... ................", +"............... ... ... ...............", +".............. ... ... ...............", +"......... .... ... ...........", +"........ ........... ..........", +"....... ... ....... ... .........", +"....... ..... ..... .........", +"....... ..... ..... .........", +"....... ..... ..... .........", +"....... ... ........... .......... ... .........", +"........ ............. ........... ..........", +"......... .............. ............. ...........", +"............................. .............................", +"............................. ..............................", +".............................. ..............................", +".............................. ...............................", +"............................... ...............................", +"............................... ................................", +"................................ .................................", +"................................ .................................", +"............................... ... ................................", +"............................... ..... ................................", +"............................... ..... ................................", +"............................... ..... ................................", +"............................... ... ................................", +"................................ .................................", +"................................. ..................................", +"........................................................................", +"........................................................................", +"........................................................................" +}; diff --git a/pixmaps/cld33.xpm b/pixmaps/cld33.xpm new file mode 100644 index 0000000..c25f2e0 --- /dev/null +++ b/pixmaps/cld33.xpm @@ -0,0 +1,42 @@ +/* XPM */ +static char *cld33[] = { +/* 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 */ +".................................", +".................................", +"............... ................", +".............. XX ...............", +".............. XX ...............", +"............... ................", +".............. XX ...............", +"............. XXXX ..............", +".... ...... XXXXXX ...... .....", +"... XX XXXXXXXX XX ....", +"... XX XXXXXXX XXXXXXX XX ....", +".... XXXXXX XXXX XXXXXX .....", +"...... XXXXX XXXXXX XXXXX .......", +"...... XXXX XXXXXXXX XXXX .......", +"....... XXX XXXXXXXX XXX ........", +"....... XX XXXXXXXXXX XX ........", +"........ X XXXXXXXXXX X .........", +"....... XX XXXXXXXXXX XX ........", +"....... XXX XXXXXXXX XXX ........", +"...... XXXX XXXXXXXX XXXX .......", +"...... XXXXX XXXXXX XXXXX .......", +".... XXXXXX XXXX XXXXXX .....", +"... XX XXXXXXX XXXXXXX XX ....", +"... XX XXXXXXXX XX ....", +".... ...... XXXXXX ...... .....", +"............. XXXX ..............", +".............. XX ...............", +"............... ................", +".............. XX ...............", +".............. XX ...............", +"............... ................", +".................................", +"................................." +}; diff --git a/pixmaps/cld37.xpm b/pixmaps/cld37.xpm new file mode 100644 index 0000000..c5a97c2 --- /dev/null +++ b/pixmaps/cld37.xpm @@ -0,0 +1,46 @@ +/* XPM */ +static char *cld37[] = { +/* columns rows colors chars-per-pixel */ +"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 ................", +"............... XXXXX ...............", +"... ......... XXXXX ......... ...", +".. XXX ....... XXXXXXX ....... XXX ..", +".. XXX XXXXXXXXX XXX ..", +".. XXX XXXXXXXXX XXXXXXXXX XXX ..", +"... XXXXXXXX XXXXX XXXXXXXX ...", +"...... XXXXXX XXXXXXXXX XXXXXX ......", +"....... XXXX XXXXXXXXXXX XXXX .......", +"....... XXXX XXXXXXXXXXX XXXX .......", +"........ XX XXXXXXXXXXXXX XX ........", +"........ XX XXXXXXXXXXXXX XX ........", +"......... X XXXXXXXXXXXXX X .........", +"........ XX XXXXXXXXXXXXX XX ........", +"........ XX XXXXXXXXXXXXX XX ........", +"....... XXXX XXXXXXXXXXX XXXX .......", +"....... XXXX XXXXXXXXXXX XXXX .......", +"...... XXXXXX XXXXXXXXX XXXXXX ......", +"... XXXXXXXX XXXXX XXXXXXXX ...", +".. XXX XXXXXXXXX XXXXXXXXX XXX ..", +".. XXX XXXXXXXXX XXX ..", +".. XXX ....... XXXXXXX ....... XXX ..", +"... ......... XXXXX ......... ...", +"............... XXXXX ...............", +"................ XXX ................", +"................. .................", +"................ XXX ................", +"................ XXX ................", +"................ XXX ................", +"................. .................", +"....................................." +}; diff --git a/pixmaps/cld40.xpm b/pixmaps/cld40.xpm new file mode 100644 index 0000000..85c5d31 --- /dev/null +++ b/pixmaps/cld40.xpm @@ -0,0 +1,49 @@ +/* XPM */ +static char *cld40[] = { +/* columns rows colors chars-per-pixel */ +"40 40 3 1", +" c black s dark_piece", +". c green s dark_square", +"X c white s light_piece", +/* pixels */ +"........................................", +"................... ..................", +".................. XXX .................", +".................. XXX .................", +".................. XXX .................", +"................... ..................", +"................... X ..................", +".................. XXX .................", +".................. XXX .................", +"..... ......... XXXXX ........ .....", +".... XXX XXXXXXX XXX ....", +".... XXX XXXXXXXXXXXXXXXXXXXXXX XXX ....", +".... XXX XXXXXXXX XXXXXXXX XXX ....", +"..... XXXXXXXX XXXXXX XXXXXXXX .....", +"........ XXXXXX XXXXXXXX XXXXXXX .......", +"......... XXXX XXXXXXXXXX XXXXX ........", +"......... XXX XXXXXXXXXXX XXXXX ........", +".......... XX XXXXXXXXXXXX XXX .........", +"........... X XXXXXXXXXXXX XX ..........", +"........... X XXXXXXXXXXXX X ...........", +".......... XX XXXXXXXXXXXX X ...........", +"......... XXX XXXXXXXXXXX XXX ..........", +"........ XXXXX XXXXXXXXXX XXXX .........", +"........ XXXXXX XXXXXXXX XXXXX .........", +"....... XXXXXXXX XXXXXX XXXXXXX ........", +"..... XXXXXXXXX XXXXXXXXX .....", +".... XXX XXXXXXXXXXXXXXXXXXXXXX XXX ....", +".... XXX XXXXXXX XXX ....", +".... XXX ........ XXXXXX ...... XXX ....", +"..... ......... XXXXX ........ .....", +".................. XXX .................", +".................. XXX .................", +"................... X ..................", +"................... ..................", +".................. XXX .................", +".................. XXX .................", +".................. XXX .................", +"................... ..................", +"........................................", +"........................................" +}; diff --git a/pixmaps/cld45.xpm b/pixmaps/cld45.xpm new file mode 100644 index 0000000..8cb34dc --- /dev/null +++ b/pixmaps/cld45.xpm @@ -0,0 +1,54 @@ +/* XPM */ +static char *cld45[] = { +/* 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 */ +".............................................", +".............................................", +"..................... .....................", +".................... XXX ....................", +".................... XXX ....................", +".................... XXX ....................", +"..................... .....................", +".................... XXX ....................", +"................... XXXXX ...................", +"................... XXXXX ...................", +".................. XXXXXXX ..................", +".... ........... XXXXXXX ........... ....", +"... XXX ......... XXXXXXXXX ......... XXX ...", +"... XXX XXXXXXXXXXX XXX ...", +"... XXX XXXXXXXXXXXX XXXXXXXXXXXX XXX ...", +".... XXXXXXXXXXX XXXXX XXXXXXXXXXX ....", +"....... XXXXXXXXX XXXXXXXXX XXXXXXXXX .......", +"........ XXXXXXX XXXXXXXXXXX XXXXXXX ........", +"........ XXXXXX XXXXXXXXXXXXX XXXXXX ........", +"......... XXXXX XXXXXXXXXXXXX XXXXX .........", +"......... XXXX XXXXXXXXXXXXXXX XXXX .........", +".......... XXX XXXXXXXXXXXXXXX XXX ..........", +"........... XX XXXXXXXXXXXXXXX XX ...........", +".......... XXX XXXXXXXXXXXXXXX XXX ..........", +"......... XXXX XXXXXXXXXXXXXXX XXXX .........", +"......... XXXXX XXXXXXXXXXXXX XXXXX .........", +"........ XXXXXX XXXXXXXXXXXXX XXXXXX ........", +"........ XXXXXXX XXXXXXXXXXX XXXXXXX ........", +"....... XXXXXXXXX XXXXXXXXX XXXXXXXXX .......", +".... XXXXXXXXXXX XXXXX XXXXXXXXXXX ....", +"... XXX XXXXXXXXXXXX XXXXXXXXXXXX XXX ...", +"... XXX XXXXXXXXXXX XXX ...", +"... XXX ......... XXXXXXXXX ......... XXX ...", +".... ........... XXXXXXX ........... ....", +".................. XXXXXXX ..................", +"................... XXXXX ...................", +"................... XXXXX ...................", +".................... XXX ....................", +"..................... .....................", +".................... XXX ....................", +".................... XXX ....................", +".................... XXX ....................", +"..................... .....................", +".............................................", +"............................................." +}; diff --git a/pixmaps/cld49.xpm b/pixmaps/cld49.xpm new file mode 100644 index 0000000..d951d58 --- /dev/null +++ b/pixmaps/cld49.xpm @@ -0,0 +1,58 @@ +/* XPM */ +static char *cld49[] = { +/* columns rows colors chars-per-pixel */ +"49 49 3 1", +" c black s dark_piece", +". c green s dark_square", +"X c white s light_piece", +/* pixels */ +".................................................", +".................................................", +"....................... .......................", +"...................... XXX ......................", +"...................... XXX ......................", +"...................... XXX ......................", +"....................... .......................", +"...................... XXX ......................", +"..................... XXXXX .....................", +"..................... XXXXX .....................", +".................... XXXXXXX ....................", +".................... XXXXXXX ....................", +"...... .......... XXXXXXXXX ......... .......", +"..... XXX XXXXXXXXXXX XXX ......", +"..... XXX XXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX ......", +"..... XXX XXXXXXXXXXXX XXXXXXXXXXXX XXX ......", +"...... XXXXXXXXXX XXXX XXXXXXXXXX .......", +"......... XXXXXXXX XXXXXXXXXX XXXXXXXX ..........", +".......... XXXXXX XXXXXXXXXXXX XXXXXX ...........", +".......... XXXXX XXXXXXXXXXXXXX XXXXX ...........", +"........... XXXX XXXXXXXXXXXXXX XXXX ............", +"........... XXXX XXXXXXXXXXXXXX XXX .............", +"............ XX XXXXXXXXXXXXXXXX XX .............", +"............ XX XXXXXXXXXXXXXXXX X ..............", +"............. X XXXXXXXXXXXXXXXX X ..............", +"............. X XXXXXXXXXXXXXXXX XX .............", +"............ XXX XXXXXXXXXXXXXX XXX .............", +"............ XXX XXXXXXXXXXXXXX XXXX ............", +"........... XXXX XXXXXXXXXXXXXX XXXXX ...........", +".......... XXXXXX XXXXXXXXXXXX XXXXXX ...........", +".......... XXXXXXX XXXXXXXXXX XXXXXXXX ..........", +"......... XXXXXXXXX XXXX XXXXXXXXX ..........", +"...... XXXXXXXXXXXXX XXXXXXXXXXXX .......", +"..... XXX XXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX ......", +"..... XXX XXXXXXXXXXX XXX ......", +"..... XXX ......... XXXXXXXXX ........ XXX ......", +"...... ........... XXXXXXX .......... .......", +".................... XXXXXXX ....................", +"..................... XXXXX .....................", +"..................... XXXXX .....................", +"...................... XXX ......................", +"....................... .......................", +"...................... XXX ......................", +"...................... XXX ......................", +"...................... XXX ......................", +"....................... .......................", +".................................................", +".................................................", +"................................................." +}; diff --git a/pixmaps/cld54.xpm b/pixmaps/cld54.xpm new file mode 100644 index 0000000..928951c --- /dev/null +++ b/pixmaps/cld54.xpm @@ -0,0 +1,63 @@ +/* XPM */ +static char *cld54[] = { +/* 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 .......................", +"....................... XXXX .......................", +"....................... XX .......................", +"........................ ........................", +"....................... X X .......................", +"...................... XXXXX .......................", +"...................... XXXXXX ......................", +"..................... XXXXXXX ......................", +"...... ............. XXXXXXXX ............. ......", +".... .......... XXXXXXXXX ........... ....", +"... XX ......... XXXXXXXXXX ......... XX ...", +"... XXXX XXXXXXXXXXX XXXX ...", +"... XXXX XXX XXX XXXX ...", +"... XX XXXXXXXXXXX XXXXXXXXXXX XX ...", +".... XXXXXXXXXX XXXX XXXXXXXXXX ....", +"...... XXXXXXXXX XXXXXXXXXX XXXXXXXX . ......", +"......... XXXXXXX XXXXXXXXXXXX XXXXXX ..........", +"......... XXXXXXX XXXXXXXXXXXXXX XXXXXX ..........", +".......... XXXXX XXXXXXXXXXXXXXXX XXXX ...........", +".......... XXXXX XXXXXXXXXXXXXXXX XXXX ...........", +"........... XXX XXXXXXXXXXXXXXXX XXX ............", +"........... XX XXXXXXXXXXXXXXXXXX X ............", +"............ X XXXXXXXXXXXXXXXXXX X .............", +"............. X XXXXXXXXXXXXXXXXXX X ............", +"............ X XXXXXXXXXXXXXXXXXX XX ............", +"............ XX XXXXXXXXXXXXXXXX XXXX ...........", +"........... XXXX XXXXXXXXXXXXXXXX XXXXX ..........", +"........... XXXX XXXXXXXXXXXXXXXX XXXXX ..........", +".......... XXXXXX XXXXXXXXXXXXXX XXXXXXX .........", +".......... XXXXXX XXXXXXXXXXXX XXXXXXX .........", +"...... . XXXXXXXX XXXXXXXXXX XXXXXXXXX ......", +".... XXXXXXXXXX XXXX XXXXXXXXXX ....", +"... XX XXXXXXXXXXX XXXXXXXXXXX XX ...", +"... XXXX XXXXX XXXXX XXXX ...", +"... XXXX XXXXXXXXXXXX XXXX ...", +"... XX ......... XXXXXXXXXX ......... XX ...", +".... .......... XXXXXXXXX .......... ....", +"...... ............. XXXXXXX ............. ......", +"..................... XXXXXX ......................", +"...................... XXXXX ......................", +"...................... X X .......................", +"....................... ........................", +"....................... XX .......................", +"....................... XXXX .......................", +"....................... XXXX .......................", +"....................... XX .......................", +"........................ ........................", +".......................... ..........................", +"......................................................", +"......................................................" +}; diff --git a/pixmaps/cld58.xpm b/pixmaps/cld58.xpm new file mode 100644 index 0000000..2ce9f30 --- /dev/null +++ b/pixmaps/cld58.xpm @@ -0,0 +1,67 @@ +/* XPM */ +static char *cld58[] = { +/* columns rows colors chars-per-pixel */ +"58 58 3 1", +" c black s dark_piece", +". c green s dark_square", +"X c white s light_piece", +/* pixels */ +"..........................................................", +".......................... ...........................", +"......................... ..........................", +"......................... XXX ..........................", +"......................... XXX ..........................", +"......................... XXX ..........................", +"......................... ..........................", +".......................... ...........................", +"......................... XXX ..........................", +"........................ XXXXX .........................", +"........................ XXXXX .........................", +"....................... XXXXXXX ........................", +"....................... XXXXXXX ........................", +".... ............. XXXXXXXXX ............. .....", +"... ............ XXXXXXXXX ............ ....", +"... XXX XXXXXXXXXXX XXX ....", +"... XXX XXXXXXXXXXXXX XXX ....", +"... XXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXX ....", +"... XXXXXXXXXXXXX XXXXXXXXXXXXX ....", +".... XXXXXXXXXXXX XXXXX XXXXXXXXXXXX .....", +"........ XXXXXXXXXX XXXXXXXXXXX XXXXXXXXXX .........", +"......... XXXXXXXX XXXXXXXXXXXXX XXXXXXXX ..........", +"......... XXXXXXX XXXXXXXXXXXXXXX XXXXXXX ..........", +".......... XXXXXX XXXXXXXXXXXXXXXXX XXXXXX ...........", +".......... XXXXX XXXXXXXXXXXXXXXXXXX XXXXX ...........", +"........... XXXX XXXXXXXXXXXXXXXXXXX XXXX ............", +"............ XXX XXXXXXXXXXXXXXXXXXX XXX .............", +"............ XX XXXXXXXXXXXXXXXXXXXXX XX .............", +"............. X XXXXXXXXXXXXXXXXXXXXX X ..............", +"............. X XXXXXXXXXXXXXXXXXXXXX X ..............", +"............. X XXXXXXXXXXXXXXXXXXXXX X ..............", +"............ XX XXXXXXXXXXXXXXXXXXXXX XX .............", +"........... XXX XXXXXXXXXXXXXXXXXXX XXX ............", +"........... XXXX XXXXXXXXXXXXXXXXXXX XXXX ............", +".......... XXXXX XXXXXXXXXXXXXXXXXXX XXXXX ...........", +".......... XXXXXX XXXXXXXXXXXXXXXXX XXXXXX ...........", +"......... XXXXXXX XXXXXXXXXXXXXXX XXXXXXX ..........", +"......... XXXXXXXX XXXXXXXXXXXXX XXXXXXXX ..........", +"........ XXXXXXXXXX XXXXXXXXXXX XXXXXXXXXX .........", +".... XXXXXXXXXXXX XXXXX XXXXXXXXXXXX .....", +"... XXXXXXXXXXXXX XXXXXXXXXXXXX ....", +"... XXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXX ....", +"... XXX XXXXXXXXXXXXX XXX ....", +"... XXX XXXXXXXXXXX XXX ....", +"... ............ XXXXXXXXX ............ ....", +".... .............. XXXXXXX .............. .....", +"....................... XXXXXXX ........................", +"........................ XXXXX .........................", +"........................ XXXXX .........................", +"......................... XXX ..........................", +".......................... ...........................", +"......................... ..........................", +"......................... XXX ..........................", +"......................... XXX ..........................", +"......................... XXX ..........................", +"......................... ..........................", +".......................... ...........................", +".........................................................." +}; diff --git a/pixmaps/cld64.xpm b/pixmaps/cld64.xpm new file mode 100644 index 0000000..7158d2b --- /dev/null +++ b/pixmaps/cld64.xpm @@ -0,0 +1,73 @@ +/* XPM */ +static char *cld64[] = { +/* columns rows colors chars-per-pixel */ +"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 ............................", +"............................. .............................", +".............................. ..............................", +"............................. XX .............................", +"............................ XXXX ............................", +"............................ XXXX ............................", +"........................... XXXXXX ...........................", +"....... .................. XXXXXX .................. .......", +"..... ............... XXXXXXXX ............... .....", +".... XX ............. XXXXXXXXXX ............. XX ....", +".... XXXX XXXXXXXXXX XXXX ....", +".... XXXX XXXXXXXXXXXX XXXX ....", +".... XX XXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXX XX ....", +"..... XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX .....", +"...... XXXXXXXXXXXXXXX XXXX XXXXXXXXXXXXXXX ......", +"......... XXXXXXXXXXXX XXXXXXXXXX XXXXXXXXXXXX .........", +".......... XXXXXXXXXX XXXXXXXXXXXXXX XXXXXXXXXX ..........", +".......... XXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXX ..........", +"........... XXXXXXXX XXXXXXXXXXXXXXXXXX XXXXXXXX ...........", +"............ XXXXXX XXXXXXXXXXXXXXXXXX XXXXXX ............", +"............ XXXXXX XXXXXXXXXXXXXXXXXXXX XXXXXX ............", +"............. XXXXX XXXXXXXXXXXXXXXXXXXX XXXXX .............", +"............. XXXXX XXXXXXXXXXXXXXXXXXXXXX XXXXX .............", +".............. XXX XXXXXXXXXXXXXXXXXXXXXX XXX ..............", +"............... XX XXXXXXXXXXXXXXXXXXXXXX XX ...............", +"............... X XXXXXXXXXXXXXXXXXXXXXX X ...............", +"............... XX XXXXXXXXXXXXXXXXXXXXXX XX ...............", +".............. XXXX XXXXXXXXXXXXXXXXXXXXXX XXXX ..............", +".............. XXXX XXXXXXXXXXXXXXXXXXXX XXXX ..............", +"............. XXXXX XXXXXXXXXXXXXXXXXXXX XXXXX .............", +"............ XXXXXX XXXXXXXXXXXXXXXXXX XXXXXX ............", +"............ XXXXXXX XXXXXXXXXXXXXXXXXX XXXXXXX ............", +"........... XXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXX ...........", +"........... XXXXXXXXX XXXXXXXXXXXXXX XXXXXXXXX ...........", +"....... . XXXXXXXXXXX XXXXXXXXXX XXXXXXXXXXX . .......", +"..... XXXXXXXXXXXXXX XXXX XXXXXXXXXXXXXX .....", +".... XX XXXXXXXXXXXXXX XXXXXXXXXXXXXX XX ....", +".... XXXX XXXXX XXXXX XXXX ....", +".... XXXX XXXXXXXXXXXX XXXX ....", +".... XX ............ XXXXXXXXXXXX ............ XX ....", +"..... .............. XXXXXXXXXX .............. .....", +"...... ............... XXXXXXXXXX ............... ......", +".......................... XXXXXXXX ..........................", +"........................... XXXXXX ...........................", +"........................... XXXXXX ...........................", +"............................ X X ............................", +"............................. .............................", +"............................ XX ............................", +"............................ XXXX ............................", +"............................ XXXX ............................", +"............................ XX ............................", +"............................. .............................", +".............................. ..............................", +"................................................................", +"................................................................", +"................................................................" +}; diff --git a/pixmaps/cld72.xpm b/pixmaps/cld72.xpm new file mode 100644 index 0000000..4870425 --- /dev/null +++ b/pixmaps/cld72.xpm @@ -0,0 +1,81 @@ +/* XPM */ +static char *cld72[] = { +/* columns rows colors chars-per-pixel */ +"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 ...............................", +"................................. ................................", +".................................. ................................", +"................................. XX ................................", +"................................ XXX ...............................", +"................................ XXXXX ...............................", +"............................... XXXXX ..............................", +"......... ................ XXXXXXX ..............................", +"........ ............... XXXXXXXXX ............... .........", +"....... XXX ............. XXXXXXXXX .............. ........", +"....... XXXXX ............ XXXXXXXXXXX ............ XXX .......", +"....... XXXXX XXXXXXXXXXX XXXXX .......", +"....... XXXXX XXXXXXXXXXXXX XXXXX .......", +"....... XXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX .......", +"........ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX .......", +"......... XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXX ........", +".............. XXXXXXXXXXXXXXX XXXXXXXXXXXXXX .........", +".............. XXXXXXXXXXXXX XXXXX XXXXXXXXXXXXX ..............", +"............... XXXXXXXXXXXX XXXXXXXXX XXXXXXXXXXX ..............", +"............... XXXXXXXXXX XXXXXXXXXXX XXXXXXXXXX ...............", +"................ XXXXXXXXX XXXXXXXXXXXXX XXXXXXXX ...............", +"................ XXXXXXXX XXXXXXXXXXXXXX XXXXXXX ................", +"................. XXXXXXX XXXXXXXXXXXXXXXX XXXXXX ................", +"................. XXXXXX XXXXXXXXXXXXXXXXX XXXXX .................", +".................. XXXXX XXXXXXXXXXXXXXXXXX XXXX .................", +".................. XXXX XXXXXXXXXXXXXXXXXXX XXXX ..................", +"................... XXX XXXXXXXXXXXXXXXXXXX XXX ..................", +"................... XXX XXXXXXXXXXXXXXXXXXX XXX ...................", +".................. XXXX XXXXXXXXXXXXXXXXXXX XXXX ..................", +".................. XXXXX XXXXXXXXXXXXXXXXX XXXX ..................", +"................. XXXXXX XXXXXXXXXXXXXXXXX XXXXXX .................", +"................. XXXXXXX XXXXXXXXXXXXXXXXX XXXXXX .................", +"................ XXXXXXXX XXXXXXXXXXXXXXX XXXXXXXX ................", +"............... XXXXXXXXX XXXXXXXXXXXXX XXXXXXXX ................", +"............... XXXXXXXXXX XXXXXXXXXXX XXXXXXXXX ...............", +".............. XXXXXXXXXXXX XXXXXXXXX XXXXXXXXXXX ...............", +"......... XXXXXXXXXXXXX XXXXX XXXXXXXXXXXXX ...........", +"........ XXXXXXXXXXXXXXX XXXXXXXXXXXXX ..........", +"....... XXX XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXX XXX .........", +"....... XXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX .........", +"....... XXXXX XXXXXXXXXXXXXX XXXXX .........", +"....... XXXXX XXXXXXXXXXXXX XXXXX .........", +"....... XXX ........... XXXXXXXXXXXX .......... XXX .........", +"........ ............. XXXXXXXXXXX ........... ..........", +"......... .............. XXXXXXXXXX ............. ...........", +"............................. XXXXXXXXX .............................", +"............................. XXXXXXXX ..............................", +".............................. XXXXXXX ..............................", +".............................. XXXXXX ...............................", +"............................... XXXXX ...............................", +"............................... XXXX ................................", +"................................ .................................", +"................................ .................................", +"............................... XXX ................................", +"............................... XXXXX ................................", +"............................... XXXXX ................................", +"............................... XXXXX ................................", +"............................... XXX ................................", +"................................ .................................", +"................................. ..................................", +"........................................................................", +"........................................................................", +"........................................................................" +}; diff --git a/pixmaps/cll33.xpm b/pixmaps/cll33.xpm new file mode 100644 index 0000000..5d7bf00 --- /dev/null +++ b/pixmaps/cll33.xpm @@ -0,0 +1,42 @@ +/* XPM */ +static char *cll33[] = { +/* 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 */ +".................................", +".................................", +"............... ................", +".............. XX ...............", +".............. XX ...............", +"............... ................", +".............. XX ...............", +"............. XXXX ..............", +".... ...... XXXXXX ...... .....", +"... XX XXXXXXXX XX ....", +"... XX XXXXXXX XXXXXXX XX ....", +".... XXXXXX XXXX XXXXXX .....", +"...... XXXXX XXXXXX XXXXX .......", +"...... XXXX XXXXXXXX XXXX .......", +"....... XXX XXXXXXXX XXX ........", +"....... XX XXXXXXXXXX XX ........", +"........ X XXXXXXXXXX X .........", +"....... XX XXXXXXXXXX XX ........", +"....... XXX XXXXXXXX XXX ........", +"...... XXXX XXXXXXXX XXXX .......", +"...... XXXXX XXXXXX XXXXX .......", +".... XXXXXX XXXX XXXXXX .....", +"... XX XXXXXXX XXXXXXX XX ....", +"... XX XXXXXXXX XX ....", +".... ...... XXXXXX ...... .....", +"............. XXXX ..............", +".............. XX ...............", +"............... ................", +".............. XX ...............", +".............. XX ...............", +"............... ................", +".................................", +"................................." +}; diff --git a/pixmaps/cll37.xpm b/pixmaps/cll37.xpm new file mode 100644 index 0000000..87b0c9a --- /dev/null +++ b/pixmaps/cll37.xpm @@ -0,0 +1,46 @@ +/* XPM */ +static char *cll37[] = { +/* columns rows colors chars-per-pixel */ +"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 ................", +"............... XXXXX ...............", +"... ......... XXXXX ......... ...", +".. XXX ....... XXXXXXX ....... XXX ..", +".. XXX XXXXXXXXX XXX ..", +".. XXX XXXXXXXXX XXXXXXXXX XXX ..", +"... XXXXXXXX XXXXX XXXXXXXX ...", +"...... XXXXXX XXXXXXXXX XXXXXX ......", +"....... XXXX XXXXXXXXXXX XXXX .......", +"....... XXXX XXXXXXXXXXX XXXX .......", +"........ XX XXXXXXXXXXXXX XX ........", +"........ XX XXXXXXXXXXXXX XX ........", +"......... X XXXXXXXXXXXXX X .........", +"........ XX XXXXXXXXXXXXX XX ........", +"........ XX XXXXXXXXXXXXX XX ........", +"....... XXXX XXXXXXXXXXX XXXX .......", +"....... XXXX XXXXXXXXXXX XXXX .......", +"...... XXXXXX XXXXXXXXX XXXXXX ......", +"... XXXXXXXX XXXXX XXXXXXXX ...", +".. XXX XXXXXXXXX XXXXXXXXX XXX ..", +".. XXX XXXXXXXXX XXX ..", +".. XXX ....... XXXXXXX ....... XXX ..", +"... ......... XXXXX ......... ...", +"............... XXXXX ...............", +"................ XXX ................", +"................. .................", +"................ XXX ................", +"................ XXX ................", +"................ XXX ................", +"................. .................", +"....................................." +}; diff --git a/pixmaps/cll40.xpm b/pixmaps/cll40.xpm new file mode 100644 index 0000000..6ab7c22 --- /dev/null +++ b/pixmaps/cll40.xpm @@ -0,0 +1,49 @@ +/* XPM */ +static char *cll40[] = { +/* columns rows colors chars-per-pixel */ +"40 40 3 1", +" c black s dark_piece", +". c gray s light_square", +"X c white s light_piece", +/* pixels */ +"........................................", +"................... ..................", +".................. XXX .................", +".................. XXX .................", +".................. XXX .................", +"................... ..................", +"................... X ..................", +".................. XXX .................", +".................. XXX .................", +"..... ......... XXXXX ........ .....", +".... XXX XXXXXXX XXX ....", +".... XXX XXXXXXXXXXXXXXXXXXXXXX XXX ....", +".... XXX XXXXXXXX XXXXXXXX XXX ....", +"..... XXXXXXXX XXXXXX XXXXXXXX .....", +"........ XXXXXX XXXXXXXX XXXXXXX .......", +"......... XXXX XXXXXXXXXX XXXXX ........", +"......... XXX XXXXXXXXXXX XXXXX ........", +".......... XX XXXXXXXXXXXX XXX .........", +"........... X XXXXXXXXXXXX XX ..........", +"........... X XXXXXXXXXXXX X ...........", +".......... XX XXXXXXXXXXXX X ...........", +"......... XXX XXXXXXXXXXX XXX ..........", +"........ XXXXX XXXXXXXXXX XXXX .........", +"........ XXXXXX XXXXXXXX XXXXX .........", +"....... XXXXXXXX XXXXXX XXXXXXX ........", +"..... XXXXXXXXX XXXXXXXXX .....", +".... XXX XXXXXXXXXXXXXXXXXXXXXX XXX ....", +".... XXX XXXXXXX XXX ....", +".... XXX ........ XXXXXX ...... XXX ....", +"..... ......... XXXXX ........ .....", +".................. XXX .................", +".................. XXX .................", +"................... X ..................", +"................... ..................", +".................. XXX .................", +".................. XXX .................", +".................. XXX .................", +"................... ..................", +"........................................", +"........................................" +}; diff --git a/pixmaps/cll45.xpm b/pixmaps/cll45.xpm new file mode 100644 index 0000000..1af3623 --- /dev/null +++ b/pixmaps/cll45.xpm @@ -0,0 +1,54 @@ +/* XPM */ +static char *cll45[] = { +/* 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 */ +".............................................", +".............................................", +"..................... .....................", +".................... XXX ....................", +".................... XXX ....................", +".................... XXX ....................", +"..................... .....................", +".................... XXX ....................", +"................... XXXXX ...................", +"................... XXXXX ...................", +".................. XXXXXXX ..................", +".... ........... XXXXXXX ........... ....", +"... XXX ......... XXXXXXXXX ......... XXX ...", +"... XXX XXXXXXXXXXX XXX ...", +"... XXX XXXXXXXXXXXX XXXXXXXXXXXX XXX ...", +".... XXXXXXXXXXX XXXXX XXXXXXXXXXX ....", +"....... XXXXXXXXX XXXXXXXXX XXXXXXXXX .......", +"........ XXXXXXX XXXXXXXXXXX XXXXXXX ........", +"........ XXXXXX XXXXXXXXXXXXX XXXXXX ........", +"......... XXXXX XXXXXXXXXXXXX XXXXX .........", +"......... XXXX XXXXXXXXXXXXXXX XXXX .........", +".......... XXX XXXXXXXXXXXXXXX XXX ..........", +"........... XX XXXXXXXXXXXXXXX XX ...........", +".......... XXX XXXXXXXXXXXXXXX XXX ..........", +"......... XXXX XXXXXXXXXXXXXXX XXXX .........", +"......... XXXXX XXXXXXXXXXXXX XXXXX .........", +"........ XXXXXX XXXXXXXXXXXXX XXXXXX ........", +"........ XXXXXXX XXXXXXXXXXX XXXXXXX ........", +"....... XXXXXXXXX XXXXXXXXX XXXXXXXXX .......", +".... XXXXXXXXXXX XXXXX XXXXXXXXXXX ....", +"... XXX XXXXXXXXXXXX XXXXXXXXXXXX XXX ...", +"... XXX XXXXXXXXXXX XXX ...", +"... XXX ......... XXXXXXXXX ......... XXX ...", +".... ........... XXXXXXX ........... ....", +".................. XXXXXXX ..................", +"................... XXXXX ...................", +"................... XXXXX ...................", +".................... XXX ....................", +"..................... .....................", +".................... XXX ....................", +".................... XXX ....................", +".................... XXX ....................", +"..................... .....................", +".............................................", +"............................................." +}; diff --git a/pixmaps/cll49.xpm b/pixmaps/cll49.xpm new file mode 100644 index 0000000..410d59f --- /dev/null +++ b/pixmaps/cll49.xpm @@ -0,0 +1,58 @@ +/* XPM */ +static char *cll49[] = { +/* columns rows colors chars-per-pixel */ +"49 49 3 1", +" c black s dark_piece", +". c gray s light_square", +"X c white s light_piece", +/* pixels */ +".................................................", +".................................................", +"....................... .......................", +"...................... XXX ......................", +"...................... XXX ......................", +"...................... XXX ......................", +"....................... .......................", +"...................... XXX ......................", +"..................... XXXXX .....................", +"..................... XXXXX .....................", +".................... XXXXXXX ....................", +".................... XXXXXXX ....................", +"...... .......... XXXXXXXXX ......... .......", +"..... XXX XXXXXXXXXXX XXX ......", +"..... XXX XXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX ......", +"..... XXX XXXXXXXXXXXX XXXXXXXXXXXX XXX ......", +"...... XXXXXXXXXX XXXX XXXXXXXXXX .......", +"......... XXXXXXXX XXXXXXXXXX XXXXXXXX ..........", +".......... XXXXXX XXXXXXXXXXXX XXXXXX ...........", +".......... XXXXX XXXXXXXXXXXXXX XXXXX ...........", +"........... XXXX XXXXXXXXXXXXXX XXXX ............", +"........... XXXX XXXXXXXXXXXXXX XXX .............", +"............ XX XXXXXXXXXXXXXXXX XX .............", +"............ XX XXXXXXXXXXXXXXXX X ..............", +"............. X XXXXXXXXXXXXXXXX X ..............", +"............. X XXXXXXXXXXXXXXXX XX .............", +"............ XXX XXXXXXXXXXXXXX XXX .............", +"............ XXX XXXXXXXXXXXXXX XXXX ............", +"........... XXXX XXXXXXXXXXXXXX XXXXX ...........", +".......... XXXXXX XXXXXXXXXXXX XXXXXX ...........", +".......... XXXXXXX XXXXXXXXXX XXXXXXXX ..........", +"......... XXXXXXXXX XXXX XXXXXXXXX ..........", +"...... XXXXXXXXXXXXX XXXXXXXXXXXX .......", +"..... XXX XXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX ......", +"..... XXX XXXXXXXXXXX XXX ......", +"..... XXX ......... XXXXXXXXX ........ XXX ......", +"...... ........... XXXXXXX .......... .......", +".................... XXXXXXX ....................", +"..................... XXXXX .....................", +"..................... XXXXX .....................", +"...................... XXX ......................", +"....................... .......................", +"...................... XXX ......................", +"...................... XXX ......................", +"...................... XXX ......................", +"....................... .......................", +".................................................", +".................................................", +"................................................." +}; diff --git a/pixmaps/cll54.xpm b/pixmaps/cll54.xpm new file mode 100644 index 0000000..a25a2ab --- /dev/null +++ b/pixmaps/cll54.xpm @@ -0,0 +1,63 @@ +/* XPM */ +static char *cll54[] = { +/* 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 .......................", +"....................... XXXX .......................", +"....................... XX .......................", +"........................ ........................", +"....................... X X .......................", +"...................... XXXXX .......................", +"...................... XXXXXX ......................", +"..................... XXXXXXX ......................", +"...... ............. XXXXXXXX ............. ......", +".... .......... XXXXXXXXX ........... ....", +"... XX ......... XXXXXXXXXX ......... XX ...", +"... XXXX XXXXXXXXXXX XXXX ...", +"... XXXX XXX XXX XXXX ...", +"... XX XXXXXXXXXXX XXXXXXXXXXX XX ...", +".... XXXXXXXXXX XXXX XXXXXXXXXX ....", +"...... XXXXXXXXX XXXXXXXXXX XXXXXXXX . ......", +"......... XXXXXXX XXXXXXXXXXXX XXXXXX ..........", +"......... XXXXXXX XXXXXXXXXXXXXX XXXXXX ..........", +".......... XXXXX XXXXXXXXXXXXXXXX XXXX ...........", +".......... XXXXX XXXXXXXXXXXXXXXX XXXX ...........", +"........... XXX XXXXXXXXXXXXXXXX XXX ............", +"........... XX XXXXXXXXXXXXXXXXXX X ............", +"............ X XXXXXXXXXXXXXXXXXX X .............", +"............. X XXXXXXXXXXXXXXXXXX X ............", +"............ X XXXXXXXXXXXXXXXXXX XX ............", +"............ XX XXXXXXXXXXXXXXXX XXXX ...........", +"........... XXXX XXXXXXXXXXXXXXXX XXXXX ..........", +"........... XXXX XXXXXXXXXXXXXXXX XXXXX ..........", +".......... XXXXXX XXXXXXXXXXXXXX XXXXXXX .........", +".......... XXXXXX XXXXXXXXXXXX XXXXXXX .........", +"...... . XXXXXXXX XXXXXXXXXX XXXXXXXXX ......", +".... XXXXXXXXXX XXXX XXXXXXXXXX ....", +"... XX XXXXXXXXXXX XXXXXXXXXXX XX ...", +"... XXXX XXXXX XXXXX XXXX ...", +"... XXXX XXXXXXXXXXXX XXXX ...", +"... XX ......... XXXXXXXXXX ......... XX ...", +".... .......... XXXXXXXXX .......... ....", +"...... ............. XXXXXXX ............. ......", +"..................... XXXXXX ......................", +"...................... XXXXX ......................", +"...................... X X .......................", +"....................... ........................", +"....................... XX .......................", +"....................... XXXX .......................", +"....................... XXXX .......................", +"....................... XX .......................", +"........................ ........................", +".......................... ..........................", +"......................................................", +"......................................................" +}; diff --git a/pixmaps/cll58.xpm b/pixmaps/cll58.xpm new file mode 100644 index 0000000..40fbc26 --- /dev/null +++ b/pixmaps/cll58.xpm @@ -0,0 +1,67 @@ +/* XPM */ +static char *cll58[] = { +/* columns rows colors chars-per-pixel */ +"58 58 3 1", +" c black s dark_piece", +". c gray s light_square", +"X c white s light_piece", +/* pixels */ +"..........................................................", +".......................... ...........................", +"......................... ..........................", +"......................... XXX ..........................", +"......................... XXX ..........................", +"......................... XXX ..........................", +"......................... ..........................", +".......................... ...........................", +"......................... XXX ..........................", +"........................ XXXXX .........................", +"........................ XXXXX .........................", +"....................... XXXXXXX ........................", +"....................... XXXXXXX ........................", +".... ............. XXXXXXXXX ............. .....", +"... ............ XXXXXXXXX ............ ....", +"... XXX XXXXXXXXXXX XXX ....", +"... XXX XXXXXXXXXXXXX XXX ....", +"... XXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXX ....", +"... XXXXXXXXXXXXX XXXXXXXXXXXXX ....", +".... XXXXXXXXXXXX XXXXX XXXXXXXXXXXX .....", +"........ XXXXXXXXXX XXXXXXXXXXX XXXXXXXXXX .........", +"......... XXXXXXXX XXXXXXXXXXXXX XXXXXXXX ..........", +"......... XXXXXXX XXXXXXXXXXXXXXX XXXXXXX ..........", +".......... XXXXXX XXXXXXXXXXXXXXXXX XXXXXX ...........", +".......... XXXXX XXXXXXXXXXXXXXXXXXX XXXXX ...........", +"........... XXXX XXXXXXXXXXXXXXXXXXX XXXX ............", +"............ XXX XXXXXXXXXXXXXXXXXXX XXX .............", +"............ XX XXXXXXXXXXXXXXXXXXXXX XX .............", +"............. X XXXXXXXXXXXXXXXXXXXXX X ..............", +"............. X XXXXXXXXXXXXXXXXXXXXX X ..............", +"............. X XXXXXXXXXXXXXXXXXXXXX X ..............", +"............ XX XXXXXXXXXXXXXXXXXXXXX XX .............", +"........... XXX XXXXXXXXXXXXXXXXXXX XXX ............", +"........... XXXX XXXXXXXXXXXXXXXXXXX XXXX ............", +".......... XXXXX XXXXXXXXXXXXXXXXXXX XXXXX ...........", +".......... XXXXXX XXXXXXXXXXXXXXXXX XXXXXX ...........", +"......... XXXXXXX XXXXXXXXXXXXXXX XXXXXXX ..........", +"......... XXXXXXXX XXXXXXXXXXXXX XXXXXXXX ..........", +"........ XXXXXXXXXX XXXXXXXXXXX XXXXXXXXXX .........", +".... XXXXXXXXXXXX XXXXX XXXXXXXXXXXX .....", +"... XXXXXXXXXXXXX XXXXXXXXXXXXX ....", +"... XXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXX ....", +"... XXX XXXXXXXXXXXXX XXX ....", +"... XXX XXXXXXXXXXX XXX ....", +"... ............ XXXXXXXXX ............ ....", +".... .............. XXXXXXX .............. .....", +"....................... XXXXXXX ........................", +"........................ XXXXX .........................", +"........................ XXXXX .........................", +"......................... XXX ..........................", +".......................... ...........................", +"......................... ..........................", +"......................... XXX ..........................", +"......................... XXX ..........................", +"......................... XXX ..........................", +"......................... ..........................", +".......................... ...........................", +".........................................................." +}; diff --git a/pixmaps/cll64.xpm b/pixmaps/cll64.xpm new file mode 100644 index 0000000..bc26cc3 --- /dev/null +++ b/pixmaps/cll64.xpm @@ -0,0 +1,73 @@ +/* XPM */ +static char *cll64[] = { +/* columns rows colors chars-per-pixel */ +"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 ............................", +"............................. .............................", +".............................. ..............................", +"............................. XX .............................", +"............................ XXXX ............................", +"............................ XXXX ............................", +"........................... XXXXXX ...........................", +"....... .................. XXXXXX .................. .......", +"..... ............... XXXXXXXX ............... .....", +".... XX ............. XXXXXXXXXX ............. XX ....", +".... XXXX XXXXXXXXXX XXXX ....", +".... XXXX XXXXXXXXXXXX XXXX ....", +".... XX XXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXX XX ....", +"..... XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX .....", +"...... XXXXXXXXXXXXXXX XXXX XXXXXXXXXXXXXXX ......", +"......... XXXXXXXXXXXX XXXXXXXXXX XXXXXXXXXXXX .........", +".......... XXXXXXXXXX XXXXXXXXXXXXXX XXXXXXXXXX ..........", +".......... XXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXX ..........", +"........... XXXXXXXX XXXXXXXXXXXXXXXXXX XXXXXXXX ...........", +"............ XXXXXX XXXXXXXXXXXXXXXXXX XXXXXX ............", +"............ XXXXXX XXXXXXXXXXXXXXXXXXXX XXXXXX ............", +"............. XXXXX XXXXXXXXXXXXXXXXXXXX XXXXX .............", +"............. XXXXX XXXXXXXXXXXXXXXXXXXXXX XXXXX .............", +".............. XXX XXXXXXXXXXXXXXXXXXXXXX XXX ..............", +"............... XX XXXXXXXXXXXXXXXXXXXXXX XX ...............", +"............... X XXXXXXXXXXXXXXXXXXXXXX X ...............", +"............... XX XXXXXXXXXXXXXXXXXXXXXX XX ...............", +".............. XXXX XXXXXXXXXXXXXXXXXXXXXX XXXX ..............", +".............. XXXX XXXXXXXXXXXXXXXXXXXX XXXX ..............", +"............. XXXXX XXXXXXXXXXXXXXXXXXXX XXXXX .............", +"............ XXXXXX XXXXXXXXXXXXXXXXXX XXXXXX ............", +"............ XXXXXXX XXXXXXXXXXXXXXXXXX XXXXXXX ............", +"........... XXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXX ...........", +"........... XXXXXXXXX XXXXXXXXXXXXXX XXXXXXXXX ...........", +"....... . XXXXXXXXXXX XXXXXXXXXX XXXXXXXXXXX . .......", +"..... XXXXXXXXXXXXXX XXXX XXXXXXXXXXXXXX .....", +".... XX XXXXXXXXXXXXXX XXXXXXXXXXXXXX XX ....", +".... XXXX XXXXX XXXXX XXXX ....", +".... XXXX XXXXXXXXXXXX XXXX ....", +".... XX ............ XXXXXXXXXXXX ............ XX ....", +"..... .............. XXXXXXXXXX .............. .....", +"...... ............... XXXXXXXXXX ............... ......", +".......................... XXXXXXXX ..........................", +"........................... XXXXXX ...........................", +"........................... XXXXXX ...........................", +"............................ X X ............................", +"............................. .............................", +"............................ XX ............................", +"............................ XXXX ............................", +"............................ XXXX ............................", +"............................ XX ............................", +"............................. .............................", +".............................. ..............................", +"................................................................", +"................................................................", +"................................................................" +}; diff --git a/pixmaps/cll72.xpm b/pixmaps/cll72.xpm new file mode 100644 index 0000000..143cd94 --- /dev/null +++ b/pixmaps/cll72.xpm @@ -0,0 +1,81 @@ +/* XPM */ +static char *cll72[] = { +/* columns rows colors chars-per-pixel */ +"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 ...............................", +"................................. ................................", +".................................. ................................", +"................................. XX ................................", +"................................ XXX ...............................", +"................................ XXXXX ...............................", +"............................... XXXXX ..............................", +"......... ................ XXXXXXX ..............................", +"........ ............... XXXXXXXXX ............... .........", +"....... XXX ............. XXXXXXXXX .............. ........", +"....... XXXXX ............ XXXXXXXXXXX ............ XXX .......", +"....... XXXXX XXXXXXXXXXX XXXXX .......", +"....... XXXXX XXXXXXXXXXXXX XXXXX .......", +"....... XXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX .......", +"........ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX .......", +"......... XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXX ........", +".............. XXXXXXXXXXXXXXX XXXXXXXXXXXXXX .........", +".............. XXXXXXXXXXXXX XXXXX XXXXXXXXXXXXX ..............", +"............... XXXXXXXXXXXX XXXXXXXXX XXXXXXXXXXX ..............", +"............... XXXXXXXXXX XXXXXXXXXXX XXXXXXXXXX ...............", +"................ XXXXXXXXX XXXXXXXXXXXXX XXXXXXXX ...............", +"................ XXXXXXXX XXXXXXXXXXXXXX XXXXXXX ................", +"................. XXXXXXX XXXXXXXXXXXXXXXX XXXXXX ................", +"................. XXXXXX XXXXXXXXXXXXXXXXX XXXXX .................", +".................. XXXXX XXXXXXXXXXXXXXXXXX XXXX .................", +".................. XXXX XXXXXXXXXXXXXXXXXXX XXXX ..................", +"................... XXX XXXXXXXXXXXXXXXXXXX XXX ..................", +"................... XXX XXXXXXXXXXXXXXXXXXX XXX ...................", +".................. XXXX XXXXXXXXXXXXXXXXXXX XXXX ..................", +".................. XXXXX XXXXXXXXXXXXXXXXX XXXX ..................", +"................. XXXXXX XXXXXXXXXXXXXXXXX XXXXXX .................", +"................. XXXXXXX XXXXXXXXXXXXXXXXX XXXXXX .................", +"................ XXXXXXXX XXXXXXXXXXXXXXX XXXXXXXX ................", +"............... XXXXXXXXX XXXXXXXXXXXXX XXXXXXXX ................", +"............... XXXXXXXXXX XXXXXXXXXXX XXXXXXXXX ...............", +".............. XXXXXXXXXXXX XXXXXXXXX XXXXXXXXXXX ...............", +"......... XXXXXXXXXXXXX XXXXX XXXXXXXXXXXXX ...........", +"........ XXXXXXXXXXXXXXX XXXXXXXXXXXXX ..........", +"....... XXX XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXX XXX .........", +"....... XXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX .........", +"....... XXXXX XXXXXXXXXXXXXX XXXXX .........", +"....... XXXXX XXXXXXXXXXXXX XXXXX .........", +"....... XXX ........... XXXXXXXXXXXX .......... XXX .........", +"........ ............. XXXXXXXXXXX ........... ..........", +"......... .............. XXXXXXXXXX ............. ...........", +"............................. XXXXXXXXX .............................", +"............................. XXXXXXXX ..............................", +".............................. XXXXXXX ..............................", +".............................. XXXXXX ...............................", +"............................... XXXXX ...............................", +"............................... XXXX ................................", +"................................ .................................", +"................................ .................................", +"............................... XXX ................................", +"............................... XXXXX ................................", +"............................... XXXXX ................................", +"............................... XXXXX ................................", +"............................... XXX ................................", +"................................ .................................", +"................................. ..................................", +"........................................................................", +"........................................................................", +"........................................................................" +}; diff --git a/pixmaps/convert.c b/pixmaps/convert.c new file mode 100644 index 0000000..dcdcd47 --- /dev/null +++ b/pixmaps/convert.c @@ -0,0 +1,143 @@ +#include + +// [HGM] This program converts the WinBoard monochrome .bmp piece-symbol bitmap files +// to .xpm C-source files suitable for inclusion in xboard as buit-in pixmap. +// It tries all bitmaps in bulk. Run it once in an empty subdirectory 'pixmaps'of the +// root directory of the source tree, and it will fill it with pixmaps. +// It overwrites any pixmaps of the same name that already exist. So if you want to +// keep the pixmaps you already have, move them elsewhere, run convert, and move them back. + + +int sizeList[] = { 21, 25, 29, 33, 37, 40, 45, 49, 54, 58, 64, 72, 80, 87, 95, 108, 116, 129 }; +char *(pieceList[]) = {"p", "n", "b", "r", "q", "f", "e", "as", "c", "w", "m", + "o", "h", "a", "dk", "g", "d", "v", "l", "s", "u", "k", + "wp", "wl", "wn", "ws", "cv", NULL }; +char kindList[] = "sow"; + +void Load(FILE *f, char data[130][130], char*name) +{ + int i, j, k; char h, w, c; + + if(fscanf(f, "BM%c", &i) != 1) { printf("%s does not have bitmap format\n", name); 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); // no checking is done to see if the format is as we expect!!! + +// printf("h=%d, w=%d\n", h, w); + for(i=0; i=0; i--) { + fprintf(f, "\"%s\"%s\n", data[i], i==0 ? "" : ","); + } + fprintf(f, "};\n"); + + fclose(f); +} + + +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]; + FILE *f; + + 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) + + sprintf(buf, "../winboard/bitmaps/%s%d%c.bmp", pieceList[p], sizeList[s], 'o'); + printf("try %s\n", buf); + f = fopen(buf, "rb"); + if(f == NULL) continue; + Load(f, oData, buf); + + sprintf(buf, "../winboard/bitmaps/%s%d%c.bmp", pieceList[p], sizeList[s], 's'); + f = fopen(buf, "rb"); + if(f == NULL) continue; + Load(f, sData, buf); + + sprintf(buf, "../winboard/bitmaps/%s%d%c.bmp", pieceList[p], sizeList[s], 'w'); + if(pieceList[p][0]=='w') + sprintf(buf, "../winboard/bitmaps/%s%d%c.bmp", "w", sizeList[s], 'w'); + f = fopen(buf, "rb"); + if(f == NULL) continue; + Load(f, wData, buf); + + printf("%s loaded\n", buf); + // construct pixmaps as character arrays + d = sizeList[s]; + for(i=0; i /* required for all Windows applications */ - -#include -#include -#include - -#include "common.h" -#include "winboard.h" -#include "frontend.h" -#include "backend.h" - -#define INIFILE_PREFIX "polyglot_" -#define INIFILE_SUFFIX_1ST "1st" -#define INIFILE_SUFFIX_2ND "2nd" -#define INIFILE_EXT ".ini" - -static const char * GetIniFilename( ChessProgramState * cps ) -{ - return cps == &first ? INIFILE_PREFIX INIFILE_SUFFIX_1ST INIFILE_EXT : INIFILE_PREFIX INIFILE_SUFFIX_2ND INIFILE_EXT; - } - -void InitEngineUCI( const char * iniDir, ChessProgramState * cps ) -{ - if( cps->isUCI ) { - const char * iniFileName = GetIniFilename( cps ); - char polyglotIniFile[ MAX_PATH ]; - FILE * f; - - /* Build name of initialization file */ - if( strchr( iniDir, ' ' ) != NULL ) { - char iniDirShort[ MAX_PATH ]; - - GetShortPathName( iniDir, iniDirShort, sizeof(iniDirShort) ); - - strcpy( polyglotIniFile, iniDirShort ); - } - else { - strcpy( polyglotIniFile, iniDir ); - } - - strcat( polyglotIniFile, "\\" ); - strcat( polyglotIniFile, iniFileName ); - - /* Create initialization file */ - f = fopen( polyglotIniFile, "w" ); - - if( f != NULL ) { - fprintf( f, "[Polyglot]\n" ); - - if( cps->dir != 0 && strlen(cps->dir) > 0 ) { - fprintf( f, "EngineDir = %s\n", cps->dir ); - } - - if( cps->program != 0 && strlen(cps->program) > 0 ) { - fprintf( f, "EngineCommand = %s\n", cps->program ); - } - - fprintf( f, "Book = %s\n", appData.usePolyglotBook ? "true" : "false" ); - fprintf( f, "BookFile = %s\n", appData.polyglotBook ); - - fprintf( f, "[Engine]\n" ); - fprintf( f, "Hash = %d\n", appData.defaultHashSize ); - - fprintf( f, "NalimovPath = %s\n", appData.defaultPathEGTB ); - fprintf( f, "NalimovCache = %d\n", appData.defaultCacheSizeEGTB ); - - fprintf( f, "OwnBook = %s\n", cps->hasOwnBookUCI ? "true" : "false" ); - - fclose( f ); - - /* Replace program with properly configured Polyglot */ - cps->dir = appData.polyglotDir; - cps->program = (char *) malloc( strlen(polyglotIniFile) + 32 ); - strcpy( cps->program, "polyglot " ); - strcat( cps->program, polyglotIniFile ); - } - } -} +/* + * UCI support thru Polyglot + * + * Author: Alessandro Scotti (Jan 2006) + * + * ------------------------------------------------------------------------ + * 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 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., 675 Mass Ave, Cambridge, MA 02139, USA. + * ------------------------------------------------------------------------ + */ +#include "config.h" + +#include /* required for all Windows applications */ + +#include +#include +#include + +#include "common.h" +#include "winboard.h" +#include "frontend.h" +#include "backend.h" + +#define INIFILE_PREFIX "polyglot_" +#define INIFILE_SUFFIX_1ST "1st" +#define INIFILE_SUFFIX_2ND "2nd" +#define INIFILE_EXT ".ini" + +static const char * GetIniFilename( ChessProgramState * cps ) +{ + return cps == &first ? INIFILE_PREFIX INIFILE_SUFFIX_1ST INIFILE_EXT : INIFILE_PREFIX INIFILE_SUFFIX_2ND INIFILE_EXT; + } + +void InitEngineUCI( const char * iniDir, ChessProgramState * cps ) +{ + if( cps->isUCI ) { + const char * iniFileName = GetIniFilename( cps ); + char polyglotIniFile[ MAX_PATH ]; + FILE * f; + + /* Build name of initialization file */ + if( strchr( iniDir, ' ' ) != NULL ) { + char iniDirShort[ MAX_PATH ]; + + GetShortPathName( iniDir, iniDirShort, sizeof(iniDirShort) ); + + strcpy( polyglotIniFile, iniDirShort ); + } + else { + strcpy( polyglotIniFile, iniDir ); + } + + strcat( polyglotIniFile, "\\" ); + strcat( polyglotIniFile, iniFileName ); + + /* Create initialization file */ + f = fopen( polyglotIniFile, "w" ); + + if( f != NULL ) { + fprintf( f, "[Polyglot]\n" ); + + if( cps->dir != 0 && strlen(cps->dir) > 0 ) { + fprintf( f, "EngineDir = %s\n", cps->dir ); + } + + if( cps->program != 0 && strlen(cps->program) > 0 ) { + fprintf( f, "EngineCommand = %s\n", cps->program ); + } + + fprintf( f, "Book = %s\n", appData.usePolyglotBook ? "true" : "false" ); + fprintf( f, "BookFile = %s\n", appData.polyglotBook ); + + fprintf( f, "[Engine]\n" ); + fprintf( f, "Hash = %d\n", appData.defaultHashSize ); + + fprintf( f, "NalimovPath = %s\n", appData.defaultPathEGTB ); + fprintf( f, "NalimovCache = %d\n", appData.defaultCacheSizeEGTB ); + + fprintf( f, "OwnBook = %s\n", cps->hasOwnBookUCI ? "true" : "false" ); + + fclose( f ); + + /* Replace program with properly configured Polyglot */ + cps->dir = appData.polyglotDir; + cps->program = (char *) malloc( strlen(polyglotIniFile) + 32 ); + strcpy( cps->program, "polyglot " ); + strcat( cps->program, polyglotIniFile ); + } + } +} diff --git a/winboard/bitmaps/a33o.bmp b/winboard/bitmaps/a33o.bmp new file mode 100644 index 0000000..fcd6740 Binary files /dev/null and b/winboard/bitmaps/a33o.bmp differ diff --git a/winboard/bitmaps/a33s.bmp b/winboard/bitmaps/a33s.bmp new file mode 100644 index 0000000..2a1bb7d Binary files /dev/null and b/winboard/bitmaps/a33s.bmp differ diff --git a/winboard/bitmaps/a33w.bmp b/winboard/bitmaps/a33w.bmp new file mode 100644 index 0000000..19598b4 Binary files /dev/null and b/winboard/bitmaps/a33w.bmp differ diff --git a/winboard/bitmaps/a37o.bmp b/winboard/bitmaps/a37o.bmp new file mode 100644 index 0000000..dfdc7ff Binary files /dev/null and b/winboard/bitmaps/a37o.bmp differ diff --git a/winboard/bitmaps/a37s.bmp b/winboard/bitmaps/a37s.bmp new file mode 100644 index 0000000..ef1b222 Binary files /dev/null and b/winboard/bitmaps/a37s.bmp differ diff --git a/winboard/bitmaps/a37w.bmp b/winboard/bitmaps/a37w.bmp new file mode 100644 index 0000000..e0ed7cd Binary files /dev/null and b/winboard/bitmaps/a37w.bmp differ diff --git a/winboard/bitmaps/a40o.bmp b/winboard/bitmaps/a40o.bmp new file mode 100644 index 0000000..7545fdd Binary files /dev/null and b/winboard/bitmaps/a40o.bmp differ diff --git a/winboard/bitmaps/a40s.bmp b/winboard/bitmaps/a40s.bmp new file mode 100644 index 0000000..d2a67d6 Binary files /dev/null and b/winboard/bitmaps/a40s.bmp differ diff --git a/winboard/bitmaps/a40w.bmp b/winboard/bitmaps/a40w.bmp new file mode 100644 index 0000000..668ec31 Binary files /dev/null and b/winboard/bitmaps/a40w.bmp differ diff --git a/winboard/bitmaps/a45o.bmp b/winboard/bitmaps/a45o.bmp new file mode 100644 index 0000000..e6fbc98 Binary files /dev/null and b/winboard/bitmaps/a45o.bmp differ diff --git a/winboard/bitmaps/a45s.bmp b/winboard/bitmaps/a45s.bmp new file mode 100644 index 0000000..b6f36ae Binary files /dev/null and b/winboard/bitmaps/a45s.bmp differ diff --git a/winboard/bitmaps/a45w.bmp b/winboard/bitmaps/a45w.bmp new file mode 100644 index 0000000..1b84946 Binary files /dev/null and b/winboard/bitmaps/a45w.bmp differ diff --git a/winboard/bitmaps/a49c.bmp b/winboard/bitmaps/a49c.bmp new file mode 100644 index 0000000..19b739a Binary files /dev/null and b/winboard/bitmaps/a49c.bmp differ diff --git a/winboard/bitmaps/a49o.bmp b/winboard/bitmaps/a49o.bmp new file mode 100644 index 0000000..911d9fa Binary files /dev/null and b/winboard/bitmaps/a49o.bmp differ diff --git a/winboard/bitmaps/a49s.bmp b/winboard/bitmaps/a49s.bmp new file mode 100644 index 0000000..7b3836f Binary files /dev/null and b/winboard/bitmaps/a49s.bmp differ diff --git a/winboard/bitmaps/a49w.bmp b/winboard/bitmaps/a49w.bmp new file mode 100644 index 0000000..3a1b815 Binary files /dev/null and b/winboard/bitmaps/a49w.bmp differ diff --git a/winboard/bitmaps/a54o.bmp b/winboard/bitmaps/a54o.bmp new file mode 100644 index 0000000..5281a27 Binary files /dev/null and b/winboard/bitmaps/a54o.bmp differ diff --git a/winboard/bitmaps/a54s.bmp b/winboard/bitmaps/a54s.bmp new file mode 100644 index 0000000..a7a2339 Binary files /dev/null and b/winboard/bitmaps/a54s.bmp differ diff --git a/winboard/bitmaps/a54w.bmp b/winboard/bitmaps/a54w.bmp new file mode 100644 index 0000000..c0208da Binary files /dev/null and b/winboard/bitmaps/a54w.bmp differ diff --git a/winboard/bitmaps/a58o.bmp b/winboard/bitmaps/a58o.bmp new file mode 100644 index 0000000..1661057 Binary files /dev/null and b/winboard/bitmaps/a58o.bmp differ diff --git a/winboard/bitmaps/a58s.bmp b/winboard/bitmaps/a58s.bmp new file mode 100644 index 0000000..e42dded Binary files /dev/null and b/winboard/bitmaps/a58s.bmp differ diff --git a/winboard/bitmaps/a58w.bmp b/winboard/bitmaps/a58w.bmp new file mode 100644 index 0000000..6827e85 Binary files /dev/null and b/winboard/bitmaps/a58w.bmp differ diff --git a/winboard/bitmaps/a64o.bmp b/winboard/bitmaps/a64o.bmp new file mode 100644 index 0000000..4c72b61 Binary files /dev/null and b/winboard/bitmaps/a64o.bmp differ diff --git a/winboard/bitmaps/a64s.bmp b/winboard/bitmaps/a64s.bmp new file mode 100644 index 0000000..d8f467b Binary files /dev/null and b/winboard/bitmaps/a64s.bmp differ diff --git a/winboard/bitmaps/a64w.bmp b/winboard/bitmaps/a64w.bmp new file mode 100644 index 0000000..a7fe420 Binary files /dev/null and b/winboard/bitmaps/a64w.bmp differ diff --git a/winboard/bitmaps/a72o.bmp b/winboard/bitmaps/a72o.bmp new file mode 100644 index 0000000..ea1680f Binary files /dev/null and b/winboard/bitmaps/a72o.bmp differ diff --git a/winboard/bitmaps/a72s.bmp b/winboard/bitmaps/a72s.bmp new file mode 100644 index 0000000..6250378 Binary files /dev/null and b/winboard/bitmaps/a72s.bmp differ diff --git a/winboard/bitmaps/a72w.bmp b/winboard/bitmaps/a72w.bmp new file mode 100644 index 0000000..e041e34 Binary files /dev/null and b/winboard/bitmaps/a72w.bmp differ diff --git a/winboard/bitmaps/analyze2_14.ico b/winboard/bitmaps/analyze2_14.ico new file mode 100644 index 0000000..8f725f1 Binary files /dev/null and b/winboard/bitmaps/analyze2_14.ico differ diff --git a/winboard/bitmaps/analyze_14.ico b/winboard/bitmaps/analyze_14.ico new file mode 100644 index 0000000..f25d0fb Binary files /dev/null and b/winboard/bitmaps/analyze_14.ico differ diff --git a/winboard/bitmaps/as33o.bmp b/winboard/bitmaps/as33o.bmp new file mode 100644 index 0000000..bae55ff Binary files /dev/null and b/winboard/bitmaps/as33o.bmp differ diff --git a/winboard/bitmaps/as33s.bmp b/winboard/bitmaps/as33s.bmp new file mode 100644 index 0000000..7d028dc Binary files /dev/null and b/winboard/bitmaps/as33s.bmp differ diff --git a/winboard/bitmaps/as33w.bmp b/winboard/bitmaps/as33w.bmp new file mode 100644 index 0000000..1f8a3a9 Binary files /dev/null and b/winboard/bitmaps/as33w.bmp differ diff --git a/winboard/bitmaps/as45o.bmp b/winboard/bitmaps/as45o.bmp new file mode 100644 index 0000000..e01dc8d Binary files /dev/null and b/winboard/bitmaps/as45o.bmp differ diff --git a/winboard/bitmaps/as45s.bmp b/winboard/bitmaps/as45s.bmp new file mode 100644 index 0000000..f9df7c7 Binary files /dev/null and b/winboard/bitmaps/as45s.bmp differ diff --git a/winboard/bitmaps/as45w.bmp b/winboard/bitmaps/as45w.bmp new file mode 100644 index 0000000..359c061 Binary files /dev/null and b/winboard/bitmaps/as45w.bmp differ diff --git a/winboard/bitmaps/as49o.bmp b/winboard/bitmaps/as49o.bmp new file mode 100644 index 0000000..de6625a Binary files /dev/null and b/winboard/bitmaps/as49o.bmp differ diff --git a/winboard/bitmaps/as49s.bmp b/winboard/bitmaps/as49s.bmp new file mode 100644 index 0000000..049ad53 Binary files /dev/null and b/winboard/bitmaps/as49s.bmp differ diff --git a/winboard/bitmaps/as49w.bmp b/winboard/bitmaps/as49w.bmp new file mode 100644 index 0000000..cfea22a Binary files /dev/null and b/winboard/bitmaps/as49w.bmp differ diff --git a/winboard/bitmaps/as72o.bmp b/winboard/bitmaps/as72o.bmp new file mode 100644 index 0000000..fe967e9 Binary files /dev/null and b/winboard/bitmaps/as72o.bmp differ diff --git a/winboard/bitmaps/as72s.bmp b/winboard/bitmaps/as72s.bmp new file mode 100644 index 0000000..d1dcc7f Binary files /dev/null and b/winboard/bitmaps/as72s.bmp differ diff --git a/winboard/bitmaps/as72w.bmp b/winboard/bitmaps/as72w.bmp new file mode 100644 index 0000000..ad07b7e Binary files /dev/null and b/winboard/bitmaps/as72w.bmp differ diff --git a/winboard/bitmaps/baloon_14.ico b/winboard/bitmaps/baloon_14.ico new file mode 100644 index 0000000..dfe056f Binary files /dev/null and b/winboard/bitmaps/baloon_14.ico differ diff --git a/winboard/bitmaps/bas.gif b/winboard/bitmaps/bas.gif new file mode 100644 index 0000000..7376f7e Binary files /dev/null and b/winboard/bitmaps/bas.gif differ diff --git a/winboard/bitmaps/bcv.gif b/winboard/bitmaps/bcv.gif new file mode 100644 index 0000000..6576cf8 Binary files /dev/null and b/winboard/bitmaps/bcv.gif differ diff --git a/winboard/bitmaps/bitmaps.h b/winboard/bitmaps/bitmaps.h new file mode 100644 index 0000000..86a0c08 --- /dev/null +++ b/winboard/bitmaps/bitmaps.h @@ -0,0 +1,367 @@ +/* + * bitmaps.h - Include bitmap files for pieces and icons + * $Id: bitmaps.h,v 2.1 2003/10/27 19:21:01 mann Exp $ + * + * Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts. + * Enhancements Copyright 1992-95 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: + * ------------------------------------------------------------------------ + * 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 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * ------------------------------------------------------------------------ + * + * 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 new file mode 100644 index 0000000..9661f7c Binary files /dev/null and b/winboard/bitmaps/black_14.ico differ diff --git a/winboard/bitmaps/c33o.bmp b/winboard/bitmaps/c33o.bmp new file mode 100644 index 0000000..d2fb0ff Binary files /dev/null and b/winboard/bitmaps/c33o.bmp differ diff --git a/winboard/bitmaps/c33s.bmp b/winboard/bitmaps/c33s.bmp new file mode 100644 index 0000000..895e0a8 Binary files /dev/null and b/winboard/bitmaps/c33s.bmp differ diff --git a/winboard/bitmaps/c33w.bmp b/winboard/bitmaps/c33w.bmp new file mode 100644 index 0000000..057bca0 Binary files /dev/null and b/winboard/bitmaps/c33w.bmp differ diff --git a/winboard/bitmaps/c37o.bmp b/winboard/bitmaps/c37o.bmp new file mode 100644 index 0000000..882afe0 Binary files /dev/null and b/winboard/bitmaps/c37o.bmp differ diff --git a/winboard/bitmaps/c37s.bmp b/winboard/bitmaps/c37s.bmp new file mode 100644 index 0000000..6f3b87b Binary files /dev/null and b/winboard/bitmaps/c37s.bmp differ diff --git a/winboard/bitmaps/c37w.bmp b/winboard/bitmaps/c37w.bmp new file mode 100644 index 0000000..f7e076d Binary files /dev/null and b/winboard/bitmaps/c37w.bmp differ diff --git a/winboard/bitmaps/c40o.bmp b/winboard/bitmaps/c40o.bmp new file mode 100644 index 0000000..b5677fc Binary files /dev/null and b/winboard/bitmaps/c40o.bmp differ diff --git a/winboard/bitmaps/c40s.bmp b/winboard/bitmaps/c40s.bmp new file mode 100644 index 0000000..7af0713 Binary files /dev/null and b/winboard/bitmaps/c40s.bmp differ diff --git a/winboard/bitmaps/c40w.bmp b/winboard/bitmaps/c40w.bmp new file mode 100644 index 0000000..a0b8d15 Binary files /dev/null and b/winboard/bitmaps/c40w.bmp differ diff --git a/winboard/bitmaps/c45o.bmp b/winboard/bitmaps/c45o.bmp new file mode 100644 index 0000000..971b7d0 Binary files /dev/null and b/winboard/bitmaps/c45o.bmp differ diff --git a/winboard/bitmaps/c45s.bmp b/winboard/bitmaps/c45s.bmp new file mode 100644 index 0000000..775ac47 Binary files /dev/null and b/winboard/bitmaps/c45s.bmp differ diff --git a/winboard/bitmaps/c45w.bmp b/winboard/bitmaps/c45w.bmp new file mode 100644 index 0000000..3b9687c Binary files /dev/null and b/winboard/bitmaps/c45w.bmp differ diff --git a/winboard/bitmaps/c49o.bmp b/winboard/bitmaps/c49o.bmp new file mode 100644 index 0000000..fd470a9 Binary files /dev/null and b/winboard/bitmaps/c49o.bmp differ diff --git a/winboard/bitmaps/c49s.bmp b/winboard/bitmaps/c49s.bmp new file mode 100644 index 0000000..bac2d94 Binary files /dev/null and b/winboard/bitmaps/c49s.bmp differ diff --git a/winboard/bitmaps/c49w.bmp b/winboard/bitmaps/c49w.bmp new file mode 100644 index 0000000..069a524 Binary files /dev/null and b/winboard/bitmaps/c49w.bmp differ diff --git a/winboard/bitmaps/c54o.bmp b/winboard/bitmaps/c54o.bmp new file mode 100644 index 0000000..6a597db Binary files /dev/null and b/winboard/bitmaps/c54o.bmp differ diff --git a/winboard/bitmaps/c54s.bmp b/winboard/bitmaps/c54s.bmp new file mode 100644 index 0000000..4571271 Binary files /dev/null and b/winboard/bitmaps/c54s.bmp differ diff --git a/winboard/bitmaps/c54w.bmp b/winboard/bitmaps/c54w.bmp new file mode 100644 index 0000000..61caf6d Binary files /dev/null and b/winboard/bitmaps/c54w.bmp differ diff --git a/winboard/bitmaps/c58o.bmp b/winboard/bitmaps/c58o.bmp new file mode 100644 index 0000000..15d110e Binary files /dev/null and b/winboard/bitmaps/c58o.bmp differ diff --git a/winboard/bitmaps/c58s.bmp b/winboard/bitmaps/c58s.bmp new file mode 100644 index 0000000..0bb3cf9 Binary files /dev/null and b/winboard/bitmaps/c58s.bmp differ diff --git a/winboard/bitmaps/c58w.bmp b/winboard/bitmaps/c58w.bmp new file mode 100644 index 0000000..41f05cf Binary files /dev/null and b/winboard/bitmaps/c58w.bmp differ diff --git a/winboard/bitmaps/c64o.bmp b/winboard/bitmaps/c64o.bmp new file mode 100644 index 0000000..6edd01e Binary files /dev/null and b/winboard/bitmaps/c64o.bmp differ diff --git a/winboard/bitmaps/c64s.bmp b/winboard/bitmaps/c64s.bmp new file mode 100644 index 0000000..6dac16f Binary files /dev/null and b/winboard/bitmaps/c64s.bmp differ diff --git a/winboard/bitmaps/c64w.bmp b/winboard/bitmaps/c64w.bmp new file mode 100644 index 0000000..5c3c8ff Binary files /dev/null and b/winboard/bitmaps/c64w.bmp differ diff --git a/winboard/bitmaps/c72o.bmp b/winboard/bitmaps/c72o.bmp new file mode 100644 index 0000000..28bc14f Binary files /dev/null and b/winboard/bitmaps/c72o.bmp differ diff --git a/winboard/bitmaps/c72s.bmp b/winboard/bitmaps/c72s.bmp new file mode 100644 index 0000000..963afdf Binary files /dev/null and b/winboard/bitmaps/c72s.bmp differ diff --git a/winboard/bitmaps/c72w.bmp b/winboard/bitmaps/c72w.bmp new file mode 100644 index 0000000..d1f773d Binary files /dev/null and b/winboard/bitmaps/c72w.bmp differ diff --git a/winboard/bitmaps/clock_14.ico b/winboard/bitmaps/clock_14.ico new file mode 100644 index 0000000..0785d5c Binary files /dev/null and b/winboard/bitmaps/clock_14.ico differ diff --git a/winboard/bitmaps/convert.c b/winboard/bitmaps/convert.c new file mode 100644 index 0000000..c56cf4e --- /dev/null +++ b/winboard/bitmaps/convert.c @@ -0,0 +1,73 @@ +#include + +// [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 \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>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>(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 new file mode 100644 index 0000000..713a2fc Binary files /dev/null and b/winboard/bitmaps/convert.exe differ diff --git a/winboard/bitmaps/cv33o.bmp b/winboard/bitmaps/cv33o.bmp new file mode 100644 index 0000000..eba036e Binary files /dev/null and b/winboard/bitmaps/cv33o.bmp differ diff --git a/winboard/bitmaps/cv33s.bmp b/winboard/bitmaps/cv33s.bmp new file mode 100644 index 0000000..31f6a45 Binary files /dev/null and b/winboard/bitmaps/cv33s.bmp differ diff --git a/winboard/bitmaps/cv33w.bmp b/winboard/bitmaps/cv33w.bmp new file mode 100644 index 0000000..7a86530 Binary files /dev/null and b/winboard/bitmaps/cv33w.bmp differ diff --git a/winboard/bitmaps/cv37o.bmp b/winboard/bitmaps/cv37o.bmp new file mode 100644 index 0000000..9075dd6 Binary files /dev/null and b/winboard/bitmaps/cv37o.bmp differ diff --git a/winboard/bitmaps/cv37s.bmp b/winboard/bitmaps/cv37s.bmp new file mode 100644 index 0000000..1b31080 Binary files /dev/null and b/winboard/bitmaps/cv37s.bmp differ diff --git a/winboard/bitmaps/cv37w.bmp b/winboard/bitmaps/cv37w.bmp new file mode 100644 index 0000000..abf95b3 Binary files /dev/null and b/winboard/bitmaps/cv37w.bmp differ diff --git a/winboard/bitmaps/cv40o.bmp b/winboard/bitmaps/cv40o.bmp new file mode 100644 index 0000000..7fe8326 Binary files /dev/null and b/winboard/bitmaps/cv40o.bmp differ diff --git a/winboard/bitmaps/cv40s.bmp b/winboard/bitmaps/cv40s.bmp new file mode 100644 index 0000000..bb2065e Binary files /dev/null and b/winboard/bitmaps/cv40s.bmp differ diff --git a/winboard/bitmaps/cv40w.bmp b/winboard/bitmaps/cv40w.bmp new file mode 100644 index 0000000..cc195bb Binary files /dev/null and b/winboard/bitmaps/cv40w.bmp differ diff --git a/winboard/bitmaps/cv45o.bmp b/winboard/bitmaps/cv45o.bmp new file mode 100644 index 0000000..55b4087 Binary files /dev/null and b/winboard/bitmaps/cv45o.bmp differ diff --git a/winboard/bitmaps/cv45s.bmp b/winboard/bitmaps/cv45s.bmp new file mode 100644 index 0000000..22b05b7 Binary files /dev/null and b/winboard/bitmaps/cv45s.bmp differ diff --git a/winboard/bitmaps/cv45w.bmp b/winboard/bitmaps/cv45w.bmp new file mode 100644 index 0000000..250984d Binary files /dev/null and b/winboard/bitmaps/cv45w.bmp differ diff --git a/winboard/bitmaps/cv49o.bmp b/winboard/bitmaps/cv49o.bmp new file mode 100644 index 0000000..95fd748 Binary files /dev/null and b/winboard/bitmaps/cv49o.bmp differ diff --git a/winboard/bitmaps/cv49s.bmp b/winboard/bitmaps/cv49s.bmp new file mode 100644 index 0000000..5fc24b9 Binary files /dev/null and b/winboard/bitmaps/cv49s.bmp differ diff --git a/winboard/bitmaps/cv49w.bmp b/winboard/bitmaps/cv49w.bmp new file mode 100644 index 0000000..cbf8e92 Binary files /dev/null and b/winboard/bitmaps/cv49w.bmp differ diff --git a/winboard/bitmaps/cv54o.bmp b/winboard/bitmaps/cv54o.bmp new file mode 100644 index 0000000..a74cbbb Binary files /dev/null and b/winboard/bitmaps/cv54o.bmp differ diff --git a/winboard/bitmaps/cv54s.bmp b/winboard/bitmaps/cv54s.bmp new file mode 100644 index 0000000..9c5bd8b Binary files /dev/null and b/winboard/bitmaps/cv54s.bmp differ diff --git a/winboard/bitmaps/cv54w.bmp b/winboard/bitmaps/cv54w.bmp new file mode 100644 index 0000000..fff12e3 Binary files /dev/null and b/winboard/bitmaps/cv54w.bmp differ diff --git a/winboard/bitmaps/cv58o.bmp b/winboard/bitmaps/cv58o.bmp new file mode 100644 index 0000000..1622ca5 Binary files /dev/null and b/winboard/bitmaps/cv58o.bmp differ diff --git a/winboard/bitmaps/cv58s.bmp b/winboard/bitmaps/cv58s.bmp new file mode 100644 index 0000000..5b7674d Binary files /dev/null and b/winboard/bitmaps/cv58s.bmp differ diff --git a/winboard/bitmaps/cv58w.bmp b/winboard/bitmaps/cv58w.bmp new file mode 100644 index 0000000..2f37d5b Binary files /dev/null and b/winboard/bitmaps/cv58w.bmp differ diff --git a/winboard/bitmaps/cv64o.bmp b/winboard/bitmaps/cv64o.bmp new file mode 100644 index 0000000..522bb6c Binary files /dev/null and b/winboard/bitmaps/cv64o.bmp differ diff --git a/winboard/bitmaps/cv64s.bmp b/winboard/bitmaps/cv64s.bmp new file mode 100644 index 0000000..1787acd Binary files /dev/null and b/winboard/bitmaps/cv64s.bmp differ diff --git a/winboard/bitmaps/cv64w.bmp b/winboard/bitmaps/cv64w.bmp new file mode 100644 index 0000000..b3e1bfd Binary files /dev/null and b/winboard/bitmaps/cv64w.bmp differ diff --git a/winboard/bitmaps/cv72o.bmp b/winboard/bitmaps/cv72o.bmp new file mode 100644 index 0000000..d72c45d Binary files /dev/null and b/winboard/bitmaps/cv72o.bmp differ diff --git a/winboard/bitmaps/cv72s.bmp b/winboard/bitmaps/cv72s.bmp new file mode 100644 index 0000000..e22fdd5 Binary files /dev/null and b/winboard/bitmaps/cv72s.bmp differ diff --git a/winboard/bitmaps/cv72w.bmp b/winboard/bitmaps/cv72w.bmp new file mode 100644 index 0000000..65e7e1d Binary files /dev/null and b/winboard/bitmaps/cv72w.bmp differ diff --git a/winboard/bitmaps/dk33o.bmp b/winboard/bitmaps/dk33o.bmp new file mode 100644 index 0000000..9b00f94 Binary files /dev/null and b/winboard/bitmaps/dk33o.bmp differ diff --git a/winboard/bitmaps/dk33s.bmp b/winboard/bitmaps/dk33s.bmp new file mode 100644 index 0000000..f1c8bc9 Binary files /dev/null and b/winboard/bitmaps/dk33s.bmp differ diff --git a/winboard/bitmaps/dk33w.bmp b/winboard/bitmaps/dk33w.bmp new file mode 100644 index 0000000..c77c3b2 Binary files /dev/null and b/winboard/bitmaps/dk33w.bmp differ diff --git a/winboard/bitmaps/dk49o.bmp b/winboard/bitmaps/dk49o.bmp new file mode 100644 index 0000000..e3f6f3a Binary files /dev/null and b/winboard/bitmaps/dk49o.bmp differ diff --git a/winboard/bitmaps/dk49s.bmp b/winboard/bitmaps/dk49s.bmp new file mode 100644 index 0000000..46b05b1 Binary files /dev/null and b/winboard/bitmaps/dk49s.bmp differ diff --git a/winboard/bitmaps/dk49w.bmp b/winboard/bitmaps/dk49w.bmp new file mode 100644 index 0000000..4e05b8f Binary files /dev/null and b/winboard/bitmaps/dk49w.bmp differ diff --git a/winboard/bitmaps/dk72o.bmp b/winboard/bitmaps/dk72o.bmp new file mode 100644 index 0000000..e531478 Binary files /dev/null and b/winboard/bitmaps/dk72o.bmp differ diff --git a/winboard/bitmaps/dk72s.bmp b/winboard/bitmaps/dk72s.bmp new file mode 100644 index 0000000..da3d696 Binary files /dev/null and b/winboard/bitmaps/dk72s.bmp differ diff --git a/winboard/bitmaps/dk72w.bmp b/winboard/bitmaps/dk72w.bmp new file mode 100644 index 0000000..66ee835 Binary files /dev/null and b/winboard/bitmaps/dk72w.bmp differ diff --git a/winboard/bitmaps/e129o.bmp b/winboard/bitmaps/e129o.bmp new file mode 100644 index 0000000..f464adf Binary files /dev/null and b/winboard/bitmaps/e129o.bmp differ diff --git a/winboard/bitmaps/e33o.bmp b/winboard/bitmaps/e33o.bmp new file mode 100644 index 0000000..b7f0aac Binary files /dev/null and b/winboard/bitmaps/e33o.bmp differ diff --git a/winboard/bitmaps/e33s.bmp b/winboard/bitmaps/e33s.bmp new file mode 100644 index 0000000..d132c2d Binary files /dev/null and b/winboard/bitmaps/e33s.bmp differ diff --git a/winboard/bitmaps/e33w.bmp b/winboard/bitmaps/e33w.bmp new file mode 100644 index 0000000..2ce9548 Binary files /dev/null and b/winboard/bitmaps/e33w.bmp differ diff --git a/winboard/bitmaps/e49o.bmp b/winboard/bitmaps/e49o.bmp new file mode 100644 index 0000000..ebb5c6b Binary files /dev/null and b/winboard/bitmaps/e49o.bmp differ diff --git a/winboard/bitmaps/e49s.bmp b/winboard/bitmaps/e49s.bmp new file mode 100644 index 0000000..46ffee2 Binary files /dev/null and b/winboard/bitmaps/e49s.bmp differ diff --git a/winboard/bitmaps/e49w.bmp b/winboard/bitmaps/e49w.bmp new file mode 100644 index 0000000..b2f3587 Binary files /dev/null and b/winboard/bitmaps/e49w.bmp differ diff --git a/winboard/bitmaps/e72o.bmp b/winboard/bitmaps/e72o.bmp new file mode 100644 index 0000000..e6c8d83 Binary files /dev/null and b/winboard/bitmaps/e72o.bmp differ diff --git a/winboard/bitmaps/e72s.bmp b/winboard/bitmaps/e72s.bmp new file mode 100644 index 0000000..6d756a5 Binary files /dev/null and b/winboard/bitmaps/e72s.bmp differ diff --git a/winboard/bitmaps/e72w.bmp b/winboard/bitmaps/e72w.bmp new file mode 100644 index 0000000..2339883 Binary files /dev/null and b/winboard/bitmaps/e72w.bmp differ diff --git a/winboard/bitmaps/f33o.bmp b/winboard/bitmaps/f33o.bmp new file mode 100644 index 0000000..588010b Binary files /dev/null and b/winboard/bitmaps/f33o.bmp differ diff --git a/winboard/bitmaps/f33s.bmp b/winboard/bitmaps/f33s.bmp new file mode 100644 index 0000000..6ef112d Binary files /dev/null and b/winboard/bitmaps/f33s.bmp differ diff --git a/winboard/bitmaps/f33w.bmp b/winboard/bitmaps/f33w.bmp new file mode 100644 index 0000000..b7f7069 Binary files /dev/null and b/winboard/bitmaps/f33w.bmp differ diff --git a/winboard/bitmaps/f49o.bmp b/winboard/bitmaps/f49o.bmp new file mode 100644 index 0000000..9653fa6 Binary files /dev/null and b/winboard/bitmaps/f49o.bmp differ diff --git a/winboard/bitmaps/f49s.bmp b/winboard/bitmaps/f49s.bmp new file mode 100644 index 0000000..f85fb56 Binary files /dev/null and b/winboard/bitmaps/f49s.bmp differ diff --git a/winboard/bitmaps/f49w.bmp b/winboard/bitmaps/f49w.bmp new file mode 100644 index 0000000..98f0b16 Binary files /dev/null and b/winboard/bitmaps/f49w.bmp differ diff --git a/winboard/bitmaps/f72o.bmp b/winboard/bitmaps/f72o.bmp new file mode 100644 index 0000000..257c225 Binary files /dev/null and b/winboard/bitmaps/f72o.bmp differ diff --git a/winboard/bitmaps/f72s.bmp b/winboard/bitmaps/f72s.bmp new file mode 100644 index 0000000..271e64f Binary files /dev/null and b/winboard/bitmaps/f72s.bmp differ diff --git a/winboard/bitmaps/f72w.bmp b/winboard/bitmaps/f72w.bmp new file mode 100644 index 0000000..3347e0f Binary files /dev/null and b/winboard/bitmaps/f72w.bmp differ diff --git a/winboard/bitmaps/g33o.bmp b/winboard/bitmaps/g33o.bmp new file mode 100644 index 0000000..6f3cc18 Binary files /dev/null and b/winboard/bitmaps/g33o.bmp differ diff --git a/winboard/bitmaps/g33s.bmp b/winboard/bitmaps/g33s.bmp new file mode 100644 index 0000000..31dd9e8 Binary files /dev/null and b/winboard/bitmaps/g33s.bmp differ diff --git a/winboard/bitmaps/g33w.bmp b/winboard/bitmaps/g33w.bmp new file mode 100644 index 0000000..0c52cea Binary files /dev/null and b/winboard/bitmaps/g33w.bmp differ diff --git a/winboard/bitmaps/g49o.bmp b/winboard/bitmaps/g49o.bmp new file mode 100644 index 0000000..2930420 Binary files /dev/null and b/winboard/bitmaps/g49o.bmp differ diff --git a/winboard/bitmaps/g49s.bmp b/winboard/bitmaps/g49s.bmp new file mode 100644 index 0000000..835cd41 Binary files /dev/null and b/winboard/bitmaps/g49s.bmp differ diff --git a/winboard/bitmaps/g49w.bmp b/winboard/bitmaps/g49w.bmp new file mode 100644 index 0000000..4cf34ac Binary files /dev/null and b/winboard/bitmaps/g49w.bmp differ diff --git a/winboard/bitmaps/g72o.bmp b/winboard/bitmaps/g72o.bmp new file mode 100644 index 0000000..6eb6bcf Binary files /dev/null and b/winboard/bitmaps/g72o.bmp differ diff --git a/winboard/bitmaps/g72s.bmp b/winboard/bitmaps/g72s.bmp new file mode 100644 index 0000000..751be79 Binary files /dev/null and b/winboard/bitmaps/g72s.bmp differ diff --git a/winboard/bitmaps/g72w.bmp b/winboard/bitmaps/g72w.bmp new file mode 100644 index 0000000..aaae0c4 Binary files /dev/null and b/winboard/bitmaps/g72w.bmp differ diff --git a/winboard/bitmaps/h129o.bmp b/winboard/bitmaps/h129o.bmp new file mode 100644 index 0000000..563da93 Binary files /dev/null and b/winboard/bitmaps/h129o.bmp differ diff --git a/winboard/bitmaps/h33o.bmp b/winboard/bitmaps/h33o.bmp new file mode 100644 index 0000000..d811f80 Binary files /dev/null and b/winboard/bitmaps/h33o.bmp differ diff --git a/winboard/bitmaps/h33s.bmp b/winboard/bitmaps/h33s.bmp new file mode 100644 index 0000000..95e5dbe Binary files /dev/null and b/winboard/bitmaps/h33s.bmp differ diff --git a/winboard/bitmaps/h33w.bmp b/winboard/bitmaps/h33w.bmp new file mode 100644 index 0000000..cebb7a3 Binary files /dev/null and b/winboard/bitmaps/h33w.bmp differ diff --git a/winboard/bitmaps/h49o.bmp b/winboard/bitmaps/h49o.bmp new file mode 100644 index 0000000..8ae9967 Binary files /dev/null and b/winboard/bitmaps/h49o.bmp differ diff --git a/winboard/bitmaps/h49s.bmp b/winboard/bitmaps/h49s.bmp new file mode 100644 index 0000000..1ace8fe Binary files /dev/null and b/winboard/bitmaps/h49s.bmp differ diff --git a/winboard/bitmaps/h49w.bmp b/winboard/bitmaps/h49w.bmp new file mode 100644 index 0000000..0163d1e Binary files /dev/null and b/winboard/bitmaps/h49w.bmp differ diff --git a/winboard/bitmaps/h72o.bmp b/winboard/bitmaps/h72o.bmp new file mode 100644 index 0000000..cdef69a Binary files /dev/null and b/winboard/bitmaps/h72o.bmp differ diff --git a/winboard/bitmaps/h72s.bmp b/winboard/bitmaps/h72s.bmp new file mode 100644 index 0000000..44baa80 Binary files /dev/null and b/winboard/bitmaps/h72s.bmp differ diff --git a/winboard/bitmaps/h72w.bmp b/winboard/bitmaps/h72w.bmp new file mode 100644 index 0000000..eac2216 Binary files /dev/null and b/winboard/bitmaps/h72w.bmp differ diff --git a/winboard/bitmaps/l33o.bmp b/winboard/bitmaps/l33o.bmp new file mode 100644 index 0000000..510882b Binary files /dev/null and b/winboard/bitmaps/l33o.bmp differ diff --git a/winboard/bitmaps/l33s.bmp b/winboard/bitmaps/l33s.bmp new file mode 100644 index 0000000..4c1ce81 Binary files /dev/null and b/winboard/bitmaps/l33s.bmp differ diff --git a/winboard/bitmaps/l33w.bmp b/winboard/bitmaps/l33w.bmp new file mode 100644 index 0000000..fff3ec7 Binary files /dev/null and b/winboard/bitmaps/l33w.bmp differ diff --git a/winboard/bitmaps/l37o.bmp b/winboard/bitmaps/l37o.bmp new file mode 100644 index 0000000..473b0f7 Binary files /dev/null and b/winboard/bitmaps/l37o.bmp differ diff --git a/winboard/bitmaps/l37s.bmp b/winboard/bitmaps/l37s.bmp new file mode 100644 index 0000000..5709f68 Binary files /dev/null and b/winboard/bitmaps/l37s.bmp differ diff --git a/winboard/bitmaps/l37w.bmp b/winboard/bitmaps/l37w.bmp new file mode 100644 index 0000000..e9d27fa Binary files /dev/null and b/winboard/bitmaps/l37w.bmp differ diff --git a/winboard/bitmaps/l40o.bmp b/winboard/bitmaps/l40o.bmp new file mode 100644 index 0000000..c97e0f2 Binary files /dev/null and b/winboard/bitmaps/l40o.bmp differ diff --git a/winboard/bitmaps/l40s.bmp b/winboard/bitmaps/l40s.bmp new file mode 100644 index 0000000..50bc67a Binary files /dev/null and b/winboard/bitmaps/l40s.bmp differ diff --git a/winboard/bitmaps/l40w.bmp b/winboard/bitmaps/l40w.bmp new file mode 100644 index 0000000..ca11b56 Binary files /dev/null and b/winboard/bitmaps/l40w.bmp differ diff --git a/winboard/bitmaps/l45o.bmp b/winboard/bitmaps/l45o.bmp new file mode 100644 index 0000000..757f9cc Binary files /dev/null and b/winboard/bitmaps/l45o.bmp differ diff --git a/winboard/bitmaps/l45s.bmp b/winboard/bitmaps/l45s.bmp new file mode 100644 index 0000000..72e451b Binary files /dev/null and b/winboard/bitmaps/l45s.bmp differ diff --git a/winboard/bitmaps/l45w.bmp b/winboard/bitmaps/l45w.bmp new file mode 100644 index 0000000..9b2050f Binary files /dev/null and b/winboard/bitmaps/l45w.bmp differ diff --git a/winboard/bitmaps/l49o.bmp b/winboard/bitmaps/l49o.bmp new file mode 100644 index 0000000..4a83007 Binary files /dev/null and b/winboard/bitmaps/l49o.bmp differ diff --git a/winboard/bitmaps/l49s.bmp b/winboard/bitmaps/l49s.bmp new file mode 100644 index 0000000..9dbea26 Binary files /dev/null and b/winboard/bitmaps/l49s.bmp differ diff --git a/winboard/bitmaps/l49w.bmp b/winboard/bitmaps/l49w.bmp new file mode 100644 index 0000000..da13b66 Binary files /dev/null and b/winboard/bitmaps/l49w.bmp differ diff --git a/winboard/bitmaps/l54o.bmp b/winboard/bitmaps/l54o.bmp new file mode 100644 index 0000000..4fc6484 Binary files /dev/null and b/winboard/bitmaps/l54o.bmp differ diff --git a/winboard/bitmaps/l54s.bmp b/winboard/bitmaps/l54s.bmp new file mode 100644 index 0000000..7abf49d Binary files /dev/null and b/winboard/bitmaps/l54s.bmp differ diff --git a/winboard/bitmaps/l54w.bmp b/winboard/bitmaps/l54w.bmp new file mode 100644 index 0000000..2ba36b8 Binary files /dev/null and b/winboard/bitmaps/l54w.bmp differ diff --git a/winboard/bitmaps/l58o.bmp b/winboard/bitmaps/l58o.bmp new file mode 100644 index 0000000..584a038 Binary files /dev/null and b/winboard/bitmaps/l58o.bmp differ diff --git a/winboard/bitmaps/l58s.bmp b/winboard/bitmaps/l58s.bmp new file mode 100644 index 0000000..1c7ba69 Binary files /dev/null and b/winboard/bitmaps/l58s.bmp differ diff --git a/winboard/bitmaps/l58w.bmp b/winboard/bitmaps/l58w.bmp new file mode 100644 index 0000000..2ec0f44 Binary files /dev/null and b/winboard/bitmaps/l58w.bmp differ diff --git a/winboard/bitmaps/l64o.bmp b/winboard/bitmaps/l64o.bmp new file mode 100644 index 0000000..dcd5a4c Binary files /dev/null and b/winboard/bitmaps/l64o.bmp differ diff --git a/winboard/bitmaps/l64s.bmp b/winboard/bitmaps/l64s.bmp new file mode 100644 index 0000000..0bdc5bb Binary files /dev/null and b/winboard/bitmaps/l64s.bmp differ diff --git a/winboard/bitmaps/l64w.bmp b/winboard/bitmaps/l64w.bmp new file mode 100644 index 0000000..80342c3 Binary files /dev/null and b/winboard/bitmaps/l64w.bmp differ diff --git a/winboard/bitmaps/l72o.bmp b/winboard/bitmaps/l72o.bmp new file mode 100644 index 0000000..130cbfd Binary files /dev/null and b/winboard/bitmaps/l72o.bmp differ diff --git a/winboard/bitmaps/l72s.bmp b/winboard/bitmaps/l72s.bmp new file mode 100644 index 0000000..798e908 Binary files /dev/null and b/winboard/bitmaps/l72s.bmp differ diff --git a/winboard/bitmaps/l72w.bmp b/winboard/bitmaps/l72w.bmp new file mode 100644 index 0000000..6914cb1 Binary files /dev/null and b/winboard/bitmaps/l72w.bmp differ diff --git a/winboard/bitmaps/m129o.bmp b/winboard/bitmaps/m129o.bmp new file mode 100644 index 0000000..243ef28 Binary files /dev/null and b/winboard/bitmaps/m129o.bmp differ diff --git a/winboard/bitmaps/m33o.bmp b/winboard/bitmaps/m33o.bmp new file mode 100644 index 0000000..313e998 Binary files /dev/null and b/winboard/bitmaps/m33o.bmp differ diff --git a/winboard/bitmaps/m33s.bmp b/winboard/bitmaps/m33s.bmp new file mode 100644 index 0000000..e2571b6 Binary files /dev/null and b/winboard/bitmaps/m33s.bmp differ diff --git a/winboard/bitmaps/m33w.bmp b/winboard/bitmaps/m33w.bmp new file mode 100644 index 0000000..110f29e Binary files /dev/null and b/winboard/bitmaps/m33w.bmp differ diff --git a/winboard/bitmaps/m49o.bmp b/winboard/bitmaps/m49o.bmp new file mode 100644 index 0000000..a70fb3e Binary files /dev/null and b/winboard/bitmaps/m49o.bmp differ diff --git a/winboard/bitmaps/m49s.bmp b/winboard/bitmaps/m49s.bmp new file mode 100644 index 0000000..516ef04 Binary files /dev/null and b/winboard/bitmaps/m49s.bmp differ diff --git a/winboard/bitmaps/m49w.bmp b/winboard/bitmaps/m49w.bmp new file mode 100644 index 0000000..eaa0795 Binary files /dev/null and b/winboard/bitmaps/m49w.bmp differ diff --git a/winboard/bitmaps/m72o.bmp b/winboard/bitmaps/m72o.bmp new file mode 100644 index 0000000..1e1ad2a Binary files /dev/null and b/winboard/bitmaps/m72o.bmp differ diff --git a/winboard/bitmaps/m72s.bmp b/winboard/bitmaps/m72s.bmp new file mode 100644 index 0000000..e9ac763 Binary files /dev/null and b/winboard/bitmaps/m72s.bmp differ diff --git a/winboard/bitmaps/m72w.bmp b/winboard/bitmaps/m72w.bmp new file mode 100644 index 0000000..a1958ea Binary files /dev/null and b/winboard/bitmaps/m72w.bmp differ diff --git a/winboard/bitmaps/ni49o.bmp b/winboard/bitmaps/ni49o.bmp new file mode 100644 index 0000000..42f9021 Binary files /dev/null and b/winboard/bitmaps/ni49o.bmp differ diff --git a/winboard/bitmaps/ni49s.bmp b/winboard/bitmaps/ni49s.bmp new file mode 100644 index 0000000..dbb4397 Binary files /dev/null and b/winboard/bitmaps/ni49s.bmp differ diff --git a/winboard/bitmaps/ni49w.bmp b/winboard/bitmaps/ni49w.bmp new file mode 100644 index 0000000..7964c14 Binary files /dev/null and b/winboard/bitmaps/ni49w.bmp differ diff --git a/winboard/bitmaps/ni72o.bmp b/winboard/bitmaps/ni72o.bmp new file mode 100644 index 0000000..fe4bd69 Binary files /dev/null and b/winboard/bitmaps/ni72o.bmp differ diff --git a/winboard/bitmaps/ni72s.bmp b/winboard/bitmaps/ni72s.bmp new file mode 100644 index 0000000..644a54b Binary files /dev/null and b/winboard/bitmaps/ni72s.bmp differ diff --git a/winboard/bitmaps/ni72w.bmp b/winboard/bitmaps/ni72w.bmp new file mode 100644 index 0000000..81cc086 Binary files /dev/null and b/winboard/bitmaps/ni72w.bmp differ diff --git a/winboard/bitmaps/o33o.bmp b/winboard/bitmaps/o33o.bmp new file mode 100644 index 0000000..667dc83 Binary files /dev/null and b/winboard/bitmaps/o33o.bmp differ diff --git a/winboard/bitmaps/o33s.bmp b/winboard/bitmaps/o33s.bmp new file mode 100644 index 0000000..a063095 Binary files /dev/null and b/winboard/bitmaps/o33s.bmp differ diff --git a/winboard/bitmaps/o33w.bmp b/winboard/bitmaps/o33w.bmp new file mode 100644 index 0000000..d782bd5 Binary files /dev/null and b/winboard/bitmaps/o33w.bmp differ diff --git a/winboard/bitmaps/o49o.bmp b/winboard/bitmaps/o49o.bmp new file mode 100644 index 0000000..7cefe71 Binary files /dev/null and b/winboard/bitmaps/o49o.bmp differ diff --git a/winboard/bitmaps/o49s.bmp b/winboard/bitmaps/o49s.bmp new file mode 100644 index 0000000..61e191f Binary files /dev/null and b/winboard/bitmaps/o49s.bmp differ diff --git a/winboard/bitmaps/o49w.bmp b/winboard/bitmaps/o49w.bmp new file mode 100644 index 0000000..a4092ee Binary files /dev/null and b/winboard/bitmaps/o49w.bmp differ diff --git a/winboard/bitmaps/o72o.bmp b/winboard/bitmaps/o72o.bmp new file mode 100644 index 0000000..f0d0d52 Binary files /dev/null and b/winboard/bitmaps/o72o.bmp differ diff --git a/winboard/bitmaps/o72s.bmp b/winboard/bitmaps/o72s.bmp new file mode 100644 index 0000000..f9aa0ff Binary files /dev/null and b/winboard/bitmaps/o72s.bmp differ diff --git a/winboard/bitmaps/o72w.bmp b/winboard/bitmaps/o72w.bmp new file mode 100644 index 0000000..3e557be Binary files /dev/null and b/winboard/bitmaps/o72w.bmp differ diff --git a/winboard/bitmaps/ponder_14.ico b/winboard/bitmaps/ponder_14.ico new file mode 100644 index 0000000..484deaa Binary files /dev/null and b/winboard/bitmaps/ponder_14.ico differ diff --git a/winboard/bitmaps/s49o.bmp b/winboard/bitmaps/s49o.bmp new file mode 100644 index 0000000..e6755c9 Binary files /dev/null and b/winboard/bitmaps/s49o.bmp differ diff --git a/winboard/bitmaps/s49s.bmp b/winboard/bitmaps/s49s.bmp new file mode 100644 index 0000000..0f0efbb Binary files /dev/null and b/winboard/bitmaps/s49s.bmp differ diff --git a/winboard/bitmaps/s49w.bmp b/winboard/bitmaps/s49w.bmp new file mode 100644 index 0000000..cc7354a Binary files /dev/null and b/winboard/bitmaps/s49w.bmp differ diff --git a/winboard/bitmaps/s72o.bmp b/winboard/bitmaps/s72o.bmp new file mode 100644 index 0000000..4df9aa8 Binary files /dev/null and b/winboard/bitmaps/s72o.bmp differ diff --git a/winboard/bitmaps/s72s.bmp b/winboard/bitmaps/s72s.bmp new file mode 100644 index 0000000..d5ed119 Binary files /dev/null and b/winboard/bitmaps/s72s.bmp differ diff --git a/winboard/bitmaps/s72w.bmp b/winboard/bitmaps/s72w.bmp new file mode 100644 index 0000000..e042e37 Binary files /dev/null and b/winboard/bitmaps/s72w.bmp differ diff --git a/winboard/bitmaps/trans_14.ico b/winboard/bitmaps/trans_14.ico new file mode 100644 index 0000000..a096131 Binary files /dev/null and b/winboard/bitmaps/trans_14.ico differ diff --git a/winboard/bitmaps/u49o.bmp b/winboard/bitmaps/u49o.bmp new file mode 100644 index 0000000..6548a24 Binary files /dev/null and b/winboard/bitmaps/u49o.bmp differ diff --git a/winboard/bitmaps/u49s.bmp b/winboard/bitmaps/u49s.bmp new file mode 100644 index 0000000..ca21af0 Binary files /dev/null and b/winboard/bitmaps/u49s.bmp differ diff --git a/winboard/bitmaps/u49w.bmp b/winboard/bitmaps/u49w.bmp new file mode 100644 index 0000000..d790963 Binary files /dev/null and b/winboard/bitmaps/u49w.bmp differ diff --git a/winboard/bitmaps/u72o.bmp b/winboard/bitmaps/u72o.bmp new file mode 100644 index 0000000..d4ea856 Binary files /dev/null and b/winboard/bitmaps/u72o.bmp differ diff --git a/winboard/bitmaps/u72s.bmp b/winboard/bitmaps/u72s.bmp new file mode 100644 index 0000000..ff6f72b Binary files /dev/null and b/winboard/bitmaps/u72s.bmp differ diff --git a/winboard/bitmaps/u72w.bmp b/winboard/bitmaps/u72w.bmp new file mode 100644 index 0000000..d9dbca7 Binary files /dev/null and b/winboard/bitmaps/u72w.bmp differ diff --git a/winboard/bitmaps/unknown_14.ico b/winboard/bitmaps/unknown_14.ico new file mode 100644 index 0000000..ea3cef3 Binary files /dev/null and b/winboard/bitmaps/unknown_14.ico differ diff --git a/winboard/bitmaps/v33o.bmp b/winboard/bitmaps/v33o.bmp new file mode 100644 index 0000000..29edd62 Binary files /dev/null and b/winboard/bitmaps/v33o.bmp differ diff --git a/winboard/bitmaps/v33s.bmp b/winboard/bitmaps/v33s.bmp new file mode 100644 index 0000000..d28863c Binary files /dev/null and b/winboard/bitmaps/v33s.bmp differ diff --git a/winboard/bitmaps/v33w.bmp b/winboard/bitmaps/v33w.bmp new file mode 100644 index 0000000..718729c Binary files /dev/null and b/winboard/bitmaps/v33w.bmp differ diff --git a/winboard/bitmaps/v49o.bmp b/winboard/bitmaps/v49o.bmp new file mode 100644 index 0000000..bd2f8a1 Binary files /dev/null and b/winboard/bitmaps/v49o.bmp differ diff --git a/winboard/bitmaps/v49s.bmp b/winboard/bitmaps/v49s.bmp new file mode 100644 index 0000000..9bf4b10 Binary files /dev/null and b/winboard/bitmaps/v49s.bmp differ diff --git a/winboard/bitmaps/v49w.bmp b/winboard/bitmaps/v49w.bmp new file mode 100644 index 0000000..076ea0f Binary files /dev/null and b/winboard/bitmaps/v49w.bmp differ diff --git a/winboard/bitmaps/v54o.bmp b/winboard/bitmaps/v54o.bmp new file mode 100644 index 0000000..2499562 Binary files /dev/null and b/winboard/bitmaps/v54o.bmp differ diff --git a/winboard/bitmaps/v54s.bmp b/winboard/bitmaps/v54s.bmp new file mode 100644 index 0000000..1c69916 Binary files /dev/null and b/winboard/bitmaps/v54s.bmp differ diff --git a/winboard/bitmaps/v54w.bmp b/winboard/bitmaps/v54w.bmp new file mode 100644 index 0000000..57bf8d6 Binary files /dev/null and b/winboard/bitmaps/v54w.bmp differ diff --git a/winboard/bitmaps/v72o.bmp b/winboard/bitmaps/v72o.bmp new file mode 100644 index 0000000..cd2bbcd Binary files /dev/null and b/winboard/bitmaps/v72o.bmp differ diff --git a/winboard/bitmaps/v72s.bmp b/winboard/bitmaps/v72s.bmp new file mode 100644 index 0000000..3dd30dc Binary files /dev/null and b/winboard/bitmaps/v72s.bmp differ diff --git a/winboard/bitmaps/v72w.bmp b/winboard/bitmaps/v72w.bmp new file mode 100644 index 0000000..3797c5a Binary files /dev/null and b/winboard/bitmaps/v72w.bmp differ diff --git a/winboard/bitmaps/w33o.bmp b/winboard/bitmaps/w33o.bmp new file mode 100644 index 0000000..5de631d Binary files /dev/null and b/winboard/bitmaps/w33o.bmp differ diff --git a/winboard/bitmaps/w33s.bmp b/winboard/bitmaps/w33s.bmp new file mode 100644 index 0000000..4defb6a Binary files /dev/null and b/winboard/bitmaps/w33s.bmp differ diff --git a/winboard/bitmaps/w33w.bmp b/winboard/bitmaps/w33w.bmp new file mode 100644 index 0000000..d7a3994 Binary files /dev/null and b/winboard/bitmaps/w33w.bmp differ diff --git a/winboard/bitmaps/w49o.bmp b/winboard/bitmaps/w49o.bmp new file mode 100644 index 0000000..3ff1ce4 Binary files /dev/null and b/winboard/bitmaps/w49o.bmp differ diff --git a/winboard/bitmaps/w49s.bmp b/winboard/bitmaps/w49s.bmp new file mode 100644 index 0000000..d51a73c Binary files /dev/null and b/winboard/bitmaps/w49s.bmp differ diff --git a/winboard/bitmaps/w49w.bmp b/winboard/bitmaps/w49w.bmp new file mode 100644 index 0000000..d8158af Binary files /dev/null and b/winboard/bitmaps/w49w.bmp differ diff --git a/winboard/bitmaps/w54o.bmp b/winboard/bitmaps/w54o.bmp new file mode 100644 index 0000000..ee12647 Binary files /dev/null and b/winboard/bitmaps/w54o.bmp differ diff --git a/winboard/bitmaps/w54s.bmp b/winboard/bitmaps/w54s.bmp new file mode 100644 index 0000000..1984975 Binary files /dev/null and b/winboard/bitmaps/w54s.bmp differ diff --git a/winboard/bitmaps/w54w.bmp b/winboard/bitmaps/w54w.bmp new file mode 100644 index 0000000..8db2f9e Binary files /dev/null and b/winboard/bitmaps/w54w.bmp differ diff --git a/winboard/bitmaps/w72o.bmp b/winboard/bitmaps/w72o.bmp new file mode 100644 index 0000000..c9c8969 Binary files /dev/null and b/winboard/bitmaps/w72o.bmp differ diff --git a/winboard/bitmaps/w72s.bmp b/winboard/bitmaps/w72s.bmp new file mode 100644 index 0000000..693e36c Binary files /dev/null and b/winboard/bitmaps/w72s.bmp differ diff --git a/winboard/bitmaps/w72w.bmp b/winboard/bitmaps/w72w.bmp new file mode 100644 index 0000000..b7d0682 Binary files /dev/null and b/winboard/bitmaps/w72w.bmp differ diff --git a/winboard/bitmaps/was.gif b/winboard/bitmaps/was.gif new file mode 100644 index 0000000..bebbc25 Binary files /dev/null and b/winboard/bitmaps/was.gif differ diff --git a/winboard/bitmaps/wcv.gif b/winboard/bitmaps/wcv.gif new file mode 100644 index 0000000..ff56268 Binary files /dev/null and b/winboard/bitmaps/wcv.gif differ diff --git a/winboard/bitmaps/white_14.ico b/winboard/bitmaps/white_14.ico new file mode 100644 index 0000000..4783e0f Binary files /dev/null and b/winboard/bitmaps/white_14.ico differ diff --git a/winboard/bitmaps/wl49o.bmp b/winboard/bitmaps/wl49o.bmp new file mode 100644 index 0000000..9e71d68 Binary files /dev/null and b/winboard/bitmaps/wl49o.bmp differ diff --git a/winboard/bitmaps/wl49s.bmp b/winboard/bitmaps/wl49s.bmp new file mode 100644 index 0000000..a24a4f4 Binary files /dev/null and b/winboard/bitmaps/wl49s.bmp differ diff --git a/winboard/bitmaps/wl72o.bmp b/winboard/bitmaps/wl72o.bmp new file mode 100644 index 0000000..1e07a90 Binary files /dev/null and b/winboard/bitmaps/wl72o.bmp differ diff --git a/winboard/bitmaps/wl72s.bmp b/winboard/bitmaps/wl72s.bmp new file mode 100644 index 0000000..4ea254a Binary files /dev/null and b/winboard/bitmaps/wl72s.bmp differ diff --git a/winboard/bitmaps/wn49o.bmp b/winboard/bitmaps/wn49o.bmp new file mode 100644 index 0000000..e89eb7a Binary files /dev/null and b/winboard/bitmaps/wn49o.bmp differ diff --git a/winboard/bitmaps/wn49s.bmp b/winboard/bitmaps/wn49s.bmp new file mode 100644 index 0000000..0ab191a Binary files /dev/null and b/winboard/bitmaps/wn49s.bmp differ diff --git a/winboard/bitmaps/wn72o.bmp b/winboard/bitmaps/wn72o.bmp new file mode 100644 index 0000000..24f2a33 Binary files /dev/null and b/winboard/bitmaps/wn72o.bmp differ diff --git a/winboard/bitmaps/wn72s.bmp b/winboard/bitmaps/wn72s.bmp new file mode 100644 index 0000000..7a91eff Binary files /dev/null and b/winboard/bitmaps/wn72s.bmp differ diff --git a/winboard/bitmaps/wp49o.bmp b/winboard/bitmaps/wp49o.bmp new file mode 100644 index 0000000..f6e90fa Binary files /dev/null and b/winboard/bitmaps/wp49o.bmp differ diff --git a/winboard/bitmaps/wp49s.bmp b/winboard/bitmaps/wp49s.bmp new file mode 100644 index 0000000..88f96aa Binary files /dev/null and b/winboard/bitmaps/wp49s.bmp differ diff --git a/winboard/bitmaps/wp72o.bmp b/winboard/bitmaps/wp72o.bmp new file mode 100644 index 0000000..7c359be Binary files /dev/null and b/winboard/bitmaps/wp72o.bmp differ diff --git a/winboard/bitmaps/wp72s.bmp b/winboard/bitmaps/wp72s.bmp new file mode 100644 index 0000000..933f377 Binary files /dev/null and b/winboard/bitmaps/wp72s.bmp differ diff --git a/winboard/bitmaps/ws49o.bmp b/winboard/bitmaps/ws49o.bmp new file mode 100644 index 0000000..fe77467 Binary files /dev/null and b/winboard/bitmaps/ws49o.bmp differ diff --git a/winboard/bitmaps/ws49s.bmp b/winboard/bitmaps/ws49s.bmp new file mode 100644 index 0000000..5d2ad69 Binary files /dev/null and b/winboard/bitmaps/ws49s.bmp differ diff --git a/winboard/bitmaps/ws72o.bmp b/winboard/bitmaps/ws72o.bmp new file mode 100644 index 0000000..316da61 Binary files /dev/null and b/winboard/bitmaps/ws72o.bmp differ diff --git a/winboard/bitmaps/ws72s.bmp b/winboard/bitmaps/ws72s.bmp new file mode 100644 index 0000000..382b4dc Binary files /dev/null and b/winboard/bitmaps/ws72s.bmp differ diff --git a/winboard/config.h b/winboard/config.h index 8d76073..9a99266 100644 --- a/winboard/config.h +++ b/winboard/config.h @@ -1,5 +1,14 @@ /* config.h.in. Generated automatically from configure.in by autoheader. */ +/* [HGM] Defining ADJUDICATE switches on rep-draw and insuf-material draws */ +#define ADJUDICATE + +/* [HGM] Defining FAIRY allows different K- & Q-side piece symbols */ +#define FAIRY + +#define GOTHIC "Gothic Chess (see www.GothicChess.com) is licensed under U.S. Patent #6,481,716 by Ed Trice" +#define FALCON "Falcon Chess (see www.chessvariants.com) is licensed under U.S. Patent #5,690,334 by George W. Duke" + /* Define if you have that is POSIX.1 compatible. */ /*#undef HAVE_SYS_WAIT_H*/ @@ -37,7 +46,7 @@ #define LAST_PTY_LETTER 'q' -#define PATCHLEVEL "7" +#define PATCHLEVEL "14k" #define PRODUCT "WinBoard" @@ -55,7 +64,7 @@ #define USE_PTYS 0 -#define VERSION "4.2" +#define VERSION "4.3" /*#undef X_WCHAR*/ diff --git a/winboard/defaults.h b/winboard/defaults.h index 901bd5d..bbc81cd 100644 --- a/winboard/defaults.h +++ b/winboard/defaults.h @@ -48,6 +48,7 @@ /* 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) diff --git a/winboard/readme.txt b/winboard/readme.txt new file mode 100644 index 0000000..b22e6b4 --- /dev/null +++ b/winboard/readme.txt @@ -0,0 +1,240 @@ + WinBoard 4.3.14k RELEASE NOTES + +Compared to version 4.3.13 described below, this version features + +New command-line options: +/autoKibitz (for relaying the PV info of the engine to the ICS) +/userName="..." (for setting the name of the Human player, also as menu) +/engineDebugOutput=N (controlling the writing of engine output to debug file) +/firstNPS=N (for time management by node count or CPU time) +/secondNPS=N (likewise for the other engine) + +New Menu items ++ Enter Username (same as /userName command-line option) ++ Save Diagram (for saving the Chessboard display as bitmap file) ++ Machine Both (not implemented yet, but menu item already provided) ++ New-Variant menu adds CRC, Janus and Berolina (the latter only with legality testing off!) ++ Any variant can be played from a shuffled opening setup + +Bugfixes: +* Problems with switching the variant in ICS zippy mode solved +* In ICS observing mode game history is now fully accessible +* Moves are not fed to engine in zippy mode, when observing a game from a variant unknown to the engine +* a problem with loading PGN of FRC games with move disambiguation and initial castling rights was fixed. +* A bug in the clock display that mad previous versions of WinBoard crash for tiny displays is fixed + +General enhancements: +* variant name displayed in title bar in ICS mode, when not 'normal' +* when receiving a challenge in ICS zippy mode, it is checked if the engine supports the variant (/zippyVariants="..." can still be used to limit the allowed variants, and for protocol-1 engines is still the only thing to go on) +* when loading a game from a PGN file, WB automatically switches to the variant specified in the PGN tags +* when starting from a loaded position (using /loadPositionFile), this position will be used on subsequent 'New Game' commands as well (until we switch variant) + +New is also that the source tree is now brought back in the original WinBoard 4.2.7 format, including +xboard source files. Note, however, that the xboard sources are from an older date, and I did not test +if they still compile together with the much newer backend sources. I did add code in xboard.c to recognize +the new command-line options I added since then, and in so far they are back-end options that should be enough +to make them work. This is completely untested, though; I did not even try to compile it. Last time anyone +built a working xboard.exe from this was at a stage where WinBoard did have adjustable board size, allowing +it to play Xiangqi. But no crazyhouse holdings yet. + + WinBoard 4.3.13a RELEASE NOTES + +This version of WinBoard_F fixes several bugs in 4.3.12, and also addse a few new features. +The new features include: +- some more fairy pieces, so that each side now has 22 piece types in stead of 17, +making most fairy pieces available in board size "petite" (next to "bulky" and "middling"), +making the ArchBishop and Chancellor, as well as one wildcard piece (the Lance) available in all +sizes from "petite" to "bulky". +- The FRC support is fully fixed, both in local and ICS mode. +- A mechanism is provided for safe draw claiming in cases where a 3-fold repetition woud occur only + after your own move. In this case a draw will be awarded by WinBoard if the engine sends "offer draw" + before making its move. +- Genuine draw offers are not passed on immediately to the opponent but held up to when the offerer announces + its move. +- Variants FRC, Cylinder and Falcon are added to the "New Variant..." menu. +- Support for playing time-odds games is added. (Options /firstTimeOdds, /secondTimeOdds, /timeOddsMode) +- A mechanism is provided for attaching WinBoard options to the engine command, to create options that +follow the engine (e.g. time odds) in a tournament run under a tournament manager. +Bugfixes include: +- Shatranj in ICS mode (did not work at all before) +- Some draw adjudications (QRKR was mistaken for KRKR, and KBKB with like Bishops is now recognized) +- time info in the PGN is now correct + + + COMPILING + +This version was developed using gcc under cygwin. To compile, the following set of commands was used, +given from the directory where all the source files are: + flex -oparser.o -L parser.l + windres --use-temp-file --include-dir . winboard.rc -O coff -o wbres.o + gcc -O2 -mno-cygwin -mwindows -c *.c + gcc -mno-cygwin -mwindows *.o -lwsock32 -lwinmm -o winboard.exe + strip winboard.exe + rm *.o +The first command is only needed to produce a new parser.c from the parser.l. The parser.c is included +in this release, so you only need flex if you want to modify the parser. +The windres command builds the resource file wbres.o from winboard.rc and all bitmaps and sound files in +the sub-directories. +This release should be completely self-sufficient; no source files from other releases are needed, +even the unmodified files are included here, + + DESCRIPTION + +This WinBoard (beta-)version is derived from Allessandro Scotti's Winboard_x, and supports the following new options, mainly in the area of adjudication of engine-engine games, improved Crazyhouse support, and allowing variants with non-conventional pieces and or board sizes. (All option are shown here with their default values): + +/variant=normal +This (already existing) option has been expanded with several new variants, involving non-conventional pieces and deviating board sizes. The board size is automatically adapted to the selected variant, unless explicitly overruled (see below). The new variants are (with default board size, files x ranks, in parentheses): + +variant name Game board description +knightmate Knightmate (8x8) Variant where the King moves as a Knight, and vice versa +capablanca Capablanca Chess (10x8) Variant featuring Archbishop and Chancellor as new pieces +gothic Gothic Chess (10x8) Same as Capablanca, with a more interesting opening position +courier Courier Chess (12x8) a Medieval form that combines elements of Shatranj and modern Chess +shogi Shogi (9x9) Japanese Chess +xiangqi Xiangqi (9x10) Chinese Chess +fairy Fairy Chess (8x8) Variant were you can use all pieces of other variants together +fischerandom FRC (8x8) Shuffle variant with generalized castling rule +cylinder Cylinder Chess (8x8) left and right board edge are connected +falcon Falcon Chess (10x8) a patented variant featuring two Falcon pieces + +The variant can be set from the newly added "File -> New Variant..." sub-menu. +Extra board files are indicated by the letters i, j, k, l, ... For boards with more than 9 ranks, the counting starts at zero! More than 10 ranks is not tested and unlikely to work in the area of PGN saving / reading. Non-FIDE pieces will be referred to in FENs and PGN by letters that depend on the variant, and might collide with piece designators in other variants. E.g. in Xiangqi 'C' is a Cannon, in Capablanca Chess it is a Chancellor. Pieces that do not belong in a variant cannot be addressed in FEN and PGN either, for as long as that variant is selected, unless the letter assignment is overruled with the aid of the /pieceToCharTable option. The variant is not saved in the winboard.ini file; on start-up we always get variant "normal" unless we use the command-line option, or have added the option to the winboard.ini file manually (in which case it will disappear when this file is overwritten by WinBoard saving its options). +WinBoard_F knows the movement of all pieces occurring in Capablanca Chess (of which FIDE Chess is a subset), Shatranj, Courier, Xiangqi and 9x9 Shogi, so that these games can be played with legality testing enabled. + +/pieceToCharTable="PNBRQFEACWMOHIJGDVLSUKpnbrqfeacwmohijgdvlsuk" (*********** ALTERED IN 4.3.13 *******) +Each piece that WinBoard knows (in its legality test) has a letter associated with it, by which it will be referred to in FEN or PGN. The default assignment can be overruled with this option. The value has to be a string of even length, with at least 12 characters. The first half of the string designates the white pieces, the second half the black. +The last letter for each color will be assigned to the King. (This is the piece that moves as an orthodox King; note that Nightmate and Xiangqi have a different royal piece.) All letters before it will be assigned to the other pieces in the order: + +P Pawn (move often depends on variant) +N Knight (move subtly different in Xiangqi (where it is written as H) or Shogi) +B Bishop +R Rook +Q Queen (Lance L in Shogi) +F Ferz/General (The Shatranj 'Queen' and Xiangqi 'Adviser', used for Silver General S in Shogi.) +E Alfil/Elephant (Moves subtly different in Xiangqi vs Shatranj/Courier) +A Archbishop/Cardinal +C Chancellor/Marshall +W Wazir/GrandVizer (Gold General G in Shogi, in Xiangqi it is royal and denoted by K) +M Commoner/Man +O Cannon/Pao +H Nightrider (Promoted Knight in Shogi and CrazyHouse) +I (Promoted Bishop in Shogi and CrazyHouse) +J (Promoted Rook in Shogi and CrazyHouse) +G Grasshopper (Promoted Queen in Crazyhouse, promoted Lance in Shogi) +D Dabbaba (Promoted Silver in Shogi) +V Falcon wildcard +L Lance wildcard +S Snake wildcard +U Unicorn (representation of Royal Knight in Knightmate, used as promoted Pawn in Shogi) +K King + +NOTE THIS ORDER HAS BEEN ALTERED IN 4.3.13 compred to 4.3.12. Sorry about that; this was unavoidable to accomodate an engine that can play a Crazyhouse version of Capablanca Chess. This made it impossible to continue using the Archbishop and Chancellor as promoted versions of Bishop and Rook. + +NEW IN 4.3.13 is the concept of a wildcard piece: WinBoard will accept any move of such a piece as legal, even +when legality testing is switched on. This allows participaton of a limited number of pieces that WinBoard +does not know, while still applying legality testing to the other pieces. The only rice to pay, is that WinBoard +cannot recognize checks (and thus mates) with such pieces. So if they participate, /testClaims should be off, +as WinBoard will no longer recognize all mates. + +Pieces that are not mentioned (because the argument has less than 44 characters) will remain disabled. Mentioned pieces can be disabled by assigning them a '.' (period). They are then not recognized in FEN or PGN input. Non-FIDE pieces that are not assigned a letter will also not appear on the promotion menu. It is not advisable to disable a piece that is present in the opening position of the selected variant, though. + Promoted pieces that need to be distinguished from original pieces of the same type (because of demotion on capture and transfer to the holdings) will be indicated by the letter for the unpromoted piece with a '+' in front of it (Shogi), or by the letter of the promoted piece with a '~' after it (Crazyhouse, Bughouse, in general everything with holdings that is not Shogi). To achieve this, they should be assigned the characters '+' or '~', respectively. + All the new pieces have a native bitmap representation in the board sizes 'bulky' and 'middling'. For all window sizes that do not support such fairy bitmaps, promoted NBRQ are represented as a 2-sizes-smaller normal piece symbol, so that Crazyhouse can be played at any size. People disliking the fairy representations might even prefer this. + There is an enhanced 'Edit Position' menu popup (right-clicking on the squares after selecting this mode in the main menu), featuring some common non-FIDE pieces, and 'promote' and 'demote' options to make those not directly in the menu. The promotion popup shows ArchBishop and Chancellor in Capablanca and Gothic, (or in fact in any game where this piece is not disabled or a promoted version of a normal piece), and leaves only the options YES / NO in Shogi. In Xiangqi there are no promotions. + From version 4.3.13 on, the default assignment of characters to pieces is variant dependent. This makes the +need for using this option even smaller. Xiangqi now uses H for Horse and C for Cannon. Shatranj uses B for Elephant and Q for Ferz (because some existing engines and ICC expect this) + +/fontPieceToCharTable="PNBRQFEACWMOHIJGDVLSUKpnbrqfeacwmohijgdvlsuk" (******* ALTERED IN 4.3.13 *******) +This option is similar to /pieceToCharTable, but sets the font character that is used to display the piece on the screen (when font-based rendering is in use), rather than in the FEN or PGN. The default setting should work with George Tsavdaris' WinboardF font, which uses the 'intuitive' mapping of font characters to symbols. With font-based rendering the fairy pieces can be used at any board size. +Note that UHIJGS are also used to represent the promoted versions of PNBRQF, in games like Crazyhouse and Shogi, where the promotion has to be undone on capture. In such games you are likely to prefer a different representation of those pieces then when they represent true fairy pieces. +NOTE THAT THE ORDER HAS CHANGED IN 4.3.13 compared to 4.3.12 + +/boardWidth=-1 /boardHeight=-1 +Set a number of files and ranks of the playing board to a value that will override the defaults for the variant that is selected. A value of -1 means the variant default board size will be used for the corresponding parameter (and is itself the default value of these options). These parameters can be set in the "Files -> New Variant..." sub-menu, where they are reset to the default -1 if you OK the chosen variant without typing something to overrule it. These parameters are saved in the winboard.ini file. (But unless you saved while a variant with board-size override was selected, they will always be saved as -1.) +A variant with a non-standard board size will be communicated to the engine(s) with the board size prefixed to the variant name, e.g. "variant 12x8_capablanca". In protocol 2 the engine must first enable this feature by sending "boardsizeFxR" amongst the accepted variants, where F is the maximum number of files, and R the maximum number of ranks, as decimal numbers. + +/holdingsSize=-1 +Set the size of the holdings for dropable pieces to a value that will override the default for the variant that is selected. A value of -1 means the variant default holdings size will be used for that parameter (and is itself the default value of this options). This parameter can be set in the Files -> New Variant... sub-menu, where it is reset to the default -1 if you OK the chosen variant without typing something to overrule it. This parameters is saved in the winboard.ini file. +To disable holdings, set their size to 0. They will then not be displayed. For non-zero holding size N, the holdings are displayed left and right of the board, and piece drops can be effected by dragging pieces from the holdings to the drop square. In bughouse, the holdings will be filled by the ICS. In all other variants, captured pieces will go into the holdings (after reversing their color). Only the first N pieces of the /pieceToCharTable argument will go into the holdings. All other pieces will be converted to Pawns. (In Shogi, however they will be demoted in the regular way before determining if they fit.) Pieces that are disabled (per default and per /pieceToCharTable option) might not be counted when determining what are the first N pieces. +Non-standard holdingsize will be communicated to the engine by prefixing it (together with the board size, even if this is standard) to the variant name, e.g. "variant 7x7+5_shogi". In protocol 2 the engine should enable this feature by sending "holdingsH" amongst the variant names, where H is the maximum acceptable holdings size as a decimal number. + +/firstTimeOdds=1 /secondTimeOdds=1 (********** NEW IN 4.3.13 *********) +The time given to first or second engine (initially, for later sessions, as increment or in the 'st' command) +is divided by the given factor. This replaces the time odds feature of WinBoard_x, where two times separated by +a slash could be given for the /timeContron parameter or in the time-control field of the menu. + +/timeOddsMode=1 +This option determines how the case is handled where both engines have a time-oddsfactor differing from 1. +In mode 1 the times will be scaled such that the engine that gets the most time will get the nominal time, +in mode 2 both engines will play at reduced time. + +/alphaRank=FALSE +When this parameter is true, a-h are converted to 1-9, and vice versa, in all move output and input (to PGN files or SAN move display as well as in communication with the engine). This might be useful for Shogi, where conventionally one uses letters to designate ranks, and digits to designate files. Engines that want to use this option must make sure pieces are never represented by lower case! This option can be set from the Files -> New Variant... menu, where it defaults to FALSE unless you explicitly set it. It is not saved in the winboard.ini file. +This kludge does not seem to work for reading PGN files. Saving works fine. For now, using it is not recommended. In the future it might be redefined as only affecting engine-engine communication, . +Note that the PGN format in Shogi also leaves out the trailing '+' as check indicator: In Shogi such a trailing '+' means promotion, while a trailing '=' means defer promotion. Prefix '+' signs are used on moves with promoted pieces, disambiguation is done western SAN style. + +/allWhite=FALSE +Causes the outline of the 'white' pieces to be superimposed onto the 'black' piece symbols as well (as a black outline) when native bitmaps are used (as opposed to font-based rendering). This is useful if we choose a very light color to represent the 'black' pieces. It might be particularly useful in Shogi, where the conventional representation of the 'black' pieces is as upside-down white pieces, so that both colors would be white. This option is saved in the winboard.ini file, and can be set in the "Options -> Board..." sub-menu. + +/flipBlack=FALSE +Setting this option will cause upside-down display of the native piece bitmaps used to represent the pieces of the side that plays black, as would be needed for a traditional representation of Shogi pieces. It can be set from the "Options -> Board..." sub-menu, and it is saved in the winboard.ini file. For now, traditional Shogi bitmaps are only included for size "moderate". For other sizes you must depend on font-based rendering. + +/detectMate=TRUE +/testClaim=TRUE +/materialDraws=TRUE +/trivialDraws=FALSE +/ruleMoves=51 +/repeatsToDraw=6 +These are all options that only affect engine-engine play, and can be set from the "Options -> Engine..." sub-menu. They are all related to adjudication of games by the GUI. Legality checking must be switched on for them to work. +If /detectMate is TRUE, the GUI recognizes checkmate and stalemate (but not in games with holdings!), and ends the game accordingly before the engines can claim. This is convenient for play with engines that fail to claim, and just exit. + With /testClaim set, all result and illegal-move claims by engines that claim more than their own loss are scrutinized for validity, and false claims result in forfeit of the game. Useful with buggy engines. + The option /materialDraws=TRUE causes games with insufficient mating material to be adjudicated immediately as draws, in case the engines would not claim these draws. This applies to KK, KNK and KBK. (A bug in 4.3.12, which +overlooked KBKB with like Bishops as a legal draw, has been corrected in 4.3.13.) + The option /trivialDraws adjudicates KNNK, KBKB, KNKN, KBKN, KRKR and KQKQ to draws after 3 moves (to allow for a quick tactical win). Note that in KQKQ this might not be sound, but that problem would disappear once bitbase probing is implemented. (A bug in 4.3.12, which led to KQKR being considered a trivail draw, is corrected in 4.3.13) + The /ruleMoves determine after how many reversible moves the game is adjudicated as a draw. Setting this to 0 turns this option off. Draw claims by the engine are still accepted (with /testClaim=TRUE) after 50 reversible moves, even if /ruleMoves species a larger number. Note that it is perfectly legal according to FIDE rules to play on after 50 reversible moves, but in tournaments having two engines that want to play on forever is a nuisance in endings like KBNKR, where one of the engines thinks it is ahead and can avoids repeats virtually forever. +The option /repeatsToDraw makes the GUI adjudicate a game as draw after the same position has occurred the specified number of times. If it is set to a value > 3, engines can still claim the draw after 3-fold repeat. +All these options are saved in the winboard.ini file. + +/matchPause=10000 +Determines the number of milliseconds that is paused between two games of a match. In the old WinBoard this was always 10 sec, which was inconveniently long in fast games. If you make the pause too short, tardy engines might get into trouble, though. Saved in the Winboard.ini. + +/zippyVariants="normal,fischerandom,crazyhouse,losers,suicide,3checks,twokings,bughouse,shatranj" +This option already existed, (giving the varinats that an engine can play on an ICS), but now by default setting +that icludes virtually all variants that WinBoard knows and that can be played on ICC. In this mode, however, +WinBoard now also checks if the variant the ICS wants to play is supportd by the engine (i.e. if it occurs +in the list given by the variant feature). Only for protocol-1 engines (which do not provide this info to WinBoard) +you would need to restrict the number of variants to those the engine can play, to avoid accepting challenges +the engine cannot handle. + +Clocks +There is an "Options -> swap clocks" command, that swaps the position of white and black clocks (convenient in over-the-board matches, where the display is standing next to the board, and you want your own time to be displayed on your side of the screen). The clocks can be adjusted in "edit game" mode: right-clicking them adds one minute, left-clicking subtracts one minute. (Also for OTB matches, to keep them synchronized with the official match clock.) The flag-fell condition is now indicated as '(!)' behind the displayed time, to eliminate the necessity for overwriting the message in the title bar (which might contain indispensible information in match mode). + +/pgnExtendedInfo contains time (******** NEW IN 4.3.13 *********) +If you selected this option in the "Options -> General..." menu, the search time is now also saved as a comment +in the PGN file with every move, together with the depth/score info (which WinBoard_x already did). The time +written is that reported by the engine if "Show Thinking" was on. If the engine does not give times, +the WinBoard clock is used in stead. + +Other improvements / changes +Castling rights and e.p. rights are now fully maintained, and considered in legality testing. They are imported from and written to FEN, as is the 50-move counter. (When reading an incomplete FEN they are still guessed, though.) +The time (in sec, or min:sec) is now always stored together with the PV information to the PGN, if storing the latter was requested (through ticking "extended PGN info" in "Options -> General..."). The saved time is the WinBoard clock time (as opposed to the time reported by the engine). + +Options from the engine command line (******** NEW IN 4.3.13 *********) +The command to startup the engine, as typed in the startup dialog box, or given to WinBoard in the +/firstChessProgram or /secondChessProgram (/fcp, /scp) can now contain options that are not passed to the +engine, but are interpreted by WinBoard. These would then overrule a similar option given in the winboard.ini +or in the command line. Every engine option following an option 'WBopt' would be treated this way. As tournament +managers use the /fcp and /scp options to pass the engines to WinBoard, this can be used to have engine- +dependent settings of WinBoard during a tournament. For instance, if we are playing a tournament at 40/5' time +control, but we want to accomodate an engine that only supports incremental time controls, we can install that engine in the tournament manager as "badengine.exe hashsize=128 WBopt /timeIncrement=3". Every time WinBoard +would start up this engine, it would then use 5'+3" TC for that game. + Options that apply to one engine only can also be passed this way. Such options contain 'first' or 'second' as +part of their name, depending on the engine they should apply to. As a given engine will play some of its games +as first and others as second during the tourney, to create an option that follows the engine, we need WinBoard +to dynamically decide if it should use the 'first' or 'second' flavor of the option, depending on which +engine startup command provided the option. This is indicated by letting the option contain '%s' in places +where WinBoard should read 'first' or 'second'. For example "strongengine.exe WBopt /%sTimeOdds=10" would +give the engine a time-odds factor of 10, whenever it plays, irrespective if it plays as first or second engine. + Note that options that do not come in a 'first' or 'second' flavor can still be passed to only one engine by +putting the WinBoard protocol commands in the init string. E.g., if we want to limit the search depth of +a particular engine to 6 ply in all its games. we can give 'engine.exe WBopt /%sInitString="newnrandom\nsd 6\n"', +so that only the applicable engine receives the 'sd 6' command. \ No newline at end of file diff --git a/winboard/resource.h b/winboard/resource.h index 4b08076..86e7169 100644 --- a/winboard/resource.h +++ b/winboard/resource.h @@ -21,6 +21,7 @@ #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 @@ -56,6 +57,8 @@ #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 @@ -215,6 +218,7 @@ #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 @@ -224,6 +228,7 @@ #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 @@ -458,6 +463,12 @@ #define OPT_VariantCylinder 1517 #define OPT_VariantFalcon 1518 #define OPT_VariantCRC 1519 +#define OPT_VariantBerolina 1520 +#define OPT_Variant3Checks 1521 +#define OPT_VariantJanus 1522 +#define OPT_VariantWildcastle 1523 +#define OPT_VariantNocastle 1524 +#define OPT_VariantGiveaway 1525 #define IDC_Files 1550 #define IDC_Ranks 1551 #define IDC_Holdings 1552 diff --git a/winboard/shogibitmaps/sa58o.bmp b/winboard/shogibitmaps/sa58o.bmp new file mode 100644 index 0000000..fcae346 Binary files /dev/null and b/winboard/shogibitmaps/sa58o.bmp differ diff --git a/winboard/shogibitmaps/sb58o.bmp b/winboard/shogibitmaps/sb58o.bmp new file mode 100644 index 0000000..75b2be2 Binary files /dev/null and b/winboard/shogibitmaps/sb58o.bmp differ diff --git a/winboard/shogibitmaps/sc58o.bmp b/winboard/shogibitmaps/sc58o.bmp new file mode 100644 index 0000000..84bef21 Binary files /dev/null and b/winboard/shogibitmaps/sc58o.bmp differ diff --git a/winboard/shogibitmaps/sf58o.bmp b/winboard/shogibitmaps/sf58o.bmp new file mode 100644 index 0000000..5c1d43a Binary files /dev/null and b/winboard/shogibitmaps/sf58o.bmp differ diff --git a/winboard/shogibitmaps/sg58o.bmp b/winboard/shogibitmaps/sg58o.bmp new file mode 100644 index 0000000..580814c Binary files /dev/null and b/winboard/shogibitmaps/sg58o.bmp differ diff --git a/winboard/shogibitmaps/sh58o.bmp b/winboard/shogibitmaps/sh58o.bmp new file mode 100644 index 0000000..8b906eb Binary files /dev/null and b/winboard/shogibitmaps/sh58o.bmp differ diff --git a/winboard/shogibitmaps/sk58o.bmp b/winboard/shogibitmaps/sk58o.bmp new file mode 100644 index 0000000..8b57f9e Binary files /dev/null and b/winboard/shogibitmaps/sk58o.bmp differ diff --git a/winboard/shogibitmaps/sk58w.bmp b/winboard/shogibitmaps/sk58w.bmp new file mode 100644 index 0000000..a419066 Binary files /dev/null and b/winboard/shogibitmaps/sk58w.bmp differ diff --git a/winboard/shogibitmaps/sl58o.bmp b/winboard/shogibitmaps/sl58o.bmp new file mode 100644 index 0000000..799b21a Binary files /dev/null and b/winboard/shogibitmaps/sl58o.bmp differ diff --git a/winboard/shogibitmaps/sl58w.bmp b/winboard/shogibitmaps/sl58w.bmp new file mode 100644 index 0000000..dc1ce99 Binary files /dev/null and b/winboard/shogibitmaps/sl58w.bmp differ diff --git a/winboard/shogibitmaps/sn58o.bmp b/winboard/shogibitmaps/sn58o.bmp new file mode 100644 index 0000000..387e28f Binary files /dev/null and b/winboard/shogibitmaps/sn58o.bmp differ diff --git a/winboard/shogibitmaps/sn58w.bmp b/winboard/shogibitmaps/sn58w.bmp new file mode 100644 index 0000000..b1c6af2 Binary files /dev/null and b/winboard/shogibitmaps/sn58w.bmp differ diff --git a/winboard/shogibitmaps/sp58o.bmp b/winboard/shogibitmaps/sp58o.bmp new file mode 100644 index 0000000..62be42b Binary files /dev/null and b/winboard/shogibitmaps/sp58o.bmp differ diff --git a/winboard/shogibitmaps/sp58w.bmp b/winboard/shogibitmaps/sp58w.bmp new file mode 100644 index 0000000..2e623c8 Binary files /dev/null and b/winboard/shogibitmaps/sp58w.bmp differ diff --git a/winboard/shogibitmaps/sr58o.bmp b/winboard/shogibitmaps/sr58o.bmp new file mode 100644 index 0000000..6f6d142 Binary files /dev/null and b/winboard/shogibitmaps/sr58o.bmp differ diff --git a/winboard/shogibitmaps/sr58w.bmp b/winboard/shogibitmaps/sr58w.bmp new file mode 100644 index 0000000..87469d3 Binary files /dev/null and b/winboard/shogibitmaps/sr58w.bmp differ diff --git a/winboard/shogibitmaps/ss58o.bmp b/winboard/shogibitmaps/ss58o.bmp new file mode 100644 index 0000000..e1aa7ad Binary files /dev/null and b/winboard/shogibitmaps/ss58o.bmp differ diff --git a/winboard/shogibitmaps/su58o.bmp b/winboard/shogibitmaps/su58o.bmp new file mode 100644 index 0000000..9bdce85 Binary files /dev/null and b/winboard/shogibitmaps/su58o.bmp differ diff --git a/winboard/shogibitmaps/sw58o.bmp b/winboard/shogibitmaps/sw58o.bmp new file mode 100644 index 0000000..cb6029f Binary files /dev/null and b/winboard/shogibitmaps/sw58o.bmp differ diff --git a/winboard/shogibitmaps/sw58w.bmp b/winboard/shogibitmaps/sw58w.bmp new file mode 100644 index 0000000..e90dde3 Binary files /dev/null and b/winboard/shogibitmaps/sw58w.bmp differ diff --git a/winboard/winboard.c b/winboard/winboard.c index dbf3c90..139a984 100644 --- a/winboard/winboard.c +++ b/winboard/winboard.c @@ -388,6 +388,7 @@ LRESULT CALLBACK 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] */ @@ -1178,6 +1179,9 @@ ArgDescriptor argDescriptors[] = { { "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 }, #ifdef ZIPPY { "zippyTalk", ArgBoolean, (LPVOID) &appData.zippyTalk, FALSE }, @@ -1230,6 +1234,8 @@ ArgDescriptor argDescriptors[] = { { "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 }, { NULL, ArgNone, NULL, FALSE } }; @@ -1913,6 +1919,10 @@ InitAppData(LPSTR lpCmdLine) 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; + #ifdef ZIPPY appData.zippyTalk = ZIPPY_TALK; @@ -3378,7 +3388,7 @@ DrawCoordsOnDC(HDC hdc) y += squareSize + lineGap; } - start = flipView ? 12-BOARD_WIDTH : 12; + start = flipView ? 12-(BOARD_RGHT-BOARD_LEFT) : 12; SetTextAlign(hdc, TA_RIGHT|TA_BOTTOM); for (i = 0; i < BOARD_RGHT - BOARD_LEFT; i++) { @@ -3959,7 +3969,6 @@ DrawBoardOnDC(HDC hdc, Board board, HDC tmphdc) piece_color = (int) piece < (int) BlackPawn; -#ifdef FAIRY /* [HGM] holdings file: light square or black */ if(column == BOARD_LEFT-2) { if( row > BOARD_HEIGHT - gameInfo.holdingsSize - 1 ) @@ -3982,7 +3991,6 @@ DrawBoardOnDC(HDC hdc, Board board, HDC tmphdc) else if( column == BOARD_RGHT) /* right align */ DisplayHoldingsCount(hdc, x, y, 1, (int) board[row][column]); else -#endif if (appData.monoMode) { if (piece == EmptySquare) { BitBlt(hdc, x, y, squareSize, squareSize, 0, 0, 0, @@ -4026,6 +4034,15 @@ DrawBoardOnDC(HDC hdc, Board board, HDC tmphdc) } } +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 @@ -4340,6 +4357,81 @@ HDCDrawPosition(HDC hdc, BOOLEAN repaint, Board board) boardRect.right - boardRect.left, boardRect.bottom - boardRect.top, tmphdc, boardRect.left, boardRect.top, SRCCOPY); + + if(saveDiagFlag) { + BITMAP b; int i, j, 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>2; i++) { + int k = ((int*) pData)[i]; + for(j=0; 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>2); w+=2) { + int k = ((int*) pData)[(wb*i>>2) + w]; + for(j=0; j>2) + w + 1]; + for(m=0; m>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= 'A' && - PieceToChar(WhiteCardinal) != '~' || - PieceToChar(BlackCardinal) >= 'A' && - PieceToChar(BlackCardinal) != '~' ) ? + (PieceToChar(WhiteAngel) >= 'A' && + PieceToChar(WhiteAngel) != '~' || + PieceToChar(BlackAngel) >= 'A' && + PieceToChar(BlackAngel) != '~' ) ? SW_SHOW : SW_HIDE); ShowWindow(GetDlgItem(hDlg, PB_Chancellor), (PieceToChar(WhiteMarshall) >= 'A' && @@ -4902,7 +5013,7 @@ Promotion(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) promoChar = PieceToChar(BlackMarshall); break; case PB_Archbishop: - promoChar = PieceToChar(BlackCardinal); + promoChar = PieceToChar(BlackAngel); break; case PB_Knight: promoChar = gameInfo.variant == VariantShogi ? '=' : PieceToChar(BlackKnight); @@ -4950,7 +5061,7 @@ LoadGameDialog(HWND hwnd, char* title) UINT number = 0; FILE *f; char fileTitle[MSG_SIZ]; - f = OpenFileDialog(hwnd, FALSE, "", + f = OpenFileDialog(hwnd, "rb", "", appData.oldSaveStyle ? "gam" : "pgn", GAME_FILT, title, &number, fileTitle, NULL); @@ -5157,7 +5268,7 @@ WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) Reset(FALSE, TRUE); } number = 1; - f = OpenFileDialog(hwnd, FALSE, "", + f = OpenFileDialog(hwnd, "rb", "", appData.oldSaveStyle ? "pos" : "fen", POSITION_FILT, "Load Position from File", &number, fileTitle, NULL); @@ -5180,7 +5291,7 @@ WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) case IDM_SaveGame: defName = DefaultFileName(appData.oldSaveStyle ? "gam" : "pgn"); - f = OpenFileDialog(hwnd, TRUE, defName, + f = OpenFileDialog(hwnd, "a", defName, appData.oldSaveStyle ? "gam" : "pgn", GAME_FILT, "Save Game to File", NULL, fileTitle, NULL); @@ -5191,7 +5302,7 @@ WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) case IDM_SavePosition: defName = DefaultFileName(appData.oldSaveStyle ? "pos" : "fen"); - f = OpenFileDialog(hwnd, TRUE, defName, + f = OpenFileDialog(hwnd, "a", defName, appData.oldSaveStyle ? "pos" : "fen", POSITION_FILT, "Save Position to File", NULL, fileTitle, NULL); @@ -5200,6 +5311,17 @@ WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) } 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; @@ -5433,6 +5555,10 @@ WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) PopUpMoveDialog('\000'); break; + case IDM_TypeInName: + PopUpNameDialog('\000'); + break; + case IDM_Backward: BackwardEvent(); SetFocus(hwndMain); @@ -6107,7 +6233,7 @@ OpenFileHook(HWND hdlg, UINT uiMsg, WPARAM wParam, LPARAM lParam) FILE * -OpenFileDialog(HWND hwnd, BOOL write, char *defName, char *defExt, +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]) { @@ -6139,7 +6265,7 @@ OpenFileDialog(HWND hwnd, BOOL write, char *defName, char *defExt, openFileName.lpstrInitialDir = NULL; openFileName.lpstrTitle = dlgTitle; openFileName.Flags = OFN_PATHMUSTEXIST | OFN_HIDEREADONLY - | (write ? 0 : OFN_FILEMUSTEXIST) + | (write[0] != 'r' ? 0 : OFN_FILEMUSTEXIST) | (number ? OFN_ENABLETEMPLATE | OFN_ENABLEHOOK: 0) | (oldDialog ? 0 : OFN_EXPLORER); openFileName.nFileOffset = 0; @@ -6150,10 +6276,10 @@ OpenFileDialog(HWND hwnd, BOOL write, char *defName, char *defExt, (LPOFNHOOKPROC) OldOpenFileHook : (LPOFNHOOKPROC) OpenFileHook; openFileName.lpTemplateName = (LPSTR)(oldDialog ? 1536 : DLG_IndexNumber); - if (write ? GetSaveFileName(&openFileName) : - GetOpenFileName(&openFileName)) { + if (write[0] != 'r' ? GetSaveFileName(&openFileName) : + GetOpenFileName(&openFileName)) { /* open the file */ - f = fopen(openFileName.lpstrFile, write ? "a" : "rb"); + f = fopen(openFileName.lpstrFile, write); if (f == NULL) { MessageBox(hwnd, "File open failed", NULL, MB_OK|MB_ICONEXCLAMATION); @@ -6787,6 +6913,59 @@ PopUpMoveDialog(char firstchar) /*---------------------------------------------------------------------------*\ * + * 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); + + 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 * \*---------------------------------------------------------------------------*/ @@ -7709,7 +7888,7 @@ DisplayAClock(HDC hdc, int timeRemaining, int highlight, if (appData.clockMode) { if (tinyLayout) - sprintf(buf, "%c %s %s %s", color[0], TimeString(timeRemaining), flagFell); + sprintf(buf, "%c %s %s", color[0], TimeString(timeRemaining), flagFell); else sprintf(buf, "%s: %s %s", color, TimeString(timeRemaining), flagFell); str = buf; @@ -8542,6 +8721,7 @@ LRESULT CALLBACK NewGameFRC_Proc(HWND hDlg, UINT message, WPARAM wParam, LPARAM 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 ); @@ -8554,7 +8734,7 @@ LRESULT CALLBACK NewGameFRC_Proc(HWND hDlg, UINT message, WPARAM wParam, LPARAM } return TRUE; case IDC_NFG_Random: - sprintf( buf, "%d", myrandom() % 960 ); + sprintf( buf, "%d", myrandom() ); /* [HGM] shuffle: no longer limit to 960 */ SetDlgItemText(hDlg, IDC_NFG_Edit, buf ); return TRUE; } @@ -8914,6 +9094,9 @@ 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"); @@ -9032,7 +9215,7 @@ AutoSaveGame() char fileTitle[MSG_SIZ]; defName = DefaultFileName(appData.oldSaveStyle ? "gam" : "pgn"); - f = OpenFileDialog(hwndMain, TRUE, defName, + f = OpenFileDialog(hwndMain, "a", defName, appData.oldSaveStyle ? "gam" : "pgn", GAME_FILT, "Save Game to File", NULL, fileTitle, NULL); diff --git a/winboard/winboard.h b/winboard/winboard.h index 9944ccc..265791a 100644 --- a/winboard/winboard.h +++ b/winboard/winboard.h @@ -61,13 +61,6 @@ typedef struct { 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; @@ -101,7 +94,7 @@ 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, BOOL write, char *defName, char *defExt, +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); diff --git a/winboard/winboard.htm b/winboard/winboard.htm new file mode 100644 index 0000000..ee83d99 --- /dev/null +++ b/winboard/winboard.htm @@ -0,0 +1,1018 @@ + + + + ++ $ # KWinBoard: Chessboard for Windows + + + +

+$#KWinBoard: Chessboard for Windows

+
+

K# An updated description with the release of version 4.3.14

+

K# "For the ultimate WinBoard Experience"

+

New features since WinBoard 4.2.7 that are implemented in Allessandro ScottiÂ’s WinBoard_x are highlighted in red. New features in the WinBoard 4.3.xx series by H.G. Muller are highlighted in green.

+

K# Description

+

WinBoard 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:

+ +
    +
  • Chess engines 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. GNU Chess is supplied with WinBoard, and over 100 other free chess engines are available separately. Of these, Crafty is the most popular. See Installing Chess EnginesInstallingChessEngines for instructions on installing additional chess engines.
  • +
  • Chess servers 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, 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.
  • +
  • The Web 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.
+ +

K#Getting Started

+

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.

+

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 customizeicsNames these lists or type in WinBoard command line optionsOptions directly.

+

After starting WinBoard, you can make K#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.

+

When WinBoard is iconized, its K#icon is a white knight if it is White's turn to move, a black knight if it is Black's turn.

+

Additional Information

+ +

MenusMenus

+

Shortcut ButtonsButtons

+

Command Line OptionsOptions

+

Initialization FilesFiles

+

Installing Chess EnginesInstallingChessEngines

+

FirewallsFirewalls

+

LimitationsLimitations

+

AuthorsAuthors

+

CopyrightCopyright

+

Frequently Asked Questions!ExecFile(FAQ.html)

+

 

+ +

K#$+MENUS

+ +

File MenuFileMenu

+

Mode MenuModeMenu

+

Action MenuActionMenu

+

Step MenuStepMenu

+

Options MenuOptionsMenu

+

Help MenuHelpMenu

+

ICS Interaction Context MenuICSInteractionContextMenu

+

 

+ +

K#$+ File Menu

+

K# New Game

+

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 refresh command. If you want to stop playing, observing, or examining a game on ICS, use an appropriate command from the ActionActionMenu menu, not Reset.

+

K# New Shuffle Game

+

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", even if you are playing a variant that normally is not shuffled, until you select a new variant through the "New VariantÂ…" menu. If you enter "-1" for the position number, new random number is drawn before every game.

+

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.

+

K# New Variant

+

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.

+

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.

+

K# Load Game

+

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.

+

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@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 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 [Variant "varname"] functions similarly to the variantvariant command-line option, 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.

+

K# Load Next Game

+

Loads the next game from the last game record file you loaded.

+

K# Load Previous Game

+

Loads the previous game from the last game record file you loaded. Not available if the last game was loaded from a pipe.

+

K# Reload Same Game

+

Reloads the last game you loaded. Not available if the last game was loaded from a pipe.

+

K# Save Game

+

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 oldSaveStyleoldSaveStyle 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 P@f7 is generated for piece-drops in bughouse games; this is a nonstandard extension to PGN.

+

K# Copy Game To Clipboard

+

Copies the record of the current game to the Windows clipboard in PGN (portable game notation) format.

+

K# Paste Game From Clipboard

+

Plays a game from the Windows clipboard. See Load GameLoadGame for a discussion of game file format and parser behavior.

+

K# Load Position

+

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 Save Position command writes when oldSaveStyleoldSaveStyle is turned on. 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.

+

K# Load Next Position

+

Loads the next position from the last position file you loaded.

+

K# 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.

+

K# Reload Same Position

+

Reloads the last position you loaded. Not available if the last position was loaded from a pipe.

+

K# Save Position

+

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 oldSaveStyleoldSaveStyle option is True, in which case they are saved in an older, human-readable format that is specific to WinBoard. Both formats can be read back by the Load Position command; however, currently Load Position can load only the first position in a file.

+

K# Save Diagram

+

Writes the current board display as a bitmap file. With this command you can use WinBoard as a diagram generator.

+

K# Copy Position To Clipboard

+

Places a diagram of the current position (in Forsythe-Edwards notation) into the Windows clipboard.

+

K# Paste Position From Clipboard

+

Sets up a position from the Windows clipboard. Position must be in FEN (Forsythe-Edwards notation). Puts WinBoard into Edit GameEditGame mode if it was not there already.

+

K# Exit

+

Exits from WinBoard.

+

 

+

K#$+ Mode Menu

+

K# Machine White

+

Forces the chess engine to play white.

+

K# Machine Black

+

Forces the chess engine to play black.

+

K# Two Machines

+

Starts a game between two chess engines.

+

K# Machines Both

+

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).

+

K# Analysis Mode

+

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. This feature currently works only if Crafty is the chess engine.

+

K# Analyze File

+

In this mode, you can load a game from a file, and the chess engine will analyze each move as in Analysis Mode. This feature currently works only if Crafty is the chess engine.

+

K# ICS Client

+

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.

+

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 context menuICSInteractionContextMenu of editing commands and ICS command shortcuts.

+

Some useful ICS commands include who to see who is logged on, games to see what games are being played, match to challenge another player to a game, observe to observe an ongoing game, examine or smoves to review a recently completed game, and of course help.

+

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 ForwardForward and BackwardBackward or save them with Save GameSaveGame.

+

Some special ICS Client features are activated when you are in examine or bsetup mode on ICS. See the descriptions of the menu commands ForwardForward, BackwardBackward, PausePause, and Stop ExaminingStopExamining 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.

+

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 follow or pfollow command in the new window.

+

K# Edit Game

+

Allows you to make moves for both Black and White, and to change moves after backing up with the BackwardBackward 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.

+

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 Machine WhiteMachineWhite, Machine BlackMachineBlack, or Two MachinesTwoMachines.

+

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 examine command or start an ICS match against yourself.

+

K# Edit Position

+

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. 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).

+

Selecting Edit Position causes WinBoard to discard all remembered moves in the current game.

+

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 examine command, or start an ICS match against yourself. (See also ICS ClientICSClient above.)

+

K# Show Engine Output

+

Open a new window dedicated to showing the thinking output of the engine(s), as controlled by "Show Thinking".

+

K# Show Evaluation Graph

+

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.

+

K# Show Game List

+

Open a new window dedicated to showing the list of all games in the currently loaded game file.The information that is displayed for each game can be controlled in the options menu. (e.g. players, date, result, taken from the PGN tags.)

+

K# Show Move History

+

Open a new window dedicated to showing the game currently in progress.

+

K# Training

+

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 Type In MoveTypeInMove 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.

+

K# Show Game List

+

Shows or hides the list of games generated by the last Load GameLoadGame command.

+

K# 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 WinBoard with "?" (unknown value) or "-" (inapplicable value).

+

K# Edit Comment

+

Adds or modifies a comment on the current position. Comments are saved by Save GameSaveGame and are displayed by Load GameLoadGame, ForwardForward, and BackwardBackward.

+

K# Enter Username

+

Allows you to type the name of the human player, which will appear in the PGN header and in the window title.

+

K# Pause

+

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 P (or C) button is equivalent to selecting Pause.

+

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 ForwardForward). This behavior is meant to simulate adjournment with a sealed move.

+

If you select Pause while you are in examine 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.

+

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 ForwardForward, or resume automatic loading by selecting Pause again.

+

 

+

K#$+ Action Menu

+

Most of these commands are available in chess server mode only.

+

K# 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.

+

K# Decline

+

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.

+

K# Rematch

+

Issues the ICS rematch command, which asks for another game against your last opponent with the same time control and rule set.

+

K# 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.

+

K# 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.

+

K# Adjourn

+

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 match command.

+

K# Abort

+

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.

+

K# Resign

+

Resigns the game to your opponent.

+

K# Stop Observing

+

Ends your participation in observing a game, by issuing the ICS unobserve command.

+

K# Stop Examining

+

Ends your participation in observing a game, by issuing the ICS unobserve command.

+

K# Adjudicate To White

+

End the current game and stop participating engine. The result will appear in the PGN as a win for white.

+

K# Adjudicate To Black

+

Same as above, but game will appear as a win for black.

+

K# Adjudicate Draw

+

Same as above, but game will appear as a draw.

+

 

+

K#$+ Step Menu

+

K# Type In Move

+

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.)

+

K# Backward

+

Steps backward through a series of remembered moves. The < button is equivalent to selecting Backward.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 Retract MoveRetractMove or Edit GameEditGame if you want to change past moves.

+

If you are examining a game on the ICS, the behavior of Backward depends on whether WinBoard is in PausePause mode. If Pause mode is off, Backward issues the ICS command backward, 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.

+

K# Forward

+

Steps forward through a series of remembered moves (undoing the effect of BackwardBackward) or through a game file. The > button is equivalent.

+

If you are examining a game on the ICS, the behavior of Forward depends on whether WinBoard is in PausePause mode. If Pause mode is off, Forward issues the ICS command forward, 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.

+

K# Back to Start

+

Jumps backward to the first remembered position in the game. The << button is equivalent.

+

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 Retract MoveRetractMove or Edit GameEditGame if you want to change past moves; or use ResetReset to start a new game.

+

If you are examining a game on the ICS, the behavior of Back to Start depends on whether WinBoard is in PausePause mode. If Pause mode is off, Backward issues the ICS command backward 999999, 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.

+

K# Forward to End

+

Jumps forward to the last position in the game. The >> button is equivalent.

+

If you are examining a game on the ICS, the behavior of Forward to End depends on whether WinBoard is in PausePause mode. If Pause mode is off, Forward to End issues the ICS command forward 999999, 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.

+

K# Revert

+

If you are examining a game on the ICS, issues the ICS command revert.

+

K# Truncate Game

+

Discards all remembered moves of the game beyond the current position. Puts WinBoard into Edit GameEditGame mode if it was not there already.

+

K# Move Now

+

Forces the chess engine to move immediately. May not work with all chess engines.

+

K# 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 NowMoveNow 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.

+

 

+

K#$+ Options Menu

+

K# Flip View

+

Inverts your view of the chessboard.

+

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 flipViewflipViewOption command line option.

+

K# Swap Clocks

+

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.)

+

K#General

+

K# Always On Top

+

If this option is on, WinBoard sets its chessboard to be a topmost window, meaning that it always appears on top of all ordinary windows on the screen.

+

K# Always Queen

+

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.

+

K# 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.

+

K# 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.

+

K# Auto Flag

+

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 set autoflag 1 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.

+

K# Auto Flip View

+

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.

+

K# Auto Raise Board

+

If thisautoFlipViewOption 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.

+

K#Blindfold

+

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.

+

K# Highlight Dragging

+

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.

+

K# Extended PGN Info

+

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.

+

K# Extra Info in Move History

+

Same as above, but in move-history window.

+

K# 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 BackwardBackward or Back to StartBackToStart, the starting and ending squares of the last move to be unmade are highlighted.

+

K# Periodic Updates

+

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.

+

K# 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.

+

K# Popup Exit Message

+

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 debugModedebugMode is on, however, the message will appear in the debug log.

+

K# 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 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.

+

K# Show Button Bar

+

If Show Button Bar is on, WinBoard displays on-screen buttonsBUTTONS to step forward, backward, or pause the game. If it is off, the buttons are hidden, making the message line wider.

+

K# Show Coords

+

If Show Coords is on, WinBoard displays algebraic coordinates along the board's left and bottom edges.

+

K# Show Thinking

+

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.

+

K# Test Legality

+

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 d file are generally supported with Test Legality on. 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.)

+

K# Hide Thinking from Human

+

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.

+

K# Highlight Move with Arrow

+

A big, fat arrow is drawn between the start and target field of the last move, so you cannot possibly miss it.

+

K#Board

+

K# Board Size

+

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.

+

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.

+

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.

+

K# Board Colors

+

Lets you change the colors WinBoard is using to draw the board and pieces.

+

K# All White

+

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.

+

K# Flip Black

+

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.

+

 

+

K#Engine

+

K# Ponder Next Move,Show Thinking, Hide Thinking from Human and Periodic Updates

+

Duplicates of the controls in the "General" option menu.

+

K# Adjudicate Draw Moves

+

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.

+

K# Adjudicate Loss Threshold

+

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.

+

K# Verify Claims

+

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.

+

K# Detect Mates

+

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.

+

K# Draw if Insufficient Material

+

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.

+

K# Adjudicate Trivial Draws

+

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.

+

K# N-Move Rule

+

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.

+

K# N-fold Repetition Rule

+

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!)

+

 

+

K#UCI

+

K# Polyglot Directory

+

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.

+

K# Hash Size, EGTB Path, EGTB Cache Size, Opening Book

+

These are options that UCI engines expect to be specified. If future extensions of WinBoard protocol allow native WinBoard engines to request similar information, it might be used for these engines as well.

+

 

+

K#ICS

+

K# Auto Comment

+

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 say, tell, whisper, and kibitz. Limitation: remarks that you type yourself are not

+

recognized; WinBoard scans only the output from ICS, not the input you type to it.

+

K# Auto Observe

+

If Auto Observe is on and you add a player to your gnotify 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 follow player instead, and the server will automatically observe all of playerÂ’s games.

+

K# Get Move List

+

If Get Move List is on, whenever WinBoard 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 immediately fetches the current move list.

+

K# Local Line Editing

+

If Local Line Editing is on, 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").

+

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.

+

If Local Line Editing is off, 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.

+

In both modes, if WinBoardÂ’s 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 telnetProgramtelnetProgram.

+

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 LIMITATIONSLIMITATIONS below.

+

K# Quiet Play

+

If Quiet Play is on, WinBoard 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.

+

K# Premove

+

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 Premove HighlightpremoveHighlightColor 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.

+

This group of controls allows you to set the following options: premovepremove, premoveWhitepremoveWhite, premoveWhiteTextpremoveWhiteText, premoveBlackpremoveBlack, premoveBlackTextpremoveBlackText.

+

K#ICS Alarm

+

When icsAlarm is set to True, the alarm soundsoundIcsAlarm is played when your clock counts down to icsAlarmTimeicsAlarmTime seconds. For ICS games with time controls that include an increment, the alarm will sound each time the clock counts down to the icsAlarmTimeicsAlarmTime.

+

K# ICS Interaction Colors

+

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).

+

K# Fonts

+

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.

+

K# Sounds

+

Lets you change the sounds that WinBoard plays for various events.

+

K#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 set bell 0 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.

+

The other sound events correspond directly to the types of messages that the ICS Interaction ColorsICSInteractionColors option knows how to colorize.

+

K# Game List

+

Lets you select which information is displayed in the Game List window.

+

K# Communications

+

Lets you change the communication port parameters when the internetChessServerComPortinternetChessServerComPort option is in use.

+

K# Load Game

+

Lets you change options used while loading games (timeDelaytimeDelay option).

+

K# Save Game

+

Lets you change options used for saving games (autoSaveGamesautoSaveGames, oldSaveStyleoldSaveStyle, and saveGameFilesaveGameFile options).

+

K# Time Control

+

Lets you change the time control to be used in games against a chess engine. Two types of timing are available.

+

With conventional chess clocks, each player begins with his clock set to the timeControltimeControl period. When both players have made movesPerSessionmovesPerSession 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.

+

With incremental clocks, each player is given an initial time allotment, and a timeIncrementtimeIncrement 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.

+

K# Save Settings Now

+

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 SettingsSettings for the fine points.

+

K# Save Settings on Exit

+

If this option is on, the current settings are automatically saved when WinBoard exits, as with Save Settings Now.

+

 

+

K# $+ Help Menu

+

K# Help Contents

+

Brings up this help file, starting at the Contents page.

+

K# Help Index

+

Brings up this help file, starting at the Index/Find dialog.

+

K# How to Use Help

+

Brings up the standard help file that explains how to use Windows Help.

+

K# Hint

+

Displays a move hint from the chess engine.

+

K# Book

+

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.

+

K# About WinBoard

+

Displays the WinBoard version number.

+

 

+

K# $+ICS Interaction Context Menu

+

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 help command on ICS to learn what these commands mean.

+

You can customize the lower part of this menu (below the Paste option) by setting the icsMenuicsMenu option. The easiest way to accomplish this is to edit your settings filesettings with Notepad or another plain text editor. Sorry, there is no graphical user interface for customizing the menu.

+

K# Copy and Paste

+

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.

+

K# Copy

+

Copies the current selection to the clipboard.

+

K# Paste

+

Pastes the clipboard contents to the input box.

+

K# Who

+

Sends the command "who" to ICS.

+

K# Players

+

Sends the command "players" to ICS.

+

K# Games

+

Sends the command "games" to ICS.

+

K# Sought

+

Sends the command "sought" to ICS.

+

K# Tell (name)

+

Inserts "tell name " into the input box. The string name is the current selection if it is not empty. Otherwise name 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.

+

K# Message (name)

+

Inserts "message name " into the input box, where name is as defined above.

+

K# Finger (name)

+

Sends the command "finger name" to ICS, where name is as defined above.

+

K# Vars (name)

+

Sends the command "vars name" to ICS, where name is as defined above.

+

K# Observe (name)

+

Sends the command "observe name" to ICS, where name is as defined above. Here name can be either a user handle or a game number.

+

K# Match (name)

+

Sends the command "match name" to ICS, where name is as defined above.

+

K# Play (name)

+

Sends the command "play name" to ICS, where name is as defined above. Here name can be either a user handle or a seek ad number.

+

 

+

K#$+ BUTTONS

+

K <<

+

Same as Back to StartBacktoStart.

+

K <

+

Same as BackwardBackward.

+

K P

+

Same as PausePause. The button label changes to C while WinBoard is pausing.

+

K >

+

Same as ForwardForward.

+

K >>

+

Same as Forward to EndForwardtoEnd.

+

 

+

KK # $ + COMMAND LINE OPTIONS

+

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 settings filesettings, 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 Save Settings NowSaveSettings or Save Settings on ExitSaveSettingsOnExit, so most people will not need to read this section.

+

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 opt, you can just give its short name preceded by a minus sign or slash (-opt or /opt); to turn one off, prefix the short name by an "x" or an extra minus sign (-xopt or /-opt). 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. (-opt 23 or /option: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).

+

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 /cpcp, /icsics, or /ncpncp. If you give the /cp option, you must also give the /fcpfcp and /scpscp options. If you give the /ics option, you must also give the /icshosticshost option.

+ +

Chess Engine OptionsChessEngineOptions

+

Internet Chess Server OptionsInternetChessServerOptions

+

Load and Save OptionsLoadAndSaveOptions

+

User Interface OptionsUserInterfaceOptions

+

Other OptionsOtherOptions

+

 

+ +

K$#+ Chess Engine Options

+

K#/cp or /xcp, or K#/chessProgram true|false

+

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.

+

K#/tc or K#/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.

+

K#/mps or K#/movesPerSession moves

+

When both players have made movesPerSession moves, a new timeControl period is added to both clocks. Default: 40 moves.

+

K#/inc or K#/timeIncrement seconds

+

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.

+

K# /clock or /xclock, or K# /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.

+

K# /st or K# /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 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.

+

K# /depth or K# /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 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.

+

K# /firstNPS number

+

K# /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 time 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. WinBoard will manage the clocks in accordance with this, relying on the number of nodes reported by the engine in its thinking output. If number equals zero, it can obviously bnot 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. Tis option can provide fairer conditions fo 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!

+

K# /firstTimeOdds factor

+

K# /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 a factor times slower machine.

+

K# /timeOddsMode mode

+

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.

+

K# /ponder or /xponder, or K# /ponderNextMove true|false

+

Sets the Ponder Next MoveponderNextMoveCmd option. Default: True.

+

K# /thinking or /xthinking, or K# /showThinking true|false

+

Sets the Show ThinkingshowThinkingCmd option. Default: False.

+

K# /periodic or /xperiodic, or K# /periodicUpdates true|false

+

Sets the Periodic UpdatesperiodicUpdatesCmd option. Default: True.

+

K# /mg or K# /matchGames n

+

Automatically runs an n-game match between two chess engines, with alternating colors. If the loadGameFileloadGameFile or loadPositionFileloadPositionFile 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 saveGameFilesaveGameFile option is set, a move record for the match will be appended to the specified file. If the savePositionFilesavePositionFile 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).

+

K# /mm or /xmm, or K# /matchMode true|false

+

Provided for backward compatibility. If true and matchGames=0, sets matchGames=1.

+

K# /matchPause number

+

Sets the length of the pause between games in match mode to number 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.)

+

K# /fd or K# /firstDirectory dir
+
K# /sd
or K# /secondDirectory dir
+K# /fcp
or K# /firstChessProgram command
+
K# /scp
or K# /secondChessProgram command

+

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.

+

The dir 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 dir is not an absolute pathname, it is interpreted relative to the directory from which WinBoard.exe itself was loaded. The dir argument is ignored if the chess engine is being run on a remote machine (see firstHost and secondHost below). The default value for dir "", meaning that the chess engine is expected to be installed in the same directory as WinBoard.

+

The command 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 command in single or double quotes. If the engine name or an engine argument has a space in it, use single quotes around the whole command, 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, QChess1.5.exe), you must include the ".exe" extension; otherwise you can leave it out. The default value for command is "", which brings up the startup dialog to ask which engines you want.

+

Examples:

+ + + +

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

+
+
+ +

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.

+

Examples:

+ + + +

WinBoard /cp /fd="C:\Engines\Crafty" /fcp="WCrafty-15.12 WBopt /%sTimeOdds=2" /scp=GNUChess

+
+
+ +

Meaning that Crafty will have to play with half the time GNUChess will get.

+

 

+

K# /fh or K# /firstHost host
+
K# /sh
or K# /secondHost host

+

Hosts on which the chess engines are to run. The default for each is "localhost". If you specify another host, WinBoard uses rshrsh 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.

+

K# /firstInitString or /initString string
+
K# /secondInitString string

+

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 settings filesettings, and WinBoard will convert it to a newline.

+

All chess engines require the "new" command to start a new game.

+

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.

+

K# /firstComputerString string
+
K# /secondComputerString string

+

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 "".

+

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.

+

K# /fb or /xfb, or K# /firstPlaysBlack true|false

+

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.

+

K#/reuse or /xreuse, or K#/reuseFirst true|false
+
K#/reuse2
or /xreuse2, or K#/reuseSecond true|false

+

If this option is True (the default), WinBoard 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.

+

K#/firstProtocolVersion ver
+
K#/secondProtocolVersion ver

+

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.

+

K#/firstScoreAbs true|false
+
K#/secondScoreAbs true|false

+

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.

+

+K$# UCI engine support

+

K# /fUCI or K# /firstIsUCI true|false

+

K# /sUCI or K# /secondIsUCI true|false

+

Indicates if the mentioned engine executable file is an UCI engine, ICSLogon 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.

+

K# /PolyglotDir filename

+

Gives the name of the folder in which Polyglot is installedICSLogon.

+

K# /usePolyglotBook true|false

+

Specifies if the Polygot book should be usedICSLogon.

+

K# /PolyglotBook filename

+

Gives the filename of the opening book that Polyglot should useICSLogon.

+

K# /fNoOwnBookUCI or K# /firstHasOwnBookUCI true|false

+

K# /sNoOwnBookUCI or K# /secondHasOwnBookUCI true|false

+

Indicates if the mentioned engine lacks an opening book or not.

+

K# /defaultHashSize number

+

Sets the size of the hash table to number MegaBytesICSLogon.

+

K# /defaultCacheSizeEGTB number

+

Sets the size of the EGTB cache to number MegaBytesICSLogon.

+

K# /defaultPathEGTB filename

+

Gives the name of the folder where the end-game tablebases are installedICSLogon.

+

+K$# Internet Chess Server Options

+

K# /ics or /xics, or K# /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. See ICS ClientICSClient Default: False.

+

You can create a script file containing ICS commands that WinBoard will type in for you whenever you connect to the ICS. See ICS LogonICSLogon.

+

K# /icshost or K# /internetChessServerHost hostname

+

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.

+

K# /icsport or K# /internetChessServerPort portnumber

+

The port number to use when connecting to a chess server in ICS mode. Default: 5000.

+

K#/icshelper program

+

An external helper program used to communicate with the chess server. Typically Ktimestamp for the ICC (chessclub.com) or Ktimeseal for FICS (freechess.org, eics.daimi.aau.dk, etc.). This option is shorthand for "/useTelnet /telnetProgram program".

+

K#/telnet or /xtelnet, or K#/useTelnet true|false

+

This option is poorly named; it should be called /useHelper. 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.

+

K#/gateway hostname

+

If this option is set to a host name, WinBoard uses rshrsh 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 FIREWALLSFIREWALLS section below for an explanation of when this option is useful.

+

K#/telnetProgram program

+

This option is poorly named; it should be called /helperProgram. 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.

+

K#/icscom or K#/internetChessServerComPort name

+

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:

+

WinBoard /ics /icscom:com1

+

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 Local Line EditingLocalLineEditing 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 LIMITATIONSLIMITATIONS section below about extra echoes.

+

K# /comPortSettings "dataRate,dataBits,parity,stopBits,flow"

+

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 CommunicationsCommunications dialog.

+

K# /icslogon or K# /internetChessServerLogonScript filename

+

This option lets you change the name used for the ICS LogonICSLogon file. Default: "ICS.ini". The filename is interpreted relative to WinBoard's installation directory (the directory containing WinBoard.exe).

+

K# /autocomm or /xautocomm, or K# /autoComment true|false

+

Sets the Auto CommentAutoCommentCmd option. Default: False.

+

K# /autoflag or /xautoflag, or K# /autoCallFlag true|false

+

Sets the Auto FlagAutoFlag option. Default: False.

+

K# /autobs or /xautobs, or K# /autoObserve true|false

+

Sets the Auto ObserveautoObserveCmd option. Default: False.

+

K# /autoKibitz

+

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.

+

K# /moves or /xmoves, or K# /getMoveList true|false

+

Sets the Get Move ListgetMoveListCmd option. Default: True.

+

K# /edit or /xedit, or K# /localLineEditing true|false

+

Sets the Local Line EditinglocalLineEditing option. Default: True.

+

K# /quiet or /xquiet, or K# /quietPlay true|false

+

Sets the Quiet PlayquietPlayCmd option. Default: False

+

K# /blindfold true|false

+

Sets the BlindfoldBlindfoldCmd option. Default: False

+

K#/pre or K#/xpre, or K# /premove true|false

+

Sets the PremovePremoveCmd option. If set to True, the premove feature is enabled. If set to False, premove is disabled and the other PremovePremoveCmd settings are ignored. Default: False.

+

K#/prewhite or K#/xprewhite, or K# /premoveWhite true|false

+

K# /premoveWhiteText movetext

+

If premoveWhite is set to True and you are playing white in an ICS game, the text specified by the premoveWhiteText option is sent to the ICS as soon as the game starts. These options can be set from the PremovePremoveCmd section of the ICS OptionsICSOptions dialog box. The default for premoveWhite is False.

+

K#/preblack or K#/xpreblack, or K# /premoveBlack true|false

+

K# /premoveBlackText movetext

+

If premoveBlack is set to True and you are playing black in an ICS game, the text specified by the premoveBlackText 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 PremovePremoveCmd section of the ICS OptionsICSOptions dialog box. The default for premoveBlack is False.

+

K#/alarm or K#/xalarm, or K#/icsAlarm true|false

+

K#/icsAlarmTime milliseconds

+

When icsAlarm is set to True, the alarm soundsoundIcsAlarm is played when your clock counts down to icsAlarmTime seconds. For ICS games with time controls that include an increment, the alarm will sound each time the clock counts down to the icsAlarmTime. The icsAlarmTime can be set by selecting ICS AlarmICSAlarm from the ICS optionsICSOptions dialog. The default is 5 seconds.

+

 

+

+K$# Load and Save Options

+

K# /lgf or K# /loadGameFile filename
+K# /lgi
or K# /loadGameIndex N

+

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 N, the menu is suppressed and the Nth game found in the file is loaded immediately.

+

K# /td or K# /timeDelay seconds

+

Time delay between moves during Load GameLoadGame. 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.

+

K# /sgf or K# /saveGameFile filename

+

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.

+

K# /autosave or /xautosave, or K# /autoSaveGames true|false

+

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.

+

K# /lpf or K# /loadPositionFile filename
+K# /lpi
or K# /loadPositionIndex N

+

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 N, the Nth position found in the file is loaded; otherwise the first is loaded.

+

K# /spf or K# /savePositionFile filename

+

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.

+

K# /pgnExtendedInfo true|false

+

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.

+

K# /pgnEventHeader string

+

Sets the name used in the PGN event tag to string.

+

K# /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.

+

K# /oldsave or /xoldsave, or K# /oldSaveStyle true|false

+

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.

+

K# /debug or /xdebug, or K# /debugMode true|false

+

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.

+

K# /debugFile filename or K# /nameOfDebugFile filename

+

Sets the name of the file to which WinBoard saves debug information (including all communication to and from the engines).

+

K# /engineDebugOutput number

+

Specifies how WinBoard should handle unsollicited output from the engine, with respect to saing it in the debug file. The output is further (hopefully) ignored. If number=0, WinBoard rfrains 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 informtion, such as the broadcater of live games TLCV / TLCS. Such applications can be protected from spurious engine output that might otherwise confuse them.

+

 

+

 

+

+K$# User Interface Options

+

K# /hideThinkingFromHuman true|false

+

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).

+

K# /top or /xtop, or K# /alwaysOnTop true|false

+

Sets the Always On TopAlwaysOnTop option. Default: False.

+

K# /queen or /xqueen, or K# /alwaysPromoteToQueen true|false

+

Sets the Always QueenAlwaysQueen option. Default: False.

+

K#/drag or /xdrag, or K#/animateDragging true|false

+

Sets the Animate DragginganimateDragging option. Default: True.

+

K#/animate or /xanimate, or K#/animateMoving true|false

+

Sets the Animate MovinganimateMoving option. Default: True.

+

K# /flip or /xflip, or K# /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 ViewFlipView menu command can be used to flip the board after the game starts

+

K#/autoflip or /xautoflip, or K#/autoFlipView true|false

+

Sets the Auto Flip ViewAutoFlipView option. Default: True.

+

K#/autoraise or /xautoraise, or K#/autoRaiseBoard true|false

+

Sets the Auto Raise BoardAutoFlipView option. Default: True.

+

K#/highdrag or /xhighdrag, or K#/highlightDragging true|false

+

Sets the Highlight DragginghighlightDragging option. Default: False.

+

K#/highlight or /xhighlight, or K#/highlightLastMove true|false

+

Sets the Highlight Last MovehighlightLastMoveOpt option. Default: False.

+

K# /exit or /xexit, or K# /popupExitMessage true|false

+

Sets the Popup Exit MessagepopupExitMessageCmd menu option. Default: False.

+

K# /popup or /xpopup, or K# /popupMoveErrors true|false

+

Sets the Popup Move ErrorspopupMoveErrorsCmd menu option. Default: False.

+

K# /coords or /xcoords, or K# /showCoords true|false

+

Sets the Show CoordsshowCoords option. Default: False.

+

K# /legal or /xlegal, or K# /testLegality true|false

+

Sets the Test LegalitytestLegalityCmd option. Default: True.

+

K# /size or K# /boardSize sizename

+

Sets the Board SizeBoardSizeCmd option. Also chooses which board size any following Font options will affect. The default is the largest size that will fit on your screen.

+

K#/wpc or K# /whitePieceColor color
+
K#/bpc
or K# /blackPieceColor color
+
K#/lsc
or K# /lightSquareColor color
+K#/dsc
or K# /darkSquareColor color

+

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 #rrggbb) or in decimal (as rrr,ggg,bbb). 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 Board ColorsBoardColors section of the Board OptionsBoardOptions dialog.

+

If you are using a K# grayscale monitor, try setting the colors to:

+ +

-whitePieceColor:#FFFFFF
+-blackPieceColor:#000000
+-lightSquareColor:#CCCCCC
+-darkSquareColor:#999999

+ +

K#/hsc or K# /highlightSquareColor color
+K#/phc
or K# /premoveHighlightColor color

+

Color specifications for the Highlight Last MoveHighlightLastMove and PremovePremoveCmd options, respectively. Colors can be specified only by red/green/blue intensity, either in hexadecimal (as #rrggbb) or in decimal (as rrr,ggg,bbb). 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.

+

K# /mono or /xmono, or K# /monoMode true|false

+

Determines whether WinBoard displays its pieces and squares in black and white (True) or color (False, the default). Available in the Board ColorsBoardColors section of the Board OptionsBoardOptions dialog.

+

K# /flipBlack true|false

+

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.

+

K# /allWhite true|false

+

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.

+

K# /renderPiecesWithFont fontname

+

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.

+

K# /fontPieceToCharTable characterstring

+

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.

+

K# /fontPieceSize number

+

The number gives the size of the piece, as a percentage of the square size.

+

K#/fontPieceBackColorWhite color
+
K#/fontPieceForeColorWhite color
+
K#/fontPieceBackColorBlack color
+
K#/fontPieceForeColorBlack color

+

Color specifications for white pieces, black pieces that are generated with font-based rendering.

+

K# /liteBackTextureFile filename

+

K# /darkBackTextureFile filename

+

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.

+

K# /liteBackTextureMode number

+

K# /darkBackTextureMode number

+

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.
+

+

K# /overideLineGap number

+

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.

+

# /highlightMovesWithArrow true|false

+

If this option is true, a big, fat arrow is drawn to indicate the last move.

+

# /highlightArrowColor color

+

Specifies the color of the arrow that highlights the moves.

+

K# /evalHistoColorWhite color

+

K# /evalHistoColorBlack color

+

Specifies the colors to be used to plot the white and black scores in the evaluation graph.
+

+

K# /colorShout "effects color"
+
K# /colorSShout "effects color"
+
K# /colorChannel1 "effects color"
+K# /colorChannel "effects color"
+K# /colorKibitz "effects color"
+K# /colorTell "effects color"
+K# /colorChallenge "effects color"
+K# /colorRequest "effects color"
+K# /colorSeek "effects color"
+K# /colorNormal "effects color"

+

Select colors and effects to colorize messages in the ICS Interaction window. The effects may be any combination of bold, italic, underline, and strikeout. Colors are specified as for squares and pieces. Available on the ICS Interaction ColorsICSInteractionColors section of the ICS OptionsICSOptions 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.

+

K# /colorBackground color

+

Sets the background color for the ICS Interaction window. Available on the ICS Interaction ColorsICSInteractionColors section of the ICS OptionsICSOptions dialog.

+

K# /colorize or /xcolorize, or K# /colorizeMessages true|false

+

If True, WinBoard colorizes messages in the ICS Interaction window with the colors listed above. Default: True. Available in the ICS Interaction ColorsICSInteractionColors section of the ICS OptionsICSOptions dialog.

+

K# /clockFont "fontname:size effects"
+K# /messageFont "fontname:size effects"
+K# /coordFont "fontname:size effects"
+K# /tagsFont "fontname:size effects"
+K# /commentFont "fontname:size effects"
+K# /icsFont "fontname:size effects"

+

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 bold, italic, underline, and strikeout. Example: /clockFont="Arial:20.0 bi". Available on the FontsFonts menu.

+

K# /soundShout sound
+
K# /soundSShout sound
+
K# /soundChannel1 sound
+
K# /soundChannel sound
+
K# /soundKibitz sound
+
K# /soundTell sound
+
K# /soundChallenge sound
+
K# /soundRequest sound
+
K# /soundMove sound
+
K# /soundBell sound

+

K# /soundIcsWin sound
+K# /soundIcsLoss sound
+K# /soundIcsDraw sound
+K# /soundIcsUnfinished sound

+

K# /soundIcsAlarm sound

+

Associate sounds with WinBoard events. Most of the events are the same ones that cause text colorization. In addition, soundMove is played if a chess engine or another player makes a move. SoundBell is played if the chess server sends an ASCII BEL character (Ctrl+G). Available on the SoundsSounds menu.

+

SoundIcsWin, soundIcsLoss, soundIcsDraw and soundIcsUnfinished are played at the conclusion of an ICS game. The result of the game determines which sound is played.

+

SoundIcsAlarm is played when your game clock counts down to icsAlarmTimeicsAlarmTime.

+

The sound argument may be one of the following:

+ +
    +
  • The name of a .wav file. The filename is interpreted relative to WinBoard's installation directory (the directory containing WinBoard.exe).
  • +
  • $, indicating the default system sound.
  • +
  • ! followed by the name of a built-in WinBoard wave resource.
  • +
  • ! alone, or "" (empty string), indicating silence.
+ +

The default for soundMove and soundBell is $, while the others default to silence.

+

K#/icsMenu={entries} or /icsMenu=@filename

+

This option lets you customize the right-button context menuICSInteractionContextMenu 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 "-". The fields are:

+
    + +
  1. The menu text. If this field begins with "|", the item begins a new column in the menu and the "|" is not shown. If this field contains an "&", 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.
  2. +
  3. Text to insert into the input pane. The text cannot include a comma. You can use ICS aliases to get around this limitation.
  4. +
  5. A flag (1 or 0) saying whether to insert a space and name (see aboveTell) after the text. If you set this flag, you might also want to put "(name)" into the menu text as a memory aid.
  6. +
  7. A flag (1 or 0) saying whether the result should be sent immediately to ICS or left in the input pane for further editing.
+ +

The entry "-" produces a separator line in the menu. The top three menu entries are always Copy and Paste, Copy, and Paste, but you have full control over the rest of the menu.

+

The default menu is:

+ +

–
+&Who,who,0,1
+Playe&rs,players,0,1
+&Games,games,0,1
+&Sought,sought,0,1
+|&Tell (name),tell,1,0
+M&essage (name),message,1,0
+–
+&Finger (name),finger,1,1
+&Vars (name),vars,1,1
+&Observe (name),observe,1,1
+&Match (name),match,1,1
+Pl&ay (name),play,1,1

+ +

There is no graphical user interface to set this option. To change it, edit your settingssettings file with a plain text editor such as Notepad.

+

K#/icsNames={names} or /icsNames=@filename

+

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 settingssettings file with a plain text editor such as Notepad.

+

 

+

K#/firstChessProgramNames={names} or /firstChessProgramNames="@filename"

+

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.

+ +

There is no graphical user interface to set this option. To change it, edit your settingssettings file with a plain text editor such as Notepad. Example:

+ +

/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
+}

+ +

K#/secondChessProgramNames={names} or /secondChessProgramNames="@filename"

+

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.

+ +

There is no graphical user interface to set this option. To change it, edit your settingssettings file with a plain text editor such as Notepad. Example:

+ +

/secondChessProgramNames={GNUChess
+WCrafty-15_11 /sd="C:\\Program Files\\Crafty\"
+ArasanX /sd="C:\Program Files\Arasan\Arasan 4.1"
+"EXchess xb" /sd=C:\EXchess
+Comet-WB /sd=C:\Comet
+}

+ +

K#/x=xcoord /y=ycoord

+

Sets the initial location of the board window, giving the screen coordinates of the upper left-hand corner. Both arguments must be given together.

+

K#/analysisX=xcoord /analysisY=ycoord /analysisW=width /analysisH=height

+

Sets the initial location and size of the Analysis window, giving the screen coordinates of the upper left-hand corner, the width, and the height. All four arguments must be given together.

+

K#/commentX=xcoord /commentY=ycoord /commentW=width /commentH=height

+

Sets the initial location and size of the Comment window, giving the screen coordinates of the upper left-hand corner, the width, and the height. All four arguments must be given together.

+

K#/gameListX=xcoord /gameListY=ycoord /gameListW=width /gameListH=height

+

Sets the initial location and size of the Game List window, giving the screen coordinates of the upper left-hand corner, the width, and the height. All four arguments must be given together.

+

K#/icsX=xcoord /icsY=ycoord /icsW=width /icsH=height

+

Sets the initial location and size of the ICS Interaction window, giving the screen coordinates of the upper left-hand corner, the width, and the height. All four arguments must be given together.

+

K#/tagsX=xcoord /tagsY=ycoord /tagsW=width /tagsH=height

+

Sets the initial location and size of the Tags window, giving the screen coordinates of the upper left-hand corner, the width, and the height. All four arguments must be given together.

+

K#/moveHistoryX=xcoord moveHistoryY=ycoord /moveHistoryW=width /moveHistoryH=height

+

Sets the initial location and size of the move-history window, giving the screen coordinates of the upper left-hand corner, the width, and the height. All four arguments must be given together.

+

K#/evalGraphX=xcoord /evalGraphY=ycoord /evalGraphW=width /evalGraphH=height

+

Sets the initial location and size of the evaluation-graph window, giving the screen coordinates of the upper left-hand corner, the width, and the height. All four arguments must be given together.

+

K#/engineOutputX=xcoord /engineOutputY=ycoord

+

K#/engineOutputW=width /engineOutputH=height

+

Sets the initial location and size of the engine-output window, giving the screen coordinates of the upper left-hand corner, the width, and the height. All four arguments must be given together.

+

K#/engineOutputUp true|false

+

K#/evalGraphUp true|false

+

K#/moveHistoryUp true|false

+

If set to True, the corresponding window is displayed, if False, the window is absent.

+

K#/stickyWindows true|false

+

Not an album of the Rolling stones.

+

K#/autoDisplayComments true|false

+

K#/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.

+

+K$# Adjudicaton options

+

K# /adjudicateLossThreshold scorethreshold

+

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.

+

K# /adjudicateDrawMoves number

+

If the given value is non-zero, WinBoard adjudicates the game as a draw if after the given number of moves it was not yet decided.

+

K# /testClaims true|false

+

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.

+

K# /materialDraws true|false

+

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.

+

K# /trivialDraws true|false

+

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.

+

K# /ruleMoves number

+

If the given value is non-zero, WinBoard adjudicates the game as a draw after the given number of consecutive reversible moves. Engines can claim draws after 50 moves, irrespective of the value of number.

+

K# /repeatsToDraw number

+

If the given value is non-zero, WinBoard adjudicates the game as a draw if a position is repeated the given number of times. Engines can claim draws after 3 repeats, (on the 3rd occurrence, actually), irrespective of the value of number. Beware that positions that have different castling or en-passant rights do not count as repeats, WinBoard is fully e.p. and castling aware!

+

K# /checkMates true|false

+

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.

+

 

+

+K$# Other Options

+

K# /ncp or /xncp, or K# /noChessProgram true|false

+

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.

+

K# /mode or K# /initialMode modename

+

If this option is given, WinBoard selects the given modename from the Mode menuModeMenu after starting and (if applicable) processing the loadGameFileloadGameFile or loadPositionFileloadPositionFile option. Default: "". Other supported values are TwoMachines, AnalyzeFile, Analysis, MachineWhite, MachineBlack, EditGame, EditPosition, and Training.

+

K# /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)

+

xiangqi Chinese Chess (on a 9x10 board)
+shogi Japanese Chess (on a 9x9 board, with 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 board)
+janus A game with two Archbishops (10x8 board)
+shatranj Ancient Arabic Chess, with Elephants and General replacing B and Q.
+courier Medieval intermedite between shatranj and modern Chess (on 12x8 board)
+falcon A patented Chess variant with two Falcon pieces (10x8) board
+berolina Pawns capture straight ahead, and move diagonal (legality testing off!)
+cylinder Pieces wrap around the board, as if it were a cylinder (legality testing off!)
+fairy A variant in which all pieces known to WinBoard can participate
+knightmate King moves a Knight, and vice versa

+

In the shuffle variants, WinBoard does now 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 (offboard interposition on mate), losers, suicide, giveaway, atomic, shatranj and 3check are not fully understood. In crazyhouse, WinBoard now does keep track of offboard pieces.

+

K# /boardHeight height

+

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.

+

K# /boardWidth width

+

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.

+

K# /holdingsSize size

+

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 size 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.

+

K# /defaultFrcPosition number

+

Specifies the number of the opening position in shuffle games like FRC. A value of ‘-1’ means the position is randomly generated by WinBoard.

+

K# /pieceToSquareTable characterstring

+

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.

+

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).

+

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.

+

K# /rsh or K# /remoteShell shellname

+

Name of the command used to run programs remotely. If this option is not given, WinBoard uses its own built-in implementation of the Unix rcmd protocol (the protocol used by rsh).

+

K# /ruser or K# /remoteUser username

+

User name on the remote system when running programs with the remoteShell. The default is your local user name.

+

K# /userName username

+

Name under which the Human player will be listed in the PGN file. (Default is the login name on your local computer.)

+

K# /delayBeforeQuit number

+

K# /delayAfterQuit number

+

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.

+

K# /ini or K# /settingsFile filename
+
K#@ file-name

+

See SettingsSettings.

+

 

+

KK$#+ INITIALIZATION FILES

+

K # Settings

+

When WinBoard starts up, it reads option settings from a file named WinBoard.ini in its installation directory (the directory containing WinBoard.exe). Options in this file have the same format as command line optionsOptions, 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 (;).

+

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.

+

If WinBoard encounters a /settingsFilesettingsFile filename or @atsignfilename 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.

+

The Save Settings NowSaveSettings menu command writes the current values of most options to a file. In addition, settings are saved automatically when WinBoard exits if Save Settings on ExitSaveSettingsOnExit is checked. The settings are written to the last file named in a /settingsFile command, if any; otherwise to WinBoard.ini. The @ option does not affect which file settings are saved to.

+

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.

+

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.

+

K# ICS Logon

+

Whenever WinBoard connects to the Internet Chess Server, if it finds a file called ICS.ini in its installation directory, 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 ICS.ini by using the icslogonicslogon command line option.

+

 

+

K$#+ INSTALLING CHESS ENGINES

+

Introduction

+

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.

+

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.

+

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:

+

1. Get a copy of the engine and any supporting files it needs.

+

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.

+

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.

+

4. Create a shortcut on your desktop or Start menu to run the engine with WinBoard.

+

5. Optionally edit your WinBoard.ini file to add the engine to the drop-down lists on WinBoard's startup dialog.

+

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.

+

Example: Crafty

+

1. Choose a directory to put Crafty in. We'll use C:\Program Files\Crafty in this example. Download your copy of Crafty into this directory from its author's FTP site, ftp://ftp.cis.uab.edu/pub/hyatt. At this writing, you will need at least the following files:

+ +

read.me
+v15/crafty.doc
+v15/crafty.faq
+v15/wcrafty-15.*.exe
(where * is replaced by the largest number there)
+
common/start.zip
+
common/medium.zip (or another book).

+ +

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.

+

3. Optional, but recommended: In an MS-DOS Prompt box, cd to the directory where WinBoard is installed, typically "C:\Program Files\WinBoard". Then type the following command line. Use the actual name of the wcrafty file you downloaded, not an *, and if your browser changed the first period to an underscore when you downloaded the file, make that change in the command line too.

+ + + + +

WinBoard /cp /fcp=WCrafty-15.* /fd="C:\Program Files\Crafty" /scp=WCrafty-15.* /sd="C:\Program Files\Crafty"

+
+
+
+ +

WinBoard should start up, with Crafty running as its chess engine. Check that you can play chess against Crafty.

+

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, after the closing quotation mark. Use the actual name of the wcrafty file you downloaded, not an *, and if your browser changed the first period to an underscore when you downloaded the file, make that change in the command line too.

+ + + + +

/cp /fcp=WCrafty-15.* /fd="C:\Program Files\Crafty"
+/scp=WCrafty-15.* /sd="C:\Program Files\Crafty"

+
+
+
+ +

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.

+

5. To add Crafty as an option in the WinBoard Startup dialog, edit your WinBoard.ini fileSettings with Notepad or another plain text editor, carefully following the example shown under /firstChessProgramNamesfirstChessProgramNames above.

+

For more information

+

If you would like to run an automated computer player on the ICS, see the separate file zippy.README. If you would like to write your own engine to interface to WinBoard, see the separate file engine-intf.html, 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.

+

 

+

K#$+ FIREWALLS

+

By default, "WinBoard /ics" 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. Important: See the paragraph in the LIMITATIONSLIMITATIONS section below about extra echoes.

+

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:

+ +

WinBoard -ics -icshost fire.wall.com -icsport 23

+ +

Then when you run WinBoard 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 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".

+

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.

+

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:

+ +

WinBoard -ics -gateway rsh.wall.com -icshost chessclub.com

+ +

Then when you run WinBoard 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.

+

ICC timestamp and FICS timeseal do not work through many 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 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.

+

 

+

K#$+ LIMITATIONS AND NON-LIMITATIONS

+

WinBoard 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.

+

CMail, the companion program to xboard for playing electronic mail correspondence chess, has not been ported to Win32.

+

There is no way for two people running copies of WinBoard to play each other without going through the 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, 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 "stty -echo" after you log in to the provider but before you run telnet, timestamp, or timeseal. In addition, you may need to type the sequence "Ctrl+Q Ctrl+E Enter" after you have finished logging in to ICS. On VMS, type "set terminal /noecho /nowrap", and after you telnet to the ICS, type "Ctrl+Q Ctrl+] Enter set mode char Enter Enter". 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 Local Line EditinglocalLineEditing so that you see only the remote echo and not the local one; that will make the interleaving problem worse.

+

The game parser recognizes only algebraic notation (SAN).

+

The ICS logonICSLogon file does not work properly when you connect to ICS through a Unix gateway host by setting icsPorticsPort to 23. The Unix login process apparently discards type-ahead.

+

Some WinBoard functions may not work with versions of GNU Chess earlier than 4.0, patchlevel 77. The current version of WinBoard works best with Crafty version 15.11 or later.

+

Many of the following points used to be limitations in WinBoard 4.2.7 and earlier, but are now fixed:

+

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. 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, WinBoard will accept the error message that comes back, undo the move, and let you try another.

+

FEN positions saved by WinBoard 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. WinBoard 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.

+

Also see the ToDo file included with the distribution for many other possible bugs, limitations, and ideas for improvement that have been suggested.

+

 

+

K#$+ AUTHORS AND CONTRIBUTORS

+

WinBoard is partly based on xboard, a chessboard program for Unix and the X Window System. Tim Mann has been responsible for all versions of WinBoard, and for xboard versions 1.3 and beyond. H.G.Muller is responsible for version 4.3.

+

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 user interface improvements and improved Crafty support. Jochen Wiedmann ported xboard to the Amiga, creating AmyBoard, and converted the documentation to texinfo. Elmar Bartel contributed the new piece bitmaps for version 3.2. Evan Welsh wrote CMail. John Chanak contributed the initial implementation of ICS mode. The default color scheme was adapted from Wayne Christopher's XChess program. Chris Sears and Dan Sears wrote the original xboard. They were responsible for xboard versions 1.0 through 1.2. Allessandro 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. 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.

+

Send bug reports to <bug-xboard@gnu.org>. Please run WinBoard with the /debug option and include the output from the resulting WinBoard.debug file in your message.

+

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 (http://www.open-aurec.com/wbforum).

+

 

+

K#$+ COPYRIGHT

+

Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts.
+Enhancements Copyright 1992-2003 Free Software Foundation, Inc.

+

The following terms apply to Digital Equipment Corporation's copyright interest in WinBoard:

+

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 WinBoard distributed by the Free Software Foundation:

+

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 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

+ diff --git a/winboard/winboard.rc b/winboard/winboard.rc index d8d6aec..9584a49 100644 --- a/winboard/winboard.rc +++ b/winboard/winboard.rc @@ -48,7 +48,7 @@ BEGIN IDC_STATIC,6,65,120,24 LTEXT "Enhancements Copyright 2007\r\nH.G. Muller", IDC_STATIC,6,85,120,24 - LTEXT "(unofficial version ""F"")",IDC_STATIC,88,4,71,8 + LTEXT "(""WinBoard_F"")",IDC_STATIC,88,4,71,8 END DLG_TimeControl DIALOG DISCARDABLE 6, 18, 174, 98 @@ -359,6 +359,16 @@ BEGIN 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" @@ -617,6 +627,10 @@ BEGIN 10 CONTROL "cou&rier",OPT_VariantCourier,"Button",BS_AUTORADIOBUTTON,9,64, 50,10 + CONTROL "&Berolina",OPT_VariantBerolina,"Button",BS_AUTORADIOBUTTON,9,74, + 50,10 + CONTROL "&Janus",OPT_VariantJanus,"Button",BS_AUTORADIOBUTTON,9,84, + 50,10 CONTROL "&knightmate",OPT_VariantKnightmate,"Button",BS_AUTORADIOBUTTON, 70,14,50,10 CONTROL "&atomic",OPT_VariantAtomic,"Button",BS_AUTORADIOBUTTON, @@ -629,11 +643,15 @@ BEGIN 54,50,10 CONTROL "&twokings",OPT_VariantTwoKings,"Button",BS_AUTORADIOBUTTON,70,64, 50,10 + CONTROL "&CRC",OPT_VariantCRC,"Button",BS_AUTORADIOBUTTON,70,74, + 50,10 + CONTROL "&wildcastle",OPT_VariantWildcastle,"Button",BS_AUTORADIOBUTTON,70,84, + 50,10 CONTROL "&fairy",OPT_VariantFairy,"Button",BS_AUTORADIOBUTTON,134, 14,50,10 CONTROL "&bughouse",OPT_VariantBughouse,"Button",BS_AUTORADIOBUTTON,134,24,50, 10 - CONTROL "Shatran&j",OPT_VariantShatranj,"Button",BS_AUTORADIOBUTTON,134, + CONTROL "&Shatranj",OPT_VariantShatranj,"Button",BS_AUTORADIOBUTTON,134, 34,50,10 CONTROL "&FRC",OPT_VariantFRC,"Button",BS_AUTORADIOBUTTON,134, 44,50,10 @@ -641,16 +659,20 @@ BEGIN 54,50,10 CONTROL "&Falcon",OPT_VariantFalcon,"Button",BS_AUTORADIOBUTTON,134, 64,50,10 - GROUPBOX "Variant",IDC_STATIC,4,4,185,75 - LTEXT "Board size:",IDC_STATIC,10,95,40,8 - EDITTEXT IDC_Ranks,60,91,14,14,ES_AUTOHSCROLL - LTEXT "ranks",IDC_STATIC,77,95,22,8 - EDITTEXT IDC_Files,116,91,14,14,ES_AUTOHSCROLL - LTEXT "files",IDC_STATIC,133,95,37,8 - LTEXT "Holdings with room for:",IDC_STATIC,10,113,90,8 - EDITTEXT IDC_Holdings,93,109,14,14,ES_AUTOHSCROLL - LTEXT "pieces",IDC_STATIC,110,113,22,8 - LTEXT "('-1' means defaults for selected variant)",IDC_STATIC,10,131,150,8 + CONTROL "&3checks",OPT_Variant3Checks,"Button",BS_AUTORADIOBUTTON,134, + 74,50,10 + CONTROL "&nocastle",OPT_VariantNocastle,"Button",BS_AUTORADIOBUTTON,134, + 84,50,10 + GROUPBOX "Variant",IDC_STATIC,4,4,185,95 + LTEXT "Board size:",IDC_STATIC,10,115,40,8 + EDITTEXT IDC_Ranks,60,111,14,14,ES_AUTOHSCROLL + LTEXT "ranks",IDC_STATIC,77,115,22,8 + EDITTEXT IDC_Files,116,111,14,14,ES_AUTOHSCROLL + LTEXT "files",IDC_STATIC,133,115,37,8 + LTEXT "Holdings with room for:",IDC_STATIC,10,133,90,8 + EDITTEXT IDC_Holdings,93,129,14,14,ES_AUTOHSCROLL + LTEXT "pieces",IDC_STATIC,110,133,22,8 + LTEXT "('-1' means defaults for selected variant)",IDC_STATIC,10,151,150,8 END DLG_Fonts DIALOG DISCARDABLE 0, 0, 266, 226 @@ -697,7 +719,7 @@ END DLG_NewGameFRC DIALOG DISCARDABLE 0, 0, 176, 47 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "New FRC (Chess960) Game" +CAPTION "New Shuffle Game" FONT 8, "MS Sans Serif" BEGIN LTEXT "&Start Position Number:",IDC_NFG_Label,4,7,71,8 @@ -988,7 +1010,7 @@ BEGIN POPUP "&File" BEGIN MENUITEM "New &Game\tCtrl-N", IDM_NewGame - MENUITEM "New FRC Game...", IDM_NewGameFRC + MENUITEM "New Shuffle Game...", IDM_NewGameFRC MENUITEM "New Variant...", IDM_NewVariant MENUITEM SEPARATOR MENUITEM "&Load Game...\tCtrl-O", IDM_LoadGame @@ -1008,6 +1030,7 @@ BEGIN IDM_LoadPrevPosition MENUITEM "Reload Sa&me Position", IDM_ReloadPosition MENUITEM "S&ave Position...", IDM_SavePosition + MENUITEM "Save &Diagram...", IDM_SaveDiagram MENUITEM SEPARATOR MENUITEM "Cop&y Position To Clipboard\tAlt+Shift+C", IDM_CopyPosition @@ -1021,6 +1044,7 @@ BEGIN MENUITEM "Machine &White", IDM_MachineWhite MENUITEM "Machine &Black", IDM_MachineBlack MENUITEM "Two &Machines", IDM_TwoMachines + MENUITEM "Machine Bot&h", IDM_MachineBoth MENUITEM "&Analysis Mode", IDM_AnalysisMode MENUITEM "Analyze &File", IDM_AnalyzeFile MENUITEM "&ICS Client", IDM_IcsClient @@ -1028,13 +1052,14 @@ BEGIN MENUITEM "&Edit Position", IDM_EditPosition MENUITEM "Trai&ning", IDM_Training, GRAYED MENUITEM SEPARATOR - MENUITEM "Show Engine Output", IDM_ShowEngineOutput + MENUITEM "Show Engine &Output", IDM_ShowEngineOutput MENUITEM "Show Evaluation Graph", IDM_ShowEvalGraph MENUITEM "Show Game &List", IDM_ShowGameList MENUITEM "Show Move History", 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" diff --git a/winboard/winboard.rtf b/winboard/winboard.rtf index aa5f578..2fdaec7 100644 --- a/winboard/winboard.rtf +++ b/winboard/winboard.rtf @@ -1,167 +1,174 @@ -{\rtf1\ansi\ansicpg1252\uc1 \deff5\deflang1033\deflangfe1033{\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 00000000000000000000}Times;} -{\f5\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Helvetica{\*\falt Arial};}{\f6\fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}Courier;}{\f7\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Geneva;} +{\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;}{\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;}{\f13\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}System;} -{\f14\fnil\fcharset2\fprq2{\*\panose 05000000000000000000}Wingdings;}{\f15\froman\fcharset128\fprq1{\*\panose 00000000000000000000}Mincho{\*\falt ??};}{\f16\fnil\fcharset129\fprq1{\*\panose 00000000000000000000}Batang{\*\falt ??};} -{\f17\fnil\fcharset134\fprq2{\*\panose 00000000000000000000}SimSun{\*\falt ??};}{\f18\fnil\fcharset136\fprq2{\*\panose 00000000000000000000}PMingLiU{\*\falt ????};}{\f19\fmodern\fcharset128\fprq1{\*\panose 00000000000000000000}Gothic{\*\falt ?????};} -{\f20\fmodern\fcharset129\fprq1{\*\panose 00000000000000000000}Dotum{\*\falt ??};}{\f21\fmodern\fcharset134\fprq1{\*\panose 00000000000000000000}SimHei{\*\falt ??};}{\f22\fmodern\fcharset136\fprq1{\*\panose 00000000000000000000}MingLiU{\*\falt ???};} -{\f23\froman\fcharset128\fprq1{\*\panose 00000000000000000000}MS Mincho{\*\falt ?? ??};}{\f24\froman\fcharset129\fprq1{\*\panose 00000000000000000000}Gulim{\*\falt ??};} -{\f25\fmodern\fcharset128\fprq1{\*\panose 00000000000000000000}MS Gothic{\*\falt ?? ????};}{\f26\froman\fcharset0\fprq2{\*\panose 00000000000000000000}Century;}{\f27\fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Tahoma;} -{\f28\fswiss\fcharset0\fprq0{\*\panose 00000000000000000000}Univers (WN);}{\f29\froman\fcharset0\fprq0{\*\panose 00000000000000000000}CG Times (WN);}{\f30\froman\fcharset177\fprq2{\*\panose 00000000000000000000}Times New Roman (Hebrew);} -{\f31\froman\fcharset178\fprq2{\*\panose 00000000000000000000}Times New Roman (Arabic);}{\f32\fswiss\fcharset177\fprq2{\*\panose 00000000000000000000}Arial (Hebrew);}{\f33\fswiss\fcharset178\fprq2{\*\panose 00000000000000000000}Arial (Arabic);} -{\f34\fmodern\fcharset177\fprq1{\*\panose 00000000000000000000}Courier New (Hebrew);}{\f35\fmodern\fcharset178\fprq1{\*\panose 00000000000000000000}Courier New (Arabic);}{\f36\fswiss\fcharset177\fprq2{\*\panose 00000000000000000000}Tahoma (Hebrew);} -{\f37\fswiss\fcharset178\fprq2{\*\panose 00000000000000000000}Tahoma (Arabic);}{\f38\fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}Fixedsys;}{\f39\fmodern\fcharset255\fprq1{\*\panose 00000000000000000000}Terminal;} -{\f40\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Small Fonts;}{\f41\fnil\fcharset2\fprq2{\*\panose 00000000000000000000}Marlett;}{\f42\fswiss\fcharset0\fprq2{\*\panose 020b0504020203020204}News Gothic MT;} -{\f43\fscript\fcharset0\fprq2{\*\panose 03010101010101010101}Lucida Handwriting;}{\f44\fswiss\fcharset0\fprq2{\*\panose 020b0602030504090204}Lucida Sans;}{\f45\fswiss\fcharset0\fprq2{\*\panose 020b0602030504020204}Lucida Sans Unicode;} -{\f46\froman\fcharset0\fprq2{\*\panose 02040602050305030304}Book Antiqua;}{\f47\fswiss\fcharset0\fprq2{\*\panose 020b0502020202020204}Century Gothic;}{\f48\fmodern\fcharset0\fprq1{\*\panose 02010509020102010303}OCR A Extended;} -{\f49\froman\fcharset0\fprq2{\*\panose 02040603050505030304}Calisto MT;}{\f50\fswiss\fcharset0\fprq2{\*\panose 020b0306030101010103}Abadi MT Condensed Light;}{\f51\fswiss\fcharset0\fprq2{\*\panose 020e0705020206020404}Copperplate Gothic Bold;} +{\f14\fnil\fcharset2\fprq2{\*\panose 05000000000000000000}Wingdings;}{\f15\fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Tahoma;}{\f16\froman\fcharset128\fprq1{\*\panose 00000000000000000000}Mincho{\*\falt ??};} +{\f17\fnil\fcharset129\fprq1{\*\panose 00000000000000000000}Batang{\*\falt ??};}{\f18\fnil\fcharset134\fprq2{\*\panose 00000000000000000000}SimSun{\*\falt ??};}{\f19\fnil\fcharset136\fprq2{\*\panose 00000000000000000000}PMingLiU{\*\falt ????};} +{\f20\fmodern\fcharset128\fprq1{\*\panose 00000000000000000000}Gothic{\*\falt ?????};}{\f21\fmodern\fcharset129\fprq1{\*\panose 00000000000000000000}Dotum{\*\falt ??};}{\f22\fmodern\fcharset134\fprq1{\*\panose 00000000000000000000}SimHei{\*\falt ??};} +{\f23\fmodern\fcharset136\fprq1{\*\panose 00000000000000000000}MingLiU{\*\falt ???};}{\f24\froman\fcharset128\fprq1{\*\panose 00000000000000000000}MS Mincho{\*\falt ?? ??};}{\f25\froman\fcharset129\fprq1{\*\panose 00000000000000000000}Gulim{\*\falt ??};} +{\f26\fmodern\fcharset128\fprq1{\*\panose 00000000000000000000}MS Gothic{\*\falt ?? ????};}{\f27\froman\fcharset0\fprq2{\*\panose 00000000000000000000}Century;}{\f28\fswiss\fcharset0\fprq0{\*\panose 00000000000000000000}Univers (WN);} +{\f29\froman\fcharset0\fprq0{\*\panose 00000000000000000000}CG Times (WN);}{\f30\froman\fcharset177\fprq2{\*\panose 00000000000000000000}Times New Roman (Hebrew);}{\f31\froman\fcharset178\fprq2{\*\panose 00000000000000000000}Times New Roman (Arabic);} +{\f32\fswiss\fcharset177\fprq2{\*\panose 00000000000000000000}Arial (Hebrew);}{\f33\fswiss\fcharset178\fprq2{\*\panose 00000000000000000000}Arial (Arabic);}{\f34\fmodern\fcharset177\fprq1{\*\panose 00000000000000000000}Courier New (Hebrew);} +{\f35\fmodern\fcharset178\fprq1{\*\panose 00000000000000000000}Courier New (Arabic);}{\f36\fswiss\fcharset177\fprq2{\*\panose 00000000000000000000}Tahoma (Hebrew);}{\f37\fswiss\fcharset178\fprq2{\*\panose 00000000000000000000}Tahoma (Arabic);} +{\f38\fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}Fixedsys;}{\f39\fmodern\fcharset255\fprq1{\*\panose 00000000000000000000}Terminal;}{\f40\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Small Fonts;} +{\f41\fnil\fcharset2\fprq2{\*\panose 00000000000000000000}Marlett;}{\f42\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}News Gothic MT;}{\f43\fscript\fcharset0\fprq2{\*\panose 00000000000000000000}Lucida Handwriting;} +{\f44\fswiss\fcharset0\fprq2{\*\panose 020b0602030504020204}Lucida Sans;}{\f45\fswiss\fcharset0\fprq2{\*\panose 020b0602030504020204}Lucida Sans Unicode;}{\f46\froman\fcharset0\fprq2{\*\panose 00000000000000000000}Book Antiqua;} +{\f47\fswiss\fcharset0\fprq2{\*\panose 020b0502020202020204}Century Gothic;}{\f48\fmodern\fcharset0\fprq2{\*\panose 02010509020102010303}OCR A Extended;}{\f49\froman\fcharset0\fprq2{\*\panose 00000000000000000000}Calisto MT;} +{\f50\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Abadi MT Condensed Light;}{\f51\fswiss\fcharset0\fprq2{\*\panose 020e0705020206020404}Copperplate Gothic Bold;} {\f52\fswiss\fcharset0\fprq2{\*\panose 020e0507020206020404}Copperplate Gothic Light;}{\f53\fdecor\fcharset0\fprq2{\*\panose 04040403030d02020704}Matisse ITC;}{\f54\fdecor\fcharset0\fprq2{\*\panose 04020404030d07020202}Tempus Sans ITC;} -{\f55\fdecor\fcharset0\fprq2{\*\panose 04040506030f02020702}Westminster;}{\f56\fmodern\fcharset0\fprq1{\*\panose 020b0609040504020204}Lucida Console;}{\f57\fswiss\fcharset0\fprq2{\*\panose 020b0a04020102020204}Arial Black;} +{\f55\fdecor\fcharset0\fprq2{\*\panose 00000000000000000000}Westminster;}{\f56\fmodern\fcharset0\fprq1{\*\panose 020b0609040504020204}Lucida Console;}{\f57\fswiss\fcharset0\fprq2{\*\panose 020b0a04020102020204}Arial Black;} {\f58\fscript\fcharset0\fprq2{\*\panose 030f0702030302020204}Comic Sans MS;}{\f59\fswiss\fcharset0\fprq2{\*\panose 020b0806030902050204}Impact;}{\f60\fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Verdana;} -{\f61\froman\fcharset2\fprq2{\*\panose 05030102010509060703}Webdings;}{\f62\fmodern\fcharset0\fprq1{\*\panose 020f0609000104060307}OCR-A II;}{\f63\fmodern\fcharset0\fprq1{\*\panose 020b0509000102020203}OCR B MT;} -{\f64\fswiss\fcharset0\fprq2{\*\panose 020b0603020004020203}QuickType II;}{\f65\fswiss\fcharset0\fprq2{\*\panose 020b0506030403020203}QuickType II Condensed;}{\f66\fmodern\fcharset0\fprq1{\*\panose 020b0509020104020203}QuickType II Mono;} -{\f67\fswiss\fcharset0\fprq2{\*\panose 020b0600020000000001}QuickType II Pi;}{\f68\fswiss\fcharset0\fprq2{\*\panose 020b0506020202030204}Arial Narrow;}{\f69\froman\fcharset0\fprq2{\*\panose 02050604050505020204}Bookman Old Style;} +{\f61\froman\fcharset2\fprq2{\*\panose 05030102010509060703}Webdings;}{\f62\fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}OCR-A II;}{\f63\fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}OCR B MT;} +{\f64\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}QuickType II;}{\f65\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}QuickType II Condensed;}{\f66\fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}QuickType II Mono;} +{\f67\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}QuickType II Pi;}{\f68\fswiss\fcharset0\fprq2{\*\panose 020b0506020202030204}Arial Narrow;}{\f69\froman\fcharset0\fprq2{\*\panose 02050604050505020204}Bookman Old Style;} {\f70\froman\fcharset0\fprq2{\*\panose 02020404030301010803}Garamond;}{\f71\fswiss\fcharset0\fprq2{\*\panose 020b0603020202020204}Trebuchet MS;}{\f72\froman\fcharset2\fprq2{\*\panose 05050102010205020202}MT Extra;} -{\f73\fswiss\fcharset177\fprq2{\*\panose 00000000000000000000}Lucida Sans Unicode (Hebrew);}{\f74\froman\fcharset238\fprq2 Times New Roman CE;}{\f75\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f77\froman\fcharset161\fprq2 Times New Roman Greek;} -{\f78\froman\fcharset162\fprq2 Times New Roman Tur;}{\f79\froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f80\froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f81\froman\fcharset186\fprq2 Times New Roman Baltic;} -{\f82\fswiss\fcharset238\fprq2 Arial CE;}{\f83\fswiss\fcharset204\fprq2 Arial Cyr;}{\f85\fswiss\fcharset161\fprq2 Arial Greek;}{\f86\fswiss\fcharset162\fprq2 Arial Tur;}{\f87\fswiss\fcharset177\fprq2 Arial (Hebrew);} -{\f88\fswiss\fcharset178\fprq2 Arial (Arabic);}{\f89\fswiss\fcharset186\fprq2 Arial Baltic;}{\f90\fmodern\fcharset238\fprq1 Courier New CE;}{\f91\fmodern\fcharset204\fprq1 Courier New Cyr;}{\f93\fmodern\fcharset161\fprq1 Courier New Greek;} -{\f94\fmodern\fcharset162\fprq1 Courier New Tur;}{\f95\fmodern\fcharset177\fprq1 Courier New (Hebrew);}{\f96\fmodern\fcharset178\fprq1 Courier New (Arabic);}{\f97\fmodern\fcharset186\fprq1 Courier New Baltic;}{\f290\fswiss\fcharset238\fprq2 Tahoma CE;} -{\f291\fswiss\fcharset204\fprq2 Tahoma Cyr;}{\f293\fswiss\fcharset161\fprq2 Tahoma Greek;}{\f294\fswiss\fcharset162\fprq2 Tahoma Tur;}{\f295\fswiss\fcharset177\fprq2 Tahoma (Hebrew);}{\f296\fswiss\fcharset178\fprq2 Tahoma (Arabic);} -{\f297\fswiss\fcharset186\fprq2 Tahoma Baltic;}{\f434\fswiss\fcharset238\fprq2 Lucida Sans Unicode CE;}{\f435\fswiss\fcharset204\fprq2 Lucida Sans Unicode Cyr;}{\f437\fswiss\fcharset161\fprq2 Lucida Sans Unicode Greek;} -{\f438\fswiss\fcharset162\fprq2 Lucida Sans Unicode Tur;}{\f439\fswiss\fcharset177\fprq2 Lucida Sans Unicode (Hebrew);}{\f442\froman\fcharset238\fprq2 Book Antiqua CE;}{\f443\froman\fcharset204\fprq2 Book Antiqua Cyr;} -{\f445\froman\fcharset161\fprq2 Book Antiqua Greek;}{\f446\froman\fcharset162\fprq2 Book Antiqua Tur;}{\f449\froman\fcharset186\fprq2 Book Antiqua Baltic;}{\f450\fswiss\fcharset238\fprq2 Century Gothic CE;} -{\f451\fswiss\fcharset204\fprq2 Century Gothic Cyr;}{\f453\fswiss\fcharset161\fprq2 Century Gothic Greek;}{\f454\fswiss\fcharset162\fprq2 Century Gothic Tur;}{\f457\fswiss\fcharset186\fprq2 Century Gothic Baltic;} -{\f522\fmodern\fcharset238\fprq1 Lucida Console CE;}{\f523\fmodern\fcharset204\fprq1 Lucida Console Cyr;}{\f525\fmodern\fcharset161\fprq1 Lucida Console Greek;}{\f526\fmodern\fcharset162\fprq1 Lucida Console Tur;} -{\f530\fswiss\fcharset238\fprq2 Arial Black CE;}{\f531\fswiss\fcharset204\fprq2 Arial Black Cyr;}{\f533\fswiss\fcharset161\fprq2 Arial Black Greek;}{\f534\fswiss\fcharset162\fprq2 Arial Black Tur;}{\f537\fswiss\fcharset186\fprq2 Arial Black Baltic;} -{\f538\fscript\fcharset238\fprq2 Comic Sans MS CE;}{\f539\fscript\fcharset204\fprq2 Comic Sans MS Cyr;}{\f541\fscript\fcharset161\fprq2 Comic Sans MS Greek;}{\f542\fscript\fcharset162\fprq2 Comic Sans MS Tur;} -{\f545\fscript\fcharset186\fprq2 Comic Sans MS Baltic;}{\f546\fswiss\fcharset238\fprq2 Impact CE;}{\f547\fswiss\fcharset204\fprq2 Impact Cyr;}{\f549\fswiss\fcharset161\fprq2 Impact Greek;}{\f550\fswiss\fcharset162\fprq2 Impact Tur;} -{\f553\fswiss\fcharset186\fprq2 Impact Baltic;}{\f554\fswiss\fcharset238\fprq2 Verdana CE;}{\f555\fswiss\fcharset204\fprq2 Verdana Cyr;}{\f557\fswiss\fcharset161\fprq2 Verdana Greek;}{\f558\fswiss\fcharset162\fprq2 Verdana Tur;} -{\f561\fswiss\fcharset186\fprq2 Verdana Baltic;}{\f618\fswiss\fcharset238\fprq2 Arial Narrow CE;}{\f619\fswiss\fcharset204\fprq2 Arial Narrow Cyr;}{\f621\fswiss\fcharset161\fprq2 Arial Narrow Greek;}{\f622\fswiss\fcharset162\fprq2 Arial Narrow Tur;} -{\f625\fswiss\fcharset186\fprq2 Arial Narrow Baltic;}{\f626\froman\fcharset238\fprq2 Bookman Old Style CE;}{\f627\froman\fcharset204\fprq2 Bookman Old Style Cyr;}{\f629\froman\fcharset161\fprq2 Bookman Old Style Greek;} -{\f630\froman\fcharset162\fprq2 Bookman Old Style Tur;}{\f633\froman\fcharset186\fprq2 Bookman Old Style Baltic;}{\f634\froman\fcharset238\fprq2 Garamond CE;}{\f635\froman\fcharset204\fprq2 Garamond Cyr;}{\f637\froman\fcharset161\fprq2 Garamond Greek;} -{\f638\froman\fcharset162\fprq2 Garamond Tur;}{\f641\froman\fcharset186\fprq2 Garamond Baltic;}{\f642\fswiss\fcharset238\fprq2 Trebuchet MS CE;}{\f646\fswiss\fcharset162\fprq2 Trebuchet MS Tur;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255; +{\f73\fswiss\fcharset177\fprq2{\*\panose 00000000000000000000}Lucida Sans Unicode (Hebrew);}{\f74\froman\fcharset238\fprq2{\*\panose 00000000000000000000}Book Antiqua CE;}{\f75\froman\fcharset204\fprq2{\*\panose 00000000000000000000}Book Antiqua Cyr;} +{\f76\froman\fcharset161\fprq2{\*\panose 00000000000000000000}Book Antiqua Greek;}{\f77\froman\fcharset162\fprq2{\*\panose 00000000000000000000}Book Antiqua Tur;}{\f78\froman\fcharset186\fprq2{\*\panose 00000000000000000000}Book Antiqua Baltic;} +{\f79\fdecor\fcharset2\fprq1{\*\panose 00000000000000000000}WST_Czec;}{\f80\fdecor\fcharset2\fprq1{\*\panose 00000000000000000000}WST_Engl;}{\f81\fdecor\fcharset2\fprq1{\*\panose 00000000000000000000}WST_Fren;} +{\f82\fdecor\fcharset2\fprq1{\*\panose 00000000000000000000}WST_Germ;}{\f83\fdecor\fcharset2\fprq1{\*\panose 00000000000000000000}WST_Ital;}{\f84\fdecor\fcharset2\fprq1{\*\panose 00000000000000000000}WST_Span;} +{\f85\fdecor\fcharset2\fprq1{\*\panose 00000000000000000000}WST_Swed;}{\f86\froman\fcharset0\fprq2{\*\panose 02040502050405020303}Georgia;}{\f87\fswiss\fcharset0\fprq2{\*\panose 020b0603020102020204}Franklin Gothic Medium;} +{\f88\froman\fcharset0\fprq2{\*\panose 02040502050505030304}Palatino Linotype;}{\f89\fscript\fcharset0\fprq2 Estrangelo Edessa;}{\f90\fnil\fcharset0\fprq2 Gautami;}{\f91\fnil\fcharset0\fprq2 Latha;}{\f92\fnil\fcharset0\fprq2 Mangal;} +{\f93\fnil\fcharset0\fprq2 MV Boli;}{\f94\fnil\fcharset0\fprq2 Raavi;}{\f95\fnil\fcharset0\fprq2 Shruti;}{\f96\fnil\fcharset0\fprq2 Tunga;}{\f97\froman\fcharset0\fprq2{\*\panose 010a0502050306030303}Sylfaen;} +{\f98\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Microsoft Sans Serif;}{\f99\froman\fcharset0\fprq2{\*\panose 02060603020205020403}Rockwell;}{\f100\froman\fcharset0\fprq2{\*\panose 02060903040505020403}Rockwell Extra Bold;} +{\f101\fscript\fcharset0\fprq2{\*\panose 03090702030407020403}Mistral;}{\f102\fdecor\fcharset0\fprq2{\*\panose 04020505051007020d02}Blackadder ITC;}{\f103\fscript\fcharset0\fprq2{\*\panose 03070402050302030203}Bradley Hand ITC;} +{\f104\fdecor\fcharset0\fprq2{\*\panose 04040404050702020202}Curlz MT;}{\f105\fscript\fcharset0\fprq2{\*\panose 030303020407070d0804}Edwardian Script ITC;}{\f106\froman\fcharset0\fprq2{\*\panose 02090707080505020304}Engravers MT;} +{\f107\fswiss\fcharset0\fprq2{\*\panose 020b0805030504020804}Eras Demi ITC;}{\f108\fswiss\fcharset0\fprq2{\*\panose 020b0402030504020804}Eras Light ITC;}{\f109\fswiss\fcharset0\fprq2{\*\panose 020b0504020202050204}Eurostile;} +{\f110\fdecor\fcharset0\fprq2{\*\panose 04060505060202020a04}Felix Titling;}{\f111\fswiss\fcharset0\fprq2{\*\panose 020b0503020102020204}Franklin Gothic Book;}{\f112\fswiss\fcharset0\fprq2{\*\panose 020b0703020102020204}Franklin Gothic Demi;} +{\f113\fswiss\fcharset0\fprq2{\*\panose 020b0606030402020204}Franklin Gothic Medium Cond;}{\f114\fswiss\fcharset0\fprq2{\*\panose 020b0903020102020204}Franklin Gothic Heavy;} +{\f115\fswiss\fcharset0\fprq2{\*\panose 020b0706030402020204}Franklin Gothic Demi Cond;}{\f116\fscript\fcharset0\fprq2{\*\panose 03020402040607040605}French Script MT;}{\f117\fscript\fcharset0\fprq2{\*\panose 03050502040202030202}Kristen ITC;} +{\f118\fswiss\fcharset0\fprq2{\*\panose 020e0502030308020204}Maiandra GD;}{\f119\fscript\fcharset0\fprq2{\*\panose 03070502060502030205}Papyrus;}{\f120\froman\fcharset0\fprq2{\*\panose 02020502060401020303}Perpetua;} +{\f121\fscript\fcharset0\fprq2{\*\panose 03020602050506090804}Vivaldi;}{\f122\froman\fcharset2\fprq2{\*\panose 05020102010507070707}Wingdings 2;}{\f123\froman\fcharset2\fprq2{\*\panose 05040102010807070707}Wingdings 3;} +{\f124\fdecor\fcharset0\fprq2{\*\panose 04090605060d06020702}Jokerman;}{\f125\fdecor\fcharset0\fprq2{\*\panose 04040403040a02020202}Juice ITC;}{\f126\fnil\fcharset2\fprq2{\*\panose 05000000000000000000}MS Reference 1;} +{\f127\fnil\fcharset2\fprq2{\*\panose 00000000000000000000}MS Reference 2;}{\f128\fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}MS Reference Sans Serif;}{\f129\fnil\fcharset2\fprq2{\*\panose 05000500000000000000}MS Reference Specialty;} +{\f130\fswiss\fcharset0\fprq2{\*\panose 020b0706040902060204}Haettenschweiler;}{\f131\fnil\fcharset2\fprq2{\*\panose 01010601010101010101}Monotype Sorts;}{\f132\fnil\fcharset2\fprq2{\*\panose 05000000000000000000}MS Outlook;} +{\f133\froman\fcharset0\fprq2{\*\panose 02020503030404060203}Kartika;}{\f134\fnil\fcharset0\fprq2{\*\panose 01010600010101010101}Vrinda;}{\f135\fswiss\fcharset2\fprq2{\*\panose 020b0603050302020204}WinboardF;} +{\f136\fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}Franklin Gothic Medium Cond Gre;}{\f137\fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}Franklin Gothic Medium Cond Bal;} +{\f138\fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}Franklin Gothic Demi Cond Balti;}{\f139\froman\fcharset238\fprq2 Times New Roman CE;}{\f140\froman\fcharset204\fprq2 Times New Roman Cyr;} +{\f142\froman\fcharset161\fprq2 Times New Roman Greek;}{\f143\froman\fcharset162\fprq2 Times New Roman Tur;}{\f144\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f145\fswiss\fcharset238\fprq2 Arial CE;}{\f146\fswiss\fcharset204\fprq2 Arial Cyr;} +{\f148\fswiss\fcharset161\fprq2 Arial Greek;}{\f149\fswiss\fcharset162\fprq2 Arial Tur;}{\f150\fswiss\fcharset186\fprq2 Arial Baltic;}{\f151\fmodern\fcharset238\fprq1 Courier New CE;}{\f152\fmodern\fcharset204\fprq1 Courier New Cyr;} +{\f154\fmodern\fcharset161\fprq1 Courier New Greek;}{\f155\fmodern\fcharset162\fprq1 Courier New Tur;}{\f156\fmodern\fcharset186\fprq1 Courier New Baltic;}{\f163\froman\fcharset238\fprq2 Times CE;}{\f164\froman\fcharset204\fprq2 Times Cyr;} +{\f166\froman\fcharset161\fprq2 Times Greek;}{\f167\froman\fcharset162\fprq2 Times Tur;}{\f168\froman\fcharset186\fprq2 Times Baltic;}{\f169\fswiss\fcharset238\fprq2 Helvetica CE{\*\falt Arial};} +{\f170\fswiss\fcharset204\fprq2 Helvetica Cyr{\*\falt Arial};}{\f172\fswiss\fcharset161\fprq2 Helvetica Greek{\*\falt Arial};}{\f173\fswiss\fcharset162\fprq2 Helvetica Tur{\*\falt Arial};}{\f174\fswiss\fcharset186\fprq2 Helvetica Baltic{\*\falt Arial};} +{\f229\fswiss\fcharset238\fprq2 Tahoma CE;}{\f230\fswiss\fcharset204\fprq2 Tahoma Cyr;}{\f232\fswiss\fcharset161\fprq2 Tahoma Greek;}{\f233\fswiss\fcharset162\fprq2 Tahoma Tur;}{\f234\fswiss\fcharset186\fprq2 Tahoma Baltic;} +{\f409\fswiss\fcharset238\fprq2 Lucida Sans Unicode CE;}{\f410\fswiss\fcharset204\fprq2 Lucida Sans Unicode Cyr;}{\f412\fswiss\fcharset161\fprq2 Lucida Sans Unicode Greek;}{\f413\fswiss\fcharset162\fprq2 Lucida Sans Unicode Tur;} +{\f421\fswiss\fcharset238\fprq2 Century Gothic CE;}{\f422\fswiss\fcharset204\fprq2 Century Gothic Cyr;}{\f424\fswiss\fcharset161\fprq2 Century Gothic Greek;}{\f425\fswiss\fcharset162\fprq2 Century Gothic Tur;} +{\f426\fswiss\fcharset186\fprq2 Century Gothic Baltic;}{\f475\fmodern\fcharset238\fprq1 Lucida Console CE;}{\f476\fmodern\fcharset204\fprq1 Lucida Console Cyr;}{\f478\fmodern\fcharset161\fprq1 Lucida Console Greek;} +{\f479\fmodern\fcharset162\fprq1 Lucida Console Tur;}{\f481\fswiss\fcharset238\fprq2 Arial Black CE;}{\f482\fswiss\fcharset204\fprq2 Arial Black Cyr;}{\f484\fswiss\fcharset161\fprq2 Arial Black Greek;}{\f485\fswiss\fcharset162\fprq2 Arial Black Tur;} +{\f486\fswiss\fcharset186\fprq2 Arial Black Baltic;}{\f487\fscript\fcharset238\fprq2 Comic Sans MS CE;}{\f488\fscript\fcharset204\fprq2 Comic Sans MS Cyr;}{\f490\fscript\fcharset161\fprq2 Comic Sans MS Greek;} +{\f491\fscript\fcharset162\fprq2 Comic Sans MS Tur;}{\f492\fscript\fcharset186\fprq2 Comic Sans MS Baltic;}{\f493\fswiss\fcharset238\fprq2 Impact CE;}{\f494\fswiss\fcharset204\fprq2 Impact Cyr;}{\f496\fswiss\fcharset161\fprq2 Impact Greek;} +{\f497\fswiss\fcharset162\fprq2 Impact Tur;}{\f498\fswiss\fcharset186\fprq2 Impact Baltic;}{\f499\fswiss\fcharset238\fprq2 Verdana CE;}{\f500\fswiss\fcharset204\fprq2 Verdana Cyr;}{\f502\fswiss\fcharset161\fprq2 Verdana Greek;} +{\f503\fswiss\fcharset162\fprq2 Verdana Tur;}{\f504\fswiss\fcharset186\fprq2 Verdana Baltic;}{\f547\fswiss\fcharset238\fprq2 Arial Narrow CE;}{\f548\fswiss\fcharset204\fprq2 Arial Narrow Cyr;}{\f550\fswiss\fcharset161\fprq2 Arial Narrow Greek;} +{\f551\fswiss\fcharset162\fprq2 Arial Narrow Tur;}{\f552\fswiss\fcharset186\fprq2 Arial Narrow Baltic;}{\f553\froman\fcharset238\fprq2 Bookman Old Style CE;}{\f554\froman\fcharset204\fprq2 Bookman Old Style Cyr;} +{\f556\froman\fcharset161\fprq2 Bookman Old Style Greek;}{\f557\froman\fcharset162\fprq2 Bookman Old Style Tur;}{\f558\froman\fcharset186\fprq2 Bookman Old Style Baltic;}{\f559\froman\fcharset238\fprq2 Garamond CE;} +{\f560\froman\fcharset204\fprq2 Garamond Cyr;}{\f562\froman\fcharset161\fprq2 Garamond Greek;}{\f563\froman\fcharset162\fprq2 Garamond Tur;}{\f564\froman\fcharset186\fprq2 Garamond Baltic;}{\f565\fswiss\fcharset238\fprq2 Trebuchet MS CE;} +{\f566\fswiss\fcharset204\fprq2 Trebuchet MS Cyr;}{\f568\fswiss\fcharset161\fprq2 Trebuchet MS Greek;}{\f569\fswiss\fcharset162\fprq2 Trebuchet MS Tur;}{\f570\fswiss\fcharset186\fprq2 Trebuchet MS Baltic;}{\f655\froman\fcharset238\fprq2 Georgia CE;} +{\f656\froman\fcharset204\fprq2 Georgia Cyr;}{\f658\froman\fcharset161\fprq2 Georgia Greek;}{\f659\froman\fcharset162\fprq2 Georgia Tur;}{\f660\froman\fcharset186\fprq2 Georgia Baltic;}{\f661\fswiss\fcharset238\fprq2 Franklin Gothic Medium CE;} +{\f662\fswiss\fcharset204\fprq2 Franklin Gothic Medium Cyr;}{\f664\fswiss\fcharset161\fprq2 Franklin Gothic Medium Greek;}{\f665\fswiss\fcharset162\fprq2 Franklin Gothic Medium Tur;}{\f666\fswiss\fcharset186\fprq2 Franklin Gothic Medium Baltic;} +{\f667\froman\fcharset238\fprq2 Palatino Linotype CE;}{\f668\froman\fcharset204\fprq2 Palatino Linotype Cyr;}{\f670\froman\fcharset161\fprq2 Palatino Linotype Greek;}{\f671\froman\fcharset162\fprq2 Palatino Linotype Tur;} +{\f672\froman\fcharset186\fprq2 Palatino Linotype Baltic;}{\f721\froman\fcharset238\fprq2 Sylfaen CE;}{\f722\froman\fcharset204\fprq2 Sylfaen Cyr;}{\f724\froman\fcharset161\fprq2 Sylfaen Greek;}{\f725\froman\fcharset162\fprq2 Sylfaen Tur;} +{\f726\froman\fcharset186\fprq2 Sylfaen Baltic;}{\f727\fswiss\fcharset238\fprq2 Microsoft Sans Serif CE;}{\f728\fswiss\fcharset204\fprq2 Microsoft Sans Serif Cyr;}{\f730\fswiss\fcharset161\fprq2 Microsoft Sans Serif Greek;} +{\f731\fswiss\fcharset162\fprq2 Microsoft Sans Serif Tur;}{\f732\fswiss\fcharset186\fprq2 Microsoft Sans Serif Baltic;}{\f733\froman\fcharset238\fprq2 Rockwell CE;}{\f745\fscript\fcharset238\fprq2 Mistral CE;}{\f746\fscript\fcharset204\fprq2 Mistral Cyr;} +{\f748\fscript\fcharset161\fprq2 Mistral Greek;}{\f749\fscript\fcharset162\fprq2 Mistral Tur;}{\f750\fscript\fcharset186\fprq2 Mistral Baltic;}{\f805\fswiss\fcharset238\fprq2 Franklin Gothic Book CE;} +{\f806\fswiss\fcharset204\fprq2 Franklin Gothic Book Cyr;}{\f808\fswiss\fcharset161\fprq2 Franklin Gothic Book Greek;}{\f809\fswiss\fcharset162\fprq2 Franklin Gothic Book Tur;}{\f810\fswiss\fcharset186\fprq2 Franklin Gothic Book Baltic;} +{\f811\fswiss\fcharset238\fprq2 Franklin Gothic Demi CE;}{\f812\fswiss\fcharset204\fprq2 Franklin Gothic Demi Cyr;}{\f814\fswiss\fcharset161\fprq2 Franklin Gothic Demi Greek;}{\f815\fswiss\fcharset162\fprq2 Franklin Gothic Demi Tur;} +{\f816\fswiss\fcharset186\fprq2 Franklin Gothic Demi Baltic;}{\f817\fswiss\fcharset238\fprq2 Franklin Gothic Medium Cond CE;}{\f818\fswiss\fcharset204\fprq2 Franklin Gothic Medium Cond Cyr;} +{\f820\fswiss\fcharset161\fprq2 Franklin Gothic Medium Cond Greek;}{\f821\fswiss\fcharset162\fprq2 Franklin Gothic Medium Cond Tur;}{\f822\fswiss\fcharset186\fprq2 Franklin Gothic Medium Cond Baltic;} +{\f823\fswiss\fcharset238\fprq2 Franklin Gothic Heavy CE;}{\f824\fswiss\fcharset204\fprq2 Franklin Gothic Heavy Cyr;}{\f826\fswiss\fcharset161\fprq2 Franklin Gothic Heavy Greek;}{\f827\fswiss\fcharset162\fprq2 Franklin Gothic Heavy Tur;} +{\f828\fswiss\fcharset186\fprq2 Franklin Gothic Heavy Baltic;}{\f829\fswiss\fcharset238\fprq2 Franklin Gothic Demi Cond CE;}{\f830\fswiss\fcharset204\fprq2 Franklin Gothic Demi Cond Cyr;}{\f832\fswiss\fcharset161\fprq2 Franklin Gothic Demi Cond Greek;} +{\f833\fswiss\fcharset162\fprq2 Franklin Gothic Demi Cond Tur;}{\f834\fswiss\fcharset186\fprq2 Franklin Gothic Demi Cond Baltic;}{\f907\fswiss\fcharset238\fprq2 MS Reference Sans Serif CE;}{\f908\fswiss\fcharset204\fprq2 MS Reference Sans Serif Cyr;} +{\f910\fswiss\fcharset161\fprq2 MS Reference Sans Serif Greek;}{\f911\fswiss\fcharset162\fprq2 MS Reference Sans Serif Tur;}{\f912\fswiss\fcharset186\fprq2 MS Reference Sans Serif Baltic;}}{\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{\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext0 Normal;}{ -\s1\ql \li120\ri0\sb280\sa120\sl-320\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \b\f5\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext26 heading 1;}{\s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 2;}{\s3\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 -\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 3;}{\s4\ql \fi-245\li360\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin360\itap0 -\f11\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon2 \snext4 heading 4;}{\s5\ql \li120\ri0\sb80\sl-240\slmult0\keepn\nowidctlpar\faauto\outlinelevel4\adjustright\rin0\lin120\itap0 -\f5\fs20\ul\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 5;}{\*\cs10 \additive Default Paragraph Font;}{\*\cs15 \additive \f5\fs18\up6\lang1033\langfe0\langnp1033\langfenp0 \sbasedon10 footnote reference;}{ -\s16\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 footnote text;}{\s17\ql \li360\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin360\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 Normal Indent;}{\s18\ql \fi-240\li600\ri0\sb60\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin600\itap0 -\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext18 Jli;}{\s19\ql \li120\ri0\sb60\sl-240\slmult0\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\faauto\adjustright\rin0\lin120\itap0 -\f6\fs16\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext19 Ex;}{\s20\ql \li120\ri0\sb160\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext29 Sa1;}{ -\s21\ql \fi-240\li360\ri0\sl-240\slmult0\nowidctlpar\tx360\faauto\adjustright\rin0\lin360\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext22 Lb1;}{\s22\ql \fi-240\li360\ri0\sb60\sl-240\slmult0\nowidctlpar -\tx360\faauto\adjustright\rin0\lin360\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext22 Lb2;}{\s23\ql \li360\ri0\sb60\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin360\itap0 -\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext22 Lp1;}{\s24\ql \fi-1800\li1920\ri0\sb120\sa40\sl-240\slmult0\nowidctlpar\brdrb\brdrs\brdrw15\brsp20 \brdrbtw\brdrs\brdrw15\brsp20 \tx1920\faauto\adjustright\rin0\lin1920\itap0 -\b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext25 Th;}{\s25\ql \fi-1800\li1920\ri0\sb60\sl-240\slmult0\nowidctlpar\tx1920\faauto\adjustright\rin0\lin1920\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext25 Tp;}{ -\s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext0 Normal 2;}{\s27\ql \li120\ri0\sb120\sa120\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 -\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext0 bitmap;}{\s28\ql \li120\ri0\sb120\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext29 Sa2;}{ -\s29\ql \fi-240\li360\ri0\sb60\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin360\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext29 Jl;}{\s30\ql \li120\ri0\sa60\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 -\f28\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext30 *body;}{\s31\ql \li120\ri0\sa60\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \b\f28\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext31 *heading;}{ -\s32\ql \li120\ri0\sa60\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f28\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon30 \snext32 para;}{ -\s33\ql \fi-280\li400\ri0\sa60\nowidctlpar\faauto\adjustright\rin0\lin400\itap0 \f28\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon30 \snext33 jump;}{\s34\ql \fi-280\li400\ri0\sa60\nowidctlpar\tx400\faauto\adjustright\rin0\lin400\itap0 -\f28\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon30 \snext34 list bullet;}{\s35\ql \fi-280\li600\ri0\sa60\nowidctlpar\faauto\adjustright\rin0\lin600\itap0 \f28\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 -\sbasedon30 \snext35 jump indent;}{\s36\ql \li120\ri0\sa60\sl-40\slmult0\nowidctlpar\brdrb\brdrs\brdrw15\brsp20 \brdrbtw\brdrs\brdrw15\brsp20 \faauto\adjustright\rin0\lin120\itap0 \f28\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 -\sbasedon30 \snext36 table rule;}{\s37\ql \fi-280\li400\ri0\sa60\nowidctlpar\tqr\tx280\tx400\faauto\adjustright\rin0\lin400\itap0 \f28\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon30 \snext37 list number;}{ -\s38\ql \li120\ri0\sb100\sa60\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \b\f28\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon31 \snext33 see also;}{\s39\ql \li400\ri0\sa60\nowidctlpar\faauto\adjustright\rin0\lin400\itap0 -\f28\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon30 \snext39 para indent;}{\s40\ql \fi-1800\li1920\ri0\nowidctlpar\tx1920\faauto\adjustright\rin0\lin1920\itap0 \b\f28\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 -\sbasedon31 \snext36 table head;}{\s41\ql \fi-1800\li1920\ri0\sa60\nowidctlpar\tx1920\faauto\adjustright\rin0\lin1920\itap0 \f28\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon30 \snext41 table text;}{ -\s42\ql \li120\ri0\sb120\sa60\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f28\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon30 \snext35 see also 2;}{\s43\ql \li120\ri0\sa60\keep\nowidctlpar -\tx520\tx920\tx1320\tx1720\tx2120\faauto\adjustright\rin0\lin120\itap0 \f6\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon30 \snext43 code;}{\s44\ql \li0\ri0\sl-120\slmult0\nowidctlpar\faauto\adjustright\rin0\lin0\itap0 -\f29\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext32 *spacing;}{\s45\ql \li0\ri0\sl-120\slmult0\nowidctlpar\faauto\adjustright\rin0\lin0\itap0 \f29\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon44 \snext45 s6;}{ -\s46\qj \li360\ri0\nowidctlpar\faauto\adjustright\rin0\lin360\itap0 \f5\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext46 Help Text;}{\s47\ql \li115\ri0\sb120\sa40\sl-240\slmult0\nowidctlpar\brdrb\brdrs\brdrw15\brsp20 \brdrbtw -\brdrs\brdrw15\brsp20 \faauto\adjustright\rin0\lin115\itap0 \f11\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon24 \snext25 Th2;}{\s48\ql \li115\ri0\sb120\sa40\sl-240\slmult0\nowidctlpar\brdrb\brdrs\brdrw15\brsp20 \brdrbtw -\brdrs\brdrw15\brsp20 \faauto\adjustright\rin0\lin115\itap0 \b\f11\fs16\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon24 \snext25 Th3;}{\s49\ql \li115\ri0\sb200\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin115\itap0 -\f11\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 Normal 3;}{\s50\ql \fi-1800\li1915\ri0\sb120\sa40\sl-240\slmult0\nowidctlpar\brdrb\brdrs\brdrw15\brsp20 \brdrbtw\brdrs\brdrw15\brsp20 -\tx1915\faauto\adjustright\rin0\lin1915\itap0 \b\f11\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext51 Thh;}{\s51\ql \fi-1800\li1915\ri0\sb60\sl-240\slmult0\nowidctlpar\tx1915\faauto\adjustright\rin0\lin1915\itap0 -\f11\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext51 Tph;}{\s52\ql \li288\ri-432\sb80\sl-240\slmult0\nowidctlpar\tx288\tx864\tx1440\faauto\adjustright\rin-432\lin288\itap0 -\f5\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext52 unixman1;}{\s53\ql \li1440\ri-432\sb80\sa240\sl-240\slmult0\nowidctlpar\tx288\tx864\tx1440\faauto\adjustright\rin-432\lin1440\itap0 -\f5\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext53 unixman2;}{\s54\ql \li115\ri-432\sb80\sl-240\slmult0\nowidctlpar\tx288\tx864\tx1440\faauto\adjustright\rin-432\lin115\itap0 -\f5\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon52 \snext54 unixman0;}{\s55\ql \li288\ri-432\sb80\sa240\sl-240\slmult0\nowidctlpar\tx288\tx864\tx1440\faauto\adjustright\rin-432\lin288\itap0 -\f5\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon52 \snext55 unixman1a;}{\s56\ql \li115\ri0\sa60\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin115\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 -\sbasedon2 \snext56 heading 2a;}{\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext57 endnote text;}{\*\cs58 \additive \super \sbasedon10 -endnote reference;}{\*\cs59 \additive \ul\cf2 \sbasedon10 Hyperlink;}{\*\cs60 \additive \ul\cf12 \sbasedon10 FollowedHyperlink;}{\s61\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \cbpat9 -\f27\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext61 Document Map;}{\s62\ql \li480\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin480\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 -\sbasedon0 \snext62 Body Text 2;}{\s63\ql \fi-720\li1440\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin1440\itap0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext63 Body Text Indent 2;}{ -\s64\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\tqc\tx4320\tqr\tx8640\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext64 header;}{\s65\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar -\tqc\tx4320\tqr\tx8640\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext65 footer;}}{\*\listtable{\list\listtemplateid67698703\listsimple{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0 -\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-360\li360\jclisttab\tx360 }{\listname ;}\listid74976790}{\list\listtemplateid67698703\listsimple -{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-360\li360\jclisttab\tx360 }{\listname -;}\listid349260549}{\list\listtemplateid67698689\listsimple{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\chbrdr\brdrnone\brdrcf1 -\chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li360\jclisttab\tx360 }{\listname ;}\listid470094698}{\list\listtemplateid67698703\listsimple{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext -\'02\'00.;}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-360\li360\jclisttab\tx360 }{\listname ;}\listid640160996}{\list\listtemplateid67698689\listsimple{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0 -\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li360\jclisttab\tx360 }{\listname ;}\listid768165129}{\list\listtemplateid67698703\listsimple -{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-360\li360\jclisttab\tx360 }{\listname -;}\listid781152802}{\list\listtemplateid67698703\listsimple{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 -\chshdng0\chcfpat1\chcbpat1 \fi-360\li360\jclisttab\tx360 }{\listname ;}\listid903878531}{\list\listtemplateid67698689\listsimple{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext -\'01\u-3913 ?;}{\levelnumbers;}\f3\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li360\jclisttab\tx360 }{\listname ;}\listid1002394966}{\list\listtemplateid67698703\listsimple{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0 -\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-360\li360\jclisttab\tx360 }{\listname ;}\listid1021513731}{\list\listtemplateid67698703\listsimple -{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-360\li360\jclisttab\tx360 }{\listname -;}\listid1099714113}{\list\listtemplateid67698703\listsimple{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 -\chshdng0\chcfpat1\chcbpat1 \fi-360\li360\jclisttab\tx360 }{\listname ;}\listid1240552867}{\list\listtemplateid67698703\listsimple{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext -\'02\'00.;}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-360\li360\jclisttab\tx360 }{\listname ;}\listid1332292840}{\list\listtemplateid67698703\listsimple{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0 -\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-360\li360\jclisttab\tx360 }{\listname ;}\listid1358388700}{\list\listtemplateid67698689\listsimple{\listlevel -\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li360\jclisttab\tx360 }{\listname -;}\listid1405952460}{\list\listtemplateid67698689\listsimple{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\chbrdr\brdrnone\brdrcf1 -\chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li360\jclisttab\tx360 }{\listname ;}\listid2025940873}{\list\listtemplateid67698689\listsimple{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext -\'01\u-3913 ?;}{\levelnumbers;}\f3\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\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 Tim Mann}{\creatim\yr2003\mo10\dy25\hr23\min40}{\revtim\yr2003\mo11\dy2\hr18\min20} -{\printim\yr1997\mo4\dy22\hr23\min5}{\version4}{\edmins5}{\nofpages60}{\nofwords12847}{\nofchars-32766}{\*\company DEC SRC}{\nofcharsws0}{\vern8247}} -\widowctrl\endnotes\aendnotes\ftnnrlc\aftnnar\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\hyphcaps0\horzdoc\dghspace120\dgvspace120\dghorigin1701\dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind4\viewscale100\nolnhtadjtbl \fet1{\*\aftnsep -\pard\plain \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\chftnsep -\par }}\sectd \linex0\sectdefaultcl {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4 +\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 \f28\fs20\cgrid \snext30 *body;}{\s31\li120\sa60\nowidctlpar\adjustright \b\f28\fs20\cgrid \snext31 *heading;}{\s32\li120\sa60\sl-240\slmult0 +\nowidctlpar\adjustright \f28\fs20\cgrid \sbasedon30 \snext32 para;}{\s33\fi-280\li400\sa60\nowidctlpar\adjustright \f28\fs20\cgrid \sbasedon30 \snext33 jump;}{\s34\fi-280\li400\sa60\nowidctlpar\tx400\adjustright \f28\fs20\cgrid \sbasedon30 \snext34 +list bullet;}{\s35\fi-280\li600\sa60\nowidctlpar\adjustright \f28\fs20\cgrid \sbasedon30 \snext35 jump indent;}{\s36\li120\sa60\sl-40\slmult0\nowidctlpar\brdrb\brdrs\brdrw15\brsp20 \brdrbtw\brdrs\brdrw15\brsp20 \adjustright \f28\fs20\cgrid +\sbasedon30 \snext36 table rule;}{\s37\fi-280\li400\sa60\nowidctlpar\tqr\tx280\tx400\adjustright \f28\fs20\cgrid \sbasedon30 \snext37 list number;}{\s38\li120\sb100\sa60\nowidctlpar\adjustright \b\f28\fs20\cgrid \sbasedon31 \snext33 see also;}{ +\s39\li400\sa60\nowidctlpar\adjustright \f28\fs20\cgrid \sbasedon30 \snext39 para indent;}{\s40\fi-1800\li1920\nowidctlpar\tx1920\adjustright \b\f28\fs20\cgrid \sbasedon31 \snext36 table head;}{\s41\fi-1800\li1920\sa60\nowidctlpar\tx1920\adjustright +\f28\fs20\cgrid \sbasedon30 \snext41 table text;}{\s42\li120\sb120\sa60\nowidctlpar\adjustright \f28\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 \f29\fs20\cgrid \snext32 *spacing;}{\s45\sl-120\slmult0\nowidctlpar\adjustright \f29\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\yr2008\mo8\dy11\hr19\min22}{\printim\yr1997\mo4\dy22\hr23\min5}{\version22}{\edmins659} +{\nofpages76}{\nofwords17127}{\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\ql \li120\ri0\sb280\sa120\sl-320\slmult0 -\nowidctlpar\faauto\outlinelevel0\adjustright\rin0\lin120\itap0 \b\f5\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\fs20\super +{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super +}{\f1 main}}${\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super $}{\f1 Contents}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 Contents}}K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Contents}}}{\i\f1\fs32 WinBoard}{\f1\fs32 : Chessboard for Windows -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Description}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 Description}}}{\f1 Description -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard\plain \ql \fi-360\li480\ri0\sb80\sl-240\slmult0\nowidctlpar\jclisttab\tx480{\*\pn \pnlvlblt\ilvl0\ls3\pnrnot0\pnf3\pnstart1\pnindent360\pnsp120\pnhang{\pntxtb \'b7}} -\faauto\ls3\adjustright\rin0\lin480\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 GNU Chess}{\f1 - is supplied with WinBoard, 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 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ql \fi-360\li480\ri0\sb80\sl-240\slmult0\nowidctlpar\jclisttab\tx480{\*\pn \pnlvlblt\ilvl0\ls3\pnrnot0\pnf3\pnstart1\pnindent360\pnsp120\pnhang{\pntxtb \'b7}} -\faauto\ls3\adjustright\rin0\lin480\itap0 {\b\i\f1 Chess servers}{\b\f1 }{\f1 on the Internet. You can play against other Internet Chess Server (ICS) users, observe games they +{\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.3.14 +\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 +\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 g +raphical 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, 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 i nformation. -\par {\pntext\pard\plain\f3\fs20 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ql \fi-360\li480\ri0\sb80\sl-240\slmult0\nowidctlpar\jclisttab\tx480{\*\pn \pnlvlblt\ilvl0\ls3\pnrnot0\pnf3\pnstart1\pnindent360\pnsp120\pnhang{\pntxtb \'b7}} -\faauto\ls3\adjustright\rin0\lin480\itap0 {\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super K}{ Getting Started}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super #}{ GettingStarted}}}{\f1 Getting Started -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 +\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 d irectly from the other two modes. Also, you can start WinBoard several times to get multiple chessboard windows running in any combination of modes. -\par }\pard\plain \s20\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { -You will usually run WinBoard by choosing an item from the Windows Start menu that runs it in the mode you +\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 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 c hess servers. More advanced users can }{\uldb customize}{\v icsNames}{ these lists or type in WinBoard }{\uldb command line options}{\v Options}{ directly. -\par }\pard\plain \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 After starting WinBoard, you can make }{\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 move}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 move}}}{\f1 moves in several different ways. To move by dragging, press the left mouse bu +\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 bu tton 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 click i ng 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 mo ves 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\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { -\cs58\f1\super K}{\f1 icon}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Additional Information -\par }\pard\plain \s29\ql \fi-240\li360\ri0\sb60\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin360\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1\uldb Menus}{\v\f1\uldb Menus}{\f1\uldb +\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 @@ -171,1748 +178,1845 @@ icon is a white knight if it is White's turn to move, a black knight if it is Bl \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\ql \li120\ri0\sb280\sa120\sl-320\slmult0\nowidctlpar\faauto\outlinelevel0\adjustright\rin0\lin120\itap0 \b\f5\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Menus}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 Menus}}${\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super $}{\f1 Menus}}+{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super +}{\f1 main}}}{\f1\fs20 MENUS -\par }\pard\plain \s29\ql \fi-240\li360\ri0\sb60\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin360\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1\uldb File Menu}{\v\f1 FileMenu}{\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\ql \li120\ri0\sb280\sa120\sl-320\slmult0\nowidctlpar\faauto\outlinelevel0\adjustright\rin0\lin120\itap0 \b\f5\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 File Menu}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 FileMenu}}${\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super $}{\f1 File Menu}}+{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super +}{\f1 main}}}{\f1\fs18\up6 }{\f1\fs20 File Menu -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Reset}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 Reset}}}{\f1 Reset -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Resets WinBoard and the chess engine (if any) to the beginning o -f 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 Reset. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Load Game}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 LoadGame}}}{\f1 Load Game -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 their PGN tags, if any), and you can select the one you want. -\par }\pard\plain \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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@f7}{\f1 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, sq -u -are 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 nonst -andard 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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Load Next Game}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 LoadNextGame}}}{\f1 Load Next Game -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Loads the next game from the last game record file you loaded. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Load Previous Game}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 LoadPreviousGame}}}{\f1 Load Previous Game -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Reload Same Game}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 ReloadSameGame}}}{\f1 Reload Same Game -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Reloads the last game you loaded. Not available if the last game was loaded from a pipe. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Save Game}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 SaveGame}}}{\f1 Save Game -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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. Game 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@f7}{\f1 is generated for piece-drops in bughouse games; this is a nonstandard extension to PGN. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Copy Game To Clipboard}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 CopyGameToClipboard}}}{\f1 Copy Game To Clipboard -\par }\pard\plain \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Copies the record - of the current game to the Windows clipboard in PGN (portable game notation) format. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Paste Game From Clipboard}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 PasteGameFromClipboard}}}{\f1 Paste Game From Clipboard -\par }\pard\plain \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Load Position}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 LoadPosition}}}{\f1 Load Position -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Load Next Position}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 LoadNextPosition}}}{\f1 Load Next Position -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Loads the next position from the last position file you loaded. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Load Previous Position}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 LoadPreviousPosition}}}{\f1 Load Previous Position -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Reload Same Position}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 ReloadSamePosition}}}{\f1 Reload Same Position -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Reloads the las -t position you loaded. Not available if the last position was loaded from a pipe. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Save Position}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 SavePosition}}}{\f1 Save Position -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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, curren -tly Load Position can load only the first position in a file. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Copy Position Clipboard}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 CopyPositionToClipboard}}}{\f1 Copy Position To Clipboard -\par }\pard\plain \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 -Places a diagram of the current position (in Forsythe-Edwards notation) into the Windows clipboard. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Paste Position Clipboard}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 PastePositionFromClipboard}}}{\f1 Paste Position From Clipboard -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Exit}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 Exit}}}{\f1 Exit -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Exits from WinBoard. -\par }\pard\plain \s1\ql \li120\ri0\sb280\sa120\sl-320\slmult0\nowidctlpar\faauto\outlinelevel0\adjustright\rin0\lin120\itap0 \b\f5\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain -\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\b\f1\super K}{\f1 Mode Menu}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 ModeMenu}}${\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super $}{\f1 Mode Menu}}+{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super +}{\f1 main}}}{\f1\fs20 Mode Menu -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Machine White}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 MachineWhite}}}{\f1 Machine White -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Forces the chess engine to play white. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Machine Black}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 MachineBlack}}}{\f1 Machine Black -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Forces the chess engine to play black. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Two Machines}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 TwoMachines}}}{\f1 Two Machines -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Starts a game between two chess engines. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Analysis Mode}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 AnalysisMode}}}{\f1 Analysis Mode -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 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. This feature currently works only if Crafty is the chess engine. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Analyze File}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 AnalyzeFile}}}{\f1 Analyze File -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 In this mode, you can load a game from a f -ile, and the chess engine will analyze each move as in Analysis Mode. This feature currently works only if Crafty is the chess engine. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 ICS Client}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 ICSClient}}}{\f1 ICS Client -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 -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 Wi -ndows 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 com -mand. 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 }\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, bu +t + 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, a +s 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 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 capabla +nca 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. +\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 g +ame, 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. +\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@f7}{ +\f1 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 }{\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 sta +ndard starting position, the game file includes the starting position used. Game 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@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 F +ENs 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 hold +i +ngs 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.}{\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\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. the 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 replies and display its analysis in a separate window. Crafty was th +e 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 + 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 analyze each move as in Analysis Mode. C +rafty 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 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 p -l -ay. 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. -\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Edit Game}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 EditGame}}}{\f1 Edit Game -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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. -\par }\pard\plain \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 . +\f1\uldb Pause}{\v\f1 Pause}{\f1 , and }{\f1\uldb Stop Examining}{\v\f1 StopExamining}{\f1 below. You can also issue the I +CS 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 dro +p + 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 al +so 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. +\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Edit Position}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 EditPosition}}}{\f1 Edit Position -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 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 p -ieces. 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. -\par }\pard\plain \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Selecting Edit Position causes WinBoard}{\i\f1 }{\f1 to discard all remembered moves in th -e 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 on ICS in a way that other ICS users c -an 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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Training}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 Training}}}{\f1 Training -\par }\pard\plain \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { -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 }{\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Show Game List}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 ShowGameList}}}{\f1 Show Game List -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Edit Tags}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 EditTags}}}{\f1 Edit Tags -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li520\ri0\sa60\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\faauto\adjustright\rin0\lin520\itap0 \f6\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f2 \line ::= \line - \line ::= [ ]\line ::= \line ::= -\par }\pard\plain \s20\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 See the PGN Standard for full details. Here is an example: -\par }\pard\plain \s43\ql \li520\ri0\sa60\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\faauto\adjustright\rin0\lin520\itap0 \f6\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Edit Comment}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 EditComment}}}{\f1 Edit Comment -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Pause}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 Pause}}}{\f1 Pause -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 both clocks will s -top. 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 }\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 piece +s 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 e +mpty 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 C +razyhouse 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).}{\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 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. (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 buttons 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 ::= \line \line ::= [ ]\line + ::= \line ::= +\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 cont +inue, 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 both 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 o +bservers. 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\ql \li120\ri0\sb280\sa120\sl-320\slmult0\nowidctlpar\faauto\outlinelevel0\adjustright\rin0\lin120\itap0 \b\f5\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Action Menu}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 ActionMenu}}${\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super $}{\f1 Action Menu}}+{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super +}{\f1 main}}}{\f1\fs20 Action Menu -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Most of these commands are available in chess server mode only. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Accept}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 Accept}}}{\f1 Accept -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Decline}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 Decline}}}{\f1 Decline -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Rematch}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 Rematch}}}{\f1 Rematch -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Call Flag}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 CallFlag}}}{\f1 Call Flag -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Draw}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 Draw}}}{\f1 Draw -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Adjourn}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 Adjourn}}}{\f1 Adjourn -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Ask -s 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\f1 match}{\f1 command. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Abort}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 Abort}}}{\f1 Abort -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Resign}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 Resign}}}{\f1 Resign -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Resigns the game to your opponent. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Stop Observing}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 StopObserving}}}{\f1 Stop Observing -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Ends your participation in observing a game, by issuing the ICS }{\b\f1 unobserve}{\f1 - command. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Stop Examining}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 StopExamining}}}{\f1 Stop Examining -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Ends your participation in examining a game, by issuing the ICS }{\b\f1 unexamine}{\f1 c -ommand. -\par }\pard\plain \s1\ql \li120\ri0\sb280\sa120\sl-320\slmult0\nowidctlpar\faauto\outlinelevel0\adjustright\rin0\lin120\itap0 \b\f5\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Step Menu}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 StepMenu}}${\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super $}{\f1 Step Menu}}+{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super +}{\f1 main}}}{\f1\fs20 Step Menu -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Type In Move}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 TypeInMove}}}{\f1 Type In Move -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Backward}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 Backward}}}{\f1 Backward -\par }\pard\plain \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Steps backward through a series of remembered moves. The }{\b\f1 <}{\f1 - button is equivalent to selecting Backward.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 }{\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 }\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 t +he 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.In most modes, Back +ward 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 no +t 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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Forward}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 Forward}}}{\f1 Forward -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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. -\par }\pard\plain \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 +\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. +\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Back to Start}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 BacktoStart}}}{\f1 Back to Start -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Jumps backward to the first remembered position in the game. The }{\b\f1 << }{\f1 -button is equivalent. -\par }\pard\plain \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 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 }{\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 Reset}{\v\f1 Reset}{\f1 to start a new 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 + 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 mod +es, 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 situa +tions, 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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Forward to End}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 ForwardtoEnd}}}{\f1 Forward to End -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Jumps forward to the last position in the game. The }{\b\f1 >>}{\f1 button is equivalent. +\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 \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 , whi -ch 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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Revert}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 Revert}}}{\f1 Revert -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 If you are examining a game on the ICS, issues the ICS command }{\b\f1 revert}{\f1 . -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Truncate Game}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 TruncateGame}}}{\f1 Truncate Game -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Move Now}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 MoveNow}}}{\f1 Move Now -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Forces the chess engine to move immediately. May not work with all chess engines. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Retract Move}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 RetractMove}}}{\f1 Retract Move -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Retracts your last move. -\par }\pard\plain \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 }\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\ql \li120\ri0\sb280\sa120\sl-320\slmult0\nowidctlpar\faauto\outlinelevel0\adjustright\rin0\lin120\itap0 \b\f5\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Options Menu}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 OptionsMenu}}${\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super $}{\f1 Options Menu}}+{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super +}{\f1 main}}}{\f1\fs20 Options Menu -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Flip View}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 FlipView}}}{\f1 }{\f1\ul Flip View}{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Inverts your view of the chessboard. -\par }\pard\plain \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\ul\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super K}{ General Options}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super #}{ GeneralOptions}}}{\f1\ul General}{\f1 -\par }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Always On Top}}#{\footnote\ftnalt -\pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 AlwaysOnTop}}}{\f1 Always On Top -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Always Queen}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 AlwaysQueen}}}{\f1 Always Queen -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 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. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Animate Dragging}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 AnimateDragging}}}{\f1 Animate Dragging -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 }\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 pla +ying 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 (increment) 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 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. + +\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 yo +u 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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Animate Moving}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 AnimateMoving}}}{\f1 Animate Moving -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 (unle -ss 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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Auto Flag}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 AutoflagCmd}}}{\f1 Auto Flag -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 If this option is on a -nd 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 insuff -icient mating 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 \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\b\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super K}{ Auto Flip View}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super #}{ AutoFlipView}}}{\b Auto Flip 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 An +imate 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 Dr +agging). 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 player runs out of time before the othe +r, 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\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\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super K}{ Auto Raise Board}}#{\footnote\ftnalt -\pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super #}{ AutoRaiseBoard}}}{\b Auto Raise Board +\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\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super K}{ Blindfold}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super #}{ BlindfoldCmd}}}{Blindfold -\par }\pard\plain \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {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}{\f1 .}{ -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Highlight Dragging}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 HighlightDragging}}}{\f1 Highlight Dragging -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 -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. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Highlight Last Move}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 HighlightLastMove}}}{\f1 Highlight Last Move -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Periodic Updates}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 PeriodicUpdatesCmd}}}{\f1 Periodic Updates -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 +\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 still be entered with the mouse, eith +er 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 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. +\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 contai +n 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 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. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\nowidctlpar\faauto\pnrdate0\pnrnot1\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\revised\super\revauth1\revdttm-1506646559 K}{ -\f1\revised\revauth1\revdttm-1506646559 Ponder Next Move}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\nowidctlpar\faauto\pnrdate0\pnrnot1\adjustright\rin0\lin120\itap0 -\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\revised\super\revauth1\revdttm-1506646559 #}{\f1\revised\revauth1\revdttm-1506646559 PonderNextMoveCmd}}}{\f1 Ponder Next Move -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Popup Exit Message}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 PopupExitMessageCmd}}}{\f1 Popup Exit Message -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Popup Move Errors}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 PopupMoveErrorsCmd}}}{\f1 Popup Move Errors -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 -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. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Show Button Bar}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 ShowButtonBarCmd}}}{\f1 Show Button Bar -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 If Show Button Bar is on, WinBoard displays on-screen }{\f1\uldb buttons}{\v\f1 BUTTONS}{\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 + 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 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. +\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Show Coords}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 ShowCoordsCmd}}}{\f1 Show Coords -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 If Show Coords is on, WinBo -ard displays algebraic coordinates along the board's left and bottom edges. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Show Thinking}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 ShowThinkingCmd}}}{\f1 Show Thinking -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 If this option is set, WinBoard displays the chess engine\rquote -s current search depth and its notion of the score and best li -ne 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 t -hinking or Black's. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Test Legality}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 TestLegalityCmd}}}{\f1 Test Legality -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 -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 ar -e playing a chess variant that WinBoard does not understand. (Bughouse, suicide, and wild variants where the king may castle after starting on the }{\b\f1 d}{\f1 file are generally supported with Test Legality on.) -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\ul\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super K}{ Board Options}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super #}{ BoardOptions}}}{\f1\ul Board -\par }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Board Size}}#{\footnote\ftnalt -\pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 BoardSizeCmd}}}{\f1 Board Size -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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, M -edium 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. +\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 w +hat 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 4 +5x45, 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 }\pard\plain \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Board Colors}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 BoardColors}}}{\f1 Board Colors -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Lets you change the colors WinBoard is using to draw the board and pieces. -\par }\pard\plain \s5\ql \li115\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\outlinelevel4\adjustright\rin0\lin115\itap0 \f5\fs20\ul\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\b -\par }{\cs58\b\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super K}{ ICS Options}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super #}{ ICSOptions}}}{\b ICS -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Auto Comment}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 AutoCommentCmd}}}{\f1 Auto Comment -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 includes remarks made with the ICS commands }{\b\f1 say, tell, whisper, }{\f1 and }{\b\f1 kibitz}{\f1 +\par }{\cf11 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.}{\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 disti +nguish 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 Engine}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ }{\f1\ul\cf6 Engine}}}{\f1\ul\cf6 Engine +\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 mo +de. +\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 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 \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 consider ed 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 UCI}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ }{\f1\ul\cf6 UCI}}}{\f1\ul\cf6 UCI +\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 +\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. If future extensions of WinBoard protocol allow native WinBoard + engines to request similar information, it might be used for these engines as well. +\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 C +omment 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\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Auto Observe}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 AutobsCmd}}}{\f1 Auto Observe -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Get Move List}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 GetMoveListCmd}}}{\f1 Get Move List -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 If Get Move List is on, whenever WinBoard}{\i\f1 }{\f1 -receives the first board of a new ICS game (or a differ -ent 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\f1 }{\f1 immediately fetches the current move list. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Local Line Editing}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 LocalLineEditing}}}{\f1 Local Line Editing -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 (\'93quote\'94); 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 (\'93send\'94). -\par }\pard\plain \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 keypad; this is a little-known standard feature of Windows. +\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 game from the one it is currently displaying), it retrieves the list of past moves from the server. You can then revie +w 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\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 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 (\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 char +acter. 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. \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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Quiet Play}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 QuietPlayCmd}}}{\f1 Quiet Play -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Premove}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 PremoveCmd}}}{\f1 Premove -\par }\pard\plain \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {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 }\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\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super K}{ ICS Alarm}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super #}{ ICSAlarm}}}{ICS Alarm -\par }\pard\plain \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 ICS Interaction Colors}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 ICSInteractionColors}}}{\f1 ICS Interaction Colors -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 chann -el 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). -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Fonts}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 Fonts}}}{\f1 }{\f1\ul Fonts}{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 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 \'93Revert to Defaults\'94 +\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 whisper), personal tell (or new message notification), challenge, request (including abort, adjou +rn, 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, message font and coordinates font are specific to each board size. The tags font, comments font an +d 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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Sounds}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 Sounds}}}{\f1 }{\f1\ul Sounds}{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Lets you change the sounds that WinBoard plays for various events. -\par }\pard\plain \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Move Sound}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 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\f1 set bell 0}{\f1 - command to the ICS. Otherwise the ICS will send a bell character after every move (not just yours), causing W -inBoard 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. +\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 af +ter 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 probabl +y 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 play the ICS Bell sound too. Alternatively, you could turn off the ICS Bell sound in WinBoard, but that mig +ht 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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Communications}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 Communications}}}{\f1 }{\f1\ul Communications}{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Load Game}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 LoadGameOptns}}}{\f1 }{\f1\ul Load Game}{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Lets you change options used while loading games (}{\f1\uldb timeDelay}{\v\f1 timeDelay}{\f1 - option). -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Save Game}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 SaveGameOptns}}}{\f1 }{\f1\ul Save Game}{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Time Control}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 TimeControlCmd}}}{\f1 }{\f1\ul Time Control}{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 }\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Save Settings Now}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 SaveSettings}}}{\f1 }{\f1\ul Save Settings Now}{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Save Settings on Exit}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 SaveSettingsOnExit}}}{\f1 }{\f1\ul Save Settings on Exit}{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 -If this option is on, the current settings are automatically saved when WinBoard exits, as with Save Settings Now. -\par }\pard\plain \s1\ql \li120\ri0\sb280\sa120\sl-320\slmult0\nowidctlpar\faauto\outlinelevel0\adjustright\rin0\lin120\itap0 \b\f5\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Help Menu}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 HelpMenu}}}{\b0\f1\fs18\up6 }{\cs58\f1\fs20\super ${\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super $}{\f1 Help Menu}}+{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super +}{\f1 main}}}{\f1\fs20 Help Menu -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Help Contents}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 HelpContents}}}{\f1 Help Contents -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Brings up this help file, starting at the Contents page. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Search for Help on}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 SearchHelp}}}{\f1 Help Index -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Brings up this help file, starting at the Index/Find dialog. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 How to Use Help}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 HelpHelp}}}{\f1 How to Use Help -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Brings up the standard help file that explains how to use Windows Help. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Hint}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 Hint}}}{\f1 Hint -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Displays a move hint from the chess engine. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Book}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 Book}}}{\f1 Book -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Displays a list of possible moves from the chess engine\rquote -s opening book. The first column gives m -oves, 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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 About WinBoard}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 AboutWinBoard}}}{\f1 About WinBoard -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Displays the WinBoard version number. -\par }\pard\plain \s1\ql \li120\ri0\sb280\sa120\sl-320\slmult0\nowidctlpar\faauto\outlinelevel0\adjustright\rin0\lin120\itap0 \b\f5\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 ICS Interaction Context Menu}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 ICSInteractionContextMenu}}}{\b0\f1\fs18\up6 }{\cs58\f1\fs20\super $ -{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super $}{\f1 ICS Interaction Context Menu}}+{\footnote\ftnalt -\pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super +}{\f1 main}}}{\f1\fs20 ICS Interaction Context Menu -\par }\pard\plain \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 To se -e 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 Notepa -d or another plain text editor. Sorry, there is no graphical user interface for customizing the menu. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Copy and Paste}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 CopyAndPaste}}}{\f1 Copy and Paste -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Copy}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 Copy}}}{\f1 Copy -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Copies the current selection to the clipboard. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Paste}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 Paste}}}{\f1 Paste -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Pastes the clipboard contents to the input box. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\nowidctlpar\faauto\pnrdate0\pnrnot1\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\revised\super\revauth1\revdttm-1506646559 K}{ -\f1\revised\revauth1\revdttm-1506646559 Who}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\nowidctlpar\faauto\pnrdate0\pnrnot1\adjustright\rin0\lin120\itap0 -\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\revised\super\revauth1\revdttm-1506646559 #}{\f1\revised\revauth1\revdttm-1506646559 Who}}}{\f1 Who -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Sends the command \'93who\'94}{\b\i\f1 }{\f1 to ICS. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\nowidctlpar\faauto\pnrdate0\pnrnot1\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\revised\super\revauth1\revdttm-1506646559 K}{ -\f1\revised\revauth1\revdttm-1506646559 Players}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\nowidctlpar\faauto\pnrdate0\pnrnot1\adjustright\rin0\lin120\itap0 -\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\revised\super\revauth1\revdttm-1506646559 #}{\f1\revised\revauth1\revdttm-1506646559 Players}}}{\f1 Players -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Sends the command \'93players\'94}{\b\i\f1 }{\f1 to ICS. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\nowidctlpar\faauto\pnrdate0\pnrnot1\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\revised\super\revauth1\revdttm-1506646559 K}{ -\f1\revised\revauth1\revdttm-1506646559 Games}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\nowidctlpar\faauto\pnrdate0\pnrnot1\adjustright\rin0\lin120\itap0 -\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\revised\super\revauth1\revdttm-1506646559 #}{\f1\revised\revauth1\revdttm-1506646559 Games}}}{\f1 Games -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Sends the command \'93games\'94}{\b\i\f1 }{\f1 to ICS. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\nowidctlpar\faauto\pnrdate0\pnrnot1\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\revised\super\revauth1\revdttm-1506646559 K}{ -\f1\revised\revauth1\revdttm-1506646559 Sought}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\nowidctlpar\faauto\pnrdate0\pnrnot1\adjustright\rin0\lin120\itap0 -\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\revised\super\revauth1\revdttm-1506646559 #}{\f1\revised\revauth1\revdttm-1506646559 Sought}}}{\f1 Sought -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Sends the command \'93sought\'94}{\b\i\f1 }{\f1 to ICS. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Tell}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 Tell}}}{\f1 Tell (name) -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Inserts \'93tell }{\i\f1 name }{\f1 \'94}{\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 \'93word\'94 is a string of letters, digits, or hyphens (-), such as an ICS user handle or game number. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Message}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 Message}}}{\f1 Message (name) -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Inserts \'93message }{\i\f1 name }{\f1 \'94}{\b\i\f1 }{\f1 into the input box, where }{\i\f1 -name}{\f1 is as defined above. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Finger}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 Finger}}}{\f1 Finger (name) -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Sends the command \'93finger }{\i\f1 name}{\f1 \'94}{\b\i\f1 }{\f1 to ICS, where }{\i\f1 name} -{\f1 is as defined above. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Vars}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 Vars}}}{\f1 Vars (name) -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Sends the command \'93vars }{\i\f1 name}{\f1 \'94}{\b\i\f1 }{\f1 to ICS, where }{\i\f1 name}{ -\f1 is as defined above. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Observe}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 Observe}}}{\f1 Observe (name) -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Sends the command \'93observe }{\i\f1 name}{\f1 \'94}{\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Match}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 Match}}}{\f1 Match (name) -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Sends the command \'93match }{\i\f1 name}{\f1 \'94}{\b\i\f1 }{\f1 to ICS, where }{\i\f1 name}{ -\f1 is as defined above. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\nowidctlpar\faauto\pnrdate0\pnrnot1\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\revised\super\revauth1\revdttm-1506646559 K}{ -\f1\revised\revauth1\revdttm-1506646559 Play}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\nowidctlpar\faauto\pnrdate0\pnrnot1\adjustright\rin0\lin120\itap0 -\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\revised\super\revauth1\revdttm-1506646559 #}{\f1\revised\revauth1\revdttm-1506646559 Play}}}{\f1 Play (name) -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Sends the command \'93play }{\i\f1 name}{\f1 \'94}{\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\ql \li120\ri0\sb280\sa120\sl-320\slmult0\nowidctlpar\faauto\outlinelevel0\adjustright\rin0\lin120\itap0 \b\f5\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Buttons}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 Buttons}}${\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super $}{\f1 Buttons}}+{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super +}{\f1 main}}}{\b0\f1\fs18\up6 }{\f1\fs20 BUTTONS -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Back to Start}}}{\f1 << -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Same as }{\f1\uldb Back to Start}{\v\f1 BacktoStart}{\f1 . -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Backward}}}{\f1 < -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Same as }{\f1\uldb Backward}{\v\f1 Backward}{\f1 . -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Pause}}}{\f1 P -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Forward}}}{\f1 > -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Same as }{\f1\uldb Forward}{\v\f1 Forward}{\f1 . -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Forward to End}}}{\f1 >> -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Same as }{\f1\uldb Forward to End}{\v\f1 ForwardtoEnd}{\f1 . -\par }\pard\plain \s1\ql \li120\ri0\sb280\sa120\sl-320\slmult0\nowidctlpar\faauto\outlinelevel0\adjustright\rin0\lin120\itap0 \b\f5\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Command Line Options}}K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Options}}}{\f1\fs20 }{\cs58\f1\fs20\super #{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 Options}}}{\f1\fs20 }{\cs58\f1\fs20\super ${\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super $}{\f1 Command Line Options}}}{\f1\fs20 }{\cs58\f1\fs20\super +{\footnote\ftnalt -\pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super +}{\f1 main}}}{\f1\fs20 COMMAND LINE OPTIONS -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 +\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 sec +ond 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 WinBoard}}#{\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 \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 \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 \'93x\'94 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 strin -g 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\} +\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 by -pass 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 +\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 byp +ass 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\ql \fi-240\li360\ri0\sb60\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin360\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1\uldb Chess Engine Options}{\v\f1 ChessEngineOptions}{\f1 +\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\ql \li120\ri0\sb280\sa120\sl-320\slmult0\nowidctlpar\faauto\outlinelevel0\adjustright\rin0\lin120\itap0 \b\f5\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Chess Engine Options}}${\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super $}{\f1 Chess Engine Options}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 ChessEngineOptions}}+{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super +}{\f1 main}}}{\f1\fs20 Chess Engine Options -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 cp}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 chessProgram}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 chessProgram}}}{\f1 /chessProgram }{\i\f1 true|false -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 tc}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 tc}}}{\f1 /tc }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 timeControl}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 timeControl}}}{\f1 /timeControl }{\i\f1 minutes[:seconds] -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Each player be -gins with his clock set to the timeControl period. Default: 5 minutes. The additional options movesPerSession and timeIncrement are mutually exclusive. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 mps}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 mps}}}{\f1 /mps }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 movesPerSession}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 movesPerSession}}}{\f1 /movesPerSession }{\i\f1 moves}{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 When both players hav -e made movesPerSession moves, a new timeControl period is added to both clocks. Default: 40 moves. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 inc}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 inc}}}{\f1 /inc }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 timeIncrement}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 timeIncrement}}}{\f1 /timeIncrement }{\i\f1 seconds -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 clock }}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 clockMode}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 clockMode}}}{\f1 /clockMode }{\i\f1 true|false -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 searchTime 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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 st}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 st}}}{\f1 /st }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 searchTime }}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 searchTime }}}{\f1 /searchTime }{\i\f1 minutes[:seconds]}{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 contro -l. Setting this option also sets clockMode to False. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 sd}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 sd}}}{\f1 /depth }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 searchDepth}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 searchDepth}}}{\f1 /searchDepth }{\i\f1 number}{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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, th -e 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. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\nowidctlpar\faauto\pnrdate0\pnrnot1\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\revised\super\revauth1\revdttm-1506646559 K}{ -\f1\revised\revauth1\revdttm-1506646559 ponder}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\nowidctlpar\faauto\pnrdate0\pnrnot1\adjustright\rin0\lin120\itap0 -\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\nowidctlpar\faauto\pnrdate0\pnrnot1\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { -\cs58\f1\revised\super\revauth1\revdttm-1506646559 K}{\f1\revised\revauth1\revdttm-1506646559 ponderNextMove}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto -\nowidctlpar\faauto\pnrdate0\pnrnot1\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\revised\super\revauth1\revdttm-1506646559 #}{\f1\revised\revauth1\revdttm-1506646559 ponderNextMove}}}{\f1 - /ponderNextMove }{\i\f1 true|false -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Sets the }{\f1\uldb Ponder Next Move}{\v\f1 ponderNextMoveCmd}{\f1 option. Default: True. +\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 \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 thinking}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 showThinking}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 showThinking}}}{\f1 /showThinking }{\i\f1 true|false -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Sets the }{\f1\uldb Show Thinking}{\v\f1 showThinkingCmd}{\f1 option. Default: False. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 periodic }}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 periodicUpdates}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 periodicUpdates}}}{\f1 /periodicUpdates }{\i\f1 true|false -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Sets the }{\f1\uldb Periodic Updates}{\v\f1 periodicUpdatesCmd}{\f1 option. Default: True. +\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is specified, movesPerSession is ignored. Instead, a +fter 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 search +Time 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 \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 mg }}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 mg }}}{\f1 /mg }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 matchGames }}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 matchGames}}}{\f1 /matchGames }{\i\f1 n -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 +\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 bnot be used to conver +t 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. Tis option can provide fairer conditions fo engine-engine matc +hes 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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 mm }}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 matchMode }}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 matchMode }}}{\f1 /matchMode }{\i\f1 true|false -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Provided for backward compatibility. If true and matchGames=0, sets matchGames=1. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 fd}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 fd }}}{\f1 /fd }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 firstDirectory}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 firstDirectory}}}{\f1 /firstDirectory }{\i\f1 dir\line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 sd}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 sd }}}{\f1 /sd }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 secondDirectory}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 secondDirectory}}}{\f1 /secondDirectory }{\i\f1 dir}{\cs58\f1\super }{\f1 \line }{\cs58\f1\super K{\footnote\ftnalt -\pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 fcp }}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 fcp }}}{\f1 /fcp }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 firstChessProgram }}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 firstChessProgram }}}{\f1 /firstChessProgram }{\i\f1 command\line }{\cs58\f1\super -K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 scp }}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 scp }}}{\f1 /scp }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 secondChessProgram }}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 secondChessProgram }}}{\f1 /secondChessProgram }{\i\f1 command}{\cs58\f1\super }{ -\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 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 i +s 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 interpreted literally, not as a C-style escape. -\par }\pard\plain \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 interpreted relative to the direct -ory 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 }\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 interpreted 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. + 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 o +ne 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\ql \fi-518\li1036\ri0\sb60\sl-240\slmult0\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\faauto\adjustright\rin0\lin1036\itap0 \f6\fs16\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f2 WinBoard /cp /fd="C:\\Program Files\\ -Crafty" /fcp=WCrafty-15.12.exe /scp=GNUChess +\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 \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 fh }}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 fh }}}{\f1 /fh }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 firstHost }}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 firstHost }}}{\f1 /firstHost }{\i\f1 host\line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 sh }}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 sh }}}{\f1 /sh }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 secondHost }}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 secondHost }}}{\f1 /secondHost }{\i\f1 host}{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 rem -ote 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. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 initString}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 secondInitString}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 secondInitString}}}{\f1 /secondInitString }{\i\f1 string}{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 All chess engines require the "new" command to start a new game. -\par 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 sam -e 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 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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 initString}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 initString}}}{\f1 /firstComputerString }{\i\f1 string\line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 secondInitString}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 secondInitString}}}{\f1 /secondComputerString }{\i\f1 string}{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 -If the chess engine is playing against another computer program (whether locally or on a chess server), by default the command "computer\\ +\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 lik +e 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 wi +th 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. +\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 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 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 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 "". -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 fb }}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 firstPlaysBlack }}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 firstPlaysBlack}}}{\f1 /firstPlaysBlack }{\i\f1 true|false -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 In games between two chess programs, the firstChessProgram normally plays w -hite. (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. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 reuse}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 reuseFirst}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 reuseFirst}}}{\f1 /reuseFirst}{\i\f1 true|false\line }{\cs58\f1\super K -{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 reuse2}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 reuseSecond}}#{\footnote\ftnalt -\pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 reuseSecond}}}{\f1 /reuseSecond}{\i\f1 true|false}{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 firstProtocolVersion}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 firstProtocolVersion}}}{\f1 /firstProtocolVersion }{\i\f1 ver\line }{\cs58\f1\super -K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 secondProtocolVersion}}#{\footnote\ftnalt -\pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 secondProtocolVersion}}}{\f1 /secondProtocolVersion }{\i\f1 ver}{\f1 +\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 commands, and is thus ideal for hiding a WinBoard-protocol command in that should be s +ent 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. +\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 WinBoar +d.) 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. +\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 multipl +e 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 reu +sed, 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 changes. 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 }{ +\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 \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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, not -hing else changes. Other values for version-number are not supported. -\par }\pard\plain \s1\ql \li120\ri0\sb280\sa120\sl-320\slmult0\nowidctlpar\faauto\outlinelevel0\adjustright\rin0\lin120\itap0 \b\f5\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1\fs20 \page }{\cs58\f1\fs20\super +{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super +}{\f1 main}}K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Internet Chess Server Options}}${\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super $}{\f1 Internet Chess Server Options}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 InternetChessServerOptions}}}{\f1\fs20 Internet Chess Server Options -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 ics }}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 internetChessServerMode}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 internetChessServerMode}}}{\f1 /internetChessServerMode}{\i\f1 true|false}{\f1 +\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 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 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 . +\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 \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 icshost }}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 icshost }}}{\f1 /icshost }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 internetChessServerHost }}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 internetChessServerHost }}}{\f1 /internetChessServerHost }{\i\f1 hostname}{\f1 +\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 \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 icsport }}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 icsport }}}{\f1 /icsport }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 internetChessServerPort }}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 internetChessServerPort }}}{\f1 /internetChessServerPort }{\i\f1 portnumber}{\f1 - -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 The port number to use when connecting to a chess server in ICS mode. Default: 5000. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 via }}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 via }}}{\f1 /icshelper }{\i\f1 program}{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 An external helper program used to communicate with the chess server. Typically }{ -\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 - timeseal}}}{\i\f1 timeseal}{\f1 for FICS (freechess.org, eics.daimi.aau.dk, etc.). This option is shorthand for \'93/useTelnet /telnetProgram }{\i\f1 program}{\f1 \'94}{\b\f1 . -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 telnet}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 useTelnet}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 useTelnet}}}{\f1 /useTelnet}{\i\f1 true|false}{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 gateway}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 gateway}}}{\f1 /gateway }{\i\f1 hostname}{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 If this option is set to a host name, WinBoard uses }{\f1\uldb rsh}{\v\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 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 WinBo +ard 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 su +itable. 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. +\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 telnetProgram}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 telnetProgram}}}{\f1 /telnetProgram }{\i\f1 program}{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 "telnet". The telnet program is invoked with the value of internetCh -essServer as the first argument and the value of internetChessServerPort as the second argument on its command line. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 icscom }}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 icscom }}}{\f1 /icscom }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 internetChessServerComPort }}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 internetChessServerComPort }}}{\f1 /internetChessServerComPort }{\i\f1 name}{\f1 - -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 Intern -et access through another machine by dialing in using a modem or by connecting directly to a serial terminal port. Example: -\par }\pard\plain \s19\ql \li120\ri0\sb60\sl-240\slmult0\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\faauto\adjustright\rin0\lin120\itap0 \f6\fs16\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f2 WinBoard /ics /icscom:com1 -\par }\pard\plain \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 comPortSettings }}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 comPortSettings }}}{\f1 /comPortSettings}{\b0\f1 }{\i\f1 \'93 -dataRate,dataBits,parity,stopBits,flow\'94 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 This option allows serial port parameters to be set from the command lin -e or a settings file. The values are simply filled in to the }{\f1\uldb Communications}{\v\f1 Communications}{\f1 dialog. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 icslogon }}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 icslogon }}}{\f1 /icslogon }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 internetChessServerLogonScript }}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 internetChessServerLogonScript }}}{\f1 /internetChessServerLogonScript }{\i\f1 -filename -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 This option lets you change the name used for the }{\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 + 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 "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. +\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 c +onnected 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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 autocomm }}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 autoComment }}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 autoComment }}}{\f1 /autoComment}{\i\f1 true|false}{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Sets the }{\f1\uldb Auto Comment}{\v\f1 AutoCommentCmd}{\f1 option. Default: False. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 autoflag }}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 autoCallFlag }}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 autoCallFlag }}}{\f1 /autoCallFlag}{\i\f1 true|false}{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Sets the }{\f1\uldb Auto Flag}{\v\f1\uldb AutoFlag}{\f1 option. Default: False. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 autobs }}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 autoObserve }}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 autoObserveCmd }}}{\f1 /autoObserve}{\i\f1 true|false}{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Sets the }{\f1\uldb Auto Observe}{\v\f1 autoObserveCmd}{\f1 option. Default: False. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 moves }}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 getMoveList }}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 getMoveList }}}{\f1 /getMoveList}{\i\f1 true|false}{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Sets the }{\f1\uldb Get Move List}{\v\f1 getMoveListCmd}{\f1 option. Default: True. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 edit}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 localLineEditing}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 localLineEditingOption}}}{\f1 /localLineEditing}{\i\f1 true|false}{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Sets the }{\f1\uldb Local Line Editing}{\v\f1 localLineEditing}{\f1 option. Default: True. - -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 quiet }}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 quietPlay }}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 quietPlay }}}{\f1 /quietPlay}{\i\f1 true|false}{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Sets the }{\f1\uldb Quiet Play}{\v\f1 quietPlayCmd}{\f1 option. Default: False -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 blindfold (option)}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 opt_blindfold }}}{\f1 /blindfold }{\i\f1 true|false}{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Sets the }{\f1\uldb Blindfold}{\v\f1 BlindfoldCmd}{\f1 option. Default: False -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super K}{ pre}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super #}{ pre}}}{\f1 /pre }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super K}{ xpre}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 -\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super #}{ xpre}}}{\f1 /xpre}{\b0\f1 , or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 -\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 premove (option)}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 -\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 premove}}}{\f1 /premove}{\i\f1 true|false -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li115\ri0\sb120\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin115\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super K}{ preWhite}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super #}{ preWhite}}}{\f1 /prewhite }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super K}{ xpreWhite}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super #}{ xpreWhite}}}{\f1 /xprewhite}{\b0\f1 , or }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 premoveWhite}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 premoveWhite}}}{\f1 /premoveWhite}{\i\f1 true|false -\par }\pard \s2\ql \li115\ri0\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin115\itap0 {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 -\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 premoveWhiteText}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 -\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 premoveWhiteText}}}{\f1 /premoveWhiteText}{\i\f1 movetext -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li115\ri0\sb120\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin115\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super K}{ preBlack}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super #}{ preBlack}}}{\f1 /preblack }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super K}{ xpreBlack}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super #}{ xpreBlack}}}{\f1 /xpreblack}{\b0\f1 , or }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 premoveBlack}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 premoveBlack}}}{\f1 /premoveBlack}{\i\f1 true|false -\par }\pard \s2\ql \li115\ri0\sa120\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin115\itap0 {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 -\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 premoveBlackText}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 -\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 premoveBlackText}}}{\f1 /premoveBlackText}{\i\f1 movetext -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 t -o 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 \ql \li115\ri0\sb120\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin115\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\b\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super K}{ alarm}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 -\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super #}{ alarm}}}{\b /alarm }{or}{\b }{\cs58\b\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 -\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super K}{ xalarm}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 -\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super #}{ xalarm}}}{\b /xalarm}{, or }{\cs58\b\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 -\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super K}{ icsAlarm}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 -\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super #}{ icsAlarm}}}{\b /icsAlarm }{\b\i true|false}{\b -\par }\pard \ql \li115\ri0\sa120\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin115\itap0 {\cs58\b\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 -\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super K}{ icsAlarmTime}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 -\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super #}{ icsAlarmTime}}}{\b /icsAlarmTime }{\b\i milliseconds -\par }\pard \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 {When }{\b icsAlarm}{ is set to True, the }{\uldb alarm sound}{\v soundIcsAlarm}{ is played when your clock counts down to }{\b 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 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. +\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\ql \li120\ri0\sb280\sa120\sl-320\slmult0\nowidctlpar\faauto\outlinelevel0\adjustright\rin0\lin120\itap0 \b\f5\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1\fs20 \page }{\cs58\f1\fs20\super +{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super +}{\f1 main}}K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Load and Save Options}}${\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super $}{\f1 Load and Save Options}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 LoadandSaveOptions}}}{\b0\f1\fs18\up6 }{\f1\fs20 Load and Save Options -\par }\pard\plain \s2\ql \li115\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin115\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 lgf }}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 lgf }}}{\f1 /lgf }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 loadGameFile }}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 loadGameFile }}}{\f1 /loadGameFile }{\i\f1 filename}{\f1 \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 lgi }}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 lgi }}}{\f1 /lgi }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 loadGameIndex }}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 loadGameIndex }}}{\f1 /loadGameIndex }{\i\f1 N}{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 -If loadGameFile is set, WinBoard reads the specified game file at startup. You can leave out the na -me 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 fil -ename "-" 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\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 td }}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 td }}}{\f1 /td }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 timeDelay }}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 timeDelay }}}{\f1 /timeDelay }{\i\f1 seconds}{\f1 -\par }\pard\plain \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Time delay between moves during }{\f1\uldb Load Game}{\v\f1 LoadGame}{\f1 +\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, 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 th +e 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\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 sgf }}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 sgf }}}{\f1 /sgf }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 saveGameFile }}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 saveGameFile }}}{\f1 /saveGameFile }{\i\f1 filename}{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 -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. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 autosave }}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 autoSaveGames }}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 autoSaveGames }}}{\f1 /autoSaveGames}{\i\f1 true|false}{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 lpf}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 lpf}}}{\f1 /lpf }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 loadPositionFile }}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 loadPositionFile }}}{\f1 /loadPositionFile }{\i\f1 filename}{\f1 \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 lpi }}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 lpi }}}{\f1 /lpi }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 loadPositionIndex }}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 loadPositionIndex }}}{\f1 /loadPositionIndex }{\i\f1 N}{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 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, WinBoard appends a record of every game played to the specified file. The filename is interpre +ted 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 o +f 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 startup. 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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 spf }}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 spf }}}{\f1 /spf }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 savePositionFile }}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 savePositionFile }}}{\f1 /savePositionFile }{\i\f1 filename}{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 working directory. The file name "-" specifies the standard output. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 oldsave }}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 oldSaveStyle }}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 oldSaveStyle }}}{\f1 /oldSaveStyle}{\i\f1 true|false}{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 If th -is 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 \s1\ql \li120\ri0\sb280\sa120\sl-320\slmult0\nowidctlpar\faauto\outlinelevel0\adjustright\rin0\lin120\itap0 \b\f5\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1\fs20 \page }{\cs58\f1\fs20\super +{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super +}{\f1 main}}K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 User Interface Options}}${\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super $}{\f1 User Interface Options}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 UserInterfaceOptions}}}{\b0\f1\fs18\up6 }{\f1\fs20 User Interface Options -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 top}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 alwaysOnTop}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 alwaysOnTopOpt}}}{\f1 /alwaysOnTop}{\i\f1 true|false}{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Sets the }{\f1\uldb Always On Top}{\v\f1 AlwaysOnTop}{\f1 option. Default: False. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 queen}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 alwaysPromoteToQueen}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 alwaysPromoteToQueen}}}{\f1 /alwaysPromoteToQueen}{\i\f1 true|false}{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Sets the }{\f1\uldb Always Queen}{\v\f1 AlwaysQueen}{\f1 option. Default: False. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 drag}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 animateDragging}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 animateDraggingOpt}}}{\f1 /animateDragging}{\i\f1 true|false}{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Sets the }{\f1\uldb Animate Dragging}{\v\f1 animateDragging}{\f1 option. Default: True. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 animate}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 animateMoving}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 animateMovingOpt}}}{\f1 /animateMoving}{\i\f1 true|false}{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Sets the }{\f1\uldb Animate Moving}{\v\f1 animateMoving}{\f1 option. Default: True. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 flip}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 flipView}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 flipViewOption}}}{\f1 /flipView}{\i\f1 true|false}{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 -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 }{ -\f1\uldb Flip View}{\v\f1 FlipView}{\f1 menu command can be used to flip the board after the game starts -\par }\pard\plain \ql \li115\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin115\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\b\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super K}{ autoflip}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 -\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super #}{ autoflip}}}{\b /autoflip}{ or }{\b /xautoflip}{, or }{\cs58\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super K}{ autoFlipView}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super #}{ autoFlipViewOption}}}{\b /autoFlipView }{\b\i true|false -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Sets the }{\f1\uldb Auto Flip View}{\v\f1 AutoFlipView}{\f1 option. Default: True. -\par }\pard\plain \ql \li115\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin115\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\b\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super K}{ autoraise}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super #}{ autoraise}}}{\b /autoraise}{ or }{\b /xautoraise}{, or }{\cs58\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super K}{ autoRaiseBoardOption}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super #}{ autoRaiseBoardOption}}}{\b /autoRaiseBoard }{\b\i true|false -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Sets the }{\f1\uldb Auto Raise Board}{\v\f1 AutoFlipView}{\f1 option. Default: True. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 highdrag}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 highlightDragging\tab \tab }}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 highlightDraggingOpt}}}{\f1 /highlightDragging }{\i\f1 true|false}{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 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 working 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 optio +n 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 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 overwrit +ten. +\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 unsollicited output from the engine, with respect to saing it in the debug file. The output is further (hopefully) ignored. If }{ +\i\f1\cf11 numbe}{\f1\cf11 r=0, WinBoard rfrains from writing such spurious output to the debug file. If}{\i\f1\cf11 numbe}{\f1\cf11 r=1, all engine output is written faithfully to the debug file. If }{\i\f1\cf11 numbe}{\f1\cf11 +r=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 informtion, such as the broadcater of live games TLCV / TLCS. Such applications can be protected from spurious engine output that might otherwise confuse them. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 highlight}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 highlightLastMove}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 highlightLastMoveOpt}}}{\f1 /highlightLastMove}{\i\f1 true|false}{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Sets the }{\f1\uldb Highlight Last Move}{\v\f1 highlightLastMoveOpt}{\f1 - option. Default: False. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 popup}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 popupMoveErrors}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 popupMoveErrorsOpt}}}{\f1 /popupExitMessage}{\i\f1 true|false}{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Sets the }{\f1\uldb Popup Exit Message}{\v\f1 popupExitMessageCmd}{\f1 - menu option. Default: False. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 popup}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 popupMoveErrors}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 popupMoveErrorsOpt}}}{\f1 /popupMoveErrors}{\i\f1 true|false}{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Sets the }{\f1\uldb Popup Move Errors}{\v\f1 popupMoveErrorsCmd}{\f1 - menu option. Default: False. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 coords }}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 showCoords}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 showCoords}}}{\f1 /showCoords}{\i\f1 true|false}{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Sets the }{\f1\uldb Show Coords}{\v\f1 showCoords}{\f1 option. Default: False. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 legal }}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 testLegality }}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 testLegality }}}{\f1 /testLegality}{\i\f1 true|false}{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Sets the }{\f1\uldb Test Legality}{\v\f1 testLegalityCmd}{\f1 option. Default: True. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 size }}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 size }}}{\f1 /size }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 boardSize }}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 boardSize }}}{\f1 /boardSize }{\i\f1 sizename}{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super K}{ wpc}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super #}{ wpc}}}{\f1 /wpc}{\b0\f1 or }{\cs58\b0\f1\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 whitePieceColor}}}{\cs58\f1\super #{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 whitePieceColor}}}{\f1 /whitePieceColor }{\i\f1 color\line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super K}{ bpc}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super #}{ bpc}}}{\f1 /bpc }{\b0\f1 or }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 blackPieceColor}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 blackPieceColor}}}{\f1 /blackPieceColor }{\i\f1 color\line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super K}{ lsc}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super #}{ lsc}}}{\f1 /lsc }{\b0\f1 or}{\i\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 lightSquareColor}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 lightSquareColor}}}{\f1 /lightSquareColor }{\i\f1 color}{\cs58\f1\super }{\f1 \line }{\cs58\f1\super K{\footnote\ftnalt -\pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super K}{ dsc}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super #}{ dsc}}}{\f1 /dsc }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 darkSquareColor}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 darkSquareColor}}}{\f1 /darkSquareColor }{\i\f1 color}{\cs58\f1\super }{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 If you are using a }{\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 grayscale}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 grayscale}}}{\f1 grayscale monitor, try setting the colors to: -\par }\pard\plain \s19\ql \li520\ri0\sb60\sl-240\slmult0\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\faauto\adjustright\rin0\lin520\itap0 \f6\fs16\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f2\fs20 -whitePieceColor:#FFFFFF\line --blackPieceColor:#000000\line -lightSquareColor:#CCCCCC\line -darkSquareColor:#999999 -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super K}{ hsc}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super #}{ hsc}}}{\f1 /hsc }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 highlightSquareColor}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 highlightSquareColor}}}{\f1 /highlightSquareColor }{\i\f1 color}{\cs58\f1\super }{\f1 \line }{\cs58\f1\super K -{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super K}{ phc}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\super #}{ phc}}}{\f1 /phc }{\b0\f1 or }{\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 premoveHighlightColor}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 intensity, 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\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 mono }}#{\footnote\ftnalt -\pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 monoMode}}#{\footnote\ftnalt -\pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 monoMode}}}{\f1 /monoMode}{\i\f1 true|false}{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 colorShout}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 colorShout}}}{\f1 /colorShout}{\i\f1 \'93effects color\'94\line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 colorSShout}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 colorSShout}}}{\f1 /colorSShout }{\i\f1 \'93effects color\'94\line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 colorChannel1}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 colorChannel1}}}{\f1 /colorChannel1 }{\i\f1 \'93effects color\'94}{\f1 \line }{\cs58\f1\super K{\footnote\ftnalt -\pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 colorChannel}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 colorChannel}}}{\f1 /colorChannel }{\i\f1 \'93effects color\'94}{\f1 \line }{ -\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 colorKibitz}}#{\footnote\ftnalt -\pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 colorKibitz}}}{\f1 /colorKibitz }{\i\f1 \'93effects color\'94}{\f1 -\line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 colorTell}}#{\footnote\ftnalt -\pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 colorTell}}}{\f1 /colorTell }{\i\f1 \'93effects color\'94}{\f1 \line }{ -\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 colorChallenge}}#{\footnote\ftnalt -\pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 colorChallenge}}}{\f1 /colorChallenge }{\i\f1 \'93effects color\'94}{ -\f1 \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 colorRequest}}# -{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 colorRequest}}}{\f1 /colorRequest }{\i\f1 \'93 -effects color\'94}{\f1 \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 - colorSeek}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 colorSeek}}}{\f1 /colorSeek }{\i\f1 \'93 -effects color\'94}{\f1 \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 color -Normal}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 colorNormal}}}{\f1 /colorNormal }{\i\f1 \'93 -effects color\'94 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 +\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\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\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 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 }{\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 defa +ult 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 st +ring 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 sp +ecified only by red/green/blue intensity, 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 Jap +anese 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 pi +eces lack. This makes the latter 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 textu +re 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.\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 (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 cha +nge 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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 colorBackground}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 colorBackground}}}{\f1 /colorBackground }{\i\f1 color -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 colorize}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 colorizeMessages}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 colorizeMessages}}}{\f1 /colorizeMessages}{\i\f1 true|false}{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 clockFont}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 clockFont}}}{\f1 /clockFont \'93}{\i\f1 fontname:size effects}{\f1 \'94\line }{\cs58\f1\super K{\footnote\ftnalt -\pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 messageFont}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 messageFont}}}{\f1 /messageFont \'93}{\i\f1 fontname:size effects}{\f1 \'94\line }{ -\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 coordFont}}#{\footnote\ftnalt -\pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 coordFont}}}{\f1 /coordFont \'93}{\i\f1 fontname:size effects}{\f1 \'94 -\line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 tagsFont}}#{\footnote\ftnalt -\pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 tagsFont}}}{\f1 /tagsFont \'93}{\i\f1 fontname:size effects}{\f1 \'94 -\line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 commentFont}}# -{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 commentFont}}}{\f1 /commentFont \'93}{\i\f1 -fontname:size effects}{\f1 \'94\line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 - icsFont}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 icsFont}}}{\f1 /icsFont \'93}{\i\f1 -fontname:size effects}{\f1 \'94 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li115\ri0\sb120\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin115\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 soundShout}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 soundShout}}}{ /soundShout}{\i sound\line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 soundSShout}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 soundSShout}}}{ /soundSShout }{\i sound\line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 soundChannel1}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 soundChannel1}}}{ /soundChannel1 }{\i sound}{\line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 soundChannel}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 soundChannel}}}{ /soundChannel }{\i sound}{\line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 soundKibitz}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 soundKibitz}}}{ /soundKibitz }{\i sound}{\line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 soundTell}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 soundTell}}}{ /soundTell }{\i sound}{\line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 soundChallenge}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 soundChallenge}}}{ /soundChallenge }{\i sound}{\line }{\cs58\f1\super K -{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 soundRequest}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 soundRequest}}}{ /soundRequest }{\i sound}{\line }{\cs58\f1\super K -{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 soundMove}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 soundMove}}}{ /soundMove }{\i sound}{\cs58\f1\super }{\line }{\cs58\f1\super K -{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 soundBell}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 soundBell}}}{ /soundBell }{\i sound}{\cs58\f1\super }{ -\par }\pard \s2\ql \li115\ri0\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin115\itap0 {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 -\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 soundIcsWin}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 -\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 soundIcsWin}}}{\f1 /soundIcsWin }{\i\f1 sound}{\f1 \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 soundIcsLoss}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 soundIcsLoss}}}{\f1 /soundIcsLoss }{\i\f1 sound}{\cs58\f1\super }{\f1 \line }{\cs58\f1\super K{\footnote\ftnalt -\pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 soundIcsDraw}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 soundIcsDraw}}}{\f1 /soundIcsDraw }{\i\f1 sound}{\cs58\f1\super }{\f1 \line }{ -\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 soundIcsUnfinished}}# -{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 soundIcsUnfinished}}}{\f1 /soundIcsUnfinished }{ -\i\f1 sound}{\cs58\f1\super }{\f1 -\par }\pard \s2\ql \li115\ri0\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin115\itap0 {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 -\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 soundIcsAlarm}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 -\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 soundIcsAlarm}}}{\f1 /soundIcsAlarm }{\i\f1 sound}{\cs58\f1\super }{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\b SoundIcsWin}{, }{\b soundIcsLoss}{, }{\b soundIcsDraw}{ and }{\b soundIcsUnfinished}{ +\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 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\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 \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\jclisttab\tx480\faauto\adjustright\rin0\lin120\itap0 {\f1 The }{\i\f1 sound}{\f1 argument may be one of the following: -\par {\pntext\pard\plain\f3\fs20 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ql \fi-360\li480\ri0\sb80\sl-240\slmult0\nowidctlpar\jclisttab\tx480{\*\pn \pnlvlblt\ilvl0\ls2\pnrnot0\pnf3\pnstart1\pnindent360\pnsp120\pnhang{\pntxtb \'b7}} -\faauto\ls2\adjustright\rin0\lin480\itap0 {\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 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ql \fi-360\li480\ri0\sb80\sl-240\slmult0\nowidctlpar\jclisttab\tx480{\*\pn \pnlvlblt\ilvl0\ls2\pnrnot0\pnf3\pnstart1\pnindent360\pnsp120\pnhang{\pntxtb \'b7}} -\faauto\ls2\adjustright\rin0\lin480\itap0 {\f2 $}{\f1 , indicating the default system sound. -\par {\pntext\pard\plain\f3\fs20 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ql \fi-360\li480\ri0\sb80\sl-240\slmult0\nowidctlpar\jclisttab\tx480{\*\pn \pnlvlblt\ilvl0\ls2\pnrnot0\pnf3\pnstart1\pnindent360\pnsp120\pnhang{\pntxtb \'b7}} -\faauto\ls2\adjustright\rin0\lin480\itap0 {\f2 !}{\f1 followed by the name of a built-in WinBoard wave resource. -\par {\pntext\pard\plain\f3\fs20 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ql \fi-360\li480\ri0\sb80\sl-240\slmult0\nowidctlpar\jclisttab\tx480{\*\pn \pnlvlblt\ilvl0\ls2\pnrnot0\pnf3\pnstart1\pnindent360\pnsp120\pnhang{\pntxtb \'b7}} -\faauto\ls2\adjustright\rin0\lin480\itap0 {\f2 !}{\f1 alone, or \'93\'94 (empty string), indicating silence. -\par }\pard \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 {\f1 The default for soundMove and soundBell is }{\f2 $}{\f1 , while the others default to silence. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 icsMenu}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 icsMenu}}}{\f1 /icsMenu=\{}{\i\f1 entries}{\f1 \} }{\b0\f1 or }{\f1 /icsMenu=@}{\i\f1 filename -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 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 }{\f2 "-"}{\f1 . The fields are: -\par {\pntext\pard\plain\f5\fs20 \hich\af5\dbch\af0\loch\f5 1.\tab}}\pard\plain \ql \fi-360\li480\ri0\sb80\sl-240\slmult0\nowidctlpar\jclisttab\tx480{\*\pn \pnlvlbody\ilvl0\ls14\pnrnot0\pndec\pnstart1\pnindent360\pnsp120\pnhang{\pntxta .}} -\faauto\ls14\adjustright\rin0\lin480\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {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 \hich\af1\dbch\af0\loch\f1 2.\tab}}\pard\plain \s26\ql \fi-360\li480\ri0\sl-240\slmult0\nowidctlpar\jclisttab\tx480{\*\pn \pnlvlbody\ilvl0\ls14\pnrnot0\pndec\pnstart1\pnindent360\pnsp120\pnhang{\pntxta .}} -\faauto\ls14\adjustright\rin0\lin480\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 \hich\af1\dbch\af0\loch\f1 3.\tab}}\pard \s26\ql \fi-360\li480\ri0\sl-240\slmult0\nowidctlpar\jclisttab\tx480{\*\pn \pnlvlbody\ilvl0\ls14\pnrnot0\pndec\pnstart1\pnindent360\pnsp120\pnhang{\pntxta .}} -\faauto\ls14\adjustright\rin0\lin480\itap0 {\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 th -e 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 \hich\af1\dbch\af0\loch\f1 4.\tab}}\pard \s26\ql \fi-360\li480\ri0\sl-240\slmult0\nowidctlpar\jclisttab\tx480{\*\pn \pnlvlbody\ilvl0\ls14\pnrnot0\pndec\pnstart1\pnindent360\pnsp120\pnhang{\pntxta .}} -\faauto\ls14\adjustright\rin0\lin480\itap0 {\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 \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {The entry }{\f2 "-"}{ produces a se -parator 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 }\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 ent +ries, 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 }{\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\ql \li520\ri0\sb60\sl-240\slmult0\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\faauto\adjustright\rin0\lin520\itap0 \f6\fs16\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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),tell,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 \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 icsNames}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 icsNames}}}{\f1 /icsNames=\{}{\i\f1 names}{\f1 \} }{\b0\f1 or }{\f1 /icsNames=@}{\i\f1 filename -\par }\pard\plain \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 -, 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 \'94/ics /icsHost=\'94 +\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),tell,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 li +st 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 /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\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 firstChessProgramNames}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 firstChessProgramNames}}}{\f1 /firstChessProgramNames=\{}{\i\f1 names}{\f1 \} }{ -\b0\f1 or }{\f1 /firstChessProgramNames="@}{\i\f1 filename}{\f1 " -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 contains the strings. When you select a string from the drop-down list, WinBoard prepends the text \'94/cp /firstChessProgram=\'94 and adds the result to the command-line options. +\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 na +mes 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 prep +ends 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\ql \li520\ri0\sb60\sl-240\slmult0\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\faauto\adjustright\rin0\lin520\itap0 \f6\fs16\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 secondChessProgramNames}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 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 -\'94/cp /secondChessProgram=\'94 and adds the result to the command-line options. +\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 + secondChessProgramNames}}#{\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 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 \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\ql \li520\ri0\sb60\sl-240\slmult0\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\faauto\adjustright\rin0\lin520\itap0 \f6\fs16\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {/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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 xy coordinates of board}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 xy}}}{\f1 /x=}{\i\f1 xcoord }{\f1 /y=}{\i\f1 ycoord -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 xywh coordinates of Analysis window}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Sets the initial location and size -of the Analysis window, giving the screen coordinates of the upper left-hand corner, the width, and the height. All four arguments must be given together. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 xywh coordinates of Comment window}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 +\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 Sets the initial location and size + of the Analysis window, giving the screen coordinates of the upper left-hand corner, 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 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, the width, and the height. All four arguments must be given together. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 xywh coordinates of Game List window}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 + 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, the width, and the height. All four arguments must be given together. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 xywh coordinates of ICS Interaction window}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 xywh}}}{\f1 /icsX=}{\i\f1 xcoord }{\f1 /icsY=}{\i\f1 ycoord}{\f1 /icsW=}{\i\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 + 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\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 -Sets the initial location and size of the ICS Interaction window, giving the screen coordinates of the upper left-hand corner, the width, and the height. All four arguments must be given together. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 xywh coordinates of Tags window}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 +\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the initial location an +d size of the ICS Interaction window, giving the screen coordinates of the upper left-hand corner, 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, the width, and the height. All four arguments must be given together. -\par }\pard\plain \s1\ql \li120\ri0\sb280\sa120\sl-320\slmult0\nowidctlpar\faauto\outlinelevel0\adjustright\rin0\lin120\itap0 \b\f5\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1\fs20 \page }{\cs58\f1\fs20\super +{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super +}{\f1 main}}K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Other Options}}${\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super $}{\f1 Other Options}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 OtherOptions}}}{\b0\f1\fs18\up6 }{\f1\fs20 Other Options -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 ncp }}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 noChessProgram}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 noChessProgram}}}{\f1 /noChessProgram}{\i\f1 true|false}{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 + 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, 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, 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, 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 Not an album of the Rolling stones. +\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 +autoDisplayComments}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 autoDisplayComments}}}{\f1\cf6 /autoDisplayComments }{\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 pop up automatically when such tags or comments are encountered during the replaying a stored or loaded game. +\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid { +\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 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 /f +irstScoreAbs 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 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.}{\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 an +d 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.) Leg +ality-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, WinBoard 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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 mode}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 mode}}}{\f1 /mode}{\b0\f1 or }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 initialMode}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 initialMode}}}{\f1 /initialMode }{\i\f1 modename -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 TwoMachines, AnalyzeFile, Analysis, MachineWhite, MachineBlack, EditGame, EditPosition, and Training. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 variant}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 variant}}}{\f1 /variant}{\b0\f1 }{\i\f1 varname}{\f1 -\par }\pard\plain \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { -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: -\par normal\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 In the shuffle variants, WinBoard does not shuffle the pieces, but you can do it by hand using Edit Position. Some variants are supported only in ICS mode, including fischerandom, bughouse, and kriegspiel. The winning/drawing conditions in c -razyhouse (offboard interposition on mate), losers, suicide, giveaway, atomic, and 3check are not fully understood. In crazyhouse, WinBoard does not yet keep track of offboard pieces. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 debug}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 debugMode}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 debugMode}}}{\f1 /debugMode}{\i\f1 true|false}{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Writes debugging information to the file \'93WinBoard.debug\'94 -, 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. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 rsh }}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 rsh }}}{\f1 /rsh }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 remoteShell }}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 remoteShell }}}{\f1 /remoteShell }{\i\f1 shellname}{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 ruser }}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 ruser }}}{\f1 /ruser }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 remoteUser }}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 remoteUser }}}{\f1 /remoteUser }{\i\f1 username}{\f1 -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 -User name on the remote system when running programs with the remoteShell. The default is your local user name. -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 ini }}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 ini }}}{\f1 /ini }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 settingsFile }}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 settingsFile }}}{\f1 /settingsFile }{\i\f1 filename\line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 at sign}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 atsign }}}{\f1 @ }{\i\f1 file-name -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 See }{\f1\uldb Settings}{\v\f1 Settings}{\f1 . -\par }\pard\plain \s1\ql \li120\ri0\sb280\sa120\sl-320\slmult0\nowidctlpar\faauto\outlinelevel0\adjustright\rin0\lin120\itap0 \b\f5\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Initialization files}}K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Files}}${\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super $}{\f1 Files}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 Files}}+{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super +}{\f1 main}}}{\f1\fs20 INITIALIZATION FILES -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Settings }}}{\f1\fs18\up6 }{\cs58\f1\super #{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 Settings }}}{\f1 Settings -\par }\pard\plain \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {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 have to be on a single line. You can put a comment in a settings file by preceding it with a semicolon (}{\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 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 +\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.I +n shatranj it does 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. Widt +h 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 pieces have to be give +n 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=Arc +h +bishop, 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. +\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cf11 A tilde as a piece name does mean this piece is used to repr +esent 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 (w -hether from the command line or a file), it reads more settings from the given file before reading the next option. +\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 W -arning: 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 wi -l -l 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 \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 ICS Logon}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 ICSLogon}}}{\f1 ICS Logon -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb280\sa120\sl-320\slmult0\nowidctlpar\faauto\outlinelevel0\adjustright\rin0\lin120\itap0 \b\f5\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Installing Chess Engines}}${\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super $}{\f1 Installing Chess Engines}}#{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 InstallingChessEngines}}+{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super +}{\f1 main}}}{\f1\fs20 INSTALLING CHESS ENGINES -\par }\pard\plain \s2\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Introduction -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 WinBoard is capable of operating with many different chess engines. You can play chess agains -t a compatible engine, set up matches between two engines, or (advanced users only) run an automated computer player on an ICS. -\par }\pard\plain \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 engine -s 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. Th -erefore the basic procedure for installing an engine is: -\par }\pard\plain \s20\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 1. Get a copy of the engine and any supporting files it needs. -\par }\pard\plain \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 +\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 of operating with many differe +nt 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 c +omes 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 hand in an MS-DOS Prompt box an +d 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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Example: Crafty -\par }\pard\plain \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 1. Choose a directory to put Crafty in. We'll use }{\f2 C:\\Program Files\\Crafty}{\f1 +\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\ql \li520\ri0\sb60\sl-240\slmult0\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\faauto\adjustright\rin0\lin520\itap0 \f6\fs16\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 2. T -he 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 t -he Crafty read.me. Try running Crafty from an MS-DOS Prompt box and make sure it works before you go on. -\par }\pard\plain \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \fi-720\li1440\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin1440\itap0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {WinBoard /cp /fcp=WCrafty-15.* /fd="C:\\Program Files\\ -Crafty" /scp=WCrafty-15.* /sd="C:\\Program Files\\Crafty" -\par }\pard\plain \s16\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 -WinBoard should start up, with Crafty running as its chess engine. Check that you can play chess against Crafty. -\par }\pard\plain \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 4. To make a shortcut or Start menu entry for Crafty: Right-c -lick 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\\ +\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 Prompt b +ox 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 Browse b +utton 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\ql \fi-720\li1440\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin1440\itap0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {/cp /fcp=WCrafty-15.* /fd="C:\\Program Files\\Crafty" \line /scp=WCrafty-15.* /sd="C: -\\Program Files\\Crafty" -\par }\pard\plain \s62\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 +\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 can drag or copy the shortcut into your Start menu if you like. -\par }\pard\plain \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb120\sa60\sl-240\slmult0\nowidctlpar\faauto\outlinelevel1\adjustright\rin0\lin120\itap0 \b\f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 For more information -\par }\pard\plain \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 +\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\ql \li120\ri0\sb280\sa120\sl-320\slmult0\nowidctlpar\faauto\outlinelevel0\adjustright\rin0\lin120\itap0 \b\f5\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Firewalls}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 Firewalls}}${\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super $}{\f1 Firewalls}}+{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super +}{\f1 main}}}{\f1\fs18\up6 }{\f1\fs20 FIREWALLS -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 runni +ng 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\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\ql \li520\ri0\sb60\sl-240\slmult0\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\faauto\adjustright\rin0\lin520\itap0 \f6\fs16\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f2\fs20 -WinBoard -ics -icshost fire.wall.com -icsport 23 -\par }\pard\plain \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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 }\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 c +hessclub.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 tha +t 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 th +en 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\ql \li520\ri0\sb60\sl-240\slmult0\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\faauto\adjustright\rin0\lin520\itap0 \f6\fs16\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f2\fs20 -WinBoard -ics -gateway rsh.wall.com -icshost chessclub.com -\par }\pard\plain \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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\ql \li120\ri0\sb280\sa120\sl-320\slmult0\nowidctlpar\faauto\outlinelevel0\adjustright\rin0\lin120\itap0 \b\f5\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Limitations}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 Limitations}}${\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super $}{\f1 Limitations}}+{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super +}{\f1 main}}}{\f1\fs18\up6 }{\f1\fs20 LIMITATIONS -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 WinBoard}{\i\f1 }{\f1 -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. -\par }\pard\plain \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\i\f1 CMail, }{\f1 -the companion program to xboard for playing electronic mail correspondence chess, has not been ported to Win32. +\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 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 firewa +ll (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 authentication, but after that will give you a clean 8-bit wide TCP connect +ion 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.soc +ks.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 Windows 95. It does not work on Windows 3.11 or earlier, even with the Win32 +s 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 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 "}{\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 \'93}{\f2 Ctrl+Q Ctrl+E Enter}{\f1 \'93 after you have finished logging in to ICS. On VMS, type \'93}{\f2 -set terminal /noecho /nowrap}{\f1 \'94, and after you telnet to the ICS, type \'93}{\f2 Ctrl+Q Ctrl+] Enter set mode char Enter Enter}{\f1 \'94. It is a go -od 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 +\par 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 t +ime 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 c +an, 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. -\par The internal move legality tester does not look at the game history, so in some cases it misses illegal castling or en passant captures. It permits castling with the king on the }{\b\f1 d}{\f1 - file because this is possible in some "wild 1" games on ICS. It does not check piece drops in bughouse to see if you actually hold the piece you are trying to drop. However, if you attempt an illegal move when usi -ng a chess engine or the ICS, WinBoard will accept the error message that comes back, undo the move, and let you try another. -\par FEN positions saved by WinBoard}{\i\f1 }{\f1 do not include correct information about whether castling or en passant are legal. -\par }\pard\plain \s20\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 The mate detect -or 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. -\par }\pard\plain \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 -Edit Game mode always uses non-bughouse rules. Although you can load and edit games that contain piece drops, the piece menus are not active, so you cannot insert piece drops. Also, WinBoard}{\i\f1 }{\f1 -thinks an edited game is over when a mating move is inserted, even if the mate is non-contact. -\par Fischer Random castling is not understood. You can probably play Fischer Random successfully on ICS by typing castling moves into the ICS Interaction window, bu -t they will not be animated correctly, and saved games will not be loaded correctly if castling occurs. +\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 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\ql \li120\ri0\sb280\sa120\sl-320\slmult0\nowidctlpar\faauto\outlinelevel0\adjustright\rin0\lin120\itap0 \b\f5\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Authors}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 Authors}}${\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super $}{\f1 Authors}}+{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super +}{\f1 main}}}{\f1\fs18\up6 }{\f1\fs20 AUTHORS AND CONTRIBUTORS -\par }\pard\plain \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\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. -\par Mark Williams added many features to WinBoard 4.1.0, including copy/paste, premove, icsAlarm, autoFlipView, training mod -e, auto raise, and blindfold. 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 +\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 pro +blem 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 al +ways 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 holdin +gs. +\par 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 p +ositions 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 blindfold. Hugh Fischer added piece animation to xboard, and Henrik Gram added it to WinBoard. Frank McIngvale con +tributed 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. +}{\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-graph, 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 addition he added most of the adjudication options, made WinBoard ore robust in dealing with buggy and crashing e +ngines, and extended time control with a time-odds and node-count-based modes.}{\f1 \par Send bug reports to . Please run WinBoard with the /debug option and include the output from the resulting WinBoard.debug file in your message. -\par }\pard\plain \s1\ql \li120\ri0\sb280\sa120\sl-320\slmult0\nowidctlpar\faauto\outlinelevel0\adjustright\rin0\lin120\itap0 \b\f5\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain -\s57\ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super K}{\f1 Copyright}}#{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super #}{\f1 Copyright}}${\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super $}{\f1 Copyright}}+{\footnote\ftnalt \pard\plain \s57\ql \li120\ri0\sb80\sl-240\slmult0 -\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs58\f1\super +}{\f1 main}}}{\f1\fs18\up6 }{\f1\fs20 COPYRIGHT -\par }\pard\plain \s26\ql \li120\ri0\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts. \line -Enhancements Copyright 1992-2003 Free Software Foundation, Inc. -\par }\pard\plain \ql \li120\ri0\sb80\sl-240\slmult0\nowidctlpar\faauto\adjustright\rin0\lin120\itap0 \f5\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1 The following terms apply to Digital Equipment Corporation's copyright interest in WinBoard: - +\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 improvements and additions, are best posted in the WinBoard forum, development section (http://www.open-aurec.c +om/wbforum). +\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-2003 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 t -hat 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 s -oftware 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 CONSEQUENTIA -L 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 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 2 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. diff --git a/winboard/woptions.c b/winboard/woptions.c index f2a797e..b2bbf0a 100644 --- a/winboard/woptions.c +++ b/winboard/woptions.c @@ -777,7 +777,13 @@ VariantWhichRadio(HWND hDlg) (IsDlgButtonChecked(hDlg, OPT_VariantFRC) ? VariantFischeRandom : (IsDlgButtonChecked(hDlg, OPT_VariantCylinder) ? VariantCylinder : (IsDlgButtonChecked(hDlg, OPT_VariantFalcon) ? VariantFalcon : - VariantNormal )))))))))))))))))); + (IsDlgButtonChecked(hDlg, OPT_VariantCRC) ? VariantCapaRandom : + (IsDlgButtonChecked(hDlg, OPT_Variant3Checks) ? Variant3Check : + (IsDlgButtonChecked(hDlg, OPT_VariantBerolina) ? VariantBerolina : + (IsDlgButtonChecked(hDlg, OPT_VariantJanus) ? VariantJanus : + (IsDlgButtonChecked(hDlg, OPT_VariantWildcastle) ? VariantWildCastle : + (IsDlgButtonChecked(hDlg, OPT_VariantNocastle) ? VariantNoCastle : + VariantNormal )))))))))))))))))))))))); } LRESULT CALLBACK @@ -843,6 +849,30 @@ NewVariantDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) 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_Variant3Checks, 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; } SetDlgItemInt( hDlg, IDC_Files, -1, TRUE ); @@ -881,6 +911,7 @@ NewVariantDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) 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); @@ -1954,7 +1985,7 @@ SoundOptionsDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) return TRUE; case OPT_BrowseSound: - f = OpenFileDialog(hDlg, FALSE, NULL, "wav", SOUND_FILT, + f = OpenFileDialog(hDlg, "rb", NULL, "wav", SOUND_FILT, "Browse for Sound File", NULL, NULL, buf); if (f != NULL) { fclose(f); @@ -2498,7 +2529,7 @@ SaveOptionsDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) return TRUE; case OPT_AVBrowse: - f = OpenFileDialog(hDlg, TRUE, NULL, + f = OpenFileDialog(hDlg, "a", NULL, appData.oldSaveStyle ? "gam" : "pgn", GAME_FILT, "Browse for Auto Save File", NULL, NULL, buf); diff --git a/xboard.c b/xboard.c index bc864fe..ca74313 100644 --- a/xboard.c +++ b/xboard.c @@ -1,8484 +1,8731 @@ -/* - * xboard.c -- X front end for XBoard - * $Id$ - * - * Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts. - * Enhancements Copyright 1992-2001 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: - * ------------------------------------------------------------------------ - * 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 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * ------------------------------------------------------------------------ - * - * See the file ChangeLog for a revision history. - */ - -#include "config.h" - -#include -#include -#include -#include -#include -#include -#include - -#if !OMIT_SOCKETS -# if HAVE_SYS_SOCKET_H -# include -# include -# include -# else /* not HAVE_SYS_SOCKET_H */ -# if HAVE_LAN_SOCKET_H -# include -# include -# include -# else /* not HAVE_LAN_SOCKET_H */ -# define OMIT_SOCKETS 1 -# endif /* not HAVE_LAN_SOCKET_H */ -# endif /* not HAVE_SYS_SOCKET_H */ -#endif /* !OMIT_SOCKETS */ - -#if STDC_HEADERS -# include -# include -#else /* not STDC_HEADERS */ -extern char *getenv(); -# if HAVE_STRING_H -# include -# else /* not HAVE_STRING_H */ -# include -# endif /* not HAVE_STRING_H */ -#endif /* not STDC_HEADERS */ - -#if HAVE_SYS_FCNTL_H -# include -#else /* not HAVE_SYS_FCNTL_H */ -# if HAVE_FCNTL_H -# include -# endif /* HAVE_FCNTL_H */ -#endif /* not HAVE_SYS_FCNTL_H */ - -#if HAVE_SYS_SYSTEMINFO_H -# include -#endif /* HAVE_SYS_SYSTEMINFO_H */ - -#if TIME_WITH_SYS_TIME -# include -# include -#else -# if HAVE_SYS_TIME_H -# include -# else -# include -# endif -#endif - -#if HAVE_UNISTD_H -# include -#endif - -#if HAVE_SYS_WAIT_H -# include -#endif - -#if HAVE_DIRENT_H -# include -# define NAMLEN(dirent) strlen((dirent)->d_name) -# define HAVE_DIR_STRUCT -#else -# define dirent direct -# define NAMLEN(dirent) (dirent)->d_namlen -# if HAVE_SYS_NDIR_H -# include -# define HAVE_DIR_STRUCT -# endif -# if HAVE_SYS_DIR_H -# include -# define HAVE_DIR_STRUCT -# endif -# if HAVE_NDIR_H -# include -# define HAVE_DIR_STRUCT -# endif -#endif - -#include -#include -#include -#include -#include -#if USE_XAW3D -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#else -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#endif - -#if HAVE_LIBXPM -#include -#include "pixmaps/pixmaps.h" -#define IMAGE_EXT "xpm" -#else -#define IMAGE_EXT "xim" -#include "bitmaps/bitmaps.h" -#endif - -#include "bitmaps/icon_white.bm" -#include "bitmaps/icon_black.bm" -#include "bitmaps/checkmark.bm" - -#include "common.h" -#include "frontend.h" -#include "backend.h" -#include "moves.h" -#include "xboard.h" -#include "childio.h" -#include "xgamelist.h" -#include "xhistory.h" -#include "xedittags.h" - -#ifdef __EMX__ -#ifndef HAVE_USLEEP -#define HAVE_USLEEP -#endif -#define usleep(t) _sleep2(((t)+500)/1000) -#endif - -typedef struct { - String string; - XtActionProc proc; -} MenuItem; - -typedef struct { - String name; - MenuItem *mi; -} Menu; - -int main P((int argc, char **argv)); -RETSIGTYPE CmailSigHandler P((int sig)); -RETSIGTYPE IntSigHandler P((int sig)); -void CreateGCs P((void)); -void CreateXIMPieces P((void)); -void CreateXPMPieces P((void)); -void CreatePieces P((void)); -void CreatePieceMenus P((void)); -Widget CreateMenuBar P((Menu *mb)); -Widget CreateButtonBar P ((MenuItem *mi)); -char *FindFont P((char *pattern, int targetPxlSize)); -void PieceMenuPopup P((Widget w, XEvent *event, - String *params, Cardinal *num_params)); -static void PieceMenuSelect P((Widget w, ChessSquare piece, caddr_t junk)); -static void DropMenuSelect P((Widget w, ChessSquare piece, caddr_t junk)); -void ReadBitmap P((Pixmap *pm, String name, unsigned char bits[], - u_int wreq, u_int hreq)); -void CreateGrid P((void)); -int EventToSquare P((int x, int limit)); -void DrawSquare P((int row, int column, ChessSquare piece, int do_flash)); -void EventProc P((Widget widget, caddr_t unused, XEvent *event)); -void HandleUserMove P((Widget w, XEvent *event, - String *prms, Cardinal *nprms)); -void AnimateUserMove P((Widget w, XEvent * event, - String * params, Cardinal * nParams)); -void WhiteClock P((Widget w, XEvent *event, - String *prms, Cardinal *nprms)); -void BlackClock P((Widget w, XEvent *event, - String *prms, Cardinal *nprms)); -void DrawPositionProc P((Widget w, XEvent *event, - String *prms, Cardinal *nprms)); -void XDrawPosition P((Widget w, /*Boolean*/int repaint, - Board board)); -void CommentPopUp P((char *title, char *label)); -void CommentPopDown P((void)); -void CommentCallback P((Widget w, XtPointer client_data, - XtPointer call_data)); -void ICSInputBoxPopUp P((void)); -void ICSInputBoxPopDown P((void)); -void FileNamePopUp P((char *label, char *def, - FileProc proc, char *openMode)); -void FileNamePopDown P((void)); -void FileNameCallback P((Widget w, XtPointer client_data, - XtPointer call_data)); -void FileNameAction P((Widget w, XEvent *event, - String *prms, Cardinal *nprms)); -void AskQuestionReplyAction P((Widget w, XEvent *event, - String *prms, Cardinal *nprms)); -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)); -void EditCommentPopDown P((void)); -void EditCommentCallback P((Widget w, XtPointer client_data, - XtPointer call_data)); -void SelectCommand P((Widget w, XtPointer client_data, XtPointer call_data)); -void ResetProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); -void LoadGameProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); -void LoadNextGameProc P((Widget w, XEvent *event, String *prms, - Cardinal *nprms)); -void LoadPrevGameProc P((Widget w, XEvent *event, String *prms, - Cardinal *nprms)); -void ReloadGameProc P((Widget w, XEvent *event, String *prms, - Cardinal *nprms)); -void LoadPositionProc P((Widget w, XEvent *event, - String *prms, Cardinal *nprms)); -void LoadNextPositionProc P((Widget w, XEvent *event, String *prms, - Cardinal *nprms)); -void LoadPrevPositionProc P((Widget w, XEvent *event, String *prms, - Cardinal *nprms)); -void ReloadPositionProc P((Widget w, XEvent *event, String *prms, - Cardinal *nprms)); -void CopyPositionProc P((Widget w, XEvent *event, String *prms, - Cardinal *nprms)); -void PastePositionProc P((Widget w, XEvent *event, String *prms, - Cardinal *nprms)); -void CopyGameProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); -void PasteGameProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); -void SaveGameProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); -void SavePositionProc P((Widget w, XEvent *event, - String *prms, Cardinal *nprms)); -void MailMoveProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); -void ReloadCmailMsgProc P((Widget w, XEvent *event, String *prms, - Cardinal *nprms)); -void QuitProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); -void PauseProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); -void MachineBlackProc P((Widget w, XEvent *event, String *prms, - Cardinal *nprms)); -void MachineWhiteProc P((Widget w, XEvent *event, - String *prms, Cardinal *nprms)); -void AnalyzeModeProc P((Widget w, XEvent *event, - String *prms, Cardinal *nprms)); -void AnalyzeFileProc P((Widget w, XEvent *event, - String *prms, Cardinal *nprms)); -void TwoMachinesProc P((Widget w, XEvent *event, String *prms, - Cardinal *nprms)); -void IcsClientProc P((Widget w, XEvent *event, String *prms, - Cardinal *nprms)); -void EditGameProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); -void EditPositionProc P((Widget w, XEvent *event, - String *prms, Cardinal *nprms)); -void TrainingProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); -void EditCommentProc P((Widget w, XEvent *event, - String *prms, Cardinal *nprms)); -void IcsInputBoxProc P((Widget w, XEvent *event, - String *prms, Cardinal *nprms)); -void AcceptProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); -void DeclineProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); -void RematchProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); -void CallFlagProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); -void DrawProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); -void AbortProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); -void AdjournProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); -void ResignProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); -void EnterKeyProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); -void StopObservingProc P((Widget w, XEvent *event, String *prms, - Cardinal *nprms)); -void StopExaminingProc P((Widget w, XEvent *event, String *prms, - Cardinal *nprms)); -void BackwardProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); -void ForwardProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); -void ToStartProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); -void ToEndProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); -void RevertProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); -void TruncateGameProc P((Widget w, XEvent *event, String *prms, - Cardinal *nprms)); -void RetractMoveProc P((Widget w, XEvent *event, String *prms, - Cardinal *nprms)); -void MoveNowProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); -void AlwaysQueenProc P((Widget w, XEvent *event, String *prms, - Cardinal *nprms)); -void AnimateDraggingProc P((Widget w, XEvent *event, String *prms, - Cardinal *nprms)); -void AnimateMovingProc P((Widget w, XEvent *event, String *prms, - Cardinal *nprms)); -void AutocommProc P((Widget w, XEvent *event, String *prms, - Cardinal *nprms)); -void AutoflagProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); -void AutoflipProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); -void AutobsProc P((Widget w, XEvent *event, String *prms, - Cardinal *nprms)); -void AutoraiseProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); -void AutosaveProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); -void BlindfoldProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); -void FlashMovesProc P((Widget w, XEvent *event, String *prms, - Cardinal *nprms)); -void FlipViewProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); -void GetMoveListProc P((Widget w, XEvent *event, String *prms, - Cardinal *nprms)); -void HighlightDraggingProc P((Widget w, XEvent *event, String *prms, - Cardinal *nprms)); -void HighlightLastMoveProc P((Widget w, XEvent *event, String *prms, - Cardinal *nprms)); -void MoveSoundProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); -void IcsAlarmProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); -void OldSaveStyleProc P((Widget w, XEvent *event, String *prms, - Cardinal *nprms)); -void PeriodicUpdatesProc P((Widget w, XEvent *event, String *prms, - Cardinal *nprms)); -void PonderNextMoveProc P((Widget w, XEvent *event, String *prms, - Cardinal *nprms)); -void PopupMoveErrorsProc P((Widget w, XEvent *event, String *prms, - Cardinal *nprms)); -void PopupExitMessageProc P((Widget w, XEvent *event, String *prms, - Cardinal *nprms)); -void PremoveProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); -void QuietPlayProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); -void ShowCoordsProc P((Widget w, XEvent *event, String *prms, - Cardinal *nprms)); -void ShowThinkingProc P((Widget w, XEvent *event, String *prms, - Cardinal *nprms)); -void TestLegalityProc P((Widget w, XEvent *event, String *prms, - Cardinal *nprms)); -void InfoProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); -void ManProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); -void HintProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); -void BookProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); -void AboutGameProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); -void AboutProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); -void DebugProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); -void NothingProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); -void Iconify P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); -void DisplayMove P((int moveNumber)); -void DisplayTitle P((char *title)); -void ICSInitScript P((void)); -int LoadGamePopUp P((FILE *f, int gameNumber, char *title)); -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)); - -/* -* XBoard depends on Xt R4 or higher -*/ -int xtVersion = XtSpecificationRelease; - -int xScreen; -Display *xDisplay; -Window xBoardWindow; -Pixel lightSquareColor, darkSquareColor, whitePieceColor, blackPieceColor, - jailSquareColor, highlightSquareColor, premoveHighlightColor; -GC lightSquareGC, darkSquareGC, jailSquareGC, lineGC, wdPieceGC, wlPieceGC, - bdPieceGC, blPieceGC, wbPieceGC, bwPieceGC, coordGC, highlineGC, - wjPieceGC, bjPieceGC, prelineGC; -Pixmap iconPixmap, wIconPixmap, bIconPixmap, xMarkPixmap; -Widget shellWidget, layoutWidget, formWidget, boardWidget, messageWidget, - whiteTimerWidget, blackTimerWidget, titleWidget, widgetList[16], - commentShell, promotionShell, whitePieceMenu, blackPieceMenu, dropMenu, - menuBarWidget, buttonBarWidget, editShell, errorShell, analysisShell, - ICSInputShell, fileNameShell, askQuestionShell; -XSegment gridSegments[(BOARD_SIZE + 1) * 2]; -XSegment jailGridSegments[(BOARD_SIZE + 3) * 2]; -Font clockFontID, coordFontID; -XFontStruct *clockFontStruct, *coordFontStruct; -XtAppContext appContext; -char *layoutName; -char *oldICSInteractionTitle; - -FileProc fileProc; -char *fileOpenMode; - -Position commentX = -1, commentY = -1; -Dimension commentW, commentH; - -int squareSize, smallLayout = 0, tinyLayout = 0, - fromX = -1, fromY = -1, toX, toY, commentUp = False, analysisUp = False, - ICSInputBoxUp = False, askQuestionUp = False, - filenameUp = False, promotionUp = False, pmFromX = -1, pmFromY = -1, - editUp = False, errorUp = False, errorExitStatus = -1, lineGap; -Pixel timerForegroundPixel, timerBackgroundPixel; -Pixel buttonForegroundPixel, buttonBackgroundPixel; -char *chessDir, *programName, *programVersion, - *gameCopyFilename, *gamePasteFilename; - -#define SOLID 0 -#define OUTLINE 1 -Pixmap pieceBitmap[2][6]; -Pixmap xpmPieceBitmap[4][6]; /* LL, LD, DL, DD */ -Pixmap xpmLightSquare, xpmDarkSquare, xpmJailSquare; -int useImages, useImageSqs; -XImage *ximPieceBitmap[4][6]; /* LL, LD, DL, DD */ -Pixmap ximMaskPm[6]; /* clipmasks, used for XIM pieces */ -XImage *ximLightSquare, *ximDarkSquare; -XImage *xim_Cross; - -#define pieceToSolid(piece) &pieceBitmap[SOLID][((int)(piece)) % 6] -#define pieceToOutline(piece) &pieceBitmap[OUTLINE][((int)(piece)) % 6] - -#define White(piece) ((int)(piece) < (int)BlackPawn) - -/* Variables for doing smooth animation. This whole thing - would be much easier if the board was double-buffered, - but that would require a fairly major rewrite. */ - -typedef struct { - Pixmap saveBuf; - Pixmap newBuf; - GC blitGC, pieceGC, outlineGC; - XPoint startSquare, prevFrame, mouseDelta; - int startColor; - int dragPiece; - Boolean dragActive; - int startBoardX, startBoardY; - } AnimState; - -/* There can be two pieces being animated at once: a player - can begin dragging a piece before the remote opponent has moved. */ - -static AnimState game, player; - -/* Bitmaps for use as masks when drawing XPM pieces. - Need one for each black and white piece. */ -static Pixmap xpmMask[BlackKing + 1]; - -/* This magic number is the number of intermediate frames used - in each half of the animation. For short moves it's reduced - by 1. The total number of frames will be factor * 2 + 1. */ -#define kFactor 4 - -SizeDefaults sizeDefaults[] = SIZE_DEFAULTS; - -MenuItem fileMenu[] = { - {"Reset Game", ResetProc}, - {"----", NothingProc}, - {"Load Game", LoadGameProc}, - {"Load Next Game", LoadNextGameProc}, - {"Load Previous Game", LoadPrevGameProc}, - {"Reload Same Game", ReloadGameProc}, - {"Save Game", SaveGameProc}, - {"----", NothingProc}, - {"Copy Game", CopyGameProc}, - {"Paste Game", PasteGameProc}, - {"----", NothingProc}, - {"Load Position", LoadPositionProc}, - {"Load Next Position", LoadNextPositionProc}, - {"Load Previous Position", LoadPrevPositionProc}, - {"Reload Same Position", ReloadPositionProc}, - {"Save Position", SavePositionProc}, - {"----", NothingProc}, - {"Copy Position", CopyPositionProc}, - {"Paste Position", PastePositionProc}, - {"----", NothingProc}, - {"Mail Move", MailMoveProc}, - {"Reload CMail Message", ReloadCmailMsgProc}, - {"----", NothingProc}, - {"Exit", QuitProc}, - {NULL, NULL} -}; - -MenuItem modeMenu[] = { - {"Machine White", MachineWhiteProc}, - {"Machine Black", MachineBlackProc}, - {"Two Machines", TwoMachinesProc}, - {"Analysis Mode", AnalyzeModeProc}, - {"Analyze File", AnalyzeFileProc }, - {"ICS Client", IcsClientProc}, - {"Edit Game", EditGameProc}, - {"Edit Position", EditPositionProc}, - {"Training", TrainingProc}, - {"----", NothingProc}, - {"Show Game List", ShowGameListProc}, - {"Show Move List", HistoryShowProc}, - {"Edit Tags", EditTagsProc}, - {"Edit Comment", EditCommentProc}, - {"ICS Input Box", IcsInputBoxProc}, - {"Pause", PauseProc}, - {NULL, NULL} -}; - -MenuItem actionMenu[] = { - {"Accept", AcceptProc}, - {"Decline", DeclineProc}, - {"Rematch", RematchProc}, - {"----", NothingProc}, - {"Call Flag", CallFlagProc}, - {"Draw", DrawProc}, - {"Adjourn", AdjournProc}, - {"Abort", AbortProc}, - {"Resign", ResignProc}, - {"----", NothingProc}, - {"Stop Observing", StopObservingProc}, - {"Stop Examining", StopExaminingProc}, - {NULL, NULL} -}; - -MenuItem stepMenu[] = { - {"Backward", BackwardProc}, - {"Forward", ForwardProc}, - {"Back to Start", ToStartProc}, - {"Forward to End", ToEndProc}, - {"Revert", RevertProc}, - {"Truncate Game", TruncateGameProc}, - {"----", NothingProc}, - {"Move Now", MoveNowProc}, - {"Retract Move", RetractMoveProc}, - {NULL, NULL} -}; - -MenuItem optionsMenu[] = { - {"Always Queen", AlwaysQueenProc}, - {"Animate Dragging", AnimateDraggingProc}, - {"Animate Moving", AnimateMovingProc}, - {"Auto Comment", AutocommProc}, - {"Auto Flag", AutoflagProc}, - {"Auto Flip View", AutoflipProc}, - {"Auto Observe", AutobsProc}, - {"Auto Raise Board", AutoraiseProc}, - {"Auto Save", AutosaveProc}, - {"Blindfold", BlindfoldProc}, - {"Flash Moves", FlashMovesProc}, - {"Flip View", FlipViewProc}, - {"Get Move List", GetMoveListProc}, -#if HIGHDRAG - {"Highlight Dragging", HighlightDraggingProc}, -#endif - {"Highlight Last Move", HighlightLastMoveProc}, - {"Move Sound", MoveSoundProc}, - {"ICS Alarm", IcsAlarmProc}, - {"Old Save Style", OldSaveStyleProc}, - {"Periodic Updates", PeriodicUpdatesProc}, - {"Ponder Next Move", PonderNextMoveProc}, - {"Popup Exit Message", PopupExitMessageProc}, - {"Popup Move Errors", PopupMoveErrorsProc}, - {"Premove", PremoveProc}, - {"Quiet Play", QuietPlayProc}, - {"Show Coords", ShowCoordsProc}, - {"Show Thinking", ShowThinkingProc}, - {"Test Legality", TestLegalityProc}, - {NULL, NULL} -}; - -MenuItem helpMenu[] = { - {"Info XBoard", InfoProc}, - {"Man XBoard", ManProc}, - {"----", NothingProc}, - {"Hint", HintProc}, - {"Book", BookProc}, - {"----", NothingProc}, - {"About XBoard", AboutProc}, - {NULL, NULL} -}; - -Menu menuBar[] = { - {"File", fileMenu}, - {"Mode", modeMenu}, - {"Action", actionMenu}, - {"Step", stepMenu}, - {"Options", optionsMenu}, - {"Help", helpMenu}, - {NULL, NULL} -}; - -#define PAUSE_BUTTON "P" -MenuItem buttonBar[] = { - {"<<", ToStartProc}, - {"<", BackwardProc}, - {PAUSE_BUTTON, PauseProc}, - {">", ForwardProc}, - {">>", ToEndProc}, - {NULL, NULL} -}; - -#define PIECE_MENU_SIZE 11 -String pieceMenuStrings[2][PIECE_MENU_SIZE] = { - { "White", "----", "Pawn", "Knight", "Bishop", "Rook", "Queen", "King", - "----", "Empty square", "Clear board" }, - { "Black", "----", "Pawn", "Knight", "Bishop", "Rook", "Queen", "King", - "----", "Empty square", "Clear board" }, - }; -/* must be in same order as PieceMenuStrings! */ -ChessSquare pieceMenuTranslation[2][PIECE_MENU_SIZE] = { - { WhitePlay, (ChessSquare) 0, WhitePawn, WhiteKnight, WhiteBishop, - WhiteRook, WhiteQueen, WhiteKing, - (ChessSquare) 0, EmptySquare, ClearBoard }, - { BlackPlay, (ChessSquare) 0, BlackPawn, BlackKnight, BlackBishop, - BlackRook, BlackQueen, BlackKing, - (ChessSquare) 0, EmptySquare, ClearBoard }, -}; - -#define DROP_MENU_SIZE 6 -String dropMenuStrings[DROP_MENU_SIZE] = { - "----", "Pawn", "Knight", "Bishop", "Rook", "Queen" - }; -/* must be in same order as PieceMenuStrings! */ -ChessSquare dropMenuTranslation[DROP_MENU_SIZE] = { - (ChessSquare) 0, WhitePawn, WhiteKnight, WhiteBishop, - WhiteRook, WhiteQueen -}; - -typedef struct { - char piece; - char* widget; -} DropMenuEnables; - -DropMenuEnables dmEnables[] = { - { 'P', "Pawn" }, - { 'N', "Knight" }, - { 'B', "Bishop" }, - { 'R', "Rook" }, - { 'Q', "Queen" } -}; - -Arg shellArgs[] = { - { XtNwidth, 0 }, - { XtNheight, 0 }, - { XtNminWidth, 0 }, - { XtNminHeight, 0 }, - { XtNmaxWidth, 0 }, - { XtNmaxHeight, 0 } -}; - -Arg layoutArgs[] = { - { XtNborderWidth, 0 }, - { XtNdefaultDistance, 0 }, -}; - -Arg formArgs[] = { - { XtNborderWidth, 0 }, - { XtNresizable, (XtArgVal) True }, -}; - -Arg boardArgs[] = { - { XtNborderWidth, 0 }, - { XtNwidth, 0 }, - { XtNheight, 0 } -}; - -Arg titleArgs[] = { - { XtNjustify, (XtArgVal) XtJustifyRight }, - { XtNlabel, (XtArgVal) "..." }, - { XtNresizable, (XtArgVal) True }, - { XtNresize, (XtArgVal) False } -}; - -Arg messageArgs[] = { - { XtNjustify, (XtArgVal) XtJustifyLeft }, - { XtNlabel, (XtArgVal) "..." }, - { XtNresizable, (XtArgVal) True }, - { XtNresize, (XtArgVal) False } -}; - -Arg timerArgs[] = { - { XtNborderWidth, 0 }, - { XtNjustify, (XtArgVal) XtJustifyLeft } -}; - -XtResource clientResources[] = { - { "whitePieceColor", "whitePieceColor", XtRString, sizeof(String), - XtOffset(AppDataPtr, whitePieceColor), XtRString, - WHITE_PIECE_COLOR }, - { "blackPieceColor", "blackPieceColor", XtRString, sizeof(String), - XtOffset(AppDataPtr, blackPieceColor), XtRString, - BLACK_PIECE_COLOR }, - { "lightSquareColor", "lightSquareColor", XtRString, - sizeof(String), XtOffset(AppDataPtr, lightSquareColor), - XtRString, LIGHT_SQUARE_COLOR }, - { "darkSquareColor", "darkSquareColor", XtRString, sizeof(String), - XtOffset(AppDataPtr, darkSquareColor), XtRString, - DARK_SQUARE_COLOR }, - { "highlightSquareColor", "highlightSquareColor", XtRString, - sizeof(String), XtOffset(AppDataPtr, highlightSquareColor), - XtRString, HIGHLIGHT_SQUARE_COLOR }, - { "premoveHighlightColor", "premoveHighlightColor", XtRString, - sizeof(String), XtOffset(AppDataPtr, premoveHighlightColor), - XtRString, PREMOVE_HIGHLIGHT_COLOR }, - { "movesPerSession", "movesPerSession", XtRInt, sizeof(int), - XtOffset(AppDataPtr, movesPerSession), XtRImmediate, - (XtPointer) MOVES_PER_SESSION }, - { "timeIncrement", "timeIncrement", XtRInt, sizeof(int), - XtOffset(AppDataPtr, timeIncrement), XtRImmediate, - (XtPointer) TIME_INCREMENT }, - { "initString", "initString", XtRString, sizeof(String), - XtOffset(AppDataPtr, initString), XtRString, INIT_STRING }, - { "secondInitString", "secondInitString", XtRString, sizeof(String), - XtOffset(AppDataPtr, secondInitString), XtRString, INIT_STRING }, - { "firstComputerString", "firstComputerString", XtRString, - sizeof(String), XtOffset(AppDataPtr, firstComputerString), XtRString, - COMPUTER_STRING }, - { "secondComputerString", "secondComputerString", XtRString, - sizeof(String), XtOffset(AppDataPtr, secondComputerString), XtRString, - COMPUTER_STRING }, - { "firstChessProgram", "firstChessProgram", XtRString, - sizeof(String), XtOffset(AppDataPtr, firstChessProgram), - XtRString, FIRST_CHESS_PROGRAM }, - { "secondChessProgram", "secondChessProgram", XtRString, - sizeof(String), XtOffset(AppDataPtr, secondChessProgram), - XtRString, SECOND_CHESS_PROGRAM }, - { "firstPlaysBlack", "firstPlaysBlack", XtRBoolean, - sizeof(Boolean), XtOffset(AppDataPtr, firstPlaysBlack), - XtRImmediate, (XtPointer) False }, - { "noChessProgram", "noChessProgram", XtRBoolean, - sizeof(Boolean), XtOffset(AppDataPtr, noChessProgram), - XtRImmediate, (XtPointer) False }, - { "firstHost", "firstHost", XtRString, sizeof(String), - XtOffset(AppDataPtr, firstHost), XtRString, FIRST_HOST }, - { "secondHost", "secondHost", XtRString, sizeof(String), - XtOffset(AppDataPtr, secondHost), XtRString, SECOND_HOST }, - { "firstDirectory", "firstDirectory", XtRString, sizeof(String), - XtOffset(AppDataPtr, firstDirectory), XtRString, "" }, - { "secondDirectory", "secondDirectory", XtRString, sizeof(String), - XtOffset(AppDataPtr, secondDirectory), XtRString, "" }, - { "bitmapDirectory", "bitmapDirectory", XtRString, - sizeof(String), XtOffset(AppDataPtr, bitmapDirectory), - XtRString, "" }, - { "remoteShell", "remoteShell", XtRString, sizeof(String), - XtOffset(AppDataPtr, remoteShell), XtRString, REMOTE_SHELL }, - { "remoteUser", "remoteUser", XtRString, sizeof(String), - XtOffset(AppDataPtr, remoteUser), XtRString, "" }, - { "timeDelay", "timeDelay", XtRFloat, sizeof(float), - XtOffset(AppDataPtr, timeDelay), XtRString, - (XtPointer) TIME_DELAY_QUOTE }, - { "timeControl", "timeControl", XtRString, sizeof(String), - XtOffset(AppDataPtr, timeControl), XtRString, - (XtPointer) TIME_CONTROL }, - { "internetChessServerMode", "internetChessServerMode", - XtRBoolean, sizeof(Boolean), - XtOffset(AppDataPtr, icsActive), XtRImmediate, - (XtPointer) False }, - { "internetChessServerHost", "internetChessServerHost", - XtRString, sizeof(String), - XtOffset(AppDataPtr, icsHost), - XtRString, (XtPointer) ICS_HOST }, - { "internetChessServerPort", "internetChessServerPort", - XtRString, sizeof(String), - XtOffset(AppDataPtr, icsPort), XtRString, - (XtPointer) ICS_PORT }, - { "internetChessServerCommPort", "internetChessServerCommPort", - XtRString, sizeof(String), - XtOffset(AppDataPtr, icsCommPort), XtRString, - ICS_COMM_PORT }, - { "internetChessServerLogonScript", "internetChessServerLogonScript", - XtRString, sizeof(String), - XtOffset(AppDataPtr, icsLogon), XtRString, - ICS_LOGON }, - { "internetChessServerHelper", "internetChessServerHelper", - XtRString, sizeof(String), - XtOffset(AppDataPtr, icsHelper), XtRString, "" }, - { "internetChessServerInputBox", "internetChessServerInputBox", - XtRBoolean, sizeof(Boolean), - XtOffset(AppDataPtr, icsInputBox), XtRImmediate, - (XtPointer) False }, - { "icsAlarm", "icsAlarm", - XtRBoolean, sizeof(Boolean), - XtOffset(AppDataPtr, icsAlarm), XtRImmediate, - (XtPointer) True }, - { "icsAlarmTime", "icsAlarmTime", - XtRInt, sizeof(int), - XtOffset(AppDataPtr, icsAlarmTime), XtRImmediate, - (XtPointer) 5000 }, - { "useTelnet", "useTelnet", XtRBoolean, sizeof(Boolean), - XtOffset(AppDataPtr, useTelnet), XtRImmediate, - (XtPointer) False }, - { "telnetProgram", "telnetProgram", XtRString, sizeof(String), - XtOffset(AppDataPtr, telnetProgram), XtRString, TELNET_PROGRAM }, - { "gateway", "gateway", XtRString, sizeof(String), - XtOffset(AppDataPtr, gateway), XtRString, "" }, - { "loadGameFile", "loadGameFile", XtRString, sizeof(String), - XtOffset(AppDataPtr, loadGameFile), XtRString, "" }, - { "loadGameIndex", "loadGameIndex", - XtRInt, sizeof(int), - XtOffset(AppDataPtr, loadGameIndex), XtRImmediate, - (XtPointer) 0 }, - { "saveGameFile", "saveGameFile", XtRString, sizeof(String), - XtOffset(AppDataPtr, saveGameFile), XtRString, "" }, - { "autoRaiseBoard", "autoRaiseBoard", XtRBoolean, - sizeof(Boolean), XtOffset(AppDataPtr, autoRaiseBoard), - XtRImmediate, (XtPointer) True }, - { "autoSaveGames", "autoSaveGames", XtRBoolean, - sizeof(Boolean), XtOffset(AppDataPtr, autoSaveGames), - XtRImmediate, (XtPointer) False }, - { "blindfold", "blindfold", XtRBoolean, - sizeof(Boolean), XtOffset(AppDataPtr, blindfold), - XtRImmediate, (XtPointer) False }, - { "loadPositionFile", "loadPositionFile", XtRString, - sizeof(String), XtOffset(AppDataPtr, loadPositionFile), - XtRString, "" }, - { "loadPositionIndex", "loadPositionIndex", - XtRInt, sizeof(int), - XtOffset(AppDataPtr, loadPositionIndex), XtRImmediate, - (XtPointer) 1 }, - { "savePositionFile", "savePositionFile", XtRString, - sizeof(String), XtOffset(AppDataPtr, savePositionFile), - XtRString, "" }, - { "matchMode", "matchMode", XtRBoolean, sizeof(Boolean), - XtOffset(AppDataPtr, matchMode), XtRImmediate, (XtPointer) False }, - { "matchGames", "matchGames", XtRInt, sizeof(int), - XtOffset(AppDataPtr, matchGames), XtRImmediate, - (XtPointer) 0 }, - { "monoMode", "monoMode", XtRBoolean, sizeof(Boolean), - XtOffset(AppDataPtr, monoMode), XtRImmediate, - (XtPointer) False }, - { "debugMode", "debugMode", XtRBoolean, sizeof(Boolean), - XtOffset(AppDataPtr, debugMode), XtRImmediate, - (XtPointer) False }, - { "clockMode", "clockMode", XtRBoolean, sizeof(Boolean), - XtOffset(AppDataPtr, clockMode), XtRImmediate, - (XtPointer) True }, - { "boardSize", "boardSize", XtRString, sizeof(String), - XtOffset(AppDataPtr, boardSize), XtRString, "" }, - { "searchTime", "searchTime", XtRString, sizeof(String), - XtOffset(AppDataPtr, searchTime), XtRString, - (XtPointer) "" }, - { "searchDepth", "searchDepth", XtRInt, sizeof(int), - XtOffset(AppDataPtr, searchDepth), XtRImmediate, - (XtPointer) 0 }, - { "showCoords", "showCoords", XtRBoolean, sizeof(Boolean), - XtOffset(AppDataPtr, showCoords), XtRImmediate, - (XtPointer) False }, - { "showJail", "showJail", XtRInt, sizeof(int), - XtOffset(AppDataPtr, showJail), XtRImmediate, - (XtPointer) 0 }, - { "showThinking", "showThinking", XtRBoolean, sizeof(Boolean), - XtOffset(AppDataPtr, showThinking), XtRImmediate, - (XtPointer) False }, - { "ponderNextMove", "ponderNextMove", XtRBoolean, sizeof(Boolean), - XtOffset(AppDataPtr, ponderNextMove), XtRImmediate, - (XtPointer) True }, - { "periodicUpdates", "periodicUpdates", XtRBoolean, sizeof(Boolean), - XtOffset(AppDataPtr, periodicUpdates), XtRImmediate, - (XtPointer) True }, - { "clockFont", "clockFont", XtRString, sizeof(String), - XtOffset(AppDataPtr, clockFont), XtRString, CLOCK_FONT }, - { "coordFont", "coordFont", XtRString, sizeof(String), - XtOffset(AppDataPtr, coordFont), XtRString, COORD_FONT }, - { "font", "font", XtRString, sizeof(String), - XtOffset(AppDataPtr, font), XtRString, DEFAULT_FONT }, - { "ringBellAfterMoves", "ringBellAfterMoves", - XtRBoolean, sizeof(Boolean), - XtOffset(AppDataPtr, ringBellAfterMoves), - XtRImmediate, (XtPointer) False }, - { "autoCallFlag", "autoCallFlag", XtRBoolean, - sizeof(Boolean), XtOffset(AppDataPtr, autoCallFlag), - XtRImmediate, (XtPointer) False }, - { "autoFlipView", "autoFlipView", XtRBoolean, - sizeof(Boolean), XtOffset(AppDataPtr, autoFlipView), - XtRImmediate, (XtPointer) True }, - { "autoObserve", "autoObserve", XtRBoolean, - sizeof(Boolean), XtOffset(AppDataPtr, autoObserve), - XtRImmediate, (XtPointer) False }, - { "autoComment", "autoComment", XtRBoolean, - sizeof(Boolean), XtOffset(AppDataPtr, autoComment), - XtRImmediate, (XtPointer) False }, - { "getMoveList", "getMoveList", XtRBoolean, - sizeof(Boolean), XtOffset(AppDataPtr, getMoveList), - XtRImmediate, (XtPointer) True }, -#if HIGHDRAG - { "highlightDragging", "highlightDragging", XtRBoolean, - sizeof(Boolean), XtOffset(AppDataPtr, highlightDragging), - XtRImmediate, (XtPointer) False }, -#endif - { "highlightLastMove", "highlightLastMove", XtRBoolean, - sizeof(Boolean), XtOffset(AppDataPtr, highlightLastMove), - XtRImmediate, (XtPointer) False }, - { "premove", "premove", XtRBoolean, - sizeof(Boolean), XtOffset(AppDataPtr, premove), - XtRImmediate, (XtPointer) True }, - { "testLegality", "testLegality", XtRBoolean, - sizeof(Boolean), XtOffset(AppDataPtr, testLegality), - XtRImmediate, (XtPointer) True }, - { "flipView", "flipView", XtRBoolean, - sizeof(Boolean), XtOffset(AppDataPtr, flipView), - XtRImmediate, (XtPointer) False }, - { "cmail", "cmailGameName", XtRString, sizeof(String), - XtOffset(AppDataPtr, cmailGameName), XtRString, "" }, - { "alwaysPromoteToQueen", "alwaysPromoteToQueen", XtRBoolean, - sizeof(Boolean), XtOffset(AppDataPtr, alwaysPromoteToQueen), - XtRImmediate, (XtPointer) False }, - { "oldSaveStyle", "oldSaveStyle", XtRBoolean, - sizeof(Boolean), XtOffset(AppDataPtr, oldSaveStyle), - XtRImmediate, (XtPointer) False }, - { "quietPlay", "quietPlay", XtRBoolean, - sizeof(Boolean), XtOffset(AppDataPtr, quietPlay), - XtRImmediate, (XtPointer) False }, - { "titleInWindow", "titleInWindow", XtRBoolean, - sizeof(Boolean), XtOffset(AppDataPtr, titleInWindow), - XtRImmediate, (XtPointer) False }, - { "localLineEditing", "localLineEditing", XtRBoolean, - sizeof(Boolean), XtOffset(AppDataPtr, localLineEditing), - XtRImmediate, (XtPointer) True }, /* not implemented, must be True */ -#ifdef ZIPPY - { "zippyTalk", "zippyTalk", XtRBoolean, - sizeof(Boolean), XtOffset(AppDataPtr, zippyTalk), - XtRImmediate, (XtPointer) ZIPPY_TALK }, - { "zippyPlay", "zippyPlay", XtRBoolean, - sizeof(Boolean), XtOffset(AppDataPtr, zippyPlay), - XtRImmediate, (XtPointer) ZIPPY_PLAY }, - { "zippyLines", "zippyLines", XtRString, sizeof(String), - XtOffset(AppDataPtr, zippyLines), XtRString, ZIPPY_LINES }, - { "zippyPinhead", "zippyPinhead", XtRString, sizeof(String), - XtOffset(AppDataPtr, zippyPinhead), XtRString, ZIPPY_PINHEAD }, - { "zippyPassword", "zippyPassword", XtRString, sizeof(String), - XtOffset(AppDataPtr, zippyPassword), XtRString, ZIPPY_PASSWORD }, - { "zippyPassword2", "zippyPassword2", XtRString, sizeof(String), - XtOffset(AppDataPtr, zippyPassword2), XtRString, ZIPPY_PASSWORD2 }, - { "zippyWrongPassword", "zippyWrongPassword", XtRString, sizeof(String), - XtOffset(AppDataPtr, zippyWrongPassword), XtRString, - ZIPPY_WRONG_PASSWORD }, - { "zippyAcceptOnly", "zippyAcceptOnly", XtRString, sizeof(String), - XtOffset(AppDataPtr, zippyAcceptOnly), XtRString, ZIPPY_ACCEPT_ONLY }, - { "zippyUseI", "zippyUseI", XtRBoolean, - sizeof(Boolean), XtOffset(AppDataPtr, zippyUseI), - XtRImmediate, (XtPointer) ZIPPY_USE_I }, - { "zippyBughouse", "zippyBughouse", XtRInt, - sizeof(int), XtOffset(AppDataPtr, zippyBughouse), - XtRImmediate, (XtPointer) ZIPPY_BUGHOUSE }, - { "zippyNoplayCrafty", "zippyNoplayCrafty", XtRBoolean, - sizeof(Boolean), XtOffset(AppDataPtr, zippyNoplayCrafty), - XtRImmediate, (XtPointer) ZIPPY_NOPLAY_CRAFTY }, - { "zippyGameEnd", "zippyGameEnd", XtRString, sizeof(String), - XtOffset(AppDataPtr, zippyGameEnd), XtRString, ZIPPY_GAME_END }, - { "zippyGameStart", "zippyGameStart", XtRString, sizeof(String), - XtOffset(AppDataPtr, zippyGameStart), XtRString, ZIPPY_GAME_START }, - { "zippyAdjourn", "zippyAdjourn", XtRBoolean, - sizeof(Boolean), XtOffset(AppDataPtr, zippyAdjourn), - XtRImmediate, (XtPointer) ZIPPY_ADJOURN }, - { "zippyAbort", "zippyAbort", XtRBoolean, - sizeof(Boolean), XtOffset(AppDataPtr, zippyAbort), - XtRImmediate, (XtPointer) ZIPPY_ABORT }, - { "zippyVariants", "zippyVariants", XtRString, sizeof(String), - XtOffset(AppDataPtr, zippyVariants), XtRString, ZIPPY_VARIANTS }, - { "zippyMaxGames", "zippyMaxGames", XtRInt, sizeof(int), - XtOffset(AppDataPtr, zippyMaxGames), XtRImmediate, - (XtPointer) ZIPPY_MAX_GAMES }, - { "zippyReplayTimeout", "zippyReplayTimeout", XtRInt, sizeof(int), - XtOffset(AppDataPtr, zippyReplayTimeout), XtRImmediate, - (XtPointer) ZIPPY_REPLAY_TIMEOUT }, -#endif - { "flashCount", "flashCount", XtRInt, sizeof(int), - XtOffset(AppDataPtr, flashCount), XtRImmediate, - (XtPointer) FLASH_COUNT }, - { "flashRate", "flashRate", XtRInt, sizeof(int), - XtOffset(AppDataPtr, flashRate), XtRImmediate, - (XtPointer) FLASH_RATE }, - { "pixmapDirectory", "pixmapDirectory", XtRString, - sizeof(String), XtOffset(AppDataPtr, pixmapDirectory), - XtRString, "" }, - { "msLoginDelay", "msLoginDelay", XtRInt, sizeof(int), - XtOffset(AppDataPtr, msLoginDelay), XtRImmediate, - (XtPointer) MS_LOGIN_DELAY }, - { "colorizeMessages", "colorizeMessages", XtRBoolean, - sizeof(Boolean), XtOffset(AppDataPtr, colorize), - XtRImmediate, (XtPointer) False }, - { "colorShout", "colorShout", XtRString, - sizeof(String), XtOffset(AppDataPtr, colorShout), - XtRString, COLOR_SHOUT }, - { "colorSShout", "colorSShout", XtRString, - sizeof(String), XtOffset(AppDataPtr, colorSShout), - XtRString, COLOR_SSHOUT }, - { "colorChannel1", "colorChannel1", XtRString, - sizeof(String), XtOffset(AppDataPtr, colorChannel1), - XtRString, COLOR_CHANNEL1 }, - { "colorChannel", "colorChannel", XtRString, - sizeof(String), XtOffset(AppDataPtr, colorChannel), - XtRString, COLOR_CHANNEL }, - { "colorKibitz", "colorKibitz", XtRString, - sizeof(String), XtOffset(AppDataPtr, colorKibitz), - XtRString, COLOR_KIBITZ }, - { "colorTell", "colorTell", XtRString, - sizeof(String), XtOffset(AppDataPtr, colorTell), - XtRString, COLOR_TELL }, - { "colorChallenge", "colorChallenge", XtRString, - sizeof(String), XtOffset(AppDataPtr, colorChallenge), - XtRString, COLOR_CHALLENGE }, - { "colorRequest", "colorRequest", XtRString, - sizeof(String), XtOffset(AppDataPtr, colorRequest), - XtRString, COLOR_REQUEST }, - { "colorSeek", "colorSeek", XtRString, - sizeof(String), XtOffset(AppDataPtr, colorSeek), - XtRString, COLOR_SEEK }, - { "colorNormal", "colorNormal", XtRString, - sizeof(String), XtOffset(AppDataPtr, colorNormal), - XtRString, COLOR_NORMAL }, - { "soundProgram", "soundProgram", XtRString, - sizeof(String), XtOffset(AppDataPtr, soundProgram), - XtRString, "play" }, - { "soundShout", "soundShout", XtRString, - sizeof(String), XtOffset(AppDataPtr, soundShout), - XtRString, "" }, - { "soundSShout", "soundSShout", XtRString, - sizeof(String), XtOffset(AppDataPtr, soundSShout), - XtRString, "" }, - { "soundChannel1", "soundChannel1", XtRString, - sizeof(String), XtOffset(AppDataPtr, soundChannel1), - XtRString, "" }, - { "soundChannel", "soundChannel", XtRString, - sizeof(String), XtOffset(AppDataPtr, soundChannel), - XtRString, "" }, - { "soundKibitz", "soundKibitz", XtRString, - sizeof(String), XtOffset(AppDataPtr, soundKibitz), - XtRString, "" }, - { "soundTell", "soundTell", XtRString, - sizeof(String), XtOffset(AppDataPtr, soundTell), - XtRString, "" }, - { "soundChallenge", "soundChallenge", XtRString, - sizeof(String), XtOffset(AppDataPtr, soundChallenge), - XtRString, "" }, - { "soundRequest", "soundRequest", XtRString, - sizeof(String), XtOffset(AppDataPtr, soundRequest), - XtRString, "" }, - { "soundSeek", "soundSeek", XtRString, - sizeof(String), XtOffset(AppDataPtr, soundSeek), - XtRString, "" }, - { "soundMove", "soundMove", XtRString, - sizeof(String), XtOffset(AppDataPtr, soundMove), - XtRString, "$" }, - { "soundIcsWin", "soundIcsWin", XtRString, - sizeof(String), XtOffset(AppDataPtr, soundIcsWin), - XtRString, "" }, - { "soundIcsLoss", "soundIcsLoss", XtRString, - sizeof(String), XtOffset(AppDataPtr, soundIcsLoss), - XtRString, "" }, - { "soundIcsDraw", "soundIcsDraw", XtRString, - sizeof(String), XtOffset(AppDataPtr, soundIcsDraw), - XtRString, "" }, - { "soundIcsUnfinished", "soundIcsUnfinished", XtRString, - sizeof(String), XtOffset(AppDataPtr, soundIcsUnfinished), - XtRString, "" }, - { "soundIcsAlarm", "soundIcsAlarm", XtRString, - sizeof(String), XtOffset(AppDataPtr, soundIcsAlarm), - XtRString, "$" }, - { "reuseFirst", "reuseFirst", XtRBoolean, - sizeof(Boolean), XtOffset(AppDataPtr, reuseFirst), - XtRImmediate, (XtPointer) True }, - { "reuseSecond", "reuseSecond", XtRBoolean, - sizeof(Boolean), XtOffset(AppDataPtr, reuseSecond), - XtRImmediate, (XtPointer) True }, - { "animateDragging", "animateDragging", XtRBoolean, - sizeof(Boolean), XtOffset(AppDataPtr, animateDragging), - XtRImmediate, (XtPointer) True }, - { "animateMoving", "animateMoving", XtRBoolean, - sizeof(Boolean), XtOffset(AppDataPtr, animate), - XtRImmediate, (XtPointer) True }, - { "animateSpeed", "animateSpeed", XtRInt, - sizeof(int), XtOffset(AppDataPtr, animSpeed), - XtRImmediate, (XtPointer)10 }, - { "popupExitMessage", "popupExitMessage", XtRBoolean, - sizeof(Boolean), XtOffset(AppDataPtr, popupExitMessage), - XtRImmediate, (XtPointer) True }, - { "popupMoveErrors", "popupMoveErrors", XtRBoolean, - sizeof(Boolean), XtOffset(AppDataPtr, popupMoveErrors), - XtRImmediate, (XtPointer) False }, - { "fontSizeTolerance", "fontSizeTolerance", XtRInt, - sizeof(int), XtOffset(AppDataPtr, fontSizeTolerance), - XtRImmediate, (XtPointer)4 }, - { "initialMode", "initialMode", XtRString, - sizeof(String), XtOffset(AppDataPtr, initialMode), - XtRImmediate, (XtPointer) "" }, - { "variant", "variant", XtRString, - sizeof(String), XtOffset(AppDataPtr, variant), - XtRImmediate, (XtPointer) "normal" }, - { "firstProtocolVersion", "firstProtocolVersion", XtRInt, - sizeof(int), XtOffset(AppDataPtr, firstProtocolVersion), - XtRImmediate, (XtPointer)PROTOVER }, - { "secondProtocolVersion", "secondProtocolVersion", XtRInt, - sizeof(int), XtOffset(AppDataPtr, secondProtocolVersion), - XtRImmediate, (XtPointer)PROTOVER }, - { "showButtonBar", "showButtonBar", XtRBoolean, - sizeof(Boolean), XtOffset(AppDataPtr, showButtonBar), - XtRImmediate, (XtPointer) True }, -}; - -XrmOptionDescRec shellOptions[] = { - { "-whitePieceColor", "whitePieceColor", XrmoptionSepArg, NULL }, - { "-blackPieceColor", "blackPieceColor", XrmoptionSepArg, NULL }, - { "-lightSquareColor", "lightSquareColor", XrmoptionSepArg, NULL }, - { "-darkSquareColor", "darkSquareColor", XrmoptionSepArg, NULL }, - { "-highlightSquareColor", "highlightSquareColor", XrmoptionSepArg, NULL }, - { "-premoveHighlightColor", "premoveHighlightColor", XrmoptionSepArg,NULL}, - { "-movesPerSession", "movesPerSession", XrmoptionSepArg, NULL }, - { "-mps", "movesPerSession", XrmoptionSepArg, NULL }, - { "-timeIncrement", "timeIncrement", XrmoptionSepArg, NULL }, - { "-inc", "timeIncrement", XrmoptionSepArg, NULL }, - { "-initString", "initString", XrmoptionSepArg, NULL }, - { "-firstInitString", "initString", XrmoptionSepArg, NULL }, - { "-secondInitString", "secondInitString", XrmoptionSepArg, NULL }, - { "-firstComputerString", "firstComputerString", XrmoptionSepArg, NULL }, - { "-secondComputerString", "secondComputerString", XrmoptionSepArg, NULL }, - { "-firstChessProgram", "firstChessProgram", XrmoptionSepArg, NULL }, - { "-fcp", "firstChessProgram", XrmoptionSepArg, NULL }, - { "-secondChessProgram", "secondChessProgram", XrmoptionSepArg, NULL }, - { "-scp", "secondChessProgram", XrmoptionSepArg, NULL }, - { "-firstPlaysBlack", "firstPlaysBlack", XrmoptionSepArg, NULL }, - { "-fb", "firstPlaysBlack", XrmoptionNoArg, "True" }, - { "-xfb", "firstPlaysBlack", XrmoptionNoArg, "False" }, - { "-noChessProgram", "noChessProgram", XrmoptionSepArg, NULL }, - { "-ncp", "noChessProgram", XrmoptionNoArg, "True" }, - { "-xncp", "noChessProgram", XrmoptionNoArg, "False" }, - { "-firstHost", "firstHost", XrmoptionSepArg, NULL }, - { "-fh", "firstHost", XrmoptionSepArg, NULL }, - { "-secondHost", "secondHost", XrmoptionSepArg, NULL }, - { "-sh", "secondHost", XrmoptionSepArg, NULL }, - { "-firstDirectory", "firstDirectory", XrmoptionSepArg, NULL }, - { "-fd", "firstDirectory", XrmoptionSepArg, NULL }, - { "-secondDirectory", "secondDirectory", XrmoptionSepArg, NULL }, - { "-sd", "secondDirectory", XrmoptionSepArg, NULL }, - { "-bitmapDirectory", "bitmapDirectory", XrmoptionSepArg, NULL }, - { "-bm", "bitmapDirectory", XrmoptionSepArg, NULL }, - { "-remoteShell", "remoteShell", XrmoptionSepArg, NULL }, - { "-rsh", "remoteShell", XrmoptionSepArg, NULL }, - { "-remoteUser", "remoteUser", XrmoptionSepArg, NULL }, - { "-ruser", "remoteUser", XrmoptionSepArg, NULL }, - { "-timeDelay", "timeDelay", XrmoptionSepArg, NULL }, - { "-td", "timeDelay", XrmoptionSepArg, NULL }, - { "-timeControl", "timeControl", XrmoptionSepArg, NULL }, - { "-tc", "timeControl", XrmoptionSepArg, NULL }, - { "-internetChessServerMode", "internetChessServerMode", - XrmoptionSepArg, NULL }, - { "-ics", "internetChessServerMode", XrmoptionNoArg, "True" }, - { "-xics", "internetChessServerMode", XrmoptionNoArg, "False" }, - { "-internetChessServerHost", "internetChessServerHost", - XrmoptionSepArg, NULL }, - { "-icshost", "internetChessServerHost", XrmoptionSepArg, NULL }, - { "-internetChessServerPort", "internetChessServerPort", - XrmoptionSepArg, NULL }, - { "-icsport", "internetChessServerPort", XrmoptionSepArg, NULL }, - { "-internetChessServerCommPort", "internetChessServerCommPort", - XrmoptionSepArg, NULL }, - { "-icscomm", "internetChessServerCommPort", XrmoptionSepArg, NULL }, - { "-internetChessServerLogonScript", "internetChessServerLogonScript", - XrmoptionSepArg, NULL }, - { "-icslogon", "internetChessServerLogonScript", XrmoptionSepArg, NULL }, - { "-internetChessServerHelper", "internetChessServerHelper", - XrmoptionSepArg, NULL }, - { "-icshelper", "internetChessServerHelper", XrmoptionSepArg, NULL }, - { "-internetChessServerInputBox", "internetChessServerInputBox", - XrmoptionSepArg, NULL }, - { "-icsinput", "internetChessServerInputBox", XrmoptionNoArg, "True" }, - { "-xicsinput", "internetChessServerInputBox", XrmoptionNoArg, "False" }, - { "-icsAlarm", "icsAlarm", XrmoptionSepArg, NULL }, - { "-alarm", "icsAlarm", XrmoptionNoArg, "True" }, - { "-xalarm", "icsAlarm", XrmoptionNoArg, "False" }, - { "-icsAlarmTime", "icsAlarmTime", XrmoptionSepArg, NULL }, - { "-useTelnet", "useTelnet", XrmoptionSepArg, NULL }, - { "-telnet", "useTelnet", XrmoptionNoArg, "True" }, - { "-xtelnet", "useTelnet", XrmoptionNoArg, "False" }, - { "-telnetProgram", "telnetProgram", XrmoptionSepArg, NULL }, - { "-gateway", "gateway", XrmoptionSepArg, NULL }, - { "-loadGameFile", "loadGameFile", XrmoptionSepArg, NULL }, - { "-lgf", "loadGameFile", XrmoptionSepArg, NULL }, - { "-loadGameIndex", "loadGameIndex", XrmoptionSepArg, NULL }, - { "-lgi", "loadGameIndex", XrmoptionSepArg, NULL }, - { "-saveGameFile", "saveGameFile", XrmoptionSepArg, NULL }, - { "-sgf", "saveGameFile", XrmoptionSepArg, NULL }, - { "-autoSaveGames", "autoSaveGames", XrmoptionSepArg, NULL }, - { "-autosave", "autoSaveGames", XrmoptionNoArg, "True" }, - { "-xautosave", "autoSaveGames", XrmoptionNoArg, "False" }, - { "-autoRaiseBoard", "autoRaiseBoard", XrmoptionSepArg, NULL }, - { "-autoraise", "autoRaiseBoard", XrmoptionNoArg, "True" }, - { "-xautoraise", "autoRaiseBoard", XrmoptionNoArg, "False" }, - { "-blindfold", "blindfold", XrmoptionSepArg, NULL }, - { "-blind", "blindfold", XrmoptionNoArg, "True" }, - { "-xblind", "blindfold", XrmoptionNoArg, "False" }, - { "-loadPositionFile", "loadPositionFile", XrmoptionSepArg, NULL }, - { "-lpf", "loadPositionFile", XrmoptionSepArg, NULL }, - { "-loadPositionIndex", "loadPositionIndex", XrmoptionSepArg, NULL }, - { "-lpi", "loadPositionIndex", XrmoptionSepArg, NULL }, - { "-savePositionFile", "savePositionFile", XrmoptionSepArg, NULL }, - { "-spf", "savePositionFile", XrmoptionSepArg, NULL }, - { "-matchMode", "matchMode", XrmoptionSepArg, NULL }, - { "-mm", "matchMode", XrmoptionNoArg, "True" }, - { "-xmm", "matchMode", XrmoptionNoArg, "False" }, - { "-matchGames", "matchGames", XrmoptionSepArg, NULL }, - { "-mg", "matchGames", XrmoptionSepArg, NULL }, - { "-monoMode", "monoMode", XrmoptionSepArg, NULL }, - { "-mono", "monoMode", XrmoptionNoArg, "True" }, - { "-xmono", "monoMode", XrmoptionNoArg, "False" }, - { "-debugMode", "debugMode", XrmoptionSepArg, NULL }, - { "-debug", "debugMode", XrmoptionNoArg, "True" }, - { "-xdebug", "debugMode", XrmoptionNoArg, "False" }, - { "-clockMode", "clockMode", XrmoptionSepArg, NULL }, - { "-clock", "clockMode", XrmoptionNoArg, "True" }, - { "-xclock", "clockMode", XrmoptionNoArg, "False" }, - { "-boardSize", "boardSize", XrmoptionSepArg, NULL }, - { "-size", "boardSize", XrmoptionSepArg, NULL }, - { "-searchTime", "searchTime", XrmoptionSepArg, NULL }, - { "-st", "searchTime", XrmoptionSepArg, NULL }, - { "-searchDepth", "searchDepth", XrmoptionSepArg, NULL }, - { "-depth", "searchDepth", XrmoptionSepArg, NULL }, - { "-showCoords", "showCoords", XrmoptionSepArg, NULL }, - { "-coords", "showCoords", XrmoptionNoArg, "True" }, - { "-xcoords", "showCoords", XrmoptionNoArg, "False" }, -#if JAIL - { "-showJail", "showJail", XrmoptionSepArg, NULL }, - { "-jail", "showJail", XrmoptionNoArg, "1" }, - { "-sidejail", "showJail", XrmoptionNoArg, "2" }, - { "-xjail", "showJail", XrmoptionNoArg, "0" }, -#endif - { "-showThinking", "showThinking", XrmoptionSepArg, NULL }, - { "-thinking", "showThinking", XrmoptionNoArg, "True" }, - { "-xthinking", "showThinking", XrmoptionNoArg, "False" }, - { "-ponderNextMove", "ponderNextMove", XrmoptionSepArg, NULL }, - { "-ponder", "ponderNextMove", XrmoptionNoArg, "True" }, - { "-xponder", "ponderNextMove", XrmoptionNoArg, "False" }, - { "-periodicUpdates", "periodicUpdates", XrmoptionSepArg, NULL }, - { "-periodic", "periodicUpdates", XrmoptionNoArg, "True" }, - { "-xperiodic", "periodicUpdates", XrmoptionNoArg, "False" }, - { "-clockFont", "clockFont", XrmoptionSepArg, NULL }, - { "-coordFont", "coordFont", XrmoptionSepArg, NULL }, - { "-font", "font", XrmoptionSepArg, NULL }, - { "-ringBellAfterMoves", "ringBellAfterMoves", XrmoptionSepArg, NULL }, - { "-bell", "ringBellAfterMoves", XrmoptionNoArg, "True" }, - { "-xbell", "ringBellAfterMoves", XrmoptionNoArg, "False" }, - { "-movesound", "ringBellAfterMoves", XrmoptionNoArg, "True" }, - { "-xmovesound", "ringBellAfterMoves", XrmoptionNoArg, "False" }, - { "-autoCallFlag", "autoCallFlag", XrmoptionSepArg, NULL }, - { "-autoflag", "autoCallFlag", XrmoptionNoArg, "True" }, - { "-xautoflag", "autoCallFlag", XrmoptionNoArg, "False" }, - { "-autoFlipView", "autoFlipView", XrmoptionSepArg, NULL }, - { "-autoflip", "autoFlipView", XrmoptionNoArg, "True" }, - { "-xautoflip", "autoFlipView", XrmoptionNoArg, "False" }, - { "-autoObserve", "autoObserve", XrmoptionSepArg, NULL }, - { "-autobs", "autoObserve", XrmoptionNoArg, "True" }, - { "-xautobs", "autoObserve", XrmoptionNoArg, "False" }, - { "-autoComment", "autoComment", XrmoptionSepArg, NULL }, - { "-autocomm", "autoComment", XrmoptionNoArg, "True" }, - { "-xautocomm", "autoComment", XrmoptionNoArg, "False" }, - { "-getMoveList", "getMoveList", XrmoptionSepArg, NULL }, - { "-moves", "getMoveList", XrmoptionNoArg, "True" }, - { "-xmoves", "getMoveList", XrmoptionNoArg, "False" }, -#if HIGHDRAG - { "-highlightDragging", "highlightDragging", XrmoptionSepArg, NULL }, - { "-highdrag", "highlightDragging", XrmoptionNoArg, "True" }, - { "-xhighdrag", "highlightDragging", XrmoptionNoArg, "False" }, -#endif - { "-highlightLastMove", "highlightLastMove", XrmoptionSepArg, NULL }, - { "-highlight", "highlightLastMove", XrmoptionNoArg, "True" }, - { "-xhighlight", "highlightLastMove", XrmoptionNoArg, "False" }, - { "-premove", "premove", XrmoptionSepArg, NULL }, - { "-pre", "premove", XrmoptionNoArg, "True" }, - { "-xpre", "premove", XrmoptionNoArg, "False" }, - { "-testLegality", "testLegality", XrmoptionSepArg, NULL }, - { "-legal", "testLegality", XrmoptionNoArg, "True" }, - { "-xlegal", "testLegality", XrmoptionNoArg, "False" }, - { "-flipView", "flipView", XrmoptionSepArg, NULL }, - { "-flip", "flipView", XrmoptionNoArg, "True" }, - { "-xflip", "flipView", XrmoptionNoArg, "False" }, - { "-cmail", "cmailGameName", XrmoptionSepArg, NULL }, - { "-alwaysPromoteToQueen", "alwaysPromoteToQueen", - XrmoptionSepArg, NULL }, - { "-queen", "alwaysPromoteToQueen", XrmoptionNoArg, "True" }, - { "-xqueen", "alwaysPromoteToQueen", XrmoptionNoArg, "False" }, - { "-oldSaveStyle", "oldSaveStyle", XrmoptionSepArg, NULL }, - { "-oldsave", "oldSaveStyle", XrmoptionNoArg, "True" }, - { "-xoldsave", "oldSaveStyle", XrmoptionNoArg, "False" }, - { "-quietPlay", "quietPlay", XrmoptionSepArg, NULL }, - { "-quiet", "quietPlay", XrmoptionNoArg, "True" }, - { "-xquiet", "quietPlay", XrmoptionNoArg, "False" }, - { "-titleInWindow", "titleInWindow", XrmoptionSepArg, NULL }, - { "-title", "titleInWindow", XrmoptionNoArg, "True" }, - { "-xtitle", "titleInWindow", XrmoptionNoArg, "False" }, -#ifdef ZIPPY - { "-zippyTalk", "zippyTalk", XrmoptionSepArg, NULL }, - { "-zt", "zippyTalk", XrmoptionNoArg, "True" }, - { "-xzt", "zippyTalk", XrmoptionNoArg, "False" }, - { "-zippyPlay", "zippyPlay", XrmoptionSepArg, NULL }, - { "-zp", "zippyPlay", XrmoptionNoArg, "True" }, - { "-xzp", "zippyPlay", XrmoptionNoArg, "False" }, - { "-zippyLines", "zippyLines", XrmoptionSepArg, NULL }, - { "-zippyPinhead", "zippyPinhead", XrmoptionSepArg, NULL }, - { "-zippyPassword", "zippyPassword", XrmoptionSepArg, NULL }, - { "-zippyPassword2", "zippyPassword2", XrmoptionSepArg, NULL }, - { "-zippyWrongPassword", "zippyWrongPassword", XrmoptionSepArg, NULL }, - { "-zippyAcceptOnly", "zippyAcceptOnly", XrmoptionSepArg, NULL }, - { "-zippyUseI", "zippyUseI", XrmoptionSepArg, NULL }, - { "-zui", "zippyUseI", XrmoptionNoArg, "True" }, - { "-xzui", "zippyUseI", XrmoptionNoArg, "False" }, - { "-zippyBughouse", "zippyBughouse", XrmoptionSepArg, NULL }, - { "-zippyNoplayCrafty", "zippyNoplayCrafty", XrmoptionSepArg, NULL }, - { "-znc", "zippyNoplayCrafty", XrmoptionNoArg, "True" }, - { "-xznc", "zippyNoplayCrafty", XrmoptionNoArg, "False" }, - { "-zippyGameEnd", "zippyGameEnd", XrmoptionSepArg, NULL }, - { "-zippyGameStart", "zippyGameStart", XrmoptionSepArg, NULL }, - { "-zippyAdjourn", "zippyAdjourn", XrmoptionSepArg, NULL }, - { "-zadj", "zippyAdjourn", XrmoptionNoArg, "True" }, - { "-xzadj", "zippyAdjourn", XrmoptionNoArg, "False" }, - { "-zippyAbort", "zippyAbort", XrmoptionSepArg, NULL }, - { "-zab", "zippyAbort", XrmoptionNoArg, "True" }, - { "-xzab", "zippyAbort", XrmoptionNoArg, "False" }, - { "-zippyVariants", "zippyVariants", XrmoptionSepArg, NULL }, - { "-zippyMaxGames", "zippyMaxGames", XrmoptionSepArg, NULL }, - { "-zippyReplayTimeout", "zippyReplayTimeout", XrmoptionSepArg, NULL }, -#endif - { "-flashCount", "flashCount", XrmoptionSepArg, NULL }, - { "-flash", "flashCount", XrmoptionNoArg, "3" }, - { "-xflash", "flashCount", XrmoptionNoArg, "0" }, - { "-flashRate", "flashRate", XrmoptionSepArg, NULL }, - { "-pixmapDirectory", "pixmapDirectory", XrmoptionSepArg, NULL }, - { "-msLoginDelay", "msLoginDelay", XrmoptionSepArg, NULL }, - { "-pixmap", "pixmapDirectory", XrmoptionSepArg, NULL }, - { "-colorizeMessages", "colorizeMessages", XrmoptionSepArg, NULL }, - { "-colorize", "colorizeMessages", XrmoptionNoArg, "True" }, - { "-xcolorize", "colorizeMessages", XrmoptionNoArg, "False" }, - { "-colorShout", "colorShout", XrmoptionSepArg, NULL }, - { "-colorSShout", "colorSShout", XrmoptionSepArg, NULL }, - { "-colorCShout", "colorSShout", XrmoptionSepArg, NULL }, /*FICS name*/ - { "-colorChannel1", "colorChannel1", XrmoptionSepArg, NULL }, - { "-colorChannel", "colorChannel", XrmoptionSepArg, NULL }, - { "-colorKibitz", "colorKibitz", XrmoptionSepArg, NULL }, - { "-colorTell", "colorTell", XrmoptionSepArg, NULL }, - { "-colorChallenge", "colorChallenge", XrmoptionSepArg, NULL }, - { "-colorRequest", "colorRequest", XrmoptionSepArg, NULL }, - { "-colorSeek", "colorSeek", XrmoptionSepArg, NULL }, - { "-colorNormal", "colorNormal", XrmoptionSepArg, NULL }, - { "-soundProgram", "soundProgram", XrmoptionSepArg, NULL }, - { "-soundShout", "soundShout", XrmoptionSepArg, NULL }, - { "-soundSShout", "soundSShout", XrmoptionSepArg, NULL }, - { "-soundCShout", "soundSShout", XrmoptionSepArg, NULL }, /*FICS name*/ - { "-soundChannel1", "soundChannel1", XrmoptionSepArg, NULL }, - { "-soundChannel", "soundChannel", XrmoptionSepArg, NULL }, - { "-soundKibitz", "soundKibitz", XrmoptionSepArg, NULL }, - { "-soundTell", "soundTell", XrmoptionSepArg, NULL }, - { "-soundChallenge", "soundChallenge", XrmoptionSepArg, NULL }, - { "-soundRequest", "soundRequest", XrmoptionSepArg, NULL }, - { "-soundSeek", "soundSeek", XrmoptionSepArg, NULL }, - { "-soundMove", "soundMove", XrmoptionSepArg, NULL }, - { "-soundIcsWin", "soundIcsWin", XrmoptionSepArg, NULL }, - { "-soundIcsLoss", "soundIcsLoss", XrmoptionSepArg, NULL }, - { "-soundIcsDraw", "soundIcsDraw", XrmoptionSepArg, NULL }, - { "-soundIcsUnfinished", "soundIcsUnfinished", XrmoptionSepArg, NULL }, - { "-soundIcsAlarm", "soundIcsAlarm", XrmoptionSepArg, NULL }, - { "-reuseFirst", "reuseFirst", XrmoptionSepArg, NULL }, - { "-reuseChessPrograms", "reuseFirst", XrmoptionSepArg, NULL }, /*compat*/ - { "-reuse", "reuseFirst", XrmoptionNoArg, "True" }, - { "-xreuse", "reuseFirst", XrmoptionNoArg, "False" }, - { "-reuseSecond", "reuseSecond", XrmoptionSepArg, NULL }, - { "-reuse2", "reuseSecond", XrmoptionNoArg, "True" }, - { "-xreuse2", "reuseSecond", XrmoptionNoArg, "False" }, - { "-animateMoving", "animateMoving", XrmoptionSepArg, NULL }, - { "-animate", "animateMoving", XrmoptionNoArg, "True" }, - { "-xanimate", "animateMoving", XrmoptionNoArg, "False" }, - { "-animateDragging", "animateDragging", XrmoptionSepArg, NULL }, - { "-drag", "animateDragging", XrmoptionNoArg, "True" }, - { "-xdrag", "animateDragging", XrmoptionNoArg, "False" }, - { "-animateSpeed", "animateSpeed", XrmoptionSepArg, NULL }, - { "-popupExitMessage", "popupExitMessage", XrmoptionSepArg, NULL }, - { "-exit", "popupExitMessage", XrmoptionNoArg, "True" }, - { "-xexit", "popupExitMessage", XrmoptionNoArg, "False" }, - { "-popupMoveErrors", "popupMoveErrors", XrmoptionSepArg, NULL }, - { "-popup", "popupMoveErrors", XrmoptionNoArg, "True" }, - { "-xpopup", "popupMoveErrors", XrmoptionNoArg, "False" }, - { "-fontSizeTolerance", "fontSizeTolerance", XrmoptionSepArg, NULL }, - { "-initialMode", "initialMode", XrmoptionSepArg, NULL }, - { "-mode", "initialMode", XrmoptionSepArg, NULL }, - { "-variant", "variant", XrmoptionSepArg, NULL }, - { "-firstProtocolVersion", "firstProtocolVersion", XrmoptionSepArg, NULL }, - { "-secondProtocolVersion","secondProtocolVersion",XrmoptionSepArg, NULL }, - { "-showButtonBar", "showButtonBar", XrmoptionSepArg, NULL }, - { "-buttons", "showButtonBar", XrmoptionNoArg, "True" }, - { "-xbuttons", "showButtonBar", XrmoptionNoArg, "False" }, -}; - - -XtActionsRec boardActions[] = { - { "DrawPosition", DrawPositionProc }, - { "HandleUserMove", HandleUserMove }, - { "AnimateUserMove", AnimateUserMove }, - { "FileNameAction", FileNameAction }, - { "AskQuestionProc", AskQuestionProc }, - { "AskQuestionReplyAction", AskQuestionReplyAction }, - { "PieceMenuPopup", PieceMenuPopup }, - { "WhiteClock", WhiteClock }, - { "BlackClock", BlackClock }, - { "Iconify", Iconify }, - { "ResetProc", ResetProc }, - { "LoadGameProc", LoadGameProc }, - { "LoadNextGameProc", LoadNextGameProc }, - { "LoadPrevGameProc", LoadPrevGameProc }, - { "LoadSelectedProc", LoadSelectedProc }, - { "ReloadGameProc", ReloadGameProc }, - { "LoadPositionProc", LoadPositionProc }, - { "LoadNextPositionProc", LoadNextPositionProc }, - { "LoadPrevPositionProc", LoadPrevPositionProc }, - { "ReloadPositionProc", ReloadPositionProc }, - { "CopyPositionProc", CopyPositionProc }, - { "PastePositionProc", PastePositionProc }, - { "CopyGameProc", CopyGameProc }, - { "PasteGameProc", PasteGameProc }, - { "SaveGameProc", SaveGameProc }, - { "SavePositionProc", SavePositionProc }, - { "MailMoveProc", MailMoveProc }, - { "ReloadCmailMsgProc", ReloadCmailMsgProc }, - { "QuitProc", QuitProc }, - { "MachineWhiteProc", MachineWhiteProc }, - { "MachineBlackProc", MachineBlackProc }, - { "AnalysisModeProc", AnalyzeModeProc }, - { "AnalyzeFileProc", AnalyzeFileProc }, - { "TwoMachinesProc", TwoMachinesProc }, - { "IcsClientProc", IcsClientProc }, - { "EditGameProc", EditGameProc }, - { "EditPositionProc", EditPositionProc }, - { "TrainingProc", EditPositionProc }, - { "ShowGameListProc", ShowGameListProc }, - { "ShowMoveListProc", HistoryShowProc}, - { "EditTagsProc", EditCommentProc }, - { "EditCommentProc", EditCommentProc }, - { "IcsAlarmProc", IcsAlarmProc }, - { "IcsInputBoxProc", IcsInputBoxProc }, - { "PauseProc", PauseProc }, - { "AcceptProc", AcceptProc }, - { "DeclineProc", DeclineProc }, - { "RematchProc", RematchProc }, - { "CallFlagProc", CallFlagProc }, - { "DrawProc", DrawProc }, - { "AdjournProc", AdjournProc }, - { "AbortProc", AbortProc }, - { "ResignProc", ResignProc }, - { "EnterKeyProc", EnterKeyProc }, - { "StopObservingProc", StopObservingProc }, - { "StopExaminingProc", StopExaminingProc }, - { "BackwardProc", BackwardProc }, - { "ForwardProc", ForwardProc }, - { "ToStartProc", ToStartProc }, - { "ToEndProc", ToEndProc }, - { "RevertProc", RevertProc }, - { "TruncateGameProc", TruncateGameProc }, - { "MoveNowProc", MoveNowProc }, - { "RetractMoveProc", RetractMoveProc }, - { "AlwaysQueenProc", AlwaysQueenProc }, - { "AnimateDraggingProc", AnimateDraggingProc }, - { "AnimateMovingProc", AnimateMovingProc }, - { "AutoflagProc", AutoflagProc }, - { "AutoflipProc", AutoflipProc }, - { "AutobsProc", AutobsProc }, - { "AutoraiseProc", AutoraiseProc }, - { "AutosaveProc", AutosaveProc }, - { "BlindfoldProc", BlindfoldProc }, - { "FlashMovesProc", FlashMovesProc }, - { "FlipViewProc", FlipViewProc }, - { "GetMoveListProc", GetMoveListProc }, -#if HIGHDRAG - { "HighlightDraggingProc", HighlightDraggingProc }, -#endif - { "HighlightLastMoveProc", HighlightLastMoveProc }, - { "IcsAlarmProc", IcsAlarmProc }, - { "MoveSoundProc", MoveSoundProc }, - { "OldSaveStyleProc", OldSaveStyleProc }, - { "PeriodicUpdatesProc", PeriodicUpdatesProc }, - { "PonderNextMoveProc", PonderNextMoveProc }, - { "PopupExitMessageProc", PopupExitMessageProc }, - { "PopupMoveErrorsProc", PopupMoveErrorsProc }, - { "PremoveProc", PremoveProc }, - { "QuietPlayProc", QuietPlayProc }, - { "ShowCoordsProc", ShowCoordsProc }, - { "ShowThinkingProc", ShowThinkingProc }, - { "TestLegalityProc", TestLegalityProc }, - { "InfoProc", InfoProc }, - { "ManProc", ManProc }, - { "HintProc", HintProc }, - { "BookProc", BookProc }, - { "AboutGameProc", AboutGameProc }, - { "AboutProc", AboutProc }, - { "DebugProc", DebugProc }, - { "NothingProc", NothingProc }, - { "CommentPopDown", (XtActionProc) CommentPopDown }, - { "EditCommentPopDown", (XtActionProc) EditCommentPopDown }, - { "TagsPopDown", (XtActionProc) TagsPopDown }, - { "ErrorPopDown", (XtActionProc) ErrorPopDown }, - { "ICSInputBoxPopDown", (XtActionProc) ICSInputBoxPopDown }, - { "AnalysisPopDown", (XtActionProc) AnalysisPopDown }, - { "FileNamePopDown", (XtActionProc) FileNamePopDown }, - { "AskQuestionPopDown", (XtActionProc) AskQuestionPopDown }, - { "GameListPopDown", (XtActionProc) GameListPopDown }, - { "PromotionPopDown", (XtActionProc) PromotionPopDown }, - { "HistoryPopDown", (XtActionProc) HistoryPopDown }, -}; - -char globalTranslations[] = - ":R: ResignProc() \n \ - :r: ResetProc() \n \ - :g: LoadGameProc() \n \ - :N: LoadNextGameProc() \n \ - :P: LoadPrevGameProc() \n \ - :Q: QuitProc() \n \ - :F: ToEndProc() \n \ - :f: ForwardProc() \n \ - :B: ToStartProc() \n \ - :b: BackwardProc() \n \ - :p: PauseProc() \n \ - :d: DrawProc() \n \ - :t: CallFlagProc() \n \ - :i: Iconify() \n \ - :c: Iconify() \n \ - :v: FlipViewProc() \n \ - Control_L: BackwardProc() \n \ - Control_L: ForwardProc() \n \ - Control_R: BackwardProc() \n \ - Control_R: ForwardProc() \n \ - Shift1: AskQuestionProc(\"Direct command\",\ - \"Send to chess program:\",,1) \n \ - Shift2: AskQuestionProc(\"Direct command\",\ - \"Send to second chess program:\",,2) \n"; - -char boardTranslations[] = - ": HandleUserMove() \n \ - : HandleUserMove() \n \ - : AnimateUserMove() \n \ - Shift: XawPositionSimpleMenu(menuB) XawPositionSimpleMenu(menuD)\ - PieceMenuPopup(menuB) \n \ - Any: XawPositionSimpleMenu(menuW) XawPositionSimpleMenu(menuD) \ - PieceMenuPopup(menuW) \n \ - Shift: XawPositionSimpleMenu(menuW) XawPositionSimpleMenu(menuD)\ - PieceMenuPopup(menuW) \n \ - Any: XawPositionSimpleMenu(menuB) XawPositionSimpleMenu(menuD) \ - PieceMenuPopup(menuB) \n"; - -char whiteTranslations[] = ": WhiteClock()\n"; -char blackTranslations[] = ": BlackClock()\n"; - -char ICSInputTranslations[] = - "Return: EnterKeyProc() \n"; - -String xboardResources[] = { - "*fileName*value.translations: #override\\n Return: FileNameAction()", - "*question*value.translations: #override\\n Return: AskQuestionReplyAction()", - "*errorpopup*translations: #override\\n Return: ErrorPopDown()", - NULL - }; - - -/* Max possible square size */ -#define MAXSQSIZE 256 - -static int xpm_avail[MAXSQSIZE]; - -#ifdef HAVE_DIR_STRUCT - -/* Extract piece size from filename */ -static int -xpm_getsize(name, len, ext) - char *name; - int len; - char *ext; -{ - char *p, *d; - char buf[10]; - - if (len < 4) - return 0; - - if ((p=strchr(name, '.')) == NULL || - StrCaseCmp(p+1, ext) != 0) - return 0; - - p = name + 3; - d = buf; - - while (*p && isdigit(*p)) - *(d++) = *(p++); - - *d = 0; - return atoi(buf); -} - -/* Setup xpm_avail */ -static int -xpm_getavail(dirname, ext) - char *dirname; - char *ext; -{ - DIR *dir; - struct dirent *ent; - int i; - - for (i=0; id_name, NAMLEN(ent), ext); - if (i > 0 && i < MAXSQSIZE) - xpm_avail[i] = 1; - } - - closedir(dir); - - return 0; -} - -void -xpm_print_avail(fp, ext) - FILE *fp; - char *ext; -{ - int i; - - fprintf(fp, "Available `%s' sizes:\n", ext); - for (i=1; i 99) /* watch bounds on buf */ - return -1; - - p = str; - d = buf; - for (i=0; iWM_PROTOCOLS: %s() \n", procname); - XtAugmentTranslations(w, XtParseTranslationTable(buf)); -} - -void -BoardToTop() -{ - Arg args[16]; - XtSetArg(args[0], XtNiconic, False); - XtSetValues(shellWidget, args, 1); - - XtPopup(shellWidget, XtGrabNone); /* Raise if lowered */ -} - -int -main(argc, argv) - int argc; - char **argv; -{ - int i, j, clockFontPxlSize, coordFontPxlSize, fontPxlSize; - XSetWindowAttributes window_attributes; - Arg args[16]; - Dimension timerWidth, boardWidth, w, h, sep, bor, wr, hr; - XrmValue vFrom, vTo; - XtGeometryResult gres; - char *p; - XrmDatabase xdb; - int forceMono = False; - - setbuf(stdout, NULL); - setbuf(stderr, NULL); - debugFP = stderr; - - programName = strrchr(argv[0], '/'); - if (programName == NULL) - programName = argv[0]; - else - programName++; - - shellWidget = - XtAppInitialize(&appContext, "XBoard", shellOptions, - XtNumber(shellOptions), - &argc, argv, xboardResources, NULL, 0); - if (argc > 1) { - fprintf(stderr, "%s: unrecognized argument %s\n", - programName, argv[1]); - exit(2); - } - - if ((chessDir = (char *) getenv("CHESSDIR")) == NULL) { - chessDir = "."; - } else { - if (chdir(chessDir) != 0) { - fprintf(stderr, "%s: can't cd to CHESSDIR: ", programName); - perror(chessDir); - exit(1); - } - } - - p = getenv("HOME"); - if (p == NULL) p = "/tmp"; - i = strlen(p) + strlen("/.xboardXXXXXx.pgn") + 1; - gameCopyFilename = (char*) malloc(i); - gamePasteFilename = (char*) malloc(i); - sprintf(gameCopyFilename, "%s/.xboard%05uc.pgn", p, getpid()); - sprintf(gamePasteFilename, "%s/.xboard%05up.pgn", p, getpid()); - - XtGetApplicationResources(shellWidget, (XtPointer) &appData, - clientResources, XtNumber(clientResources), - NULL, 0); - -#if !HIGHDRAG - /* This feature does not work; animation needs a rewrite */ - appData.highlightDragging = FALSE; -#endif - InitBackEnd1(); - - xDisplay = XtDisplay(shellWidget); - xScreen = DefaultScreen(xDisplay); - wm_delete_window = XInternAtom(xDisplay, "WM_DELETE_WINDOW", True); - - /* - * Determine boardSize - */ - if (isdigit(appData.boardSize[0])) { - i = sscanf(appData.boardSize, "%d,%d,%d,%d,%d,%d,%d", &squareSize, - &lineGap, &clockFontPxlSize, &coordFontPxlSize, - &fontPxlSize, &smallLayout, &tinyLayout); - if (i == 0) { - fprintf(stderr, "%s: bad boardSize syntax %s\n", - programName, appData.boardSize); - exit(2); - } - if (i < 7) { - /* Find some defaults; use the nearest known size */ - SizeDefaults *szd, *nearest; - int distance = 99999; - nearest = szd = sizeDefaults; - while (szd->name != NULL) { - if (abs(szd->squareSize - squareSize) < distance) { - nearest = szd; - distance = abs(szd->squareSize - squareSize); - if (distance == 0) break; - } - szd++; - } - if (i < 2) lineGap = nearest->lineGap; - if (i < 3) clockFontPxlSize = nearest->clockFontPxlSize; - if (i < 4) coordFontPxlSize = nearest->coordFontPxlSize; - if (i < 5) fontPxlSize = nearest->fontPxlSize; - if (i < 6) smallLayout = nearest->smallLayout; - if (i < 7) tinyLayout = nearest->tinyLayout; - } - } else { - SizeDefaults *szd = sizeDefaults; - if (*appData.boardSize == NULLCHAR) { - while (DisplayWidth(xDisplay, xScreen) < szd->minScreenSize || - DisplayHeight(xDisplay, xScreen) < szd->minScreenSize) { - szd++; - } - if (szd->name == NULL) szd--; - } else { - while (szd->name != NULL && - StrCaseCmp(szd->name, appData.boardSize) != 0) szd++; - if (szd->name == NULL) { - fprintf(stderr, "%s: unrecognized boardSize name %s\n", - programName, appData.boardSize); - exit(2); - } - } - squareSize = szd->squareSize; - lineGap = szd->lineGap; - clockFontPxlSize = szd->clockFontPxlSize; - coordFontPxlSize = szd->coordFontPxlSize; - fontPxlSize = szd->fontPxlSize; - smallLayout = szd->smallLayout; - tinyLayout = szd->tinyLayout; - } - - /* Now, using squareSize as a hint, find a good XPM/XIM set size */ - if (strlen(appData.pixmapDirectory) > 0) { - p = ExpandPathName(appData.pixmapDirectory); - if (!p) { - fprintf(stderr, "Error expanding path name \"%s\"\n", - appData.pixmapDirectory); - exit(1); - } - if (appData.debugMode) { - fprintf(stderr, "XBoard square size (hint): %d\n", squareSize); - fprintf(stderr, "%s fulldir:%s:\n", IMAGE_EXT, p); - } - squareSize = xpm_closest_to(p, squareSize, IMAGE_EXT); - if (appData.debugMode) { - fprintf(stderr, "Closest %s size: %d\n", IMAGE_EXT, squareSize); - } - } - - boardWidth = lineGap + BOARD_SIZE * (squareSize + lineGap); - if (appData.showJail == 1) { - /* Jail on top and bottom */ - XtSetArg(boardArgs[1], XtNwidth, boardWidth); - XtSetArg(boardArgs[2], XtNheight, - boardWidth + 2*(lineGap + squareSize)); - } else if (appData.showJail == 2) { - /* Jail on sides */ - XtSetArg(boardArgs[1], XtNwidth, - boardWidth + 2*(lineGap + squareSize)); - XtSetArg(boardArgs[2], XtNheight, boardWidth); - } else { - /* No jail */ - XtSetArg(boardArgs[1], XtNwidth, boardWidth); - XtSetArg(boardArgs[2], XtNheight, boardWidth); - } - - /* - * Determine what fonts to use. - */ - appData.clockFont = FindFont(appData.clockFont, clockFontPxlSize); - clockFontID = XLoadFont(xDisplay, appData.clockFont); - clockFontStruct = XQueryFont(xDisplay, clockFontID); - appData.coordFont = FindFont(appData.coordFont, coordFontPxlSize); - coordFontID = XLoadFont(xDisplay, appData.coordFont); - coordFontStruct = XQueryFont(xDisplay, coordFontID); - appData.font = FindFont(appData.font, fontPxlSize); - - xdb = XtDatabase(xDisplay); - XrmPutStringResource(&xdb, "*font", appData.font); - - /* - * Detect if there are not enough colors available and adapt. - */ - if (DefaultDepth(xDisplay, xScreen) <= 2) { - appData.monoMode = True; - } - - if (!appData.monoMode) { - vFrom.addr = (caddr_t) appData.lightSquareColor; - vFrom.size = strlen(appData.lightSquareColor); - XtConvert(shellWidget, XtRString, &vFrom, XtRPixel, &vTo); - if (vTo.addr == NULL) { - appData.monoMode = True; - forceMono = True; - } else { - lightSquareColor = *(Pixel *) vTo.addr; - } - } - if (!appData.monoMode) { - vFrom.addr = (caddr_t) appData.darkSquareColor; - vFrom.size = strlen(appData.darkSquareColor); - XtConvert(shellWidget, XtRString, &vFrom, XtRPixel, &vTo); - if (vTo.addr == NULL) { - appData.monoMode = True; - forceMono = True; - } else { - darkSquareColor = *(Pixel *) vTo.addr; - } - } - if (!appData.monoMode) { - vFrom.addr = (caddr_t) appData.whitePieceColor; - vFrom.size = strlen(appData.whitePieceColor); - XtConvert(shellWidget, XtRString, &vFrom, XtRPixel, &vTo); - if (vTo.addr == NULL) { - appData.monoMode = True; - forceMono = True; - } else { - whitePieceColor = *(Pixel *) vTo.addr; - } - } - if (!appData.monoMode) { - vFrom.addr = (caddr_t) appData.blackPieceColor; - vFrom.size = strlen(appData.blackPieceColor); - XtConvert(shellWidget, XtRString, &vFrom, XtRPixel, &vTo); - if (vTo.addr == NULL) { - appData.monoMode = True; - forceMono = True; - } else { - blackPieceColor = *(Pixel *) vTo.addr; - } - } - - if (!appData.monoMode) { - vFrom.addr = (caddr_t) appData.highlightSquareColor; - vFrom.size = strlen(appData.highlightSquareColor); - XtConvert(shellWidget, XtRString, &vFrom, XtRPixel, &vTo); - if (vTo.addr == NULL) { - appData.monoMode = True; - forceMono = True; - } else { - highlightSquareColor = *(Pixel *) vTo.addr; - } - } - - if (!appData.monoMode) { - vFrom.addr = (caddr_t) appData.premoveHighlightColor; - vFrom.size = strlen(appData.premoveHighlightColor); - XtConvert(shellWidget, XtRString, &vFrom, XtRPixel, &vTo); - if (vTo.addr == NULL) { - appData.monoMode = True; - forceMono = True; - } else { - premoveHighlightColor = *(Pixel *) vTo.addr; - } - } - - if (forceMono) { - fprintf(stderr, "%s: too few colors available; trying monochrome mode\n", - programName); - } - - if (appData.monoMode && appData.debugMode) { - fprintf(stderr, "white pixel = 0x%lx, black pixel = 0x%lx\n", - (unsigned long) XWhitePixel(xDisplay, xScreen), - (unsigned long) XBlackPixel(xDisplay, xScreen)); - } - - if (parse_cpair(ColorShout, appData.colorShout) < 0 || - parse_cpair(ColorSShout, appData.colorSShout) < 0 || - parse_cpair(ColorChannel1, appData.colorChannel1) < 0 || - parse_cpair(ColorChannel, appData.colorChannel) < 0 || - parse_cpair(ColorKibitz, appData.colorKibitz) < 0 || - parse_cpair(ColorTell, appData.colorTell) < 0 || - parse_cpair(ColorChallenge, appData.colorChallenge) < 0 || - parse_cpair(ColorRequest, appData.colorRequest) < 0 || - parse_cpair(ColorSeek, appData.colorSeek) < 0 || - parse_cpair(ColorNormal, appData.colorNormal) < 0) - { - if (appData.colorize) { - fprintf(stderr, - "%s: can't parse color names; disabling colorization\n", - programName); - } - appData.colorize = FALSE; - } - textColors[ColorNone].fg = textColors[ColorNone].bg = -1; - textColors[ColorNone].attr = 0; - - XtAppAddActions(appContext, boardActions, XtNumber(boardActions)); - - /* - * widget hierarchy - */ - if (tinyLayout) { - layoutName = "tinyLayout"; - } else if (smallLayout) { - layoutName = "smallLayout"; - } else { - layoutName = "normalLayout"; - } - /* Outer layoutWidget is there only to provide a name for use in - resources that depend on the layout style */ - layoutWidget = - XtCreateManagedWidget(layoutName, formWidgetClass, shellWidget, - layoutArgs, XtNumber(layoutArgs)); - formWidget = - XtCreateManagedWidget("form", formWidgetClass, layoutWidget, - formArgs, XtNumber(formArgs)); - XtSetArg(args[0], XtNdefaultDistance, &sep); - XtGetValues(formWidget, args, 1); - - j = 0; - widgetList[j++] = menuBarWidget = CreateMenuBar(menuBar); - - widgetList[j++] = whiteTimerWidget = - XtCreateWidget("whiteTime", labelWidgetClass, - formWidget, timerArgs, XtNumber(timerArgs)); - XtSetArg(args[0], XtNfont, clockFontStruct); - XtSetValues(whiteTimerWidget, args, 1); - - widgetList[j++] = blackTimerWidget = - XtCreateWidget("blackTime", labelWidgetClass, - formWidget, timerArgs, XtNumber(timerArgs)); - XtSetArg(args[0], XtNfont, clockFontStruct); - XtSetValues(blackTimerWidget, args, 1); - - if (appData.titleInWindow) { - widgetList[j++] = titleWidget = - XtCreateWidget("title", labelWidgetClass, formWidget, - titleArgs, XtNumber(titleArgs)); - } - - if (appData.showButtonBar) { - widgetList[j++] = buttonBarWidget = CreateButtonBar(buttonBar); - } - - widgetList[j++] = messageWidget = - XtCreateWidget("message", labelWidgetClass, formWidget, - messageArgs, XtNumber(messageArgs)); - - widgetList[j++] = boardWidget = - XtCreateWidget("board", widgetClass, formWidget, boardArgs, - XtNumber(boardArgs)); - - XtManageChildren(widgetList, j); - - timerWidth = (boardWidth - sep) / 2; - XtSetArg(args[0], XtNwidth, timerWidth); - XtSetValues(whiteTimerWidget, args, 1); - XtSetValues(blackTimerWidget, args, 1); - - XtSetArg(args[0], XtNbackground, &timerBackgroundPixel); - XtSetArg(args[1], XtNforeground, &timerForegroundPixel); - XtGetValues(whiteTimerWidget, args, 2); - - if (appData.showButtonBar) { - XtSetArg(args[0], XtNbackground, &buttonBackgroundPixel); - XtSetArg(args[1], XtNforeground, &buttonForegroundPixel); - XtGetValues(XtNameToWidget(buttonBarWidget, PAUSE_BUTTON), args, 2); - } - - /* - * formWidget uses these constraints but they are stored - * in the children. - */ - i = 0; - XtSetArg(args[i], XtNfromHoriz, 0); i++; - XtSetValues(menuBarWidget, args, i); - if (appData.titleInWindow) { - if (smallLayout) { - i = 0; - XtSetArg(args[i], XtNfromVert, menuBarWidget); i++; - XtSetValues(whiteTimerWidget, args, i); - i = 0; - XtSetArg(args[i], XtNfromVert, menuBarWidget); i++; - XtSetArg(args[i], XtNfromHoriz, whiteTimerWidget); i++; - XtSetValues(blackTimerWidget, args, i); - i = 0; - XtSetArg(args[i], XtNfromVert, whiteTimerWidget); i++; - XtSetArg(args[i], XtNjustify, XtJustifyLeft); i++; - XtSetValues(titleWidget, args, i); - i = 0; - XtSetArg(args[i], XtNfromVert, titleWidget); i++; - XtSetArg(args[i], XtNresizable, (XtArgVal) True); i++; - XtSetValues(messageWidget, args, i); - if (appData.showButtonBar) { - i = 0; - XtSetArg(args[i], XtNfromVert, titleWidget); i++; - XtSetArg(args[i], XtNfromHoriz, messageWidget); i++; - XtSetValues(buttonBarWidget, args, i); - } - } else { - i = 0; - XtSetArg(args[i], XtNfromVert, titleWidget); i++; - XtSetValues(whiteTimerWidget, args, i); - i = 0; - XtSetArg(args[i], XtNfromVert, titleWidget); i++; - XtSetArg(args[i], XtNfromHoriz, whiteTimerWidget); i++; - XtSetValues(blackTimerWidget, args, i); - i = 0; - XtSetArg(args[i], XtNfromHoriz, menuBarWidget); i++; - XtSetValues(titleWidget, args, i); - i = 0; - XtSetArg(args[i], XtNfromVert, whiteTimerWidget); i++; - XtSetArg(args[i], XtNresizable, (XtArgVal) True); i++; - XtSetValues(messageWidget, args, i); - if (appData.showButtonBar) { - i = 0; - XtSetArg(args[i], XtNfromVert, whiteTimerWidget); i++; - XtSetArg(args[i], XtNfromHoriz, messageWidget); i++; - XtSetValues(buttonBarWidget, args, i); - } - } - } else { - i = 0; - XtSetArg(args[i], XtNfromVert, menuBarWidget); i++; - XtSetValues(whiteTimerWidget, args, i); - i = 0; - XtSetArg(args[i], XtNfromVert, menuBarWidget); i++; - XtSetArg(args[i], XtNfromHoriz, whiteTimerWidget); i++; - XtSetValues(blackTimerWidget, args, i); - i = 0; - XtSetArg(args[i], XtNfromVert, whiteTimerWidget); i++; - XtSetArg(args[i], XtNresizable, (XtArgVal) True); i++; - XtSetValues(messageWidget, args, i); - if (appData.showButtonBar) { - i = 0; - XtSetArg(args[i], XtNfromVert, whiteTimerWidget); i++; - XtSetArg(args[i], XtNfromHoriz, messageWidget); i++; - XtSetValues(buttonBarWidget, args, i); - } - } - i = 0; - XtSetArg(args[0], XtNfromVert, messageWidget); - XtSetValues(boardWidget, args, 1); - - XtRealizeWidget(shellWidget); - - /* - * Correct the width of the message and title widgets. - * It is not known why some systems need the extra fudge term. - * The value "2" is probably larger than needed. - */ - XawFormDoLayout(formWidget, False); -#define WIDTH_FUDGE 2 - i = 0; - XtSetArg(args[i], XtNborderWidth, &bor); i++; - XtSetArg(args[i], XtNheight, &h); i++; - XtGetValues(messageWidget, args, i); - if (appData.showButtonBar) { - i = 0; - XtSetArg(args[i], XtNwidth, &w); i++; - XtGetValues(buttonBarWidget, args, i); - w = boardWidth - w - sep - 2*bor - WIDTH_FUDGE; - } else { - w = boardWidth - 2*bor + 1; /*!! +1 compensates for kludge below */ - } - - gres = XtMakeResizeRequest(messageWidget, w, h, &wr, &hr); - if (gres != XtGeometryYes && appData.debugMode) { - fprintf(stderr, "%s: messageWidget geometry error %d %d %d %d %d\n", - programName, gres, w, h, wr, hr); - } - - /* !! Horrible hack to work around bug in XFree86 4.0.1 (X11R6.4.3) */ - /* The size used for the child widget in layout lags one resize behind - its true size, so we resize a second time, 1 pixel smaller. Yeech! */ - w--; - gres = XtMakeResizeRequest(messageWidget, w, h, &wr, &hr); - if (gres != XtGeometryYes && appData.debugMode) { - fprintf(stderr, "%s: messageWidget geometry error %d %d %d %d %d\n", - programName, gres, w, h, wr, hr); - } - /* !! end hack */ - - if (appData.titleInWindow) { - i = 0; - XtSetArg(args[i], XtNborderWidth, &bor); i++; - XtSetArg(args[i], XtNheight, &h); i++; - XtGetValues(titleWidget, args, i); - if (smallLayout) { - w = boardWidth - 2*bor; - } else { - XtSetArg(args[0], XtNwidth, &w); - XtGetValues(menuBarWidget, args, 1); - w = boardWidth - w - sep - 2*bor - WIDTH_FUDGE; - } - - gres = XtMakeResizeRequest(titleWidget, w, h, &wr, &hr); - if (gres != XtGeometryYes && appData.debugMode) { - fprintf(stderr, - "%s: titleWidget geometry error %d %d %d %d %d\n", - programName, gres, w, h, wr, hr); - } - } - XawFormDoLayout(formWidget, True); - - xBoardWindow = XtWindow(boardWidget); - - /* - * Create X checkmark bitmap and initialize option menu checks. - */ - ReadBitmap(&xMarkPixmap, "checkmark.bm", - checkmark_bits, checkmark_width, checkmark_height); - XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); - if (appData.alwaysPromoteToQueen) { - XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Always Queen"), - args, 1); - } - if (appData.animateDragging) { - XtSetValues(XtNameToWidget(menuBarWidget, - "menuOptions.Animate Dragging"), - args, 1); - } - if (appData.animate) { - XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Animate Moving"), - args, 1); - } - if (appData.autoComment) { - XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Auto Comment"), - args, 1); - } - if (appData.autoCallFlag) { - XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Auto Flag"), - args, 1); - } - if (appData.autoFlipView) { - XtSetValues(XtNameToWidget(menuBarWidget,"menuOptions.Auto Flip View"), - args, 1); - } - if (appData.autoObserve) { - XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Auto Observe"), - args, 1); - } - if (appData.autoRaiseBoard) { - XtSetValues(XtNameToWidget(menuBarWidget, - "menuOptions.Auto Raise Board"), args, 1); - } - if (appData.autoSaveGames) { - XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Auto Save"), - args, 1); - } - if (appData.saveGameFile[0] != NULLCHAR) { - /* Can't turn this off from menu */ - XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Auto Save"), - args, 1); - XtSetSensitive(XtNameToWidget(menuBarWidget, "menuOptions.Auto Save"), - False); - - } - if (appData.blindfold) { - XtSetValues(XtNameToWidget(menuBarWidget, - "menuOptions.Blindfold"), args, 1); - } - if (appData.flashCount > 0) { - XtSetValues(XtNameToWidget(menuBarWidget, - "menuOptions.Flash Moves"), - args, 1); - } - if (appData.getMoveList) { - XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Get Move List"), - args, 1); - } -#if HIGHDRAG - if (appData.highlightDragging) { - XtSetValues(XtNameToWidget(menuBarWidget, - "menuOptions.Highlight Dragging"), - args, 1); - } -#endif - if (appData.highlightLastMove) { - XtSetValues(XtNameToWidget(menuBarWidget, - "menuOptions.Highlight Last Move"), - args, 1); - } - if (appData.icsAlarm) { - XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.ICS Alarm"), - args, 1); - } - if (appData.ringBellAfterMoves) { - XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Move Sound"), - args, 1); - } - if (appData.oldSaveStyle) { - XtSetValues(XtNameToWidget(menuBarWidget, - "menuOptions.Old Save Style"), args, 1); - } - if (appData.periodicUpdates) { - XtSetValues(XtNameToWidget(menuBarWidget, - "menuOptions.Periodic Updates"), args, 1); - } - if (appData.ponderNextMove) { - XtSetValues(XtNameToWidget(menuBarWidget, - "menuOptions.Ponder Next Move"), args, 1); - } - if (appData.popupExitMessage) { - XtSetValues(XtNameToWidget(menuBarWidget, - "menuOptions.Popup Exit Message"), args, 1); - } - if (appData.popupMoveErrors) { - XtSetValues(XtNameToWidget(menuBarWidget, - "menuOptions.Popup Move Errors"), args, 1); - } - if (appData.premove) { - XtSetValues(XtNameToWidget(menuBarWidget, - "menuOptions.Premove"), args, 1); - } - if (appData.quietPlay) { - XtSetValues(XtNameToWidget(menuBarWidget, - "menuOptions.Quiet Play"), args, 1); - } - if (appData.showCoords) { - XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Show Coords"), - args, 1); - } - if (appData.showThinking) { - XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Show Thinking"), - args, 1); - } - if (appData.testLegality) { - XtSetValues(XtNameToWidget(menuBarWidget,"menuOptions.Test Legality"), - args, 1); - } - - /* - * Create an icon. - */ - ReadBitmap(&wIconPixmap, "icon_white.bm", - icon_white_bits, icon_white_width, icon_white_height); - ReadBitmap(&bIconPixmap, "icon_black.bm", - icon_black_bits, icon_black_width, icon_black_height); - iconPixmap = wIconPixmap; - i = 0; - XtSetArg(args[i], XtNiconPixmap, iconPixmap); i++; - XtSetValues(shellWidget, args, i); - - /* - * Create a cursor for the board widget. - */ - window_attributes.cursor = XCreateFontCursor(xDisplay, XC_hand2); - XChangeWindowAttributes(xDisplay, xBoardWindow, - CWCursor, &window_attributes); - - /* - * Inhibit shell resizing. - */ - shellArgs[0].value = (XtArgVal) &w; - shellArgs[1].value = (XtArgVal) &h; - XtGetValues(shellWidget, shellArgs, 2); - shellArgs[4].value = shellArgs[2].value = w; - shellArgs[5].value = shellArgs[3].value = h; - XtSetValues(shellWidget, &shellArgs[2], 4); - - CatchDeleteWindow(shellWidget, "QuitProc"); - - CreateGCs(); - CreateGrid(); -#if HAVE_LIBXPM - if (appData.bitmapDirectory[0] != NULLCHAR) { - CreatePieces(); - } else { - CreateXPMPieces(); - } -#else - CreateXIMPieces(); - /* Create regular pieces */ - if (!useImages) CreatePieces(); -#endif - - CreatePieceMenus(); - - if (appData.animate || appData.animateDragging) - CreateAnimVars(); - - XtAugmentTranslations(formWidget, - XtParseTranslationTable(globalTranslations)); - XtAugmentTranslations(boardWidget, - XtParseTranslationTable(boardTranslations)); - XtAugmentTranslations(whiteTimerWidget, - XtParseTranslationTable(whiteTranslations)); - XtAugmentTranslations(blackTimerWidget, - XtParseTranslationTable(blackTranslations)); - - /* Why is the following needed on some versions of X instead - * of a translation? */ - XtAddEventHandler(boardWidget, ExposureMask, False, - (XtEventHandler) EventProc, NULL); - /* end why */ - - InitBackEnd2(); - - if (errorExitStatus == -1) { - if (appData.icsActive) { - /* We now wait until we see "login:" from the ICS before - sending the logon script (problems with timestamp otherwise) */ - /*ICSInitScript();*/ - if (appData.icsInputBox) ICSInputBoxPopUp(); - } - - signal(SIGINT, IntSigHandler); - signal(SIGTERM, IntSigHandler); - if (*appData.cmailGameName != NULLCHAR) { - signal(SIGUSR1, CmailSigHandler); - } - } - - XtAppMainLoop(appContext); - return 0; -} - -void -ShutDownFrontEnd() -{ - if (appData.icsActive && oldICSInteractionTitle != NULL) { - DisplayIcsInteractionTitle(oldICSInteractionTitle); - } - unlink(gameCopyFilename); - unlink(gamePasteFilename); -} - -RETSIGTYPE -IntSigHandler(sig) - int sig; -{ - ExitEvent(sig); -} - -RETSIGTYPE -CmailSigHandler(sig) - int sig; -{ - int dummy = 0; - int error; - - signal(SIGUSR1, SIG_IGN); /* suspend handler */ - - /* Activate call-back function CmailSigHandlerCallBack() */ - OutputToProcess(cmailPR, (char *)(&dummy), sizeof(int), &error); - - signal(SIGUSR1, CmailSigHandler); /* re-activate handler */ -} - -void -CmailSigHandlerCallBack(isr, closure, message, count, error) - InputSourceRef isr; - VOIDSTAR closure; - char *message; - int count; - int error; -{ - BoardToTop(); - ReloadCmailMsgEvent(TRUE); /* Reload cmail msg */ -} -/**** end signal code ****/ - - -void -ICSInitScript() -{ - FILE *f; - char buf[MSG_SIZ]; - char *p; - - f = fopen(appData.icsLogon, "r"); - if (f == NULL) { - p = getenv("HOME"); - if (p != NULL) { - strcpy(buf, p); - strcat(buf, "/"); - strcat(buf, appData.icsLogon); - f = fopen(buf, "r"); - } - } - if (f != NULL) - ProcessICSInitScript(f); -} - -void -ResetFrontEnd() -{ - CommentPopDown(); - EditCommentPopDown(); - TagsPopDown(); - return; -} - -typedef struct { - char *name; - Boolean value; -} Enables; - -void -SetMenuEnables(enab) - Enables *enab; -{ - Widget w; - if (!menuBarWidget) return; - while (enab->name != NULL) { - w = XtNameToWidget(menuBarWidget, enab->name); - if (w == NULL) { - DisplayError(enab->name, 0); - } else { - XtSetSensitive(w, enab->value); - } - enab++; - } -} - -Enables icsEnables[] = { - { "menuFile.Mail Move", False }, - { "menuFile.Reload CMail Message", False }, - { "menuMode.Machine Black", False }, - { "menuMode.Machine White", False }, - { "menuMode.Analysis Mode", False }, - { "menuMode.Analyze File", False }, - { "menuMode.Two Machines", False }, -#ifndef ZIPPY - { "menuHelp.Hint", False }, - { "menuHelp.Book", False }, - { "menuStep.Move Now", False }, - { "menuOptions.Periodic Updates", False }, - { "menuOptions.Show Thinking", False }, - { "menuOptions.Ponder Next Move", False }, -#endif - { NULL, False } -}; - -Enables ncpEnables[] = { - { "menuFile.Mail Move", False }, - { "menuFile.Reload CMail Message", False }, - { "menuMode.Machine White", False }, - { "menuMode.Machine Black", False }, - { "menuMode.Analysis Mode", False }, - { "menuMode.Analyze File", False }, - { "menuMode.Two Machines", False }, - { "menuMode.ICS Client", False }, - { "menuMode.ICS Input Box", False }, - { "Action", False }, - { "menuStep.Revert", False }, - { "menuStep.Move Now", False }, - { "menuStep.Retract Move", False }, - { "menuOptions.Auto Comment", False }, - { "menuOptions.Auto Flag", False }, - { "menuOptions.Auto Flip View", False }, - { "menuOptions.Auto Observe", False }, - { "menuOptions.Auto Raise Board", False }, - { "menuOptions.Get Move List", False }, - { "menuOptions.ICS Alarm", False }, - { "menuOptions.Move Sound", False }, - { "menuOptions.Quiet Play", False }, - { "menuOptions.Show Thinking", False }, - { "menuOptions.Periodic Updates", False }, - { "menuOptions.Ponder Next Move", False }, - { "menuHelp.Hint", False }, - { "menuHelp.Book", False }, - { NULL, False } -}; - -Enables gnuEnables[] = { - { "menuMode.ICS Client", False }, - { "menuMode.ICS Input Box", False }, - { "menuAction.Accept", False }, - { "menuAction.Decline", False }, - { "menuAction.Rematch", False }, - { "menuAction.Adjourn", False }, - { "menuAction.Stop Examining", False }, - { "menuAction.Stop Observing", False }, - { "menuStep.Revert", False }, - { "menuOptions.Auto Comment", False }, - { "menuOptions.Auto Observe", False }, - { "menuOptions.Auto Raise Board", False }, - { "menuOptions.Get Move List", False }, - { "menuOptions.Premove", False }, - { "menuOptions.Quiet Play", False }, - - /* The next two options rely on SetCmailMode being called *after* */ - /* SetGNUMode so that when GNU is being used to give hints these */ - /* menu options are still available */ - - { "menuFile.Mail Move", False }, - { "menuFile.Reload CMail Message", False }, - { NULL, False } -}; - -Enables cmailEnables[] = { - { "Action", True }, - { "menuAction.Call Flag", False }, - { "menuAction.Draw", True }, - { "menuAction.Adjourn", False }, - { "menuAction.Abort", False }, - { "menuAction.Stop Observing", False }, - { "menuAction.Stop Examining", False }, - { "menuFile.Mail Move", True }, - { "menuFile.Reload CMail Message", True }, - { NULL, False } -}; - -Enables trainingOnEnables[] = { - { "menuMode.Edit Comment", False }, - { "menuMode.Pause", False }, - { "menuStep.Forward", False }, - { "menuStep.Backward", False }, - { "menuStep.Forward to End", False }, - { "menuStep.Back to Start", False }, - { "menuStep.Move Now", False }, - { "menuStep.Truncate Game", False }, - { NULL, False } -}; - -Enables trainingOffEnables[] = { - { "menuMode.Edit Comment", True }, - { "menuMode.Pause", True }, - { "menuStep.Forward", True }, - { "menuStep.Backward", True }, - { "menuStep.Forward to End", True }, - { "menuStep.Back to Start", True }, - { "menuStep.Move Now", True }, - { "menuStep.Truncate Game", True }, - { NULL, False } -}; - -Enables machineThinkingEnables[] = { - { "menuFile.Load Game", False }, - { "menuFile.Load Next Game", False }, - { "menuFile.Load Previous Game", False }, - { "menuFile.Reload Same Game", False }, - { "menuFile.Paste Game", False }, - { "menuFile.Load Position", False }, - { "menuFile.Load Next Position", False }, - { "menuFile.Load Previous Position", False }, - { "menuFile.Reload Same Position", False }, - { "menuFile.Paste Position", False }, - { "menuMode.Machine White", False }, - { "menuMode.Machine Black", False }, - { "menuMode.Two Machines", False }, - { "menuStep.Retract Move", False }, - { NULL, False } -}; - -Enables userThinkingEnables[] = { - { "menuFile.Load Game", True }, - { "menuFile.Load Next Game", True }, - { "menuFile.Load Previous Game", True }, - { "menuFile.Reload Same Game", True }, - { "menuFile.Paste Game", True }, - { "menuFile.Load Position", True }, - { "menuFile.Load Next Position", True }, - { "menuFile.Load Previous Position", True }, - { "menuFile.Reload Same Position", True }, - { "menuFile.Paste Position", True }, - { "menuMode.Machine White", True }, - { "menuMode.Machine Black", True }, - { "menuMode.Two Machines", True }, - { "menuStep.Retract Move", True }, - { NULL, False } -}; - -void SetICSMode() -{ - SetMenuEnables(icsEnables); -} - -void -SetNCPMode() -{ - SetMenuEnables(ncpEnables); -} - -void -SetGNUMode() -{ - SetMenuEnables(gnuEnables); -} - -void -SetCmailMode() -{ - SetMenuEnables(cmailEnables); -} - -void -SetTrainingModeOn() -{ - SetMenuEnables(trainingOnEnables); - if (appData.showButtonBar) { - XtSetSensitive(buttonBarWidget, False); - } - CommentPopDown(); -} - -void -SetTrainingModeOff() -{ - SetMenuEnables(trainingOffEnables); - if (appData.showButtonBar) { - XtSetSensitive(buttonBarWidget, True); - } -} - -void -SetUserThinkingEnables() -{ - if (appData.noChessProgram) return; - SetMenuEnables(userThinkingEnables); -} - -void -SetMachineThinkingEnables() -{ - if (appData.noChessProgram) return; - SetMenuEnables(machineThinkingEnables); - switch (gameMode) { - case MachinePlaysBlack: - case MachinePlaysWhite: - case TwoMachinesPlay: - XtSetSensitive(XtNameToWidget(menuBarWidget, - ModeToWidgetName(gameMode)), True); - break; - default: - break; - } -} - -#define Abs(n) ((n)<0 ? -(n) : (n)) - -/* - * Find a font that matches "pattern" that is as close as - * possible to the targetPxlSize. Prefer fonts that are k - * pixels smaller to fonts that are k pixels larger. The - * pattern must be in the X Consortium standard format, - * e.g. "-*-helvetica-bold-r-normal--*-*-*-*-*-*-*-*". - * The return value should be freed with XtFree when no - * longer needed. - */ -char *FindFont(pattern, targetPxlSize) - char *pattern; - int targetPxlSize; -{ - char **fonts, *p, *best, *scalable, *scalableTail; - int i, j, nfonts, minerr, err, pxlSize; - - fonts = XListFonts(xDisplay, pattern, 999999, &nfonts); - if (nfonts < 1) { - fprintf(stderr, "%s: no fonts match pattern %s\n", - programName, pattern); - exit(2); - } - best = fonts[0]; - scalable = NULL; - minerr = 999999; - for (i=0; i 0 && err < 0 && -err == minerr)) { - best = fonts[i]; - minerr = err; - } - } - } - if (scalable && Abs(minerr) > appData.fontSizeTolerance) { - /* If the error is too big and there is a scalable font, - use the scalable font. */ - int headlen = scalableTail - scalable; - p = (char *) XtMalloc(strlen(scalable) + 10); - while (isdigit(*scalableTail)) scalableTail++; - sprintf(p, "%.*s%d%s", headlen, scalable, targetPxlSize, scalableTail); - } else { - p = (char *) XtMalloc(strlen(best) + 1); - strcpy(p, best); - } - if (appData.debugMode) { - fprintf(debugFP, "resolved %s at pixel size %d\n to %s\n", - pattern, targetPxlSize, p); - } - XFreeFontNames(fonts); - return p; -} - -void CreateGCs() -{ - XtGCMask value_mask = GCLineWidth | GCLineStyle | GCForeground - | GCBackground | GCFunction | GCPlaneMask; - XGCValues gc_values; - GC copyInvertedGC; - - gc_values.plane_mask = AllPlanes; - gc_values.line_width = lineGap; - gc_values.line_style = LineSolid; - gc_values.function = GXcopy; - - gc_values.foreground = XBlackPixel(xDisplay, xScreen); - gc_values.background = XBlackPixel(xDisplay, xScreen); - lineGC = XtGetGC(shellWidget, value_mask, &gc_values); - - gc_values.foreground = XBlackPixel(xDisplay, xScreen); - gc_values.background = XWhitePixel(xDisplay, xScreen); - coordGC = XtGetGC(shellWidget, value_mask, &gc_values); - XSetFont(xDisplay, coordGC, coordFontID); - - if (appData.monoMode) { - gc_values.foreground = XWhitePixel(xDisplay, xScreen); - gc_values.background = XWhitePixel(xDisplay, xScreen); - highlineGC = XtGetGC(shellWidget, value_mask, &gc_values); - - gc_values.foreground = XWhitePixel(xDisplay, xScreen); - gc_values.background = XBlackPixel(xDisplay, xScreen); - lightSquareGC = wbPieceGC - = XtGetGC(shellWidget, value_mask, &gc_values); - - gc_values.foreground = XBlackPixel(xDisplay, xScreen); - gc_values.background = XWhitePixel(xDisplay, xScreen); - darkSquareGC = bwPieceGC - = XtGetGC(shellWidget, value_mask, &gc_values); - - if (DefaultDepth(xDisplay, xScreen) == 1) { - /* Avoid XCopyPlane on 1-bit screens to work around Sun bug */ - gc_values.function = GXcopyInverted; - copyInvertedGC = XtGetGC(shellWidget, value_mask, &gc_values); - gc_values.function = GXcopy; - if (XBlackPixel(xDisplay, xScreen) == 1) { - bwPieceGC = darkSquareGC; - wbPieceGC = copyInvertedGC; - } else { - bwPieceGC = copyInvertedGC; - wbPieceGC = lightSquareGC; - } - } - } else { - gc_values.foreground = highlightSquareColor; - gc_values.background = highlightSquareColor; - highlineGC = XtGetGC(shellWidget, value_mask, &gc_values); - - gc_values.foreground = premoveHighlightColor; - gc_values.background = premoveHighlightColor; - prelineGC = XtGetGC(shellWidget, value_mask, &gc_values); - - gc_values.foreground = lightSquareColor; - gc_values.background = darkSquareColor; - lightSquareGC = XtGetGC(shellWidget, value_mask, &gc_values); - - gc_values.foreground = darkSquareColor; - gc_values.background = lightSquareColor; - darkSquareGC = XtGetGC(shellWidget, value_mask, &gc_values); - - gc_values.foreground = jailSquareColor; - gc_values.background = jailSquareColor; - jailSquareGC = XtGetGC(shellWidget, value_mask, &gc_values); - - gc_values.foreground = whitePieceColor; - gc_values.background = darkSquareColor; - wdPieceGC = XtGetGC(shellWidget, value_mask, &gc_values); - - gc_values.foreground = whitePieceColor; - gc_values.background = lightSquareColor; - wlPieceGC = XtGetGC(shellWidget, value_mask, &gc_values); - - gc_values.foreground = whitePieceColor; - gc_values.background = jailSquareColor; - wjPieceGC = XtGetGC(shellWidget, value_mask, &gc_values); - - gc_values.foreground = blackPieceColor; - gc_values.background = darkSquareColor; - bdPieceGC = XtGetGC(shellWidget, value_mask, &gc_values); - - gc_values.foreground = blackPieceColor; - gc_values.background = lightSquareColor; - blPieceGC = XtGetGC(shellWidget, value_mask, &gc_values); - - gc_values.foreground = blackPieceColor; - gc_values.background = jailSquareColor; - bjPieceGC = XtGetGC(shellWidget, value_mask, &gc_values); - } -} - -void loadXIM(xim, xmask, filename, dest, mask) - XImage *xim; - XImage *xmask; - char *filename; - Pixmap *dest; - Pixmap *mask; -{ - int x, y, w, h, p; - FILE *fp; - Pixmap temp; - XGCValues values; - GC maskGC; - - fp = fopen(filename, "rb"); - if (!fp) { - fprintf(stderr, "%s: error loading XIM!\n", programName); - exit(1); - } - - w = fgetc(fp); - h = fgetc(fp); - - for (y=0; ydepth); - XPutImage(xDisplay, *dest, lightSquareGC, xim, - 0, 0, 0, 0, w, h); - - /* create Pixmap of clipmask - Note: We assume the white/black pieces have the same - outline, so we make only 6 masks. This is okay - since the XPM clipmask routines do the same. */ - if (xmask) { - temp = XCreatePixmap(xDisplay, DefaultRootWindow(xDisplay), - w, h, xim->depth); - XPutImage(xDisplay, temp, lightSquareGC, xmask, - 0, 0, 0, 0, w, h); - - /* now create the 1-bit version */ - *mask = XCreatePixmap(xDisplay, DefaultRootWindow(xDisplay), - w, h, 1); - - values.foreground = 1; - values.background = 0; - - /* Don't use XtGetGC, not read only */ - maskGC = XCreateGC(xDisplay, *mask, - GCForeground | GCBackground, &values); - XCopyPlane(xDisplay, temp, *mask, maskGC, - 0, 0, squareSize, squareSize, 0, 0, 1); - XFreePixmap(xDisplay, temp); - } -} - -void CreateXIMPieces() -{ - int piece, kind; - char buf[MSG_SIZ]; - u_int ss; - static char *ximkind[] = { "ll", "ld", "dl", "dd" }; - XImage *ximtemp; - - ss = squareSize; - - /* 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 */ - - /* temp needed by loadXIM() */ - ximtemp = XGetImage(xDisplay, DefaultRootWindow(xDisplay), - 0, 0, ss, ss, AllPlanes, XYPixmap); - - if (strlen(appData.pixmapDirectory) == 0) { - useImages = 0; - } else { - useImages = 1; - if (appData.monoMode) { - DisplayFatalError("XIM pieces cannot be used in monochrome mode", - 0, 2); - ExitEvent(2); - } - fprintf(stderr, "\nLoading XIMs...\n"); - /* Load pieces */ - for (piece = (int) WhitePawn; piece <= (int) WhiteKing; piece++) { - fprintf(stderr, "%d", piece+1); - for (kind=0; kind<4; kind++) { - fprintf(stderr, "."); - sprintf(buf, "%s/%c%s%u.xim", - ExpandPathName(appData.pixmapDirectory), - ToLower(PieceToChar((ChessSquare)piece)), - ximkind[kind], ss); - ximPieceBitmap[kind][piece] = - XGetImage(xDisplay, DefaultRootWindow(xDisplay), - 0, 0, ss, ss, AllPlanes, XYPixmap); - if (appData.debugMode) - fprintf(stderr, "(File:%s:) ", buf); - loadXIM(ximPieceBitmap[kind][piece], - ximtemp, buf, - &(xpmPieceBitmap[kind][piece]), - &(ximMaskPm[piece%6])); - } - fprintf(stderr," "); - } - /* Load light and dark squares */ - /* If the LSQ and DSQ pieces don't exist, we will - draw them with solid squares. */ - sprintf(buf, "%s/lsq%u.xim", ExpandPathName(appData.pixmapDirectory), ss); - if (access(buf, 0) != 0) { - useImageSqs = 0; - } else { - useImageSqs = 1; - fprintf(stderr, "light square "); - ximLightSquare= - XGetImage(xDisplay, DefaultRootWindow(xDisplay), - 0, 0, ss, ss, AllPlanes, XYPixmap); - if (appData.debugMode) - fprintf(stderr, "(File:%s:) ", buf); - - loadXIM(ximLightSquare, NULL, buf, &xpmLightSquare, NULL); - fprintf(stderr, "dark square "); - sprintf(buf, "%s/dsq%u.xim", - ExpandPathName(appData.pixmapDirectory), ss); - if (appData.debugMode) - fprintf(stderr, "(File:%s:) ", buf); - ximDarkSquare= - XGetImage(xDisplay, DefaultRootWindow(xDisplay), - 0, 0, ss, ss, AllPlanes, XYPixmap); - loadXIM(ximDarkSquare, NULL, buf, &xpmDarkSquare, NULL); - xpmJailSquare = xpmLightSquare; - } - fprintf(stderr, "Done.\n"); - } - XSynchronize(xDisplay, False); /* Work-around for xlib/xt buffering bug */ -} - -#if HAVE_LIBXPM -void CreateXPMPieces() -{ - int piece, kind, r; - char buf[MSG_SIZ]; - u_int ss = squareSize; - XpmAttributes attr; - 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 */ - - /* Setup translations so piece colors match square colors */ - symbols[0].name = "light_piece"; - symbols[0].value = appData.whitePieceColor; - symbols[1].name = "dark_piece"; - symbols[1].value = appData.blackPieceColor; - symbols[2].name = "light_square"; - symbols[2].value = appData.lightSquareColor; - symbols[3].name = "dark_square"; - symbols[3].value = appData.darkSquareColor; - - attr.valuemask = XpmColorSymbols; - attr.colorsymbols = symbols; - attr.numsymbols = 4; - - if (appData.monoMode) { - DisplayFatalError("XPM pieces cannot be used in monochrome mode", - 0, 2); - ExitEvent(2); - } - if (strlen(appData.pixmapDirectory) == 0) { - XpmPieces* pieces = builtInXpms; - useImages = 1; - /* Load pieces */ - while (pieces->size != squareSize && pieces->size) pieces++; - if (!pieces->size) { - fprintf(stderr, "No builtin XPM pieces of size %d\n", squareSize); - exit(1); - } - for (piece = (int) WhitePawn; piece <= (int) WhiteKing; piece++) { - for (kind=0; kind<4; kind++) { - - if ((r=XpmCreatePixmapFromData(xDisplay, xBoardWindow, - pieces->xpm[piece][kind], - &(xpmPieceBitmap[kind][piece]), - NULL, &attr)) != 0) { - fprintf(stderr, "Error %d loading XPM image \"%s\"\n", - r, buf); - exit(1); - } - } - } - useImageSqs = 0; - xpmJailSquare = xpmLightSquare; - } else { - useImages = 1; - - fprintf(stderr, "\nLoading XPMs...\n"); - - /* Load pieces */ - for (piece = (int) WhitePawn; piece <= (int) WhiteKing; piece++) { - fprintf(stderr, "%d ", piece+1); - for (kind=0; kind<4; kind++) { - sprintf(buf, "%s/%c%s%u.xpm", - ExpandPathName(appData.pixmapDirectory), - ToLower(PieceToChar((ChessSquare)piece)), - xpmkind[kind], ss); - if (appData.debugMode) { - fprintf(stderr, "(File:%s:) ", buf); - } - if ((r=XpmReadFileToPixmap(xDisplay, xBoardWindow, buf, - &(xpmPieceBitmap[kind][piece]), - NULL, &attr)) != 0) { - fprintf(stderr, "Error %d loading XPM file \"%s\"\n", - r, buf); - exit(1); - } - } - } - /* Load light and dark squares */ - /* If the LSQ and DSQ pieces don't exist, we will - draw them with solid squares. */ - fprintf(stderr, "light square "); - sprintf(buf, "%s/lsq%u.xpm", ExpandPathName(appData.pixmapDirectory), ss); - if (access(buf, 0) != 0) { - useImageSqs = 0; - } else { - useImageSqs = 1; - if (appData.debugMode) - fprintf(stderr, "(File:%s:) ", buf); - - if ((r=XpmReadFileToPixmap(xDisplay, xBoardWindow, buf, - &xpmLightSquare, NULL, &attr)) != 0) { - fprintf(stderr, "Error %d loading XPM file \"%s\"\n", r, buf); - exit(1); - } - fprintf(stderr, "dark square "); - sprintf(buf, "%s/dsq%u.xpm", - ExpandPathName(appData.pixmapDirectory), ss); - if (appData.debugMode) { - fprintf(stderr, "(File:%s:) ", buf); - } - if ((r=XpmReadFileToPixmap(xDisplay, xBoardWindow, buf, - &xpmDarkSquare, NULL, &attr)) != 0) { - fprintf(stderr, "Error %d loading XPM file \"%s\"\n", r, buf); - exit(1); - } - } - xpmJailSquare = xpmLightSquare; - fprintf(stderr, "Done.\n"); - } - XSynchronize(xDisplay, False); /* Work-around for xlib/xt - buffering bug */ -} -#endif /* HAVE_LIBXPM */ - -#if HAVE_LIBXPM -/* No built-in bitmaps */ -void CreatePieces() -{ - int piece, kind; - char buf[MSG_SIZ]; - u_int ss = squareSize; - - XSynchronize(xDisplay, True); /* Work-around for xlib/xt - buffering bug */ - - for (kind = SOLID; kind <= (appData.monoMode ? OUTLINE : SOLID); kind++) { - for (piece = (int) WhitePawn; piece <= (int) WhiteKing; piece++) { - sprintf(buf, "%c%u%c.bm", ToLower(PieceToChar((ChessSquare)piece)), - ss, kind == SOLID ? 's' : 'o'); - ReadBitmap(&pieceBitmap[kind][piece], buf, NULL, ss, ss); - } - } - - XSynchronize(xDisplay, False); /* Work-around for xlib/xt - buffering bug */ -} -#else -/* With built-in bitmaps */ -void CreatePieces() -{ - BuiltInBits* bib = builtInBits; - int piece, kind; - char buf[MSG_SIZ]; - u_int ss = squareSize; - - XSynchronize(xDisplay, True); /* Work-around for xlib/xt - buffering bug */ - - while (bib->squareSize != ss && bib->squareSize != 0) bib++; - - for (kind = SOLID; kind <= (appData.monoMode ? OUTLINE : SOLID); kind++) { - for (piece = (int) WhitePawn; piece <= (int) WhiteKing; piece++) { - sprintf(buf, "%c%u%c.bm", ToLower(PieceToChar((ChessSquare)piece)), - ss, kind == SOLID ? 's' : 'o'); - ReadBitmap(&pieceBitmap[kind][piece], buf, - bib->bits[kind][piece], ss, ss); - } - } - - XSynchronize(xDisplay, False); /* Work-around for xlib/xt - buffering bug */ -} -#endif - -void ReadBitmap(pm, name, bits, wreq, hreq) - Pixmap *pm; - String name; - unsigned char bits[]; - u_int wreq, hreq; -{ - int x_hot, y_hot; - u_int w, h; - int errcode; - char msg[MSG_SIZ], fullname[MSG_SIZ]; - - if (*appData.bitmapDirectory != NULLCHAR) { - strcpy(fullname, appData.bitmapDirectory); - strcat(fullname, "/"); - strcat(fullname, name); - errcode = XReadBitmapFile(xDisplay, xBoardWindow, fullname, - &w, &h, pm, &x_hot, &y_hot); - if (errcode != BitmapSuccess) { - switch (errcode) { - case BitmapOpenFailed: - sprintf(msg, "Can't open bitmap file %s", fullname); - break; - case BitmapFileInvalid: - sprintf(msg, "Invalid bitmap in file %s", fullname); - break; - case BitmapNoMemory: - sprintf(msg, "Ran out of memory reading bitmap file %s", - fullname); - break; - default: - sprintf(msg, "Unknown XReadBitmapFile error %d on file %s", - errcode, fullname); - break; - } - fprintf(stderr, "%s: %s...using built-in\n", - programName, msg); - } else if (w != wreq || h != hreq) { - fprintf(stderr, - "%s: Bitmap %s is %dx%d, not %dx%d...using built-in\n", - programName, fullname, w, h, wreq, hreq); - } else { - return; - } - } - if (bits == NULL) { - fprintf(stderr, "%s: No built-in bitmap for %s; giving up\n", - programName, name); - exit(1); - } else { - *pm = XCreateBitmapFromData(xDisplay, xBoardWindow, (char *) bits, - wreq, hreq); - } -} - -void CreateGrid() -{ - int i; - - if (lineGap == 0) return; - for (i = 0; i < BOARD_SIZE + 1; i++) { - gridSegments[i].x1 = 0; - gridSegments[i].x2 = - lineGap + BOARD_SIZE * (squareSize + lineGap); - gridSegments[i].y1 = gridSegments[i].y2 - = lineGap / 2 + (i * (squareSize + lineGap)); - - gridSegments[i + BOARD_SIZE + 1].y1 = 0; - gridSegments[i + BOARD_SIZE + 1].y2 = - BOARD_SIZE * (squareSize + lineGap); - gridSegments[i + BOARD_SIZE + 1].x1 = - gridSegments[i + BOARD_SIZE + 1].x2 - = lineGap / 2 + (i * (squareSize + lineGap)); - } -} - -static void MenuBarSelect(w, addr, index) - Widget w; - caddr_t addr; - caddr_t index; -{ - XtActionProc proc = (XtActionProc) addr; - - (proc)(NULL, NULL, NULL, NULL); -} - -void CreateMenuBarPopup(parent, name, mb) - Widget parent; - String name; - Menu *mb; -{ - int j; - Widget menu, entry; - MenuItem *mi; - Arg args[16]; - - menu = XtCreatePopupShell(name, simpleMenuWidgetClass, - parent, NULL, 0); - j = 0; - XtSetArg(args[j], XtNleftMargin, 20); j++; - XtSetArg(args[j], XtNrightMargin, 20); j++; - mi = mb->mi; - while (mi->string != NULL) { - if (strcmp(mi->string, "----") == 0) { - entry = XtCreateManagedWidget(mi->string, smeLineObjectClass, - menu, args, j); - } else { - entry = XtCreateManagedWidget(mi->string, smeBSBObjectClass, - menu, args, j); - XtAddCallback(entry, XtNcallback, - (XtCallbackProc) MenuBarSelect, - (caddr_t) mi->proc); - } - mi++; - } -} - -Widget CreateMenuBar(mb) - Menu *mb; -{ - int j; - Widget anchor, menuBar; - Arg args[16]; - char menuName[MSG_SIZ]; - - j = 0; - XtSetArg(args[j], XtNorientation, XtorientHorizontal); j++; - XtSetArg(args[j], XtNvSpace, 0); j++; - XtSetArg(args[j], XtNborderWidth, 0); j++; - menuBar = XtCreateWidget("menuBar", boxWidgetClass, - formWidget, args, j); - - while (mb->name != NULL) { - strcpy(menuName, "menu"); - strcat(menuName, mb->name); - j = 0; - XtSetArg(args[j], XtNmenuName, XtNewString(menuName)); j++; - if (tinyLayout) { - char shortName[2]; - shortName[0] = mb->name[0]; - shortName[1] = NULLCHAR; - XtSetArg(args[j], XtNlabel, XtNewString(shortName)); j++; - } - XtSetArg(args[j], XtNborderWidth, 0); j++; - anchor = XtCreateManagedWidget(mb->name, menuButtonWidgetClass, - menuBar, args, j); - CreateMenuBarPopup(menuBar, menuName, mb); - mb++; - } - return menuBar; -} - -Widget CreateButtonBar(mi) - MenuItem *mi; -{ - int j; - Widget button, buttonBar; - Arg args[16]; - - j = 0; - XtSetArg(args[j], XtNorientation, XtorientHorizontal); j++; - if (tinyLayout) { - XtSetArg(args[j], XtNhSpace, 0); j++; - } - XtSetArg(args[j], XtNborderWidth, 0); j++; - XtSetArg(args[j], XtNvSpace, 0); j++; - buttonBar = XtCreateWidget("buttonBar", boxWidgetClass, - formWidget, args, j); - - while (mi->string != NULL) { - j = 0; - if (tinyLayout) { - XtSetArg(args[j], XtNinternalWidth, 2); j++; - XtSetArg(args[j], XtNborderWidth, 0); j++; - } - button = XtCreateManagedWidget(mi->string, commandWidgetClass, - buttonBar, args, j); - XtAddCallback(button, XtNcallback, - (XtCallbackProc) MenuBarSelect, - (caddr_t) mi->proc); - mi++; - } - return buttonBar; -} - -Widget -CreatePieceMenu(name, color) - char *name; - int color; -{ - int i; - Widget entry, menu; - Arg args[16]; - ChessSquare selection; - - menu = XtCreatePopupShell(name, simpleMenuWidgetClass, - boardWidget, args, 0); - - for (i = 0; i < PIECE_MENU_SIZE; i++) { - String item = pieceMenuStrings[color][i]; - - if (strcmp(item, "----") == 0) { - entry = XtCreateManagedWidget(item, smeLineObjectClass, - menu, NULL, 0); - } else { - entry = XtCreateManagedWidget(item, smeBSBObjectClass, - menu, NULL, 0); - selection = pieceMenuTranslation[color][i]; - XtAddCallback(entry, XtNcallback, - (XtCallbackProc) PieceMenuSelect, - (caddr_t) selection); - if (selection == WhitePawn || selection == BlackPawn) { - XtSetArg(args[0], XtNpopupOnEntry, entry); - XtSetValues(menu, args, 1); - } - } - } - return menu; -} - -void -CreatePieceMenus() -{ - int i; - Widget entry; - Arg args[16]; - ChessSquare selection; - - whitePieceMenu = CreatePieceMenu("menuW", 0); - blackPieceMenu = CreatePieceMenu("menuB", 1); - - XtRegisterGrabAction(PieceMenuPopup, True, - (unsigned)(ButtonPressMask|ButtonReleaseMask), - GrabModeAsync, GrabModeAsync); - - XtSetArg(args[0], XtNlabel, "Drop"); - dropMenu = XtCreatePopupShell("menuD", simpleMenuWidgetClass, - boardWidget, args, 1); - for (i = 0; i < DROP_MENU_SIZE; i++) { - String item = dropMenuStrings[i]; - - if (strcmp(item, "----") == 0) { - entry = XtCreateManagedWidget(item, smeLineObjectClass, - dropMenu, NULL, 0); - } else { - entry = XtCreateManagedWidget(item, smeBSBObjectClass, - dropMenu, NULL, 0); - selection = dropMenuTranslation[i]; - XtAddCallback(entry, XtNcallback, - (XtCallbackProc) DropMenuSelect, - (caddr_t) selection); - } - } -} - -void SetupDropMenu() -{ - int i, j, count; - char label[32]; - Arg args[16]; - Widget entry; - char* p; - - for (i=0; itype != ButtonPress) return; - if (errorUp) ErrorPopDown(); - switch (gameMode) { - case EditPosition: - case IcsExamining: - whichMenu = params[0]; - break; - case IcsPlayingWhite: - case IcsPlayingBlack: - case EditGame: - case MachinePlaysWhite: - case MachinePlaysBlack: - if (appData.testLegality && - gameInfo.variant != VariantBughouse && - gameInfo.variant != VariantCrazyhouse) return; - SetupDropMenu(); - whichMenu = "menuD"; - break; - default: - return; - } - - if (((pmFromX = EventToSquare(event->xbutton.x, BOARD_SIZE)) < 0) || - ((pmFromY = EventToSquare(event->xbutton.y, BOARD_SIZE)) < 0)) { - pmFromX = pmFromY = -1; - return; - } - if (flipView) - pmFromX = BOARD_SIZE - 1 - pmFromX; - else - pmFromY = BOARD_SIZE - 1 - pmFromY; - - XtPopupSpringLoaded(XtNameToWidget(boardWidget, whichMenu)); -} - -static void PieceMenuSelect(w, piece, junk) - Widget w; - ChessSquare piece; - caddr_t junk; -{ - if (pmFromX < 0 || pmFromY < 0) return; - EditPositionMenuEvent(piece, pmFromX, pmFromY); -} - -static void DropMenuSelect(w, piece, junk) - Widget w; - ChessSquare piece; - caddr_t junk; -{ - if (pmFromX < 0 || pmFromY < 0) return; - DropMenuEvent(piece, pmFromX, pmFromY); -} - -void WhiteClock(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - if (gameMode == EditPosition || gameMode == IcsExamining) { - SetWhiteToPlayEvent(); - } else if (gameMode == IcsPlayingBlack || gameMode == MachinePlaysWhite) { - CallFlagEvent(); - } -} - -void BlackClock(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - if (gameMode == EditPosition || gameMode == IcsExamining) { - SetBlackToPlayEvent(); - } else if (gameMode == IcsPlayingWhite || gameMode == MachinePlaysBlack) { - CallFlagEvent(); - } -} - - -/* - * If the user selects on a border boundary, return -1; if off the board, - * return -2. Otherwise map the event coordinate to the square. - */ -int EventToSquare(x, limit) - 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 >= limit) - return -2; - return x; -} - -static void do_flash_delay(msec) - unsigned long msec; -{ - TimeDelay(msec); -} - -static void drawHighlight(file, rank, gc) - int file, rank; - GC gc; -{ - int x, y; - - if (lineGap == 0 || appData.blindfold) return; - - if (flipView) { - x = lineGap/2 + ((BOARD_SIZE-1)-file) * - (squareSize + lineGap); - y = lineGap/2 + rank * (squareSize + lineGap); - } else { - x = lineGap/2 + file * (squareSize + lineGap); - y = lineGap/2 + ((BOARD_SIZE-1)-rank) * - (squareSize + lineGap); - } - - XDrawRectangle(xDisplay, xBoardWindow, gc, x, y, - squareSize+lineGap, squareSize+lineGap); -} - -int hi1X = -1, hi1Y = -1, hi2X = -1, hi2Y = -1; -int pm1X = -1, pm1Y = -1, pm2X = -1, pm2Y = -1; - -void -SetHighlights(fromX, fromY, toX, toY) - int fromX, fromY, toX, toY; -{ - if (hi1X != fromX || hi1Y != fromY) { - if (hi1X >= 0 && hi1Y >= 0) { - drawHighlight(hi1X, hi1Y, lineGC); - } - if (fromX >= 0 && fromY >= 0) { - drawHighlight(fromX, fromY, highlineGC); - } - } - if (hi2X != toX || hi2Y != toY) { - if (hi2X >= 0 && hi2Y >= 0) { - drawHighlight(hi2X, hi2Y, lineGC); - } - if (toX >= 0 && toY >= 0) { - drawHighlight(toX, toY, highlineGC); - } - } - hi1X = fromX; - hi1Y = fromY; - hi2X = toX; - hi2Y = toY; -} - -void -ClearHighlights() -{ - SetHighlights(-1, -1, -1, -1); -} - - -void -SetPremoveHighlights(fromX, fromY, toX, toY) - int fromX, fromY, toX, toY; -{ - if (pm1X != fromX || pm1Y != fromY) { - if (pm1X >= 0 && pm1Y >= 0) { - drawHighlight(pm1X, pm1Y, lineGC); - } - if (fromX >= 0 && fromY >= 0) { - drawHighlight(fromX, fromY, prelineGC); - } - } - if (pm2X != toX || pm2Y != toY) { - if (pm2X >= 0 && pm2Y >= 0) { - drawHighlight(pm2X, pm2Y, lineGC); - } - if (toX >= 0 && toY >= 0) { - drawHighlight(toX, toY, prelineGC); - } - } - pm1X = fromX; - pm1Y = fromY; - pm2X = toX; - pm2Y = toY; -} - -void -ClearPremoveHighlights() -{ - SetPremoveHighlights(-1, -1, -1, -1); -} - -static void BlankSquare(x, y, color, piece, dest) - int x, y, color; - ChessSquare piece; - Drawable dest; -{ - if (useImages && useImageSqs) { - Pixmap pm; - switch (color) { - case 1: /* light */ - pm = xpmLightSquare; - break; - case 0: /* dark */ - pm = xpmDarkSquare; - break; - case 2: /* neutral */ - default: - pm = xpmJailSquare; - break; - } - XCopyArea(xDisplay, pm, dest, wlPieceGC, 0, 0, - squareSize, squareSize, x, y); - } else { - GC gc; - switch (color) { - case 1: /* light */ - gc = lightSquareGC; - break; - case 0: /* dark */ - gc = darkSquareGC; - break; - case 2: /* neutral */ - default: - gc = jailSquareGC; - break; - } - XFillRectangle(xDisplay, dest, gc, x, y, squareSize, squareSize); - } -} - -/* - I split out the routines to draw a piece so that I could - make a generic flash routine. -*/ -static void monoDrawPiece_1bit(piece, square_color, x, y, dest) - ChessSquare piece; - int square_color, x, y; - Drawable dest; -{ - /* Avoid XCopyPlane on 1-bit screens to work around Sun bug */ - switch (square_color) { - case 1: /* light */ - case 2: /* neutral */ - default: - XCopyArea(xDisplay, (int) piece < (int) BlackPawn - ? *pieceToOutline(piece) - : *pieceToSolid(piece), - dest, bwPieceGC, 0, 0, - squareSize, squareSize, x, y); - break; - case 0: /* dark */ - XCopyArea(xDisplay, (int) piece < (int) BlackPawn - ? *pieceToSolid(piece) - : *pieceToOutline(piece), - dest, wbPieceGC, 0, 0, - squareSize, squareSize, x, y); - break; - } -} - -static void monoDrawPiece(piece, square_color, x, y, dest) - ChessSquare piece; - int square_color, x, y; - Drawable dest; -{ - switch (square_color) { - case 1: /* light */ - case 2: /* neutral */ - default: - XCopyPlane(xDisplay, (int) piece < (int) BlackPawn - ? *pieceToOutline(piece) - : *pieceToSolid(piece), - dest, bwPieceGC, 0, 0, - squareSize, squareSize, x, y, 1); - break; - case 0: /* dark */ - XCopyPlane(xDisplay, (int) piece < (int) BlackPawn - ? *pieceToSolid(piece) - : *pieceToOutline(piece), - dest, wbPieceGC, 0, 0, - squareSize, squareSize, x, y, 1); - break; - } -} - -static void colorDrawPiece(piece, square_color, x, y, dest) - ChessSquare piece; - int square_color, x, y; - Drawable dest; -{ - switch (square_color) { - case 1: /* light */ - XCopyPlane(xDisplay, *pieceToSolid(piece), - dest, (int) piece < (int) BlackPawn - ? wlPieceGC : blPieceGC, 0, 0, - squareSize, squareSize, x, y, 1); - break; - case 0: /* dark */ - XCopyPlane(xDisplay, *pieceToSolid(piece), - dest, (int) piece < (int) BlackPawn - ? wdPieceGC : bdPieceGC, 0, 0, - squareSize, squareSize, x, y, 1); - break; - case 2: /* neutral */ - default: - XCopyPlane(xDisplay, *pieceToSolid(piece), - dest, (int) piece < (int) BlackPawn - ? wjPieceGC : bjPieceGC, 0, 0, - squareSize, squareSize, x, y, 1); - break; - } -} - -static void colorDrawPieceImage(piece, square_color, x, y, dest) - ChessSquare piece; - int square_color, x, y; - Drawable dest; -{ - int kind; - - switch (square_color) { - case 1: /* light */ - case 2: /* neutral */ - default: - if ((int)piece < (int) BlackPawn) { - kind = 0; - } else { - kind = 2; - piece -= BlackPawn; - } - break; - case 0: /* dark */ - if ((int)piece < (int) BlackPawn) { - kind = 1; - } else { - kind = 3; - piece -= BlackPawn; - } - break; - } - XCopyArea(xDisplay, xpmPieceBitmap[kind][piece], - dest, wlPieceGC, 0, 0, - squareSize, squareSize, x, y); -} - -typedef void (*DrawFunc)(); - -DrawFunc ChooseDrawFunc() -{ - if (appData.monoMode) { - if (DefaultDepth(xDisplay, xScreen) == 1) { - return monoDrawPiece_1bit; - } else { - return monoDrawPiece; - } - } else { - if (useImages) - return colorDrawPieceImage; - else - return colorDrawPiece; - } -} - -void DrawSquare(row, column, piece, do_flash) - int row, column, do_flash; - ChessSquare piece; -{ - int square_color, x, y, direction, font_ascent, font_descent; - int i; - char string[2]; - XCharStruct overall; - DrawFunc drawfunc; - int flash_delay; - - /* Calculate delay in milliseconds (2-delays per complete flash) */ - flash_delay = 500 / appData.flashRate; - - if (flipView) { - x = lineGap + ((BOARD_SIZE-1)-column) * - (squareSize + lineGap); - y = lineGap + row * (squareSize + lineGap); - } else { - x = lineGap + column * (squareSize + lineGap); - y = lineGap + ((BOARD_SIZE-1)-row) * - (squareSize + lineGap); - } - - square_color = ((column + row) % 2) == 1; - - if (piece == EmptySquare || appData.blindfold) { - BlankSquare(x, y, square_color, piece, xBoardWindow); - } else { - drawfunc = ChooseDrawFunc(); - if (do_flash && appData.flashCount > 0) { - for (i=0; itype) { - case Expose: - if (event->xexpose.count > 0) return; /* no clipping is done */ - XDrawPosition(widget, True, NULL); - break; - default: - return; - } -} -/* end why */ - -void DrawPosition(fullRedraw, board) - /*Boolean*/int fullRedraw; - Board board; -{ - XDrawPosition(boardWidget, fullRedraw, board); -} - -/* Returns 1 if there are "too many" differences between b1 and b2 - (i.e. more than 1 move was made) */ -static int too_many_diffs(b1, b2) - Board b1, b2; -{ - int i, j; - int c = 0; - - for (i=0; i 4) /* Castling causes 4 diffs */ - return 1; - } - } - } - - return 0; -} - -/* Matrix describing castling maneuvers */ -/* Row, ColRookFrom, ColKingFrom, ColRookTo, ColKingTo */ -static int castling_matrix[4][5] = { - { 0, 0, 4, 3, 2 }, /* 0-0-0, white */ - { 0, 7, 4, 5, 6 }, /* 0-0, white */ - { 7, 0, 4, 3, 2 }, /* 0-0-0, black */ - { 7, 7, 4, 5, 6 } /* 0-0, black */ -}; - -/* Checks whether castling occurred. If it did, *rrow and *rcol - are set to the destination (row,col) of the rook that moved. - - Returns 1 if castling occurred, 0 if not. - - Note: Only handles a max of 1 castling move, so be sure - to call too_many_diffs() first. - */ -static int check_castle_draw(newb, oldb, rrow, rcol) - Board newb, oldb; - int *rrow, *rcol; -{ - int i, *r, j; - int match; - - /* For each type of castling... */ - for (i=0; i<4; ++i) { - r = castling_matrix[i]; - - /* Check the 4 squares involved in the castling move */ - match = 0; - for (j=1; j<=4; ++j) { - if (newb[r[0]][r[j]] == oldb[r[0]][r[j]]) { - match = 1; - break; - } - } - - if (!match) { - /* All 4 changed, so it must be a castling move */ - *rrow = r[0]; - *rcol = r[3]; - return 1; - } - } - return 0; -} - -static int damage[BOARD_SIZE][BOARD_SIZE]; - -/* - * event handler for redrawing the board - */ -void XDrawPosition(w, repaint, board) - Widget w; - /*Boolean*/int repaint; - Board board; -{ - int i, j, do_flash; - static int lastFlipView = 0; - static int lastBoardValid = 0; - static Board lastBoard; - Arg args[16]; - int rrow, rcol; - - if (board == NULL) { - if (!lastBoardValid) return; - board = lastBoard; - } - if (!lastBoardValid || lastFlipView != flipView) { - XtSetArg(args[0], XtNleftBitmap, (flipView ? xMarkPixmap : None)); - XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Flip View"), - args, 1); - } - - /* - * It would be simpler to clear the window with XClearWindow() - * but this causes a very distracting flicker. - */ - - if (!repaint && lastBoardValid && lastFlipView == flipView) { - - /* If too much changes (begin observing new game, etc.), don't - do flashing */ - do_flash = too_many_diffs(board, lastBoard) ? 0 : 1; - - /* Special check for castling so we don't flash both the king - and the rook (just flash the king). */ - if (do_flash) { - if (check_castle_draw(board, lastBoard, &rrow, &rcol)) { - /* Draw rook with NO flashing. King will be drawn flashing later */ - DrawSquare(rrow, rcol, board[rrow][rcol], 0); - lastBoard[rrow][rcol] = board[rrow][rcol]; - } - } - - /* First pass -- Draw (newly) empty squares and repair damage. - This prevents you from having a piece show up twice while it - is flashing on its new square */ - for (i = 0; i < BOARD_SIZE; i++) - for (j = 0; j < BOARD_SIZE; j++) - if ((board[i][j] != lastBoard[i][j] && board[i][j] == EmptySquare) - || damage[i][j]) { - DrawSquare(i, j, board[i][j], 0); - damage[i][j] = False; - } - - /* Second pass -- Draw piece(s) in new position and flash them */ - for (i = 0; i < BOARD_SIZE; i++) - for (j = 0; j < BOARD_SIZE; j++) - if (board[i][j] != lastBoard[i][j]) { - DrawSquare(i, j, board[i][j], do_flash); - } - } else { - if (lineGap > 0) - XDrawSegments(xDisplay, xBoardWindow, lineGC, - gridSegments, (BOARD_SIZE + 1) * 2); - - for (i = 0; i < BOARD_SIZE; i++) - for (j = 0; j < BOARD_SIZE; j++) { - DrawSquare(i, j, board[i][j], 0); - damage[i][j] = False; - } - } - - CopyBoard(lastBoard, board); - lastBoardValid = 1; - lastFlipView = flipView; - - /* Draw highlights */ - if (pm1X >= 0 && pm1Y >= 0) { - drawHighlight(pm1X, pm1Y, prelineGC); - } - if (pm2X >= 0 && pm2Y >= 0) { - drawHighlight(pm2X, pm2Y, prelineGC); - } - if (hi1X >= 0 && hi1Y >= 0) { - drawHighlight(hi1X, hi1Y, highlineGC); - } - if (hi2X >= 0 && hi2Y >= 0) { - drawHighlight(hi2X, hi2Y, highlineGC); - } - - /* If piece being dragged around board, must redraw that too */ - DrawDragPiece(); - - XSync(xDisplay, False); -} - - -/* - * event handler for redrawing the board - */ -void DrawPositionProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - XDrawPosition(w, True, NULL); -} - - -/* - * event handler for parsing user moves - */ -void HandleUserMove(w, event, prms, nprms) - Widget w; - XEvent *event; - 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); - XtDestroyWidget(promotionShell); - promotionUp = False; - ClearHighlights(); - fromX = fromY = -1; - } else { - return; - } - } - - x = EventToSquare(event->xbutton.x, BOARD_SIZE); - y = EventToSquare(event->xbutton.y, BOARD_SIZE); - if (!flipView && y >= 0) { - y = BOARD_SIZE - 1 - y; - } - if (flipView && x >= 0) { - x = BOARD_SIZE - 1 - x; - } - - 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; - /* Check if clicking again on the same color piece */ - fromP = boards[currentMove][fromY][fromX]; - toP = boards[currentMove][y][x]; - if ((WhitePawn <= fromP && fromP <= WhiteKing && - WhitePawn <= toP && toP <= WhiteKing) || - (BlackPawn <= fromP && fromP <= BlackKing && - BlackPawn <= toP && toP <= BlackKing)) { - /* 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); - } -} - -void AnimateUserMove (Widget w, XEvent * event, - String * params, Cardinal * nParams) -{ - DragPieceMove(event->xmotion.x, event->xmotion.y); -} - -Widget CommentCreate(name, text, mutable, callback, lines) - char *name, *text; - int /*Boolean*/ mutable; - XtCallbackProc callback; - int lines; -{ - Arg args[16]; - Widget shell, layout, form, edit, b_ok, b_cancel, b_clear, b_close, b_edit; - Dimension bw_width; - int j; - - j = 0; - XtSetArg(args[j], XtNwidth, &bw_width); j++; - XtGetValues(boardWidget, args, j); - - j = 0; - XtSetArg(args[j], XtNresizable, True); j++; -#if TOPLEVEL - shell = - XtCreatePopupShell(name, topLevelShellWidgetClass, - shellWidget, args, j); -#else - shell = - XtCreatePopupShell(name, transientShellWidgetClass, - shellWidget, args, j); -#endif - layout = - XtCreateManagedWidget(layoutName, formWidgetClass, shell, - layoutArgs, XtNumber(layoutArgs)); - form = - XtCreateManagedWidget("form", formWidgetClass, layout, - formArgs, XtNumber(formArgs)); - - j = 0; - if (mutable) { - XtSetArg(args[j], XtNeditType, XawtextEdit); j++; - XtSetArg(args[j], XtNuseStringInPlace, False); j++; - } - XtSetArg(args[j], XtNstring, text); j++; - XtSetArg(args[j], XtNtop, XtChainTop); j++; - XtSetArg(args[j], XtNbottom, XtChainBottom); j++; - XtSetArg(args[j], XtNleft, XtChainLeft); j++; - 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 = - XtCreateManagedWidget("text", asciiTextWidgetClass, form, args, j); - - if (mutable) { - j = 0; - XtSetArg(args[j], XtNfromVert, edit); 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_ok = - XtCreateManagedWidget("ok", commandWidgetClass, form, args, j); - XtAddCallback(b_ok, XtNcallback, callback, (XtPointer) 0); - - j = 0; - XtSetArg(args[j], XtNfromVert, edit); j++; - XtSetArg(args[j], XtNfromHoriz, b_ok); 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_cancel = - XtCreateManagedWidget("cancel", commandWidgetClass, form, args, j); - XtAddCallback(b_cancel, XtNcallback, callback, (XtPointer) 0); - - j = 0; - XtSetArg(args[j], XtNfromVert, edit); j++; - XtSetArg(args[j], XtNfromHoriz, b_cancel); 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 = - XtCreateManagedWidget("clear", commandWidgetClass, form, args, j); - XtAddCallback(b_clear, XtNcallback, callback, (XtPointer) 0); - } else { - j = 0; - XtSetArg(args[j], XtNfromVert, edit); 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_close = - XtCreateManagedWidget("close", commandWidgetClass, form, args, j); - XtAddCallback(b_close, XtNcallback, callback, (XtPointer) 0); - - j = 0; - XtSetArg(args[j], XtNfromVert, edit); j++; - XtSetArg(args[j], XtNfromHoriz, b_close); 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_edit = - XtCreateManagedWidget("edit", commandWidgetClass, form, args, j); - XtAddCallback(b_edit, XtNcallback, callback, (XtPointer) 0); - } - - XtRealizeWidget(shell); - - if (commentX == -1) { - int xx, yy; - Window junk; - Dimension pw_height; - Dimension ew_height; - - 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); - commentH = pw_height + (lines - 1) * ew_height; - commentW = bw_width - 16; - - XSync(xDisplay, False); -#ifdef NOTDEF - /* This code seems to tickle an X bug if it is executed too soon - after xboard starts up. The coordinates get transformed as if - the main window was positioned at (0, 0). - */ - XtTranslateCoords(shellWidget, - (bw_width - commentW) / 2, 0 - commentH / 2, - &commentX, &commentY); -#else /*!NOTDEF*/ - XTranslateCoordinates(xDisplay, XtWindow(shellWidget), - RootWindowOfScreen(XtScreen(shellWidget)), - (bw_width - commentW) / 2, 0 - commentH / 2, - &xx, &yy, &junk); - commentX = xx; - commentY = yy; -#endif /*!NOTDEF*/ - if (commentY < 0) commentY = 0; /*avoid positioning top offscreen*/ - } - j = 0; - XtSetArg(args[j], XtNheight, commentH); j++; - XtSetArg(args[j], XtNwidth, commentW); j++; - XtSetArg(args[j], XtNx, commentX); j++; - XtSetArg(args[j], XtNy, commentY); j++; - XtSetValues(shell, args, j); - XtSetKeyboardFocus(shell, edit); - - return shell; -} - -/* Used for analysis window and ICS input window */ -Widget MiscCreate(name, text, mutable, callback, lines) - char *name, *text; - int /*Boolean*/ mutable; - XtCallbackProc callback; - int lines; -{ - Arg args[16]; - Widget shell, layout, form, edit; - Position x, y; - Dimension bw_width, pw_height, ew_height, w, h; - int j; - int xx, yy; - Window junk; - - j = 0; - XtSetArg(args[j], XtNresizable, True); j++; -#if TOPLEVEL - shell = - XtCreatePopupShell(name, topLevelShellWidgetClass, - shellWidget, args, j); -#else - shell = - XtCreatePopupShell(name, transientShellWidgetClass, - shellWidget, args, j); -#endif - layout = - XtCreateManagedWidget(layoutName, formWidgetClass, shell, - layoutArgs, XtNumber(layoutArgs)); - form = - XtCreateManagedWidget("form", formWidgetClass, layout, - formArgs, XtNumber(formArgs)); - - j = 0; - if (mutable) { - XtSetArg(args[j], XtNeditType, XawtextEdit); j++; - XtSetArg(args[j], XtNuseStringInPlace, False); j++; - } - XtSetArg(args[j], XtNstring, text); j++; - XtSetArg(args[j], XtNtop, XtChainTop); j++; - XtSetArg(args[j], XtNbottom, XtChainBottom); j++; - 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 = - XtCreateManagedWidget("text", asciiTextWidgetClass, form, args, j); - - XtRealizeWidget(shell); - - j = 0; - XtSetArg(args[j], XtNwidth, &bw_width); j++; - XtGetValues(boardWidget, args, j); - - 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); - h = pw_height + (lines - 1) * ew_height; - w = bw_width - 16; - - XSync(xDisplay, False); -#ifdef NOTDEF - /* This code seems to tickle an X bug if it is executed too soon - after xboard starts up. The coordinates get transformed as if - the main window was positioned at (0, 0). - */ - XtTranslateCoords(shellWidget, (bw_width - w) / 2, 0 - h / 2, &x, &y); -#else /*!NOTDEF*/ - XTranslateCoordinates(xDisplay, XtWindow(shellWidget), - RootWindowOfScreen(XtScreen(shellWidget)), - (bw_width - w) / 2, 0 - h / 2, &xx, &yy, &junk); -#endif /*!NOTDEF*/ - x = xx; - y = yy; - if (y < 0) y = 0; /*avoid positioning top offscreen*/ - - j = 0; - XtSetArg(args[j], XtNheight, h); j++; - XtSetArg(args[j], XtNwidth, w); j++; - XtSetArg(args[j], XtNx, x); j++; - XtSetArg(args[j], XtNy, y); j++; - XtSetValues(shell, args, j); - - return shell; -} - - -static int savedIndex; /* gross that this is global */ - -void EditCommentPopUp(index, title, text) - int index; - char *title, *text; -{ - Widget edit; - Arg args[16]; - int j; - - savedIndex = index; - if (text == NULL) text = ""; - - if (editShell == NULL) { - editShell = - CommentCreate(title, text, True, EditCommentCallback, 4); - XtRealizeWidget(editShell); - CatchDeleteWindow(editShell, "EditCommentPopDown"); - } else { - edit = XtNameToWidget(editShell, "*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(editShell, args, j); - } - - XtPopup(editShell, XtGrabNone); - - editUp = True; - j = 0; - XtSetArg(args[j], XtNleftBitmap, xMarkPixmap); j++; - XtSetValues(XtNameToWidget(menuBarWidget, "menuMode.Edit Comment"), - args, j); -} - -void EditCommentCallback(w, client_data, call_data) - Widget w; - XtPointer client_data, call_data; -{ - String name, val; - Arg args[16]; - int j; - Widget edit; - - j = 0; - XtSetArg(args[j], XtNlabel, &name); j++; - XtGetValues(w, args, j); - - if (strcmp(name, "ok") == 0) { - edit = XtNameToWidget(editShell, "*form.text"); - j = 0; - XtSetArg(args[j], XtNstring, &val); j++; - XtGetValues(edit, args, j); - ReplaceComment(savedIndex, val); - EditCommentPopDown(); - } else if (strcmp(name, "cancel") == 0) { - EditCommentPopDown(); - } else if (strcmp(name, "clear") == 0) { - edit = XtNameToWidget(editShell, "*form.text"); - XtCallActionProc(edit, "select-all", NULL, NULL, 0); - XtCallActionProc(edit, "kill-selection", NULL, NULL, 0); - } -} - -void EditCommentPopDown() -{ - Arg args[16]; - int j; - - if (!editUp) return; - j = 0; - XtSetArg(args[j], XtNx, &commentX); j++; - XtSetArg(args[j], XtNy, &commentY); j++; - XtSetArg(args[j], XtNheight, &commentH); j++; - XtSetArg(args[j], XtNwidth, &commentW); j++; - XtGetValues(editShell, args, j); - XtPopdown(editShell); - editUp = False; - j = 0; - XtSetArg(args[j], XtNleftBitmap, None); j++; - XtSetValues(XtNameToWidget(menuBarWidget, "menuMode.Edit Comment"), - args, j); -} - -void ICSInputBoxPopUp() -{ - Widget edit; - Arg args[16]; - int j; - char *title = "ICS Input"; - XtTranslations tr; - - if (ICSInputShell == NULL) { - ICSInputShell = MiscCreate(title, "", True, NULL, 1); - tr = XtParseTranslationTable(ICSInputTranslations); - edit = XtNameToWidget(ICSInputShell, "*form.text"); - XtOverrideTranslations(edit, tr); - XtRealizeWidget(ICSInputShell); - CatchDeleteWindow(ICSInputShell, "ICSInputBoxPopDown"); - - } else { - edit = XtNameToWidget(ICSInputShell, "*form.text"); - j = 0; - XtSetArg(args[j], XtNstring, ""); j++; - XtSetValues(edit, args, j); - j = 0; - XtSetArg(args[j], XtNiconName, (XtArgVal) title); j++; - XtSetArg(args[j], XtNtitle, (XtArgVal) title); j++; - XtSetValues(ICSInputShell, args, j); - } - - XtPopup(ICSInputShell, XtGrabNone); - XtSetKeyboardFocus(ICSInputShell, edit); - - ICSInputBoxUp = True; - j = 0; - XtSetArg(args[j], XtNleftBitmap, xMarkPixmap); j++; - XtSetValues(XtNameToWidget(menuBarWidget, "menuMode.ICS Input Box"), - args, j); -} - -void ICSInputSendText() -{ - Widget edit; - int j; - Arg args[16]; - String val; - - edit = XtNameToWidget(ICSInputShell, "*form.text"); - j = 0; - XtSetArg(args[j], XtNstring, &val); j++; - XtGetValues(edit, args, j); - SendMultiLineToICS(val); - XtCallActionProc(edit, "select-all", NULL, NULL, 0); - XtCallActionProc(edit, "kill-selection", NULL, NULL, 0); -} - -void ICSInputBoxPopDown() -{ - Arg args[16]; - int j; - - if (!ICSInputBoxUp) return; - j = 0; - XtPopdown(ICSInputShell); - ICSInputBoxUp = False; - j = 0; - XtSetArg(args[j], XtNleftBitmap, None); j++; - XtSetValues(XtNameToWidget(menuBarWidget, "menuMode.ICS Input Box"), - args, j); -} - -void CommentPopUp(title, text) - char *title, *text; -{ - Arg args[16]; - int j; - Widget edit; - - if (commentShell == NULL) { - commentShell = - CommentCreate(title, text, False, CommentCallback, 4); - XtRealizeWidget(commentShell); - CatchDeleteWindow(commentShell, "CommentPopDown"); - } else { - edit = XtNameToWidget(commentShell, "*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(commentShell, args, j); - } - - XtPopup(commentShell, XtGrabNone); - XSync(xDisplay, False); - - 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; -{ - String name; - Arg args[16]; - int j; - - j = 0; - XtSetArg(args[j], XtNlabel, &name); j++; - XtGetValues(w, args, j); - - if (strcmp(name, "close") == 0) { - CommentPopDown(); - } else if (strcmp(name, "edit") == 0) { - CommentPopDown(); - EditCommentEvent(); - } -} - - -void CommentPopDown() -{ - Arg args[16]; - int j; - - if (!commentUp) return; - j = 0; - XtSetArg(args[j], XtNx, &commentX); j++; - XtSetArg(args[j], XtNy, &commentY); j++; - XtSetArg(args[j], XtNwidth, &commentW); j++; - XtSetArg(args[j], XtNheight, &commentH); j++; - XtGetValues(commentShell, args, j); - XtPopdown(commentShell); - XSync(xDisplay, False); - commentUp = False; -} - -void AnalysisPopDown() -{ - if (!analysisUp) return; - XtPopdown(analysisShell); - XSync(xDisplay, False); - analysisUp = False; -} - - -void FileNamePopUp(label, def, proc, openMode) - char *label; - char *def; - FileProc proc; - char *openMode; -{ - Arg args[16]; - Widget popup, layout, dialog, edit; - Window root, child; - int x, y, i; - int win_x, win_y; - unsigned int mask; - - fileProc = proc; /* I can't see a way not */ - fileOpenMode = openMode; /* to use globals here */ - - i = 0; - XtSetArg(args[i], XtNresizable, True); i++; - XtSetArg(args[i], XtNwidth, DIALOG_SIZE); i++; - fileNameShell = popup = - XtCreatePopupShell("File name prompt", transientShellWidgetClass, - shellWidget, args, i); - - layout = - XtCreateManagedWidget(layoutName, formWidgetClass, popup, - layoutArgs, XtNumber(layoutArgs)); - - i = 0; - XtSetArg(args[i], XtNlabel, label); i++; - XtSetArg(args[i], XtNvalue, def); i++; - XtSetArg(args[i], XtNborderWidth, 0); i++; - dialog = XtCreateManagedWidget("fileName", dialogWidgetClass, - layout, args, i); - - XawDialogAddButton(dialog, "ok", FileNameCallback, (XtPointer) dialog); - XawDialogAddButton(dialog, "cancel", FileNameCallback, - (XtPointer) dialog); - - XtRealizeWidget(popup); - CatchDeleteWindow(popup, "FileNamePopDown"); - - 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); - filenameUp = True; - - edit = XtNameToWidget(dialog, "*value"); - XtSetKeyboardFocus(popup, edit); -} - -void FileNamePopDown() -{ - if (!filenameUp) return; - XtPopdown(fileNameShell); - XtDestroyWidget(fileNameShell); - filenameUp = False; - ModeHighlight(); -} - -void FileNameCallback(w, client_data, call_data) - Widget w; - XtPointer client_data, call_data; -{ - String name; - Arg args[16]; - - XtSetArg(args[0], XtNlabel, &name); - XtGetValues(w, args, 1); - - if (strcmp(name, "cancel") == 0) { - FileNamePopDown(); - return; - } - - FileNameAction(w, NULL, NULL, NULL); -} - -void FileNameAction(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - char buf[MSG_SIZ]; - String name; - FILE *f; - char *p, *fullname; - int index; - - name = XawDialogGetValueString(w = XtParent(w)); - - if ((name != NULL) && (*name != NULLCHAR)) { - strcpy(buf, name); - XtPopdown(w = XtParent(XtParent(w))); - XtDestroyWidget(w); - filenameUp = False; - - p = strrchr(buf, ' '); - if (p == NULL) { - index = 0; - } else { - *p++ = NULLCHAR; - index = atoi(p); - } - fullname = ExpandPathName(buf); - if (!fullname) { - ErrorPopUp("Error", "Can't open file", FALSE); - } - else { - f = fopen(fullname, fileOpenMode); - if (f == NULL) { - DisplayError("Failed to open file", errno); - } else { - (void) (*fileProc)(f, index, buf); - } - } - ModeHighlight(); - return; - } - - XtPopdown(w = XtParent(XtParent(w))); - XtDestroyWidget(w); - filenameUp = False; - ModeHighlight(); -} - -void PromotionPopUp() -{ - Arg args[16]; - Widget dialog, layout; - Position x, y; - Dimension bw_width, pw_width; - int j; - - j = 0; - XtSetArg(args[j], XtNwidth, &bw_width); j++; - XtGetValues(boardWidget, args, j); - - j = 0; - XtSetArg(args[j], XtNresizable, True); j++; - promotionShell = - XtCreatePopupShell("Promotion", transientShellWidgetClass, - shellWidget, args, j); - layout = - XtCreateManagedWidget(layoutName, formWidgetClass, promotionShell, - layoutArgs, XtNumber(layoutArgs)); - - j = 0; - XtSetArg(args[j], XtNlabel, "Promote pawn to what?"); j++; - XtSetArg(args[j], XtNborderWidth, 0); j++; - dialog = XtCreateManagedWidget("promotion", dialogWidgetClass, - layout, args, j); - - XawDialogAddButton(dialog, "Queen", PromotionCallback, - (XtPointer) dialog); - XawDialogAddButton(dialog, "Rook", PromotionCallback, - (XtPointer) dialog); - XawDialogAddButton(dialog, "Bishop", PromotionCallback, - (XtPointer) dialog); - XawDialogAddButton(dialog, "Knight", PromotionCallback, - (XtPointer) dialog); - if (!appData.testLegality || gameInfo.variant == VariantSuicide || - gameInfo.variant == VariantGiveaway) { - XawDialogAddButton(dialog, "King", PromotionCallback, - (XtPointer) dialog); - } - XawDialogAddButton(dialog, "cancel", PromotionCallback, - (XtPointer) dialog); - - XtRealizeWidget(promotionShell); - CatchDeleteWindow(promotionShell, "PromotionPopDown"); - - j = 0; - XtSetArg(args[j], XtNwidth, &pw_width); j++; - XtGetValues(promotionShell, args, j); - - XtTranslateCoords(boardWidget, (bw_width - pw_width) / 2, - lineGap + squareSize/3 + - ((toY == 7) ^ (flipView) ? - 0 : 6*(squareSize + lineGap)), &x, &y); - - j = 0; - XtSetArg(args[j], XtNx, x); j++; - XtSetArg(args[j], XtNy, y); j++; - XtSetValues(promotionShell, args, j); - - XtPopup(promotionShell, XtGrabNone); - - promotionUp = True; -} - -void PromotionPopDown() -{ - if (!promotionUp) return; - XtPopdown(promotionShell); - XtDestroyWidget(promotionShell); - promotionUp = False; -} - -void PromotionCallback(w, client_data, call_data) - Widget w; - XtPointer client_data, call_data; -{ - String name; - Arg args[16]; - int promoChar; - - XtSetArg(args[0], XtNlabel, &name); - XtGetValues(w, args, 1); - - PromotionPopDown(); - - if (fromX == -1) return; - - if (strcmp(name, "cancel") == 0) { - fromX = fromY = -1; - ClearHighlights(); - return; - } else if (strcmp(name, "Knight") == 0) { - promoChar = 'n'; - } else { - promoChar = ToLower(name[0]); - } - - UserMoveEvent(fromX, fromY, toX, toY, promoChar); - - if (!appData.highlightLastMove || gotPremove) ClearHighlights(); - if (gotPremove) SetPremoveHighlights(fromX, fromY, toX, toY); - fromX = fromY = -1; -} - - -void ErrorCallback(w, client_data, call_data) - Widget w; - XtPointer client_data, call_data; -{ - errorUp = False; - XtPopdown(w = XtParent(XtParent(XtParent(w)))); - XtDestroyWidget(w); - if (errorExitStatus != -1) ExitEvent(errorExitStatus); -} - - -void ErrorPopDown() -{ - if (!errorUp) return; - errorUp = False; - XtPopdown(errorShell); - XtDestroyWidget(errorShell); - if (errorExitStatus != -1) ExitEvent(errorExitStatus); -} - -void ErrorPopUp(title, label, modal) - char *title, *label; - int modal; -{ - Arg args[16]; - Widget dialog, layout; - Position x, y; - int xx, yy; - Window junk; - Dimension bw_width, pw_width; - Dimension pw_height; - int i; - - i = 0; - XtSetArg(args[i], XtNresizable, True); i++; - XtSetArg(args[i], XtNtitle, title); i++; - errorShell = - XtCreatePopupShell("errorpopup", transientShellWidgetClass, - shellWidget, args, i); - layout = - XtCreateManagedWidget(layoutName, formWidgetClass, errorShell, - layoutArgs, XtNumber(layoutArgs)); - - i = 0; - XtSetArg(args[i], XtNlabel, label); i++; - XtSetArg(args[i], XtNborderWidth, 0); i++; - dialog = XtCreateManagedWidget("dialog", dialogWidgetClass, - layout, args, i); - - XawDialogAddButton(dialog, "ok", ErrorCallback, (XtPointer) dialog); - - XtRealizeWidget(errorShell); - CatchDeleteWindow(errorShell, "ErrorPopDown"); - - i = 0; - XtSetArg(args[i], XtNwidth, &bw_width); i++; - XtGetValues(boardWidget, args, i); - i = 0; - XtSetArg(args[i], XtNwidth, &pw_width); i++; - XtSetArg(args[i], XtNheight, &pw_height); i++; - XtGetValues(errorShell, args, i); - -#ifdef NOTDEF - /* This code seems to tickle an X bug if it is executed too soon - after xboard starts up. The coordinates get transformed as if - the main window was positioned at (0, 0). - */ - XtTranslateCoords(boardWidget, (bw_width - pw_width) / 2, - 0 - pw_height + squareSize / 3, &x, &y); -#else - XTranslateCoordinates(xDisplay, XtWindow(boardWidget), - RootWindowOfScreen(XtScreen(boardWidget)), - (bw_width - pw_width) / 2, - 0 - pw_height + squareSize / 3, &xx, &yy, &junk); - x = xx; - y = yy; -#endif - if (y < 0) y = 0; /*avoid positioning top offscreen*/ - - i = 0; - XtSetArg(args[i], XtNx, x); i++; - XtSetArg(args[i], XtNy, y); i++; - XtSetValues(errorShell, args, i); - - errorUp = True; - XtPopup(errorShell, modal ? XtGrabExclusive : XtGrabNone); -} - -/* Disable all user input other than deleting the window */ -static int frozen = 0; -void FreezeUI() -{ - if (frozen) return; - /* Grab by a widget that doesn't accept input */ - XtAddGrab(messageWidget, TRUE, FALSE); - frozen = 1; -} - -/* Undo a FreezeUI */ -void ThawUI() -{ - if (!frozen) return; - XtRemoveGrab(messageWidget); - frozen = 0; -} - -char *ModeToWidgetName(mode) - GameMode mode; -{ - switch (mode) { - case BeginningOfGame: - if (appData.icsActive) - return "menuMode.ICS Client"; - else if (appData.noChessProgram || - *appData.cmailGameName != NULLCHAR) - return "menuMode.Edit Game"; - else - return "menuMode.Machine Black"; - case MachinePlaysBlack: - return "menuMode.Machine Black"; - case MachinePlaysWhite: - return "menuMode.Machine White"; - case AnalyzeMode: - return "menuMode.Analysis Mode"; - case AnalyzeFile: - return "menuMode.Analyze File"; - case TwoMachinesPlay: - return "menuMode.Two Machines"; - case EditGame: - return "menuMode.Edit Game"; - case PlayFromGameFile: - return "menuFile.Load Game"; - case EditPosition: - return "menuMode.Edit Position"; - case Training: - return "menuMode.Training"; - case IcsPlayingWhite: - case IcsPlayingBlack: - case IcsObserving: - case IcsIdle: - case IcsExamining: - return "menuMode.ICS Client"; - default: - case EndOfGame: - return NULL; - } -} - -void ModeHighlight() -{ - Arg args[16]; - static int oldPausing = FALSE; - static GameMode oldmode = (GameMode) -1; - char *wname; - - if (!boardWidget || !XtIsRealized(boardWidget)) return; - - if (pausing != oldPausing) { - oldPausing = pausing; - if (pausing) { - XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); - } else { - XtSetArg(args[0], XtNleftBitmap, None); - } - XtSetValues(XtNameToWidget(menuBarWidget, "menuMode.Pause"), - 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. */ - { - Pixel oldbg, oldfg; - XtSetArg(args[0], XtNbackground, &oldbg); - XtSetArg(args[1], XtNforeground, &oldfg); - XtGetValues(XtNameToWidget(buttonBarWidget, PAUSE_BUTTON), - args, 2); - XtSetArg(args[0], XtNbackground, oldfg); - XtSetArg(args[1], XtNforeground, oldbg); - } -#endif - XtSetValues(XtNameToWidget(buttonBarWidget, PAUSE_BUTTON), args, 2); - } - } - - wname = ModeToWidgetName(oldmode); - if (wname != NULL) { - XtSetArg(args[0], XtNleftBitmap, None); - XtSetValues(XtNameToWidget(menuBarWidget, wname), args, 1); - } - wname = ModeToWidgetName(gameMode); - if (wname != NULL) { - XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); - XtSetValues(XtNameToWidget(menuBarWidget, wname), args, 1); - } - oldmode = gameMode; - - /* Maybe all the enables should be handled here, not just this one */ - XtSetSensitive(XtNameToWidget(menuBarWidget, "menuMode.Training"), - gameMode == Training || gameMode == PlayFromGameFile); -} - - -/* - * Button/menu procedures - */ -void ResetProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - ResetGameEvent(); - AnalysisPopDown(); -} - -int LoadGamePopUp(f, gameNumber, title) - FILE *f; - int gameNumber; - char *title; -{ - cmailMsgLoaded = FALSE; - if (gameNumber == 0) { - int error = GameListBuild(f); - if (error) { - DisplayError("Cannot build game list", error); - } else if (!ListEmpty(&gameList) && - ((ListGame *) gameList.tailPred)->number > 1) { - GameListPopUp(f, title); - return TRUE; - } - GameListDestroy(); - gameNumber = 1; - } - return LoadGame(f, gameNumber, title, FALSE); -} - -void LoadGameProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - if (gameMode == AnalyzeMode || gameMode == AnalyzeFile) { - Reset(FALSE, TRUE); - } - FileNamePopUp("Load game file name?", "", LoadGamePopUp, "rb"); -} - -void LoadNextGameProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - ReloadGame(1); -} - -void LoadPrevGameProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - ReloadGame(-1); -} - -void ReloadGameProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - ReloadGame(0); -} - -void LoadNextPositionProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - ReloadPosition(1); -} - -void LoadPrevPositionProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - ReloadPosition(-1); -} - -void ReloadPositionProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - ReloadPosition(0); -} - -void LoadPositionProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - if (gameMode == AnalyzeMode || gameMode == AnalyzeFile) { - Reset(FALSE, TRUE); - } - FileNamePopUp("Load position file name?", "", LoadPosition, "rb"); -} - -void SaveGameProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - FileNamePopUp("Save game file name?", - DefaultFileName(appData.oldSaveStyle ? "game" : "pgn"), - SaveGame, "a"); -} - -void SavePositionProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - FileNamePopUp("Save position file name?", - DefaultFileName(appData.oldSaveStyle ? "pos" : "fen"), - SavePosition, "a"); -} - -void ReloadCmailMsgProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - ReloadCmailMsgEvent(FALSE); -} - -void MailMoveProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - MailMoveEvent(); -} - -/* this variable is shared between CopyPositionProc and SendPositionSelection */ -static char *selected_fen_position=NULL; - -static Boolean -SendPositionSelection(Widget w, Atom *selection, Atom *target, - Atom *type_return, XtPointer *value_return, - unsigned long *length_return, int *format_return) -{ - char *selection_tmp; - - if (!selected_fen_position) return False; /* should never happen */ - if (*target == XA_STRING){ - /* 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 */ - selection_tmp= XtMalloc(strlen(selected_fen_position)+16); - strcpy(selection_tmp, selected_fen_position); - - *value_return=selection_tmp; - *length_return=strlen(selection_tmp); - *type_return=XA_STRING; - *format_return = 8; /* bits per byte */ - return True; - } else { - return False; - } -} - -/* note: when called from menu all parameters are NULL, so no clue what the - * Widget which was clicked on was, or what the click event was - */ -void CopyPositionProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; - { - int ret; - - if (selected_fen_position) free(selected_fen_position); - selected_fen_position = (char *)PositionToFEN(currentMove); - 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; - } - } - -/* function called when the data to Paste is ready */ -static void -PastePositionCB(Widget w, XtPointer client_data, Atom *selection, - Atom *type, XtPointer value, unsigned long *len, int *format) -{ - char *fenstr=value; - if (value==NULL || *len==0) return; /* nothing had been selected to copy */ - fenstr[*len]='\0'; /* normally this string is terminated, but be safe */ - EditPositionPasteFEN(fenstr); - XtFree(value); -} - -/* called when Paste Position button is pressed, - * all parameters will be NULL */ -void PastePositionProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - XtGetSelectionValue(menuBarWidget, XA_PRIMARY, XA_STRING, - /* (XtSelectionCallbackProc) */ PastePositionCB, - NULL, /* client_data passed to PastePositionCB */ - - /* better to use the time field from the event that triggered the - * call to this function, but that isn't trivial to get - */ - CurrentTime - ); - return; -} - -static Boolean -SendGameSelection(Widget w, Atom *selection, Atom *target, - Atom *type_return, XtPointer *value_return, - unsigned long *length_return, int *format_return) -{ - char *selection_tmp; - - if (*target == XA_STRING){ - FILE* f = fopen(gameCopyFilename, "r"); - long len; - size_t count; - if (f == NULL) return False; - fseek(f, 0, 2); - len = ftell(f); - rewind(f); - selection_tmp = XtMalloc(len + 1); - count = fread(selection_tmp, 1, len, f); - if (len != count) { - XtFree(selection_tmp); - return False; - } - selection_tmp[len] = NULLCHAR; - *value_return = selection_tmp; - *length_return = len; - *type_return = XA_STRING; - *format_return = 8; /* bits per byte */ - return True; - } else { - return False; - } -} - -/* note: when called from menu all parameters are NULL, so no clue what the - * Widget which was clicked on was, or what the click event was - */ -void CopyGameProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - int ret; - - ret = SaveGameToFile(gameCopyFilename, FALSE); - if (!ret) return; - - ret = XtOwnSelection(menuBarWidget, XA_PRIMARY, - CurrentTime, - SendGameSelection, - NULL/* lose_ownership_proc */ , - NULL/* transfer_done_proc */); -} - -/* function called when the data to Paste is ready */ -static void -PasteGameCB(Widget w, XtPointer client_data, Atom *selection, - Atom *type, XtPointer value, unsigned long *len, int *format) -{ - FILE* f; - if (value == NULL || *len == 0) { - return; /* nothing had been selected to copy */ - } - f = fopen(gamePasteFilename, "w"); - if (f == NULL) { - DisplayError("Can't open temp file", errno); - return; - } - fwrite(value, 1, *len, f); - fclose(f); - XtFree(value); - LoadGameFromFile(gamePasteFilename, 0, gamePasteFilename, TRUE); -} - -/* called when Paste Game button is pressed, - * all parameters will be NULL */ -void PasteGameProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - XtGetSelectionValue(menuBarWidget, XA_PRIMARY, XA_STRING, - /* (XtSelectionCallbackProc) */ PasteGameCB, - NULL, /* client_data passed to PasteGameCB */ - - /* better to use the time field from the event that triggered the - * call to this function, but that isn't trivial to get - */ - CurrentTime - ); - return; -} - - -void AutoSaveGame() -{ - SaveGameProc(NULL, NULL, NULL, NULL); -} - - -void QuitProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - ExitEvent(0); -} - -void PauseProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - PauseEvent(); -} - - -void MachineBlackProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - MachineBlackEvent(); -} - -void MachineWhiteProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - MachineWhiteEvent(); -} - -void AnalyzeModeProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - if (!first.analysisSupport) { - char buf[MSG_SIZ]; - sprintf(buf, "%s does not support analysis", first.tidy); - DisplayError(buf, 0); - return; - } - if (!appData.showThinking) - ShowThinkingProc(w,event,prms,nprms); - - AnalyzeModeEvent(); -} - -void AnalyzeFileProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - if (!first.analysisSupport) { - char buf[MSG_SIZ]; - sprintf(buf, "%s does not support analysis", first.tidy); - DisplayError(buf, 0); - return; - } - Reset(FALSE, TRUE); - - if (!appData.showThinking) - ShowThinkingProc(w,event,prms,nprms); - - AnalyzeFileEvent(); - FileNamePopUp("File to analyze", "", LoadGamePopUp, "rb"); - AnalysisPeriodicEvent(1); -} - -void TwoMachinesProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - TwoMachinesEvent(); -} - -void IcsClientProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - IcsClientEvent(); -} - -void EditGameProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - EditGameEvent(); -} - -void EditPositionProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - EditPositionEvent(); -} - -void TrainingProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - TrainingEvent(); -} - -void EditCommentProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - if (editUp) { - EditCommentPopDown(); - } else { - EditCommentEvent(); - } -} - -void IcsInputBoxProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - if (ICSInputBoxUp) { - ICSInputBoxPopDown(); - } else { - ICSInputBoxPopUp(); - } -} - -void AcceptProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - AcceptEvent(); -} - -void DeclineProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - DeclineEvent(); -} - -void RematchProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - RematchEvent(); -} - -void CallFlagProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - CallFlagEvent(); -} - -void DrawProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - DrawEvent(); -} - -void AbortProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - AbortEvent(); -} - -void AdjournProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - AdjournEvent(); -} - -void ResignProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - ResignEvent(); -} - -void EnterKeyProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - if (ICSInputBoxUp == True) - ICSInputSendText(); -} - -void StopObservingProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - StopObservingEvent(); -} - -void StopExaminingProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - StopExaminingEvent(); -} - - -void ForwardProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - ForwardEvent(); -} - - -void BackwardProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - BackwardEvent(); -} - -void ToStartProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - ToStartEvent(); -} - -void ToEndProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - ToEndEvent(); -} - -void RevertProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - RevertEvent(); -} - -void TruncateGameProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - TruncateGameEvent(); -} -void RetractMoveProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - RetractMoveEvent(); -} - -void MoveNowProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - MoveNowEvent(); -} - - -void AlwaysQueenProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - Arg args[16]; - - appData.alwaysPromoteToQueen = !appData.alwaysPromoteToQueen; - - if (appData.alwaysPromoteToQueen) { - XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); - } else { - XtSetArg(args[0], XtNleftBitmap, None); - } - XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Always Queen"), - args, 1); -} - -void AnimateDraggingProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - Arg args[16]; - - appData.animateDragging = !appData.animateDragging; - - if (appData.animateDragging) { - XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); - CreateAnimVars(); - } else { - XtSetArg(args[0], XtNleftBitmap, None); - } - XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Animate Dragging"), - args, 1); -} - -void AnimateMovingProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - Arg args[16]; - - appData.animate = !appData.animate; - - if (appData.animate) { - XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); - CreateAnimVars(); - } else { - XtSetArg(args[0], XtNleftBitmap, None); - } - XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Animate Moving"), - args, 1); -} - -void AutocommProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - Arg args[16]; - - appData.autoComment = !appData.autoComment; - - if (appData.autoComment) { - XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); - } else { - XtSetArg(args[0], XtNleftBitmap, None); - } - XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Auto Comment"), - args, 1); -} - - -void AutoflagProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - Arg args[16]; - - appData.autoCallFlag = !appData.autoCallFlag; - - if (appData.autoCallFlag) { - XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); - } else { - XtSetArg(args[0], XtNleftBitmap, None); - } - XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Auto Flag"), - args, 1); -} - -void AutoflipProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - Arg args[16]; - - appData.autoFlipView = !appData.autoFlipView; - - if (appData.autoFlipView) { - XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); - } else { - XtSetArg(args[0], XtNleftBitmap, None); - } - XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Auto Flip View"), - args, 1); -} - -void AutobsProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - Arg args[16]; - - appData.autoObserve = !appData.autoObserve; - - if (appData.autoObserve) { - XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); - } else { - XtSetArg(args[0], XtNleftBitmap, None); - } - XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Auto Observe"), - args, 1); -} - -void AutoraiseProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - Arg args[16]; - - appData.autoRaiseBoard = !appData.autoRaiseBoard; - - if (appData.autoRaiseBoard) { - XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); - } else { - XtSetArg(args[0], XtNleftBitmap, None); - } - XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Auto Raise Board"), - args, 1); -} - -void AutosaveProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - Arg args[16]; - - appData.autoSaveGames = !appData.autoSaveGames; - - if (appData.autoSaveGames) { - XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); - } else { - XtSetArg(args[0], XtNleftBitmap, None); - } - XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Auto Save"), - args, 1); -} - -void BlindfoldProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - Arg args[16]; - - appData.blindfold = !appData.blindfold; - - if (appData.blindfold) { - XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); - } else { - XtSetArg(args[0], XtNleftBitmap, None); - } - XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Blindfold"), - args, 1); - - DrawPosition(True, NULL); -} - -void TestLegalityProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - Arg args[16]; - - appData.testLegality = !appData.testLegality; - - if (appData.testLegality) { - XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); - } else { - XtSetArg(args[0], XtNleftBitmap, None); - } - XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Test Legality"), - args, 1); -} - - -void FlashMovesProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - Arg args[16]; - - if (appData.flashCount == 0) { - appData.flashCount = 3; - } else { - appData.flashCount = -appData.flashCount; - } - - if (appData.flashCount > 0) { - XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); - } else { - XtSetArg(args[0], XtNleftBitmap, None); - } - XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Flash Moves"), - args, 1); -} - -void FlipViewProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - flipView = !flipView; - DrawPosition(True, NULL); -} - -void GetMoveListProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - Arg args[16]; - - appData.getMoveList = !appData.getMoveList; - - if (appData.getMoveList) { - XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); - GetMoveListEvent(); - } else { - XtSetArg(args[0], XtNleftBitmap, None); - } - XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Get Move List"), - args, 1); -} - -#if HIGHDRAG -void HighlightDraggingProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - Arg args[16]; - - appData.highlightDragging = !appData.highlightDragging; - - if (appData.highlightDragging) { - XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); - } else { - XtSetArg(args[0], XtNleftBitmap, None); - } - XtSetValues(XtNameToWidget(menuBarWidget, - "menuOptions.Highlight Dragging"), args, 1); -} -#endif - -void HighlightLastMoveProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - Arg args[16]; - - appData.highlightLastMove = !appData.highlightLastMove; - - if (appData.highlightLastMove) { - XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); - } else { - XtSetArg(args[0], XtNleftBitmap, None); - } - XtSetValues(XtNameToWidget(menuBarWidget, - "menuOptions.Highlight Last Move"), args, 1); -} - -void IcsAlarmProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - Arg args[16]; - - appData.icsAlarm = !appData.icsAlarm; - - if (appData.icsAlarm) { - XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); - } else { - XtSetArg(args[0], XtNleftBitmap, None); - } - XtSetValues(XtNameToWidget(menuBarWidget, - "menuOptions.ICS Alarm"), args, 1); -} - -void MoveSoundProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - Arg args[16]; - - appData.ringBellAfterMoves = !appData.ringBellAfterMoves; - - if (appData.ringBellAfterMoves) { - XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); - } else { - XtSetArg(args[0], XtNleftBitmap, None); - } - XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Move Sound"), - args, 1); -} - - -void OldSaveStyleProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - Arg args[16]; - - appData.oldSaveStyle = !appData.oldSaveStyle; - - if (appData.oldSaveStyle) { - XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); - } else { - XtSetArg(args[0], XtNleftBitmap, None); - } - XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Old Save Style"), - args, 1); -} - -void PeriodicUpdatesProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - Arg args[16]; - - PeriodicUpdatesEvent(!appData.periodicUpdates); - - if (appData.periodicUpdates) { - XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); - } else { - XtSetArg(args[0], XtNleftBitmap, None); - } - XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Periodic Updates"), - args, 1); -} - -void PonderNextMoveProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - Arg args[16]; - - PonderNextMoveEvent(!appData.ponderNextMove); - - if (appData.ponderNextMove) { - XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); - } else { - XtSetArg(args[0], XtNleftBitmap, None); - } - XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Ponder Next Move"), - args, 1); -} - -void PopupExitMessageProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - Arg args[16]; - - appData.popupExitMessage = !appData.popupExitMessage; - - if (appData.popupExitMessage) { - XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); - } else { - XtSetArg(args[0], XtNleftBitmap, None); - } - XtSetValues(XtNameToWidget(menuBarWidget, - "menuOptions.Popup Exit Message"), args, 1); -} - -void PopupMoveErrorsProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - Arg args[16]; - - appData.popupMoveErrors = !appData.popupMoveErrors; - - if (appData.popupMoveErrors) { - XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); - } else { - XtSetArg(args[0], XtNleftBitmap, None); - } - XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Popup Move Errors"), - args, 1); -} - -void PremoveProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - Arg args[16]; - - appData.premove = !appData.premove; - - if (appData.premove) { - XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); - } else { - XtSetArg(args[0], XtNleftBitmap, None); - } - XtSetValues(XtNameToWidget(menuBarWidget, - "menuOptions.Premove"), args, 1); -} - -void QuietPlayProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - Arg args[16]; - - appData.quietPlay = !appData.quietPlay; - - if (appData.quietPlay) { - XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); - } else { - XtSetArg(args[0], XtNleftBitmap, None); - } - XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Quiet Play"), - args, 1); -} - -void ShowCoordsProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - Arg args[16]; - - appData.showCoords = !appData.showCoords; - - if (appData.showCoords) { - XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); - } else { - XtSetArg(args[0], XtNleftBitmap, None); - } - XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Show Coords"), - args, 1); - - DrawPosition(True, NULL); -} - -void ShowThinkingProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - Arg args[16]; - - ShowThinkingEvent(!appData.showThinking); - - if (appData.showThinking) { - XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); - } else { - XtSetArg(args[0], XtNleftBitmap, None); - } - XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Show Thinking"), - args, 1); -} - -void InfoProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - char buf[MSG_SIZ]; - sprintf(buf, "xterm -e info --directory %s --directory . -f %s &", - INFODIR, INFOFILE); - system(buf); -} - -void ManProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - char buf[MSG_SIZ]; - String name; - if (nprms && *nprms > 0) - name = prms[0]; - else - name = "xboard"; - sprintf(buf, "xterm -e man %s &", name); - system(buf); -} - -void HintProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - HintEvent(); -} - -void BookProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - BookEvent(); -} - -void AboutProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - char buf[MSG_SIZ]; -#if ZIPPY - char *zippy = " (with Zippy code)"; -#else - char *zippy = ""; -#endif - sprintf(buf, "%s%s\n\n%s\n%s\n\n%s%s\n%s", - programVersion, zippy, - "Copyright 1991 Digital Equipment Corporation", - "Enhancements Copyright 1992-2001 Free Software Foundation", - PRODUCT, " is free software and carries NO WARRANTY;", - "see the file COPYING for more information."); - ErrorPopUp("About XBoard", buf, FALSE); -} - -void DebugProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - appData.debugMode = !appData.debugMode; -} - -void AboutGameProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - AboutGameEvent(); -} - -void NothingProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - return; -} - -void Iconify(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - Arg args[16]; - - fromX = fromY = -1; - XtSetArg(args[0], XtNiconic, True); - XtSetValues(shellWidget, args, 1); -} - -void DisplayMessage(message, extMessage) - char *message, *extMessage; -{ - char buf[MSG_SIZ]; - Arg arg; - - if (extMessage) { - if (*message) { - sprintf(buf, "%s %s", message, extMessage); - message = buf; - } else { - message = extMessage; - } - } - XtSetArg(arg, XtNlabel, message); - XtSetValues(messageWidget, &arg, 1); -} - -void DisplayTitle(text) - char *text; -{ - Arg args[16]; - int i; - char title[MSG_SIZ]; - char icon[MSG_SIZ]; - - if (text == NULL) text = ""; - - if (appData.titleInWindow) { - i = 0; - XtSetArg(args[i], XtNlabel, text); i++; - XtSetValues(titleWidget, args, i); - } - - if (*text != NULLCHAR) { - strcpy(icon, text); - strcpy(title, text); - } else if (appData.icsActive) { - sprintf(icon, "%s", appData.icsHost); - sprintf(title, "%s: %s", programName, appData.icsHost); - } else if (appData.cmailGameName[0] != NULLCHAR) { - sprintf(icon, "%s", "CMail"); - sprintf(title, "%s: %s", programName, "CMail"); - } else if (appData.noChessProgram) { - strcpy(icon, programName); - strcpy(title, programName); - } else { - strcpy(icon, first.tidy); - sprintf(title, "%s: %s", programName, first.tidy); - } - i = 0; - XtSetArg(args[i], XtNiconName, (XtArgVal) icon); i++; - XtSetArg(args[i], XtNtitle, (XtArgVal) title); i++; - XtSetValues(shellWidget, args, i); -} - - -void DisplayError(message, error) - String message; - int error; -{ - char buf[MSG_SIZ]; - - if (error == 0) { - if (appData.debugMode || appData.matchMode) { - fprintf(stderr, "%s: %s\n", programName, message); - } - } else { - if (appData.debugMode || appData.matchMode) { - fprintf(stderr, "%s: %s: %s\n", - programName, message, strerror(error)); - } - sprintf(buf, "%s: %s", message, strerror(error)); - message = buf; - } - ErrorPopUp("Error", message, FALSE); -} - - -void DisplayMoveError(message) - String message; -{ - fromX = fromY = -1; - ClearHighlights(); - DrawPosition(FALSE, NULL); - if (appData.debugMode || appData.matchMode) { - fprintf(stderr, "%s: %s\n", programName, message); - } - if (appData.popupMoveErrors) { - ErrorPopUp("Error", message, FALSE); - } else { - DisplayMessage(message, ""); - } -} - - -void DisplayFatalError(message, error, status) - String message; - int error, status; -{ - char buf[MSG_SIZ]; - - errorExitStatus = status; - if (error == 0) { - fprintf(stderr, "%s: %s\n", programName, message); - } else { - fprintf(stderr, "%s: %s: %s\n", - programName, message, strerror(error)); - sprintf(buf, "%s: %s", message, strerror(error)); - message = buf; - } - if (appData.popupExitMessage && boardWidget && XtIsRealized(boardWidget)) { - ErrorPopUp(status ? "Fatal Error" : "Exiting", message, TRUE); - } else { - ExitEvent(status); - } -} - -void DisplayInformation(message) - String message; -{ - ErrorPopDown(); - ErrorPopUp("Information", message, TRUE); -} - -void DisplayNote(message) - String message; -{ - ErrorPopDown(); - ErrorPopUp("Note", message, FALSE); -} - -static int -NullXErrorCheck(dpy, error_event) - Display *dpy; - XErrorEvent *error_event; -{ - return 0; -} - -void DisplayIcsInteractionTitle(message) - String message; -{ - if (oldICSInteractionTitle == NULL) { - /* Magic to find the old window title, adapted from vim */ - char *wina = getenv("WINDOWID"); - if (wina != NULL) { - Window win = (Window) atoi(wina); - Window root, parent, *children; - unsigned int nchildren; - int (*oldHandler)() = XSetErrorHandler(NullXErrorCheck); - for (;;) { - if (XFetchName(xDisplay, win, &oldICSInteractionTitle)) break; - if (!XQueryTree(xDisplay, win, &root, &parent, - &children, &nchildren)) break; - if (children) XFree((void *)children); - if (parent == root || parent == 0) break; - win = parent; - } - XSetErrorHandler(oldHandler); - } - if (oldICSInteractionTitle == NULL) { - oldICSInteractionTitle = "xterm"; - } - } - printf("\033]0;%s\007", message); - fflush(stdout); -} - -char pendingReplyPrefix[MSG_SIZ]; -ProcRef pendingReplyPR; - -void AskQuestionProc(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - if (*nprms != 4) { - fprintf(stderr, "AskQuestionProc needed 4 parameters, got %d\n", - *nprms); - return; - } - AskQuestionEvent(prms[0], prms[1], prms[2], prms[3]); -} - -void AskQuestionPopDown() -{ - if (!askQuestionUp) return; - XtPopdown(askQuestionShell); - XtDestroyWidget(askQuestionShell); - askQuestionUp = False; -} - -void AskQuestionReplyAction(w, event, prms, nprms) - Widget w; - XEvent *event; - String *prms; - Cardinal *nprms; -{ - char buf[MSG_SIZ]; - int err; - String reply; - - reply = XawDialogGetValueString(w = XtParent(w)); - strcpy(buf, pendingReplyPrefix); - if (*buf) strcat(buf, " "); - strcat(buf, reply); - strcat(buf, "\n"); - OutputToProcess(pendingReplyPR, buf, strlen(buf), &err); - AskQuestionPopDown(); - - if (err) DisplayFatalError("Error writing to chess program", err, 0); -} - -void AskQuestionCallback(w, client_data, call_data) - Widget w; - XtPointer client_data, call_data; -{ - String name; - Arg args[16]; - - XtSetArg(args[0], XtNlabel, &name); - XtGetValues(w, args, 1); - - if (strcmp(name, "cancel") == 0) { - AskQuestionPopDown(); - } else { - AskQuestionReplyAction(w, NULL, NULL, NULL); - } -} - -void AskQuestion(title, question, replyPrefix, pr) - char *title, *question, *replyPrefix; - ProcRef pr; -{ - Arg args[16]; - Widget popup, layout, dialog, edit; - Window root, child; - int x, y, i; - int win_x, win_y; - unsigned int mask; - - strcpy(pendingReplyPrefix, replyPrefix); - pendingReplyPR = pr; - - i = 0; - XtSetArg(args[i], XtNresizable, True); i++; - XtSetArg(args[i], XtNwidth, DIALOG_SIZE); i++; - askQuestionShell = popup = - XtCreatePopupShell(title, transientShellWidgetClass, - shellWidget, args, i); - - layout = - XtCreateManagedWidget(layoutName, formWidgetClass, popup, - layoutArgs, XtNumber(layoutArgs)); - - i = 0; - XtSetArg(args[i], XtNlabel, question); i++; - XtSetArg(args[i], XtNvalue, ""); i++; - XtSetArg(args[i], XtNborderWidth, 0); i++; - dialog = XtCreateManagedWidget("question", dialogWidgetClass, - layout, args, i); - - XawDialogAddButton(dialog, "enter", AskQuestionCallback, - (XtPointer) dialog); - XawDialogAddButton(dialog, "cancel", AskQuestionCallback, - (XtPointer) dialog); - - XtRealizeWidget(popup); - CatchDeleteWindow(popup, "AskQuestionPopDown"); - - 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); - askQuestionUp = True; - - edit = XtNameToWidget(dialog, "*value"); - XtSetKeyboardFocus(popup, edit); -} - - -void -PlaySound(name) - char *name; -{ - if (*name == NULLCHAR) { - return; - } else if (strcmp(name, "$") == 0) { - putc(BELLCHAR, stderr); - } else { - char buf[2048]; - sprintf(buf, "%s '%s' &", appData.soundProgram, name); - system(buf); - } -} - -void -RingBell() -{ - PlaySound(appData.soundMove); -} - -void -PlayIcsWinSound() -{ - PlaySound(appData.soundIcsWin); -} - -void -PlayIcsLossSound() -{ - PlaySound(appData.soundIcsLoss); -} - -void -PlayIcsDrawSound() -{ - PlaySound(appData.soundIcsDraw); -} - -void -PlayIcsUnfinishedSound() -{ - PlaySound(appData.soundIcsUnfinished); -} - -void -PlayAlarmSound() -{ - PlaySound(appData.soundIcsAlarm); -} - -void -EchoOn() -{ - system("stty echo"); -} - -void -EchoOff() -{ - system("stty -echo"); -} - -void -Colorize(cc, continuation) - ColorClass cc; - int continuation; -{ - char buf[MSG_SIZ]; - int count, outCount, error; - - if (textColors[(int)cc].bg > 0) { - if (textColors[(int)cc].fg > 0) { - sprintf(buf, "\033[0;%d;%d;%dm", textColors[(int)cc].attr, - textColors[(int)cc].fg, textColors[(int)cc].bg); - } else { - sprintf(buf, "\033[0;%d;%dm", textColors[(int)cc].attr, - textColors[(int)cc].bg); - } - } else { - if (textColors[(int)cc].fg > 0) { - sprintf(buf, "\033[0;%d;%dm", textColors[(int)cc].attr, - textColors[(int)cc].fg); - } else { - sprintf(buf, "\033[0;%dm", textColors[(int)cc].attr); - } - } - count = strlen(buf); - outCount = OutputToProcess(NoProc, buf, count, &error); - if (outCount < count) { - DisplayFatalError("Error writing to display", error, 1); - } - - if (continuation) return; - switch (cc) { - case ColorShout: - PlaySound(appData.soundShout); - break; - case ColorSShout: - PlaySound(appData.soundSShout); - break; - case ColorChannel1: - PlaySound(appData.soundChannel1); - break; - case ColorChannel: - PlaySound(appData.soundChannel); - break; - case ColorKibitz: - PlaySound(appData.soundKibitz); - break; - case ColorTell: - PlaySound(appData.soundTell); - break; - case ColorChallenge: - PlaySound(appData.soundChallenge); - break; - case ColorRequest: - PlaySound(appData.soundRequest); - break; - case ColorSeek: - PlaySound(appData.soundSeek); - break; - case ColorNormal: - case ColorNone: - default: - break; - } -} - -char *UserName() -{ - return getpwuid(getuid())->pw_name; -} - -static char *ExpandPathName(path) - char *path; -{ - static char static_buf[2000]; - char *d, *s, buf[2000]; - struct passwd *pwd; - - s = path; - d = static_buf; - - while (*s && isspace(*s)) - ++s; - - if (!*s) { - *d = 0; - return static_buf; - } - - if (*s == '~') { - if (*(s+1) == '/') { - strcpy(d, getpwuid(getuid())->pw_dir); - strcat(d, s+1); - } - else { - strcpy(buf, s+1); - *strchr(buf, '/') = 0; - pwd = getpwnam(buf); - if (!pwd) - { - fprintf(stderr, "ERROR: Unknown user %s (in path %s)\n", - buf, path); - return NULL; - } - strcpy(d, pwd->pw_dir); - strcat(d, strchr(s+1, '/')); - } - } - else - strcpy(d, s); - - return static_buf; -} - -char *HostName() -{ - static char host_name[MSG_SIZ]; - -#if HAVE_GETHOSTNAME - gethostname(host_name, MSG_SIZ); - return host_name; -#else /* not HAVE_GETHOSTNAME */ -# if HAVE_SYSINFO && HAVE_SYS_SYSTEMINFO_H - sysinfo(SI_HOSTNAME, host_name, MSG_SIZ); - return host_name; -# else /* not (HAVE_SYSINFO && HAVE_SYS_SYSTEMINFO_H) */ - return "localhost"; -# endif/* not (HAVE_SYSINFO && HAVE_SYS_SYSTEMINFO_H) */ -#endif /* not HAVE_GETHOSTNAME */ -} - -XtIntervalId delayedEventTimerXID = 0; -DelayedEventCallback delayedEventCallback = 0; - -void -FireDelayedEvent() -{ - delayedEventTimerXID = 0; - delayedEventCallback(); -} - -void -ScheduleDelayedEvent(cb, millisec) - DelayedEventCallback cb; long millisec; -{ - delayedEventCallback = cb; - delayedEventTimerXID = - XtAppAddTimeOut(appContext, millisec, - (XtTimerCallbackProc) FireDelayedEvent, (XtPointer) 0); -} - -DelayedEventCallback -GetDelayedEvent() -{ - if (delayedEventTimerXID) { - return delayedEventCallback; - } else { - return NULL; - } -} - -void -CancelDelayedEvent() -{ - if (delayedEventTimerXID) { - XtRemoveTimeOut(delayedEventTimerXID); - delayedEventTimerXID = 0; - } -} - -XtIntervalId loadGameTimerXID = 0; - -int LoadGameTimerRunning() -{ - return loadGameTimerXID != 0; -} - -int StopLoadGameTimer() -{ - if (loadGameTimerXID != 0) { - XtRemoveTimeOut(loadGameTimerXID); - loadGameTimerXID = 0; - return TRUE; - } else { - return FALSE; - } -} - -void -LoadGameTimerCallback(arg, id) - XtPointer arg; - XtIntervalId *id; -{ - loadGameTimerXID = 0; - AutoPlayGameLoop(); -} - -void -StartLoadGameTimer(millisec) - long millisec; -{ - loadGameTimerXID = - XtAppAddTimeOut(appContext, millisec, - (XtTimerCallbackProc) LoadGameTimerCallback, - (XtPointer) 0); -} - -XtIntervalId analysisClockXID = 0; - -void -AnalysisClockCallback(arg, id) - XtPointer arg; - XtIntervalId *id; -{ - if (gameMode == AnalyzeMode || gameMode == AnalyzeFile) { - AnalysisPeriodicEvent(0); - StartAnalysisClock(); - } -} - -void -StartAnalysisClock() -{ - analysisClockXID = - XtAppAddTimeOut(appContext, 2000, - (XtTimerCallbackProc) AnalysisClockCallback, - (XtPointer) 0); -} - -XtIntervalId clockTimerXID = 0; - -int ClockTimerRunning() -{ - return clockTimerXID != 0; -} - -int StopClockTimer() -{ - if (clockTimerXID != 0) { - XtRemoveTimeOut(clockTimerXID); - clockTimerXID = 0; - return TRUE; - } else { - return FALSE; - } -} - -void -ClockTimerCallback(arg, id) - XtPointer arg; - XtIntervalId *id; -{ - clockTimerXID = 0; - DecrementClocks(); -} - -void -StartClockTimer(millisec) - long millisec; -{ - clockTimerXID = - XtAppAddTimeOut(appContext, millisec, - (XtTimerCallbackProc) ClockTimerCallback, - (XtPointer) 0); -} - -void -DisplayTimerLabel(w, color, timer, highlight) - Widget w; - char *color; - long timer; - int highlight; -{ - char buf[MSG_SIZ]; - Arg args[16]; - - if (appData.clockMode) { - sprintf(buf, "%s: %s", color, TimeString(timer)); - XtSetArg(args[0], XtNlabel, buf); - } else { - sprintf(buf, "%s ", color); - XtSetArg(args[0], XtNlabel, buf); - } - - if (highlight) { - XtSetArg(args[1], XtNbackground, timerForegroundPixel); - XtSetArg(args[2], XtNforeground, timerBackgroundPixel); - } else { - XtSetArg(args[1], XtNbackground, timerBackgroundPixel); - XtSetArg(args[2], XtNforeground, timerForegroundPixel); - } - - XtSetValues(w, args, 3); -} - -void -DisplayWhiteClock(timeRemaining, highlight) - long timeRemaining; - int highlight; -{ - Arg args[16]; - DisplayTimerLabel(whiteTimerWidget, "White", timeRemaining, highlight); - if (highlight && iconPixmap == bIconPixmap) { - iconPixmap = wIconPixmap; - XtSetArg(args[0], XtNiconPixmap, iconPixmap); - XtSetValues(shellWidget, args, 1); - } -} - -void -DisplayBlackClock(timeRemaining, highlight) - long timeRemaining; - int highlight; -{ - Arg args[16]; - DisplayTimerLabel(blackTimerWidget, "Black", timeRemaining, highlight); - if (highlight && iconPixmap == wIconPixmap) { - iconPixmap = bIconPixmap; - XtSetArg(args[0], XtNiconPixmap, iconPixmap); - XtSetValues(shellWidget, args, 1); - } -} - -#define CPNone 0 -#define CPReal 1 -#define CPComm 2 -#define CPSock 3 -#define CPLoop 4 -typedef int CPKind; - -typedef struct { - CPKind kind; - int pid; - int fdTo, fdFrom; -} ChildProc; - - -int StartChildProcess(cmdLine, dir, pr) - char *cmdLine; - char *dir; - ProcRef *pr; -{ - char *argv[64], *p; - int i, pid; - int to_prog[2], from_prog[2]; - ChildProc *cp; - char buf[MSG_SIZ]; - - if (appData.debugMode) { - fprintf(stderr, "StartChildProcess (dir=\"%s\") %s\n",dir, cmdLine); - } - - /* We do NOT feed the cmdLine to the shell; we just - parse it into blank-separated arguments in the - most simple-minded way possible. - */ - i = 0; - strcpy(buf, cmdLine); - p = buf; - for (;;) { - argv[i++] = p; - p = strchr(p, ' '); - if (p == NULL) break; - *p++ = NULLCHAR; - } - argv[i] = NULL; - - SetUpChildIO(to_prog, from_prog); - - if ((pid = fork()) == 0) { - /* Child process */ - dup2(to_prog[0], 0); - dup2(from_prog[1], 1); - close(to_prog[0]); - close(to_prog[1]); - close(from_prog[0]); - close(from_prog[1]); - dup2(1, fileno(stderr)); /* force stderr to the pipe */ - - if (dir[0] != NULLCHAR && chdir(dir) != 0) { - perror(dir); - exit(1); - } - - execvp(argv[0], argv); - - /* If we get here, exec failed */ - perror(argv[0]); - exit(1); - } - - /* Parent process */ - close(to_prog[0]); - close(from_prog[1]); - - cp = (ChildProc *) calloc(1, sizeof(ChildProc)); - cp->kind = CPReal; - cp->pid = pid; - cp->fdFrom = from_prog[0]; - cp->fdTo = to_prog[1]; - *pr = (ProcRef) cp; - return 0; -} - -void -DestroyChildProcess(pr, signal) - ProcRef pr; - int signal; -{ - ChildProc *cp = (ChildProc *) pr; - - if (cp->kind != CPReal) return; - cp->kind = CPNone; - if (signal) { - kill(cp->pid, SIGTERM); - } - /* Process is exiting either because of the kill or because of - a quit command sent by the backend; either way, wait for it to die. - */ - wait((int *) 0); - close(cp->fdFrom); - close(cp->fdTo); -} - -void -InterruptChildProcess(pr) - ProcRef pr; -{ - ChildProc *cp = (ChildProc *) pr; - - if (cp->kind != CPReal) return; - (void) kill(cp->pid, SIGINT); /* stop it thinking */ -} - -int OpenTelnet(host, port, pr) - 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); -} - -int OpenTCP(host, port, pr) - char *host; - char *port; - ProcRef *pr; -{ -#if OMIT_SOCKETS - DisplayFatalError("Socket support is not configured in", 0, 2); -#else /* !OMIT_SOCKETS */ - int s; - struct sockaddr_in sa; - struct hostent *hp; - unsigned short uport; - ChildProc *cp; - - if ((s = socket(AF_INET, SOCK_STREAM, 6)) < 0) { - return errno; - } - - memset((char *) &sa, (int)0, sizeof(struct sockaddr_in)); - sa.sin_family = AF_INET; - sa.sin_addr.s_addr = INADDR_ANY; - uport = (unsigned short) 0; - sa.sin_port = htons(uport); - if (bind(s, (struct sockaddr *) &sa, sizeof(struct sockaddr_in)) < 0) { - return errno; - } - - memset((char *) &sa, (int)0, sizeof(struct sockaddr_in)); - if (!(hp = gethostbyname(host))) { - int b0, b1, b2, b3; - if (sscanf(host, "%d.%d.%d.%d", &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] = b0; - hp->h_addr_list[0][1] = b1; - hp->h_addr_list[0][2] = b2; - hp->h_addr_list[0][3] = b3; - } else { - return ENOENT; - } - } - 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); - - if (connect(s, (struct sockaddr *) &sa, - sizeof(struct sockaddr_in)) < 0) { - return errno; - } - - cp = (ChildProc *) calloc(1, sizeof(ChildProc)); - cp->kind = CPSock; - cp->pid = 0; - cp->fdFrom = s; - cp->fdTo = s; - *pr = (ProcRef) cp; - -#endif /* !OMIT_SOCKETS */ - - return 0; -} - -int OpenCommPort(name, pr) - char *name; - ProcRef *pr; -{ - int fd; - ChildProc *cp; - - fd = open(name, 2, 0); - if (fd < 0) return errno; - - cp = (ChildProc *) calloc(1, sizeof(ChildProc)); - cp->kind = CPComm; - cp->pid = 0; - cp->fdFrom = fd; - cp->fdTo = fd; - *pr = (ProcRef) cp; - - return 0; -} - -int OpenLoopback(pr) - ProcRef *pr; -{ - ChildProc *cp; - int to[2], from[2]; - - SetUpChildIO(to, from); - - cp = (ChildProc *) calloc(1, sizeof(ChildProc)); - cp->kind = CPLoop; - cp->pid = 0; - cp->fdFrom = to[0]; /* note not from[0]; we are doing a loopback */ - cp->fdTo = to[1]; - *pr = (ProcRef) cp; - - return 0; -} - -int OpenRcmd(host, user, cmd, pr) - char *host, *user, *cmd; - ProcRef *pr; -{ - DisplayFatalError("internal rcmd not implemented for Unix", 0, 1); - return -1; -} - -#define INPUT_SOURCE_BUF_SIZE 8192 - -typedef struct { - CPKind kind; - int fd; - int lineByLine; - char *unused; - InputCallback func; - XtInputId xid; - char buf[INPUT_SOURCE_BUF_SIZE]; - VOIDSTAR closure; -} InputSource; - -void -DoInputCallback(closure, source, xid) - caddr_t closure; - int *source; - XtInputId *xid; -{ - InputSource *is = (InputSource *) closure; - int count; - int error; - char *p, *q; - - if (is->lineByLine) { - count = read(is->fd, is->unused, - INPUT_SOURCE_BUF_SIZE - (is->unused - is->buf)); - if (count <= 0) { - (is->func)(is, is->closure, is->buf, count, count ? errno : 0); - return; - } - is->unused += count; - p = is->buf; - while (p < is->unused) { - q = memchr(p, '\n', is->unused - p); - if (q == NULL) break; - q++; - (is->func)(is, is->closure, p, q - p, 0); - p = q; - } - q = is->buf; - while (p < is->unused) { - *q++ = *p++; - } - is->unused = q; - } else { - count = read(is->fd, is->buf, INPUT_SOURCE_BUF_SIZE); - if (count == -1) - error = errno; - else - error = 0; - (is->func)(is, is->closure, is->buf, count, error); - } -} - -InputSourceRef AddInputSource(pr, lineByLine, func, closure) - ProcRef pr; - int lineByLine; - InputCallback func; - VOIDSTAR closure; -{ - InputSource *is; - ChildProc *cp = (ChildProc *) pr; - - is = (InputSource *) calloc(1, sizeof(InputSource)); - is->lineByLine = lineByLine; - is->func = func; - if (pr == NoProc) { - is->kind = CPReal; - is->fd = fileno(stdin); - } else { - is->kind = cp->kind; - is->fd = cp->fdFrom; - } - if (lineByLine) { - is->unused = is->buf; - } - - is->xid = XtAppAddInput(appContext, is->fd, - (XtPointer) (XtInputReadMask), - (XtInputCallbackProc) DoInputCallback, - (XtPointer) is); - is->closure = closure; - return (InputSourceRef) is; -} - -void -RemoveInputSource(isr) - InputSourceRef isr; -{ - InputSource *is = (InputSource *) isr; - - if (is->xid == 0) return; - XtRemoveInput(is->xid); - is->xid = 0; -} - -int OutputToProcess(pr, message, count, outError) - ProcRef pr; - char *message; - int count; - int *outError; -{ - ChildProc *cp = (ChildProc *) pr; - int outCount; - - if (pr == NoProc) - outCount = fwrite(message, 1, count, stdout); - else - outCount = write(cp->fdTo, message, count); - - if (outCount == -1) - *outError = errno; - else - *outError = 0; - - return outCount; -} - -/* Output message to process, with "ms" milliseconds of delay - between each character. This is needed when sending the logon - script to ICC, which for some reason doesn't like the - instantaneous send. */ -int OutputToProcessDelayed(pr, message, count, outError, msdelay) - ProcRef pr; - char *message; - int count; - int *outError; - long msdelay; -{ - ChildProc *cp = (ChildProc *) pr; - int outCount = 0; - int r; - - while (count--) { - r = write(cp->fdTo, message++, 1); - if (r == -1) { - *outError = errno; - return outCount; - } - ++outCount; - if (msdelay >= 0) - TimeDelay(msdelay); - } - - return outCount; -} - -/**** Animation code by Hugh Fisher, DCS, ANU. - - Known problem: if a window overlapping the board is - moved away while a piece is being animated underneath, - the newly exposed area won't be updated properly. - I can live with this. - - Known problem: if you look carefully at the animation - of pieces in mono mode, they are being drawn as solid - shapes without interior detail while moving. Fixing - this would be a major complication for minimal return. -****/ - -/* Masks for XPM pieces. Black and white pieces can have - different shapes, but in the interest of retaining my - sanity pieces must have the same outline on both light - and dark squares, and all pieces must use the same - background square colors/images. */ - -static void -CreateAnimMasks (pieceDepth) - int pieceDepth; -{ - ChessSquare piece; - Pixmap buf; - GC bufGC, maskGC; - int kind, n; - unsigned long plane; - XGCValues values; - - /* Need a bitmap just to get a GC with right depth */ - buf = XCreatePixmap(xDisplay, xBoardWindow, - 8, 8, 1); - values.foreground = 1; - values.background = 0; - /* Don't use XtGetGC, not read only */ - maskGC = XCreateGC(xDisplay, buf, - GCForeground | GCBackground, &values); - XFreePixmap(xDisplay, buf); - - buf = XCreatePixmap(xDisplay, xBoardWindow, - squareSize, squareSize, pieceDepth); - values.foreground = XBlackPixel(xDisplay, xScreen); - values.background = XWhitePixel(xDisplay, xScreen); - bufGC = XCreateGC(xDisplay, buf, - GCForeground | GCBackground, &values); - - for (piece = WhitePawn; piece <= BlackKing; piece++) { - /* Begin with empty mask */ - xpmMask[piece] = XCreatePixmap(xDisplay, xBoardWindow, - squareSize, squareSize, 1); - XSetFunction(xDisplay, maskGC, GXclear); - XFillRectangle(xDisplay, xpmMask[piece], maskGC, - 0, 0, squareSize, squareSize); - - /* Take a copy of the piece */ - if (White(piece)) - kind = 0; - else - kind = 2; - XSetFunction(xDisplay, bufGC, GXcopy); - XCopyArea(xDisplay, xpmPieceBitmap[kind][((int)piece) % 6], - buf, bufGC, - 0, 0, squareSize, squareSize, 0, 0); - - /* XOR the background (light) over the piece */ - XSetFunction(xDisplay, bufGC, GXxor); - if (useImageSqs) - XCopyArea(xDisplay, xpmLightSquare, buf, bufGC, - 0, 0, squareSize, squareSize, 0, 0); - else { - XSetForeground(xDisplay, bufGC, lightSquareColor); - XFillRectangle(xDisplay, buf, bufGC, 0, 0, squareSize, squareSize); - } - - /* We now have an inverted piece image with the background - erased. Construct mask by just selecting all the non-zero - pixels - no need to reconstruct the original image. */ - XSetFunction(xDisplay, maskGC, GXor); - plane = 1; - /* Might be quicker to download an XImage and create bitmap - data from it rather than this N copies per piece, but it - only takes a fraction of a second and there is a much - longer delay for loading the pieces. */ - for (n = 0; n < pieceDepth; n ++) { - XCopyPlane(xDisplay, buf, xpmMask[piece], maskGC, - 0, 0, squareSize, squareSize, - 0, 0, plane); - plane = plane << 1; - } - } - /* Clean up */ - XFreePixmap(xDisplay, buf); - XFreeGC(xDisplay, bufGC); - XFreeGC(xDisplay, maskGC); -} - -static void -InitAnimState (anim, info) - AnimState * anim; - XWindowAttributes * info; -{ - XtGCMask mask; - XGCValues values; - - /* Each buffer is square size, same depth as window */ - anim->saveBuf = XCreatePixmap(xDisplay, xBoardWindow, - squareSize, squareSize, info->depth); - anim->newBuf = XCreatePixmap(xDisplay, xBoardWindow, - squareSize, squareSize, info->depth); - - /* Create a plain GC for blitting */ - mask = GCForeground | GCBackground | GCFunction | - GCPlaneMask | GCGraphicsExposures; - values.foreground = XBlackPixel(xDisplay, xScreen); - values.background = XWhitePixel(xDisplay, xScreen); - values.function = GXcopy; - values.plane_mask = AllPlanes; - values.graphics_exposures = False; - anim->blitGC = XCreateGC(xDisplay, xBoardWindow, mask, &values); - - /* Piece will be copied from an existing context at - the start of each new animation/drag. */ - anim->pieceGC = XCreateGC(xDisplay, xBoardWindow, 0, &values); - - /* Outline will be a read-only copy of an existing */ - anim->outlineGC = None; -} - -static void -CreateAnimVars () -{ - static int done = 0; - XWindowAttributes info; - - if (done) return; - done = 1; - XGetWindowAttributes(xDisplay, xBoardWindow, &info); - - InitAnimState(&game, &info); - InitAnimState(&player, &info); - - /* For XPM pieces, we need bitmaps to use as masks. */ - if (useImages) - CreateAnimMasks(info.depth); -} - -#ifndef HAVE_USLEEP - -static Boolean frameWaiting; - -static RETSIGTYPE FrameAlarm (sig) - int sig; -{ - frameWaiting = False; - /* In case System-V style signals. Needed?? */ - signal(SIGALRM, FrameAlarm); -} - -static void -FrameDelay (time) - int time; -{ - struct itimerval delay; - - XSync(xDisplay, False); - - if (time > 0) { - frameWaiting = True; - signal(SIGALRM, FrameAlarm); - delay.it_interval.tv_sec = - delay.it_value.tv_sec = time / 1000; - 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); - } -} - -#else - -static void -FrameDelay (time) - int time; -{ - XSync(xDisplay, False); - if (time > 0) - usleep(time * 1000); -} - -#endif - -/* Convert board position to corner of screen rect and color */ - -static void -ScreenSquare(column, row, pt, color) - int column; int row; XPoint * pt; int * color; -{ - if (flipView) { - pt->x = lineGap + ((BOARD_SIZE-1)-column) * (squareSize + lineGap); - pt->y = lineGap + row * (squareSize + lineGap); - } else { - pt->x = lineGap + column * (squareSize + lineGap); - pt->y = lineGap + ((BOARD_SIZE-1)-row) * (squareSize + lineGap); - } - *color = ((column + row) % 2) == 1; -} - -/* Convert window coords to square */ - -static void -BoardSquare(x, y, column, row) - int x; int y; int * column; int * row; -{ - *column = EventToSquare(x, BOARD_SIZE); - if (flipView && *column >= 0) - *column = BOARD_SIZE - 1 - *column; - *row = EventToSquare(y, BOARD_SIZE); - if (!flipView && *row >= 0) - *row = BOARD_SIZE - 1 - *row; -} - -/* Utilities */ - -#undef Max /* just in case */ -#undef Min -#define Max(a, b) ((a) > (b) ? (a) : (b)) -#define Min(a, b) ((a) < (b) ? (a) : (b)) - -static void -SetRect(rect, x, y, width, height) - XRectangle * rect; int x; int y; int width; int height; -{ - rect->x = x; - rect->y = y; - rect->width = width; - rect->height = height; -} - -/* Test if two frames overlap. If they do, return - intersection rect within old and location of - that rect within new. */ - -static Boolean -Intersect(old, new, size, area, pt) - XPoint * old; XPoint * new; - int size; XRectangle * area; XPoint * pt; -{ - if (old->x > new->x + size || new->x > old->x + size || - old->y > new->y + size || new->y > old->y + size) { - return False; - } else { - SetRect(area, Max(new->x - old->x, 0), Max(new->y - old->y, 0), - size - abs(old->x - new->x), size - abs(old->y - new->y)); - pt->x = Max(old->x - new->x, 0); - pt->y = Max(old->y - new->y, 0); - return True; - } -} - -/* For two overlapping frames, return the rect(s) - in the old that do not intersect with the new. */ - -static void -CalcUpdateRects(old, new, size, update, nUpdates) - XPoint * old; XPoint * new; int size; - XRectangle update[]; int * nUpdates; -{ - int count; - - /* If old = new (shouldn't happen) then nothing to draw */ - if (old->x == new->x && old->y == new->y) { - *nUpdates = 0; - return; - } - /* Work out what bits overlap. Since we know the rects - are the same size we don't need a full intersect calc. */ - count = 0; - /* Top or bottom edge? */ - if (new->y > old->y) { - SetRect(&(update[count]), old->x, old->y, size, new->y - old->y); - count ++; - } else if (old->y > new->y) { - SetRect(&(update[count]), old->x, old->y + size - (old->y - new->y), - size, old->y - new->y); - count ++; - } - /* Left or right edge - don't overlap any update calculated above. */ - if (new->x > old->x) { - SetRect(&(update[count]), old->x, Max(new->y, old->y), - new->x - old->x, size - abs(new->y - old->y)); - count ++; - } else if (old->x > new->x) { - SetRect(&(update[count]), new->x + size, Max(new->y, old->y), - old->x - new->x, size - abs(new->y - old->y)); - count ++; - } - /* Done */ - *nUpdates = count; -} - -/* 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) - XPoint * start; XPoint * mid; - XPoint * finish; int factor; - XPoint frames[]; int * nFrames; -{ - int fraction, n, count; - - count = 0; - - /* Slow in, stepping 1/16th, then 1/8th, ... */ - fraction = 1; - 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; -} - -/* Draw a piece on the screen without disturbing what's there */ - -static void -SelectGCMask(piece, clip, outline, mask) - ChessSquare piece; GC * clip; GC * outline; Pixmap * mask; -{ - GC source; - - /* Bitmap for piece being moved. */ - if (appData.monoMode) { - *mask = *pieceToSolid(piece); - } else if (useImages) { -#if HAVE_LIBXPM - *mask = xpmMask[piece]; -#else - *mask = ximMaskPm[piece%6]; -#endif - } else { - *mask = *pieceToSolid(piece); - } - - /* GC for piece being moved. Square color doesn't matter, but - since it gets modified we make a copy of the original. */ - if (White(piece)) { - if (appData.monoMode) - source = bwPieceGC; - else - source = wlPieceGC; - } else { - if (appData.monoMode) - source = wbPieceGC; - else - source = blPieceGC; - } - XCopyGC(xDisplay, source, 0xFFFFFFFF, *clip); - - /* Outline only used in mono mode and is not modified */ - if (White(piece)) - *outline = bwPieceGC; - else - *outline = wbPieceGC; -} - -static void -OverlayPiece(piece, clip, outline, dest) - ChessSquare piece; GC clip; GC outline; Drawable dest; -{ - int kind; - - if (!useImages) { - /* Draw solid rectangle which will be clipped to shape of piece */ - XFillRectangle(xDisplay, dest, clip, - 0, 0, squareSize, squareSize); - if (appData.monoMode) - /* Also draw outline in contrasting color for black - on black / white on white cases */ - XCopyPlane(xDisplay, *pieceToOutline(piece), dest, outline, - 0, 0, squareSize, squareSize, 0, 0, 1); - } else { - /* Copy the piece */ - if (White(piece)) - kind = 0; - else - kind = 2; - XCopyArea(xDisplay, xpmPieceBitmap[kind][((int)piece) % 6], - dest, clip, - 0, 0, squareSize, squareSize, - 0, 0); - } -} - -/* Animate the movement of a single piece */ - -static void -BeginAnimation(anim, piece, startColor, start) - AnimState *anim; - ChessSquare piece; - int startColor; - XPoint * start; -{ - Pixmap mask; - - /* The old buffer is initialised with the start square (empty) */ - BlankSquare(0, 0, startColor, EmptySquare, anim->saveBuf); - anim->prevFrame = *start; - - /* The piece will be drawn using its own bitmap as a matte */ - SelectGCMask(piece, &anim->pieceGC, &anim->outlineGC, &mask); - XSetClipMask(xDisplay, anim->pieceGC, mask); -} - -static void -AnimationFrame(anim, frame, piece) - AnimState *anim; - XPoint *frame; - ChessSquare piece; -{ - XRectangle updates[4]; - XRectangle overlap; - XPoint pt; - int count, i; - - /* Save what we are about to draw into the new buffer */ - XCopyArea(xDisplay, xBoardWindow, anim->newBuf, anim->blitGC, - frame->x, frame->y, squareSize, squareSize, - 0, 0); - - /* Erase bits of the previous frame */ - if (Intersect(&anim->prevFrame, frame, squareSize, &overlap, &pt)) { - /* Where the new frame overlapped the previous, - the contents in newBuf are wrong. */ - XCopyArea(xDisplay, anim->saveBuf, anim->newBuf, anim->blitGC, - overlap.x, overlap.y, - overlap.width, overlap.height, - pt.x, pt.y); - /* Repaint the areas in the old that don't overlap new */ - CalcUpdateRects(&anim->prevFrame, frame, squareSize, updates, &count); - for (i = 0; i < count; i++) - XCopyArea(xDisplay, anim->saveBuf, xBoardWindow, anim->blitGC, - updates[i].x - anim->prevFrame.x, - updates[i].y - anim->prevFrame.y, - updates[i].width, updates[i].height, - updates[i].x, updates[i].y); - } else { - /* Easy when no overlap */ - XCopyArea(xDisplay, anim->saveBuf, xBoardWindow, anim->blitGC, - 0, 0, squareSize, squareSize, - anim->prevFrame.x, anim->prevFrame.y); - } - - /* Save this frame for next time round */ - XCopyArea(xDisplay, anim->newBuf, anim->saveBuf, anim->blitGC, - 0, 0, squareSize, squareSize, - 0, 0); - anim->prevFrame = *frame; - - /* Draw piece over original screen contents, not current, - and copy entire rect. Wipes out overlapping piece images. */ - OverlayPiece(piece, anim->pieceGC, anim->outlineGC, anim->newBuf); - XCopyArea(xDisplay, anim->newBuf, xBoardWindow, anim->blitGC, - 0, 0, squareSize, squareSize, - frame->x, frame->y); -} - -static void -EndAnimation (anim, finish) - AnimState *anim; - XPoint *finish; -{ - XRectangle updates[4]; - XRectangle overlap; - XPoint pt; - int count, i; - - /* The main code will redraw the final square, so we - only need to erase the bits that don't overlap. */ - if (Intersect(&anim->prevFrame, finish, squareSize, &overlap, &pt)) { - CalcUpdateRects(&anim->prevFrame, finish, squareSize, updates, &count); - for (i = 0; i < count; i++) - XCopyArea(xDisplay, anim->saveBuf, xBoardWindow, anim->blitGC, - updates[i].x - anim->prevFrame.x, - updates[i].y - anim->prevFrame.y, - updates[i].width, updates[i].height, - updates[i].x, updates[i].y); - } else { - XCopyArea(xDisplay, anim->saveBuf, xBoardWindow, anim->blitGC, - 0, 0, squareSize, squareSize, - anim->prevFrame.x, anim->prevFrame.y); - } -} - -static void -FrameSequence(anim, piece, startColor, start, finish, frames, nFrames) - AnimState *anim; - ChessSquare piece; int startColor; - XPoint * start; XPoint * finish; - XPoint frames[]; int nFrames; -{ - int n; - - BeginAnimation(anim, piece, startColor, start); - for (n = 0; n < nFrames; n++) { - AnimationFrame(anim, &(frames[n]), piece); - FrameDelay(appData.animSpeed); - } - EndAnimation(anim, finish); -} - -/* Main control logic for deciding what to animate and how */ - -void -AnimateMove(board, fromX, fromY, toX, toY) - Board board; - int fromX; - int fromY; - int toX; - int toY; -{ - ChessSquare piece; - int hop; - XPoint start, finish, mid; - XPoint frames[kFactor * 2 + 1]; - int nFrames, startColor, endColor; - - /* Are we animating? */ - if (!appData.animate || appData.blindfold) - return; - - if (fromY < 0 || fromX < 0 || toX < 0 || toY < 0) return; - piece = board[fromY][fromX]; - if (piece >= EmptySquare) return; - -#if DONT_HOP - hop = FALSE; -#else - hop = (piece == WhiteKnight || piece == BlackKnight); -#endif - - if (appData.debugMode) { - printf("AnimateMove: piece %d %s from %d,%d to %d,%d \n", - piece, hop ? "hops" : "slides", fromX, fromY, toX, toY); - } - - ScreenSquare(fromX, fromY, &start, &startColor); - ScreenSquare(toX, toY, &finish, &endColor); - - if (hop) { - /* 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; - } - } else { - mid.x = start.x + (finish.x - start.x) / 2; - 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); - FrameSequence(&game, piece, startColor, &start, &finish, frames, nFrames); - - /* Be sure end square is redrawn */ - damage[toY][toX] = True; -} - -static void -DragPieceBegin(x, y) - int x; int y; -{ - int boardX, boardY, color; - XPoint corner; - - /* Are we animating? */ - if (!appData.animateDragging || appData.blindfold) - return; - - /* Figure out which square we start in and the - mouse position relative to top left corner. */ - BoardSquare(x, y, &boardX, &boardY); - player.startBoardX = boardX; - player.startBoardY = boardY; - 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 */ - if (player.dragPiece >= 0 && player.dragPiece < EmptySquare) { - player.dragActive = True; - BeginAnimation(&player, player.dragPiece, color, &corner); - /* Mark this square as needing to be redrawn. Note that - we don't remove the piece though, since logically (ie - as seen by opponent) the move hasn't been made yet. */ - damage[boardY][boardX] = True; - } else { - player.dragActive = False; - } -} - -static void -DragPieceMove(x, y) - int x; int y; -{ - XPoint corner; - - /* Are we animating? */ - if (!appData.animateDragging || appData.blindfold) - return; - - /* Sanity check */ - if (! player.dragActive) - return; - /* Move piece, maintaining same relative position - of mouse within square */ - corner.x = x - player.mouseDelta.x; - corner.y = y - player.mouseDelta.y; - AnimationFrame(&player, &corner, player.dragPiece); -#if HIGHDRAG - if (appData.highlightDragging) { - int boardX, boardY; - BoardSquare(x, y, &boardX, &boardY); - SetHighlights(fromX, fromY, boardX, boardY); - } -#endif -} - -static void -DragPieceEnd(x, y) - int x; int y; -{ - int boardX, boardY, color; - XPoint corner; - - /* Are we animating? */ - if (!appData.animateDragging || appData.blindfold) - return; - - /* Sanity check */ - if (! player.dragActive) - return; - /* Last frame in sequence is square piece is - placed on, which may not match mouse exactly. */ - BoardSquare(x, y, &boardX, &boardY); - ScreenSquare(boardX, boardY, &corner, &color); - EndAnimation(&player, &corner); - - /* Be sure end square is redrawn */ - damage[boardY][boardX] = True; - - /* This prevents weird things happening with fast successive - clicks which on my Sun at least can cause motion events - without corresponding press/release. */ - player.dragActive = False; -} - -/* Handle expose event while piece being dragged */ - -static void -DrawDragPiece () -{ - if (!player.dragActive || appData.blindfold) - return; - - /* What we're doing: logically, the move hasn't been made yet, - so the piece is still in it's original square. But visually - it's being dragged around the board. So we erase the square - that the piece is on and draw it at the last known drag point. */ - BlankSquare(player.startSquare.x, player.startSquare.y, - player.startColor, EmptySquare, xBoardWindow); - AnimationFrame(&player, &player.prevFrame, player.dragPiece); - damage[player.startBoardY][player.startBoardX] = TRUE; -} - +/* + * xboard.c -- X front end for XBoard + * $Id: xboard.c,v 2.2 2003/11/06 07:22:14 mann Exp $ + * + * Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts. + * Enhancements Copyright 1992-2001 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: + * ------------------------------------------------------------------------ + * 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 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * ------------------------------------------------------------------------ + * + * See the file ChangeLog for a revision history. + */ + +#include "config.h" + +#include +#include +#include +#include +#include +#include +#include + +#if !OMIT_SOCKETS +# if HAVE_SYS_SOCKET_H +# include +# include +# include +# else /* not HAVE_SYS_SOCKET_H */ +# if HAVE_LAN_SOCKET_H +# include +# include +# include +# else /* not HAVE_LAN_SOCKET_H */ +# define OMIT_SOCKETS 1 +# endif /* not HAVE_LAN_SOCKET_H */ +# endif /* not HAVE_SYS_SOCKET_H */ +#endif /* !OMIT_SOCKETS */ + +#if STDC_HEADERS +# include +# include +#else /* not STDC_HEADERS */ +extern char *getenv(); +# if HAVE_STRING_H +# include +# else /* not HAVE_STRING_H */ +# include +# endif /* not HAVE_STRING_H */ +#endif /* not STDC_HEADERS */ + +#if HAVE_SYS_FCNTL_H +# include +#else /* not HAVE_SYS_FCNTL_H */ +# if HAVE_FCNTL_H +# include +# endif /* HAVE_FCNTL_H */ +#endif /* not HAVE_SYS_FCNTL_H */ + +#if HAVE_SYS_SYSTEMINFO_H +# include +#endif /* HAVE_SYS_SYSTEMINFO_H */ + +#if TIME_WITH_SYS_TIME +# include +# include +#else +# if HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif + +#if HAVE_UNISTD_H +# include +#endif + +#if HAVE_SYS_WAIT_H +# include +#endif + +#if HAVE_DIRENT_H +# include +# define NAMLEN(dirent) strlen((dirent)->d_name) +# define HAVE_DIR_STRUCT +#else +# define dirent direct +# define NAMLEN(dirent) (dirent)->d_namlen +# if HAVE_SYS_NDIR_H +# include +# define HAVE_DIR_STRUCT +# endif +# if HAVE_SYS_DIR_H +# include +# define HAVE_DIR_STRUCT +# endif +# if HAVE_NDIR_H +# include +# define HAVE_DIR_STRUCT +# endif +#endif + +#include +#include +#include +#include +#include +#if USE_XAW3D +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#else +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +// [HGM] bitmaps: put before incuding the bitmaps / pixmaps, to know how many piece types there are. +#include "common.h" + +#if HAVE_LIBXPM +#include +#include "pixmaps/pixmaps.h" +#define IMAGE_EXT "xpm" +#else +#define IMAGE_EXT "xim" +#include "bitmaps/bitmaps.h" +#endif + +#include "bitmaps/icon_white.bm" +#include "bitmaps/icon_black.bm" +#include "bitmaps/checkmark.bm" + +#include "frontend.h" +#include "backend.h" +#include "moves.h" +#include "xboard.h" +#include "childio.h" +#include "xgamelist.h" +#include "xhistory.h" +#include "xedittags.h" + +#ifdef __EMX__ +#ifndef HAVE_USLEEP +#define HAVE_USLEEP +#endif +#define usleep(t) _sleep2(((t)+500)/1000) +#endif + +typedef struct { + String string; + XtActionProc proc; +} MenuItem; + +typedef struct { + String name; + MenuItem *mi; +} Menu; + +int main P((int argc, char **argv)); +RETSIGTYPE CmailSigHandler P((int sig)); +RETSIGTYPE IntSigHandler P((int sig)); +void CreateGCs P((void)); +void CreateXIMPieces P((void)); +void CreateXPMPieces P((void)); +void CreatePieces P((void)); +void CreatePieceMenus P((void)); +Widget CreateMenuBar P((Menu *mb)); +Widget CreateButtonBar P ((MenuItem *mi)); +char *FindFont P((char *pattern, int targetPxlSize)); +void PieceMenuPopup P((Widget w, XEvent *event, + String *params, Cardinal *num_params)); +static void PieceMenuSelect P((Widget w, ChessSquare piece, caddr_t junk)); +static void DropMenuSelect P((Widget w, ChessSquare piece, caddr_t junk)); +void ReadBitmap P((Pixmap *pm, String name, unsigned char bits[], + u_int wreq, u_int hreq)); +void CreateGrid P((void)); +int EventToSquare P((int x, int limit)); +void DrawSquare P((int row, int column, ChessSquare piece, int do_flash)); +void EventProc P((Widget widget, caddr_t unused, XEvent *event)); +void HandleUserMove P((Widget w, XEvent *event, + String *prms, Cardinal *nprms)); +void AnimateUserMove P((Widget w, XEvent * event, + String * params, Cardinal * nParams)); +void WhiteClock P((Widget w, XEvent *event, + String *prms, Cardinal *nprms)); +void BlackClock P((Widget w, XEvent *event, + String *prms, Cardinal *nprms)); +void DrawPositionProc P((Widget w, XEvent *event, + String *prms, Cardinal *nprms)); +void XDrawPosition P((Widget w, /*Boolean*/int repaint, + Board board)); +void CommentPopUp P((char *title, char *label)); +void CommentPopDown P((void)); +void CommentCallback P((Widget w, XtPointer client_data, + XtPointer call_data)); +void ICSInputBoxPopUp P((void)); +void ICSInputBoxPopDown P((void)); +void FileNamePopUp P((char *label, char *def, + FileProc proc, char *openMode)); +void FileNamePopDown P((void)); +void FileNameCallback P((Widget w, XtPointer client_data, + XtPointer call_data)); +void FileNameAction P((Widget w, XEvent *event, + String *prms, Cardinal *nprms)); +void AskQuestionReplyAction P((Widget w, XEvent *event, + String *prms, Cardinal *nprms)); +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)); +void EditCommentPopDown P((void)); +void EditCommentCallback P((Widget w, XtPointer client_data, + XtPointer call_data)); +void SelectCommand P((Widget w, XtPointer client_data, XtPointer call_data)); +void ResetProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); +void LoadGameProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); +void LoadNextGameProc P((Widget w, XEvent *event, String *prms, + Cardinal *nprms)); +void LoadPrevGameProc P((Widget w, XEvent *event, String *prms, + Cardinal *nprms)); +void ReloadGameProc P((Widget w, XEvent *event, String *prms, + Cardinal *nprms)); +void LoadPositionProc P((Widget w, XEvent *event, + String *prms, Cardinal *nprms)); +void LoadNextPositionProc P((Widget w, XEvent *event, String *prms, + Cardinal *nprms)); +void LoadPrevPositionProc P((Widget w, XEvent *event, String *prms, + Cardinal *nprms)); +void ReloadPositionProc P((Widget w, XEvent *event, String *prms, + Cardinal *nprms)); +void CopyPositionProc P((Widget w, XEvent *event, String *prms, + Cardinal *nprms)); +void PastePositionProc P((Widget w, XEvent *event, String *prms, + Cardinal *nprms)); +void CopyGameProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); +void PasteGameProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); +void SaveGameProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); +void SavePositionProc P((Widget w, XEvent *event, + String *prms, Cardinal *nprms)); +void MailMoveProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); +void ReloadCmailMsgProc P((Widget w, XEvent *event, String *prms, + Cardinal *nprms)); +void QuitProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); +void PauseProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); +void MachineBlackProc P((Widget w, XEvent *event, String *prms, + Cardinal *nprms)); +void MachineWhiteProc P((Widget w, XEvent *event, + String *prms, Cardinal *nprms)); +void AnalyzeModeProc P((Widget w, XEvent *event, + String *prms, Cardinal *nprms)); +void AnalyzeFileProc P((Widget w, XEvent *event, + String *prms, Cardinal *nprms)); +void TwoMachinesProc P((Widget w, XEvent *event, String *prms, + Cardinal *nprms)); +void IcsClientProc P((Widget w, XEvent *event, String *prms, + Cardinal *nprms)); +void EditGameProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); +void EditPositionProc P((Widget w, XEvent *event, + String *prms, Cardinal *nprms)); +void TrainingProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); +void EditCommentProc P((Widget w, XEvent *event, + String *prms, Cardinal *nprms)); +void IcsInputBoxProc P((Widget w, XEvent *event, + String *prms, Cardinal *nprms)); +void AcceptProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); +void DeclineProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); +void RematchProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); +void CallFlagProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); +void DrawProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); +void AbortProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); +void AdjournProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); +void ResignProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); +void EnterKeyProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); +void StopObservingProc P((Widget w, XEvent *event, String *prms, + Cardinal *nprms)); +void StopExaminingProc P((Widget w, XEvent *event, String *prms, + Cardinal *nprms)); +void BackwardProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); +void ForwardProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); +void ToStartProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); +void ToEndProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); +void RevertProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); +void TruncateGameProc P((Widget w, XEvent *event, String *prms, + Cardinal *nprms)); +void RetractMoveProc P((Widget w, XEvent *event, String *prms, + Cardinal *nprms)); +void MoveNowProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); +void AlwaysQueenProc P((Widget w, XEvent *event, String *prms, + Cardinal *nprms)); +void AnimateDraggingProc P((Widget w, XEvent *event, String *prms, + Cardinal *nprms)); +void AnimateMovingProc P((Widget w, XEvent *event, String *prms, + Cardinal *nprms)); +void AutocommProc P((Widget w, XEvent *event, String *prms, + Cardinal *nprms)); +void AutoflagProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); +void AutoflipProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); +void AutobsProc P((Widget w, XEvent *event, String *prms, + Cardinal *nprms)); +void AutoraiseProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); +void AutosaveProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); +void BlindfoldProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); +void FlashMovesProc P((Widget w, XEvent *event, String *prms, + Cardinal *nprms)); +void FlipViewProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); +void GetMoveListProc P((Widget w, XEvent *event, String *prms, + Cardinal *nprms)); +void HighlightDraggingProc P((Widget w, XEvent *event, String *prms, + Cardinal *nprms)); +void HighlightLastMoveProc P((Widget w, XEvent *event, String *prms, + Cardinal *nprms)); +void MoveSoundProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); +void IcsAlarmProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); +void OldSaveStyleProc P((Widget w, XEvent *event, String *prms, + Cardinal *nprms)); +void PeriodicUpdatesProc P((Widget w, XEvent *event, String *prms, + Cardinal *nprms)); +void PonderNextMoveProc P((Widget w, XEvent *event, String *prms, + Cardinal *nprms)); +void PopupMoveErrorsProc P((Widget w, XEvent *event, String *prms, + Cardinal *nprms)); +void PopupExitMessageProc P((Widget w, XEvent *event, String *prms, + Cardinal *nprms)); +void PremoveProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); +void QuietPlayProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); +void ShowCoordsProc P((Widget w, XEvent *event, String *prms, + Cardinal *nprms)); +void ShowThinkingProc P((Widget w, XEvent *event, String *prms, + Cardinal *nprms)); +void TestLegalityProc P((Widget w, XEvent *event, String *prms, + Cardinal *nprms)); +void InfoProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); +void ManProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); +void HintProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); +void BookProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); +void AboutGameProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); +void AboutProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); +void DebugProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); +void NothingProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); +void Iconify P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); +void DisplayMove P((int moveNumber)); +void DisplayTitle P((char *title)); +void ICSInitScript P((void)); +int LoadGamePopUp P((FILE *f, int gameNumber, char *title)); +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)); + +/* +* XBoard depends on Xt R4 or higher +*/ +int xtVersion = XtSpecificationRelease; + +int xScreen; +Display *xDisplay; +Window xBoardWindow; +Pixel lightSquareColor, darkSquareColor, whitePieceColor, blackPieceColor, + jailSquareColor, highlightSquareColor, premoveHighlightColor; +GC lightSquareGC, darkSquareGC, jailSquareGC, lineGC, wdPieceGC, wlPieceGC, + bdPieceGC, blPieceGC, wbPieceGC, bwPieceGC, coordGC, highlineGC, + wjPieceGC, bjPieceGC, prelineGC; +Pixmap iconPixmap, wIconPixmap, bIconPixmap, xMarkPixmap; +Widget shellWidget, layoutWidget, formWidget, boardWidget, messageWidget, + whiteTimerWidget, blackTimerWidget, titleWidget, widgetList[16], + commentShell, promotionShell, whitePieceMenu, blackPieceMenu, dropMenu, + menuBarWidget, buttonBarWidget, editShell, errorShell, analysisShell, + ICSInputShell, fileNameShell, askQuestionShell; +XSegment gridSegments[(BOARD_SIZE + 1) * 2]; +XSegment jailGridSegments[(BOARD_SIZE + 3) * 2]; +Font clockFontID, coordFontID; +XFontStruct *clockFontStruct, *coordFontStruct; +XtAppContext appContext; +char *layoutName; +char *oldICSInteractionTitle; + +FileProc fileProc; +char *fileOpenMode; + +Position commentX = -1, commentY = -1; +Dimension commentW, commentH; + +int squareSize, smallLayout = 0, tinyLayout = 0, + fromX = -1, fromY = -1, toX, toY, commentUp = False, analysisUp = False, + ICSInputBoxUp = False, askQuestionUp = False, + filenameUp = False, promotionUp = False, pmFromX = -1, pmFromY = -1, + editUp = False, errorUp = False, errorExitStatus = -1, lineGap; +Pixel timerForegroundPixel, timerBackgroundPixel; +Pixel buttonForegroundPixel, buttonBackgroundPixel; +char *chessDir, *programName, *programVersion, + *gameCopyFilename, *gamePasteFilename; + +#define SOLID 0 +#define OUTLINE 1 +Pixmap pieceBitmap[2][(int)BlackPawn]; +Pixmap xpmPieceBitmap[4][(int)BlackPawn]; /* LL, LD, DL, DD */ +Pixmap xpmLightSquare, xpmDarkSquare, xpmJailSquare; +int useImages, useImageSqs; +XImage *ximPieceBitmap[4][(int)BlackPawn]; /* LL, LD, DL, DD */ +Pixmap ximMaskPm[(int)BlackPawn]; /* clipmasks, used for XIM pieces */ +XImage *ximLightSquare, *ximDarkSquare; +XImage *xim_Cross; + +#define pieceToSolid(piece) &pieceBitmap[SOLID][((int)(piece)) % (int)BlackPawn] +#define pieceToOutline(piece) &pieceBitmap[OUTLINE][((int)(piece)) % (int)BlackPawn] + +#define White(piece) ((int)(piece) < (int)BlackPawn) + +/* Variables for doing smooth animation. This whole thing + would be much easier if the board was double-buffered, + but that would require a fairly major rewrite. */ + +typedef struct { + Pixmap saveBuf; + Pixmap newBuf; + GC blitGC, pieceGC, outlineGC; + XPoint startSquare, prevFrame, mouseDelta; + int startColor; + int dragPiece; + Boolean dragActive; + int startBoardX, startBoardY; + } AnimState; + +/* There can be two pieces being animated at once: a player + can begin dragging a piece before the remote opponent has moved. */ + +static AnimState game, player; + +/* Bitmaps for use as masks when drawing XPM pieces. + Need one for each black and white piece. */ +static Pixmap xpmMask[BlackKing + 1]; + +/* This magic number is the number of intermediate frames used + in each half of the animation. For short moves it's reduced + by 1. The total number of frames will be factor * 2 + 1. */ +#define kFactor 4 + +SizeDefaults sizeDefaults[] = SIZE_DEFAULTS; + +MenuItem fileMenu[] = { + {"Reset Game", ResetProc}, + {"----", NothingProc}, + {"Load Game", LoadGameProc}, + {"Load Next Game", LoadNextGameProc}, + {"Load Previous Game", LoadPrevGameProc}, + {"Reload Same Game", ReloadGameProc}, + {"Save Game", SaveGameProc}, + {"----", NothingProc}, + {"Copy Game", CopyGameProc}, + {"Paste Game", PasteGameProc}, + {"----", NothingProc}, + {"Load Position", LoadPositionProc}, + {"Load Next Position", LoadNextPositionProc}, + {"Load Previous Position", LoadPrevPositionProc}, + {"Reload Same Position", ReloadPositionProc}, + {"Save Position", SavePositionProc}, + {"----", NothingProc}, + {"Copy Position", CopyPositionProc}, + {"Paste Position", PastePositionProc}, + {"----", NothingProc}, + {"Mail Move", MailMoveProc}, + {"Reload CMail Message", ReloadCmailMsgProc}, + {"----", NothingProc}, + {"Exit", QuitProc}, + {NULL, NULL} +}; + +MenuItem modeMenu[] = { + {"Machine White", MachineWhiteProc}, + {"Machine Black", MachineBlackProc}, + {"Two Machines", TwoMachinesProc}, + {"Analysis Mode", AnalyzeModeProc}, + {"Analyze File", AnalyzeFileProc }, + {"ICS Client", IcsClientProc}, + {"Edit Game", EditGameProc}, + {"Edit Position", EditPositionProc}, + {"Training", TrainingProc}, + {"----", NothingProc}, + {"Show Game List", ShowGameListProc}, + {"Show Move List", HistoryShowProc}, + {"Edit Tags", EditTagsProc}, + {"Edit Comment", EditCommentProc}, + {"ICS Input Box", IcsInputBoxProc}, + {"Pause", PauseProc}, + {NULL, NULL} +}; + +MenuItem actionMenu[] = { + {"Accept", AcceptProc}, + {"Decline", DeclineProc}, + {"Rematch", RematchProc}, + {"----", NothingProc}, + {"Call Flag", CallFlagProc}, + {"Draw", DrawProc}, + {"Adjourn", AdjournProc}, + {"Abort", AbortProc}, + {"Resign", ResignProc}, + {"----", NothingProc}, + {"Stop Observing", StopObservingProc}, + {"Stop Examining", StopExaminingProc}, + {NULL, NULL} +}; + +MenuItem stepMenu[] = { + {"Backward", BackwardProc}, + {"Forward", ForwardProc}, + {"Back to Start", ToStartProc}, + {"Forward to End", ToEndProc}, + {"Revert", RevertProc}, + {"Truncate Game", TruncateGameProc}, + {"----", NothingProc}, + {"Move Now", MoveNowProc}, + {"Retract Move", RetractMoveProc}, + {NULL, NULL} +}; + +MenuItem optionsMenu[] = { + {"Always Queen", AlwaysQueenProc}, + {"Animate Dragging", AnimateDraggingProc}, + {"Animate Moving", AnimateMovingProc}, + {"Auto Comment", AutocommProc}, + {"Auto Flag", AutoflagProc}, + {"Auto Flip View", AutoflipProc}, + {"Auto Observe", AutobsProc}, + {"Auto Raise Board", AutoraiseProc}, + {"Auto Save", AutosaveProc}, + {"Blindfold", BlindfoldProc}, + {"Flash Moves", FlashMovesProc}, + {"Flip View", FlipViewProc}, + {"Get Move List", GetMoveListProc}, +#if HIGHDRAG + {"Highlight Dragging", HighlightDraggingProc}, +#endif + {"Highlight Last Move", HighlightLastMoveProc}, + {"Move Sound", MoveSoundProc}, + {"ICS Alarm", IcsAlarmProc}, + {"Old Save Style", OldSaveStyleProc}, + {"Periodic Updates", PeriodicUpdatesProc}, + {"Ponder Next Move", PonderNextMoveProc}, + {"Popup Exit Message", PopupExitMessageProc}, + {"Popup Move Errors", PopupMoveErrorsProc}, + {"Premove", PremoveProc}, + {"Quiet Play", QuietPlayProc}, + {"Show Coords", ShowCoordsProc}, + {"Show Thinking", ShowThinkingProc}, + {"Test Legality", TestLegalityProc}, + {NULL, NULL} +}; + +MenuItem helpMenu[] = { + {"Info XBoard", InfoProc}, + {"Man XBoard", ManProc}, + {"----", NothingProc}, + {"Hint", HintProc}, + {"Book", BookProc}, + {"----", NothingProc}, + {"About XBoard", AboutProc}, + {NULL, NULL} +}; + +Menu menuBar[] = { + {"File", fileMenu}, + {"Mode", modeMenu}, + {"Action", actionMenu}, + {"Step", stepMenu}, + {"Options", optionsMenu}, + {"Help", helpMenu}, + {NULL, NULL} +}; + +#define PAUSE_BUTTON "P" +MenuItem buttonBar[] = { + {"<<", ToStartProc}, + {"<", BackwardProc}, + {PAUSE_BUTTON, PauseProc}, + {">", ForwardProc}, + {">>", ToEndProc}, + {NULL, NULL} +}; + +#define PIECE_MENU_SIZE 11 +String pieceMenuStrings[2][PIECE_MENU_SIZE] = { + { "White", "----", "Pawn", "Knight", "Bishop", "Rook", "Queen", "King", + "----", "Empty square", "Clear board" }, + { "Black", "----", "Pawn", "Knight", "Bishop", "Rook", "Queen", "King", + "----", "Empty square", "Clear board" }, + }; +/* must be in same order as PieceMenuStrings! */ +ChessSquare pieceMenuTranslation[2][PIECE_MENU_SIZE] = { + { WhitePlay, (ChessSquare) 0, WhitePawn, WhiteKnight, WhiteBishop, + WhiteRook, WhiteQueen, WhiteKing, + (ChessSquare) 0, EmptySquare, ClearBoard }, + { BlackPlay, (ChessSquare) 0, BlackPawn, BlackKnight, BlackBishop, + BlackRook, BlackQueen, BlackKing, + (ChessSquare) 0, EmptySquare, ClearBoard }, +}; + +#define DROP_MENU_SIZE 6 +String dropMenuStrings[DROP_MENU_SIZE] = { + "----", "Pawn", "Knight", "Bishop", "Rook", "Queen" + }; +/* must be in same order as PieceMenuStrings! */ +ChessSquare dropMenuTranslation[DROP_MENU_SIZE] = { + (ChessSquare) 0, WhitePawn, WhiteKnight, WhiteBishop, + WhiteRook, WhiteQueen +}; + +typedef struct { + char piece; + char* widget; +} DropMenuEnables; + +DropMenuEnables dmEnables[] = { + { 'P', "Pawn" }, + { 'N', "Knight" }, + { 'B', "Bishop" }, + { 'R', "Rook" }, + { 'Q', "Queen" } +}; + +Arg shellArgs[] = { + { XtNwidth, 0 }, + { XtNheight, 0 }, + { XtNminWidth, 0 }, + { XtNminHeight, 0 }, + { XtNmaxWidth, 0 }, + { XtNmaxHeight, 0 } +}; + +Arg layoutArgs[] = { + { XtNborderWidth, 0 }, + { XtNdefaultDistance, 0 }, +}; + +Arg formArgs[] = { + { XtNborderWidth, 0 }, + { XtNresizable, (XtArgVal) True }, +}; + +Arg boardArgs[] = { + { XtNborderWidth, 0 }, + { XtNwidth, 0 }, + { XtNheight, 0 } +}; + +Arg titleArgs[] = { + { XtNjustify, (XtArgVal) XtJustifyRight }, + { XtNlabel, (XtArgVal) "..." }, + { XtNresizable, (XtArgVal) True }, + { XtNresize, (XtArgVal) False } +}; + +Arg messageArgs[] = { + { XtNjustify, (XtArgVal) XtJustifyLeft }, + { XtNlabel, (XtArgVal) "..." }, + { XtNresizable, (XtArgVal) True }, + { XtNresize, (XtArgVal) False } +}; + +Arg timerArgs[] = { + { XtNborderWidth, 0 }, + { XtNjustify, (XtArgVal) XtJustifyLeft } +}; + +XtResource clientResources[] = { + { "whitePieceColor", "whitePieceColor", XtRString, sizeof(String), + XtOffset(AppDataPtr, whitePieceColor), XtRString, + WHITE_PIECE_COLOR }, + { "blackPieceColor", "blackPieceColor", XtRString, sizeof(String), + XtOffset(AppDataPtr, blackPieceColor), XtRString, + BLACK_PIECE_COLOR }, + { "lightSquareColor", "lightSquareColor", XtRString, + sizeof(String), XtOffset(AppDataPtr, lightSquareColor), + XtRString, LIGHT_SQUARE_COLOR }, + { "darkSquareColor", "darkSquareColor", XtRString, sizeof(String), + XtOffset(AppDataPtr, darkSquareColor), XtRString, + DARK_SQUARE_COLOR }, + { "highlightSquareColor", "highlightSquareColor", XtRString, + sizeof(String), XtOffset(AppDataPtr, highlightSquareColor), + XtRString, HIGHLIGHT_SQUARE_COLOR }, + { "premoveHighlightColor", "premoveHighlightColor", XtRString, + sizeof(String), XtOffset(AppDataPtr, premoveHighlightColor), + XtRString, PREMOVE_HIGHLIGHT_COLOR }, + { "movesPerSession", "movesPerSession", XtRInt, sizeof(int), + XtOffset(AppDataPtr, movesPerSession), XtRImmediate, + (XtPointer) MOVES_PER_SESSION }, + { "timeIncrement", "timeIncrement", XtRInt, sizeof(int), + XtOffset(AppDataPtr, timeIncrement), XtRImmediate, + (XtPointer) TIME_INCREMENT }, + { "initString", "initString", XtRString, sizeof(String), + XtOffset(AppDataPtr, initString), XtRString, INIT_STRING }, + { "secondInitString", "secondInitString", XtRString, sizeof(String), + XtOffset(AppDataPtr, secondInitString), XtRString, INIT_STRING }, + { "firstComputerString", "firstComputerString", XtRString, + sizeof(String), XtOffset(AppDataPtr, firstComputerString), XtRString, + COMPUTER_STRING }, + { "secondComputerString", "secondComputerString", XtRString, + sizeof(String), XtOffset(AppDataPtr, secondComputerString), XtRString, + COMPUTER_STRING }, + { "firstChessProgram", "firstChessProgram", XtRString, + sizeof(String), XtOffset(AppDataPtr, firstChessProgram), + XtRString, FIRST_CHESS_PROGRAM }, + { "secondChessProgram", "secondChessProgram", XtRString, + sizeof(String), XtOffset(AppDataPtr, secondChessProgram), + XtRString, SECOND_CHESS_PROGRAM }, + { "firstPlaysBlack", "firstPlaysBlack", XtRBoolean, + sizeof(Boolean), XtOffset(AppDataPtr, firstPlaysBlack), + XtRImmediate, (XtPointer) False }, + { "noChessProgram", "noChessProgram", XtRBoolean, + sizeof(Boolean), XtOffset(AppDataPtr, noChessProgram), + XtRImmediate, (XtPointer) False }, + { "firstHost", "firstHost", XtRString, sizeof(String), + XtOffset(AppDataPtr, firstHost), XtRString, FIRST_HOST }, + { "secondHost", "secondHost", XtRString, sizeof(String), + XtOffset(AppDataPtr, secondHost), XtRString, SECOND_HOST }, + { "firstDirectory", "firstDirectory", XtRString, sizeof(String), + XtOffset(AppDataPtr, firstDirectory), XtRString, FIRST_DIRECTORY }, + { "secondDirectory", "secondDirectory", XtRString, sizeof(String), + XtOffset(AppDataPtr, secondDirectory), XtRString, SECOND_DIRECTORY }, + { "bitmapDirectory", "bitmapDirectory", XtRString, + sizeof(String), XtOffset(AppDataPtr, bitmapDirectory), + XtRString, "" }, + { "remoteShell", "remoteShell", XtRString, sizeof(String), + XtOffset(AppDataPtr, remoteShell), XtRString, REMOTE_SHELL }, + { "remoteUser", "remoteUser", XtRString, sizeof(String), + XtOffset(AppDataPtr, remoteUser), XtRString, "" }, + { "timeDelay", "timeDelay", XtRFloat, sizeof(float), + XtOffset(AppDataPtr, timeDelay), XtRString, + (XtPointer) TIME_DELAY_QUOTE }, + { "timeControl", "timeControl", XtRString, sizeof(String), + XtOffset(AppDataPtr, timeControl), XtRString, + (XtPointer) TIME_CONTROL }, + { "internetChessServerMode", "internetChessServerMode", + XtRBoolean, sizeof(Boolean), + XtOffset(AppDataPtr, icsActive), XtRImmediate, + (XtPointer) False }, + { "internetChessServerHost", "internetChessServerHost", + XtRString, sizeof(String), + XtOffset(AppDataPtr, icsHost), + XtRString, (XtPointer) ICS_HOST }, + { "internetChessServerPort", "internetChessServerPort", + XtRString, sizeof(String), + XtOffset(AppDataPtr, icsPort), XtRString, + (XtPointer) ICS_PORT }, + { "internetChessServerCommPort", "internetChessServerCommPort", + XtRString, sizeof(String), + XtOffset(AppDataPtr, icsCommPort), XtRString, + ICS_COMM_PORT }, + { "internetChessServerLogonScript", "internetChessServerLogonScript", + XtRString, sizeof(String), + XtOffset(AppDataPtr, icsLogon), XtRString, + ICS_LOGON }, + { "internetChessServerHelper", "internetChessServerHelper", + XtRString, sizeof(String), + XtOffset(AppDataPtr, icsHelper), XtRString, "" }, + { "internetChessServerInputBox", "internetChessServerInputBox", + XtRBoolean, sizeof(Boolean), + XtOffset(AppDataPtr, icsInputBox), XtRImmediate, + (XtPointer) False }, + { "icsAlarm", "icsAlarm", + XtRBoolean, sizeof(Boolean), + XtOffset(AppDataPtr, icsAlarm), XtRImmediate, + (XtPointer) True }, + { "icsAlarmTime", "icsAlarmTime", + XtRInt, sizeof(int), + XtOffset(AppDataPtr, icsAlarmTime), XtRImmediate, + (XtPointer) 5000 }, + { "useTelnet", "useTelnet", XtRBoolean, sizeof(Boolean), + XtOffset(AppDataPtr, useTelnet), XtRImmediate, + (XtPointer) False }, + { "telnetProgram", "telnetProgram", XtRString, sizeof(String), + XtOffset(AppDataPtr, telnetProgram), XtRString, TELNET_PROGRAM }, + { "gateway", "gateway", XtRString, sizeof(String), + XtOffset(AppDataPtr, gateway), XtRString, "" }, + { "loadGameFile", "loadGameFile", XtRString, sizeof(String), + XtOffset(AppDataPtr, loadGameFile), XtRString, "" }, + { "loadGameIndex", "loadGameIndex", + XtRInt, sizeof(int), + XtOffset(AppDataPtr, loadGameIndex), XtRImmediate, + (XtPointer) 0 }, + { "saveGameFile", "saveGameFile", XtRString, sizeof(String), + XtOffset(AppDataPtr, saveGameFile), XtRString, "" }, + { "autoRaiseBoard", "autoRaiseBoard", XtRBoolean, + sizeof(Boolean), XtOffset(AppDataPtr, autoRaiseBoard), + XtRImmediate, (XtPointer) True }, + { "autoSaveGames", "autoSaveGames", XtRBoolean, + sizeof(Boolean), XtOffset(AppDataPtr, autoSaveGames), + XtRImmediate, (XtPointer) False }, + { "blindfold", "blindfold", XtRBoolean, + sizeof(Boolean), XtOffset(AppDataPtr, blindfold), + XtRImmediate, (XtPointer) False }, + { "loadPositionFile", "loadPositionFile", XtRString, + sizeof(String), XtOffset(AppDataPtr, loadPositionFile), + XtRString, "" }, + { "loadPositionIndex", "loadPositionIndex", + XtRInt, sizeof(int), + XtOffset(AppDataPtr, loadPositionIndex), XtRImmediate, + (XtPointer) 1 }, + { "savePositionFile", "savePositionFile", XtRString, + sizeof(String), XtOffset(AppDataPtr, savePositionFile), + XtRString, "" }, + { "matchMode", "matchMode", XtRBoolean, sizeof(Boolean), + XtOffset(AppDataPtr, matchMode), XtRImmediate, (XtPointer) False }, + { "matchGames", "matchGames", XtRInt, sizeof(int), + XtOffset(AppDataPtr, matchGames), XtRImmediate, + (XtPointer) 0 }, + { "monoMode", "monoMode", XtRBoolean, sizeof(Boolean), + XtOffset(AppDataPtr, monoMode), XtRImmediate, + (XtPointer) False }, + { "debugMode", "debugMode", XtRBoolean, sizeof(Boolean), + XtOffset(AppDataPtr, debugMode), XtRImmediate, + (XtPointer) False }, + { "clockMode", "clockMode", XtRBoolean, sizeof(Boolean), + XtOffset(AppDataPtr, clockMode), XtRImmediate, + (XtPointer) True }, + { "boardSize", "boardSize", XtRString, sizeof(String), + XtOffset(AppDataPtr, boardSize), XtRString, "" }, + { "searchTime", "searchTime", XtRString, sizeof(String), + XtOffset(AppDataPtr, searchTime), XtRString, + (XtPointer) "" }, + { "searchDepth", "searchDepth", XtRInt, sizeof(int), + XtOffset(AppDataPtr, searchDepth), XtRImmediate, + (XtPointer) 0 }, + { "showCoords", "showCoords", XtRBoolean, sizeof(Boolean), + XtOffset(AppDataPtr, showCoords), XtRImmediate, + (XtPointer) False }, + { "showJail", "showJail", XtRInt, sizeof(int), + XtOffset(AppDataPtr, showJail), XtRImmediate, + (XtPointer) 0 }, + { "showThinking", "showThinking", XtRBoolean, sizeof(Boolean), + XtOffset(AppDataPtr, showThinking), XtRImmediate, + (XtPointer) False }, + { "ponderNextMove", "ponderNextMove", XtRBoolean, sizeof(Boolean), + XtOffset(AppDataPtr, ponderNextMove), XtRImmediate, + (XtPointer) True }, + { "periodicUpdates", "periodicUpdates", XtRBoolean, sizeof(Boolean), + XtOffset(AppDataPtr, periodicUpdates), XtRImmediate, + (XtPointer) True }, + { "clockFont", "clockFont", XtRString, sizeof(String), + XtOffset(AppDataPtr, clockFont), XtRString, CLOCK_FONT }, + { "coordFont", "coordFont", XtRString, sizeof(String), + XtOffset(AppDataPtr, coordFont), XtRString, COORD_FONT }, + { "font", "font", XtRString, sizeof(String), + XtOffset(AppDataPtr, font), XtRString, DEFAULT_FONT }, + { "ringBellAfterMoves", "ringBellAfterMoves", + XtRBoolean, sizeof(Boolean), + XtOffset(AppDataPtr, ringBellAfterMoves), + XtRImmediate, (XtPointer) False }, + { "autoCallFlag", "autoCallFlag", XtRBoolean, + sizeof(Boolean), XtOffset(AppDataPtr, autoCallFlag), + XtRImmediate, (XtPointer) False }, + { "autoFlipView", "autoFlipView", XtRBoolean, + sizeof(Boolean), XtOffset(AppDataPtr, autoFlipView), + XtRImmediate, (XtPointer) True }, + { "autoObserve", "autoObserve", XtRBoolean, + sizeof(Boolean), XtOffset(AppDataPtr, autoObserve), + XtRImmediate, (XtPointer) False }, + { "autoComment", "autoComment", XtRBoolean, + sizeof(Boolean), XtOffset(AppDataPtr, autoComment), + XtRImmediate, (XtPointer) False }, + { "getMoveList", "getMoveList", XtRBoolean, + sizeof(Boolean), XtOffset(AppDataPtr, getMoveList), + XtRImmediate, (XtPointer) True }, +#if HIGHDRAG + { "highlightDragging", "highlightDragging", XtRBoolean, + sizeof(Boolean), XtOffset(AppDataPtr, highlightDragging), + XtRImmediate, (XtPointer) False }, +#endif + { "highlightLastMove", "highlightLastMove", XtRBoolean, + sizeof(Boolean), XtOffset(AppDataPtr, highlightLastMove), + XtRImmediate, (XtPointer) False }, + { "premove", "premove", XtRBoolean, + sizeof(Boolean), XtOffset(AppDataPtr, premove), + XtRImmediate, (XtPointer) True }, + { "testLegality", "testLegality", XtRBoolean, + sizeof(Boolean), XtOffset(AppDataPtr, testLegality), + XtRImmediate, (XtPointer) True }, + { "flipView", "flipView", XtRBoolean, + sizeof(Boolean), XtOffset(AppDataPtr, flipView), + XtRImmediate, (XtPointer) False }, + { "cmail", "cmailGameName", XtRString, sizeof(String), + XtOffset(AppDataPtr, cmailGameName), XtRString, "" }, + { "alwaysPromoteToQueen", "alwaysPromoteToQueen", XtRBoolean, + sizeof(Boolean), XtOffset(AppDataPtr, alwaysPromoteToQueen), + XtRImmediate, (XtPointer) False }, + { "oldSaveStyle", "oldSaveStyle", XtRBoolean, + sizeof(Boolean), XtOffset(AppDataPtr, oldSaveStyle), + XtRImmediate, (XtPointer) False }, + { "quietPlay", "quietPlay", XtRBoolean, + sizeof(Boolean), XtOffset(AppDataPtr, quietPlay), + XtRImmediate, (XtPointer) False }, + { "titleInWindow", "titleInWindow", XtRBoolean, + sizeof(Boolean), XtOffset(AppDataPtr, titleInWindow), + XtRImmediate, (XtPointer) False }, + { "localLineEditing", "localLineEditing", XtRBoolean, + sizeof(Boolean), XtOffset(AppDataPtr, localLineEditing), + XtRImmediate, (XtPointer) True }, /* not implemented, must be True */ +#ifdef ZIPPY + { "zippyTalk", "zippyTalk", XtRBoolean, + sizeof(Boolean), XtOffset(AppDataPtr, zippyTalk), + XtRImmediate, (XtPointer) ZIPPY_TALK }, + { "zippyPlay", "zippyPlay", XtRBoolean, + sizeof(Boolean), XtOffset(AppDataPtr, zippyPlay), + XtRImmediate, (XtPointer) ZIPPY_PLAY }, + { "zippyLines", "zippyLines", XtRString, sizeof(String), + XtOffset(AppDataPtr, zippyLines), XtRString, ZIPPY_LINES }, + { "zippyPinhead", "zippyPinhead", XtRString, sizeof(String), + XtOffset(AppDataPtr, zippyPinhead), XtRString, ZIPPY_PINHEAD }, + { "zippyPassword", "zippyPassword", XtRString, sizeof(String), + XtOffset(AppDataPtr, zippyPassword), XtRString, ZIPPY_PASSWORD }, + { "zippyPassword2", "zippyPassword2", XtRString, sizeof(String), + XtOffset(AppDataPtr, zippyPassword2), XtRString, ZIPPY_PASSWORD2 }, + { "zippyWrongPassword", "zippyWrongPassword", XtRString, sizeof(String), + XtOffset(AppDataPtr, zippyWrongPassword), XtRString, + ZIPPY_WRONG_PASSWORD }, + { "zippyAcceptOnly", "zippyAcceptOnly", XtRString, sizeof(String), + XtOffset(AppDataPtr, zippyAcceptOnly), XtRString, ZIPPY_ACCEPT_ONLY }, + { "zippyUseI", "zippyUseI", XtRBoolean, + sizeof(Boolean), XtOffset(AppDataPtr, zippyUseI), + XtRImmediate, (XtPointer) ZIPPY_USE_I }, + { "zippyBughouse", "zippyBughouse", XtRInt, + sizeof(int), XtOffset(AppDataPtr, zippyBughouse), + XtRImmediate, (XtPointer) ZIPPY_BUGHOUSE }, + { "zippyNoplayCrafty", "zippyNoplayCrafty", XtRBoolean, + sizeof(Boolean), XtOffset(AppDataPtr, zippyNoplayCrafty), + XtRImmediate, (XtPointer) ZIPPY_NOPLAY_CRAFTY }, + { "zippyGameEnd", "zippyGameEnd", XtRString, sizeof(String), + XtOffset(AppDataPtr, zippyGameEnd), XtRString, ZIPPY_GAME_END }, + { "zippyGameStart", "zippyGameStart", XtRString, sizeof(String), + XtOffset(AppDataPtr, zippyGameStart), XtRString, ZIPPY_GAME_START }, + { "zippyAdjourn", "zippyAdjourn", XtRBoolean, + sizeof(Boolean), XtOffset(AppDataPtr, zippyAdjourn), + XtRImmediate, (XtPointer) ZIPPY_ADJOURN }, + { "zippyAbort", "zippyAbort", XtRBoolean, + sizeof(Boolean), XtOffset(AppDataPtr, zippyAbort), + XtRImmediate, (XtPointer) ZIPPY_ABORT }, + { "zippyVariants", "zippyVariants", XtRString, sizeof(String), + XtOffset(AppDataPtr, zippyVariants), XtRString, ZIPPY_VARIANTS }, + { "zippyMaxGames", "zippyMaxGames", XtRInt, sizeof(int), + XtOffset(AppDataPtr, zippyMaxGames), XtRImmediate, + (XtPointer) ZIPPY_MAX_GAMES }, + { "zippyReplayTimeout", "zippyReplayTimeout", XtRInt, sizeof(int), + XtOffset(AppDataPtr, zippyReplayTimeout), XtRImmediate, + (XtPointer) ZIPPY_REPLAY_TIMEOUT }, +#endif + { "flashCount", "flashCount", XtRInt, sizeof(int), + XtOffset(AppDataPtr, flashCount), XtRImmediate, + (XtPointer) FLASH_COUNT }, + { "flashRate", "flashRate", XtRInt, sizeof(int), + XtOffset(AppDataPtr, flashRate), XtRImmediate, + (XtPointer) FLASH_RATE }, + { "pixmapDirectory", "pixmapDirectory", XtRString, + sizeof(String), XtOffset(AppDataPtr, pixmapDirectory), + XtRString, "" }, + { "msLoginDelay", "msLoginDelay", XtRInt, sizeof(int), + XtOffset(AppDataPtr, msLoginDelay), XtRImmediate, + (XtPointer) MS_LOGIN_DELAY }, + { "colorizeMessages", "colorizeMessages", XtRBoolean, + sizeof(Boolean), XtOffset(AppDataPtr, colorize), + XtRImmediate, (XtPointer) False }, + { "colorShout", "colorShout", XtRString, + sizeof(String), XtOffset(AppDataPtr, colorShout), + XtRString, COLOR_SHOUT }, + { "colorSShout", "colorSShout", XtRString, + sizeof(String), XtOffset(AppDataPtr, colorSShout), + XtRString, COLOR_SSHOUT }, + { "colorChannel1", "colorChannel1", XtRString, + sizeof(String), XtOffset(AppDataPtr, colorChannel1), + XtRString, COLOR_CHANNEL1 }, + { "colorChannel", "colorChannel", XtRString, + sizeof(String), XtOffset(AppDataPtr, colorChannel), + XtRString, COLOR_CHANNEL }, + { "colorKibitz", "colorKibitz", XtRString, + sizeof(String), XtOffset(AppDataPtr, colorKibitz), + XtRString, COLOR_KIBITZ }, + { "colorTell", "colorTell", XtRString, + sizeof(String), XtOffset(AppDataPtr, colorTell), + XtRString, COLOR_TELL }, + { "colorChallenge", "colorChallenge", XtRString, + sizeof(String), XtOffset(AppDataPtr, colorChallenge), + XtRString, COLOR_CHALLENGE }, + { "colorRequest", "colorRequest", XtRString, + sizeof(String), XtOffset(AppDataPtr, colorRequest), + XtRString, COLOR_REQUEST }, + { "colorSeek", "colorSeek", XtRString, + sizeof(String), XtOffset(AppDataPtr, colorSeek), + XtRString, COLOR_SEEK }, + { "colorNormal", "colorNormal", XtRString, + sizeof(String), XtOffset(AppDataPtr, colorNormal), + XtRString, COLOR_NORMAL }, + { "soundProgram", "soundProgram", XtRString, + sizeof(String), XtOffset(AppDataPtr, soundProgram), + XtRString, "play" }, + { "soundShout", "soundShout", XtRString, + sizeof(String), XtOffset(AppDataPtr, soundShout), + XtRString, "" }, + { "soundSShout", "soundSShout", XtRString, + sizeof(String), XtOffset(AppDataPtr, soundSShout), + XtRString, "" }, + { "soundChannel1", "soundChannel1", XtRString, + sizeof(String), XtOffset(AppDataPtr, soundChannel1), + XtRString, "" }, + { "soundChannel", "soundChannel", XtRString, + sizeof(String), XtOffset(AppDataPtr, soundChannel), + XtRString, "" }, + { "soundKibitz", "soundKibitz", XtRString, + sizeof(String), XtOffset(AppDataPtr, soundKibitz), + XtRString, "" }, + { "soundTell", "soundTell", XtRString, + sizeof(String), XtOffset(AppDataPtr, soundTell), + XtRString, "" }, + { "soundChallenge", "soundChallenge", XtRString, + sizeof(String), XtOffset(AppDataPtr, soundChallenge), + XtRString, "" }, + { "soundRequest", "soundRequest", XtRString, + sizeof(String), XtOffset(AppDataPtr, soundRequest), + XtRString, "" }, + { "soundSeek", "soundSeek", XtRString, + sizeof(String), XtOffset(AppDataPtr, soundSeek), + XtRString, "" }, + { "soundMove", "soundMove", XtRString, + sizeof(String), XtOffset(AppDataPtr, soundMove), + XtRString, "$" }, + { "soundIcsWin", "soundIcsWin", XtRString, + sizeof(String), XtOffset(AppDataPtr, soundIcsWin), + XtRString, "" }, + { "soundIcsLoss", "soundIcsLoss", XtRString, + sizeof(String), XtOffset(AppDataPtr, soundIcsLoss), + XtRString, "" }, + { "soundIcsDraw", "soundIcsDraw", XtRString, + sizeof(String), XtOffset(AppDataPtr, soundIcsDraw), + XtRString, "" }, + { "soundIcsUnfinished", "soundIcsUnfinished", XtRString, + sizeof(String), XtOffset(AppDataPtr, soundIcsUnfinished), + XtRString, "" }, + { "soundIcsAlarm", "soundIcsAlarm", XtRString, + sizeof(String), XtOffset(AppDataPtr, soundIcsAlarm), + XtRString, "$" }, + { "reuseFirst", "reuseFirst", XtRBoolean, + sizeof(Boolean), XtOffset(AppDataPtr, reuseFirst), + XtRImmediate, (XtPointer) True }, + { "reuseSecond", "reuseSecond", XtRBoolean, + sizeof(Boolean), XtOffset(AppDataPtr, reuseSecond), + XtRImmediate, (XtPointer) True }, + { "animateDragging", "animateDragging", XtRBoolean, + sizeof(Boolean), XtOffset(AppDataPtr, animateDragging), + XtRImmediate, (XtPointer) True }, + { "animateMoving", "animateMoving", XtRBoolean, + sizeof(Boolean), XtOffset(AppDataPtr, animate), + XtRImmediate, (XtPointer) True }, + { "animateSpeed", "animateSpeed", XtRInt, + sizeof(int), XtOffset(AppDataPtr, animSpeed), + XtRImmediate, (XtPointer)10 }, + { "popupExitMessage", "popupExitMessage", XtRBoolean, + sizeof(Boolean), XtOffset(AppDataPtr, popupExitMessage), + XtRImmediate, (XtPointer) True }, + { "popupMoveErrors", "popupMoveErrors", XtRBoolean, + sizeof(Boolean), XtOffset(AppDataPtr, popupMoveErrors), + XtRImmediate, (XtPointer) False }, + { "fontSizeTolerance", "fontSizeTolerance", XtRInt, + sizeof(int), XtOffset(AppDataPtr, fontSizeTolerance), + XtRImmediate, (XtPointer)4 }, + { "initialMode", "initialMode", XtRString, + sizeof(String), XtOffset(AppDataPtr, initialMode), + XtRImmediate, (XtPointer) "" }, + { "variant", "variant", XtRString, + sizeof(String), XtOffset(AppDataPtr, variant), + XtRImmediate, (XtPointer) "normal" }, + { "firstProtocolVersion", "firstProtocolVersion", XtRInt, + sizeof(int), XtOffset(AppDataPtr, firstProtocolVersion), + XtRImmediate, (XtPointer)PROTOVER }, + { "secondProtocolVersion", "secondProtocolVersion", XtRInt, + sizeof(int), XtOffset(AppDataPtr, secondProtocolVersion), + XtRImmediate, (XtPointer)PROTOVER }, + { "showButtonBar", "showButtonBar", XtRBoolean, + sizeof(Boolean), XtOffset(AppDataPtr, showButtonBar), + XtRImmediate, (XtPointer) True }, + { "firstScoreAbs", "firstScoreAbs", XtRBoolean, + sizeof(Boolean), XtOffset(AppDataPtr, firstScoreIsAbsolute), + XtRImmediate, (XtPointer) False }, + { "secondScoreAbs", "secondScoreAbs", XtRBoolean, + sizeof(Boolean), XtOffset(AppDataPtr, secondScoreIsAbsolute), + XtRImmediate, (XtPointer) False }, + { "pgnExtendedInfo", "pgnExtendedInfo", XtRBoolean, + sizeof(Boolean), XtOffset(AppDataPtr, saveExtendedInfoInPGN), + XtRImmediate, (XtPointer) False }, + { "hideThinkingFromHuman", "hideThinkingFromHuman", XtRBoolean, + sizeof(Boolean), XtOffset(AppDataPtr, hideThinkingFromHuman), + XtRImmediate, (XtPointer) False }, + { "adjudicateLossThreshold", "adjudicateLossThreshold", XtRInt, + sizeof(int), XtOffset(AppDataPtr, adjudicateLossThreshold), + XtRImmediate, (XtPointer) 0}, + { "pgnEventHeader", "pgnEventHeader", XtRString, + sizeof(String), XtOffset(AppDataPtr, pgnEventHeader), + XtRImmediate, (XtPointer) "Computer Chess Game" }, + { "defaultFrcPosition", "defaultFrcPosition", XtRInt, + sizeof(int), XtOffset(AppDataPtr, defaultFrcPosition), + XtRImmediate, (XtPointer) -1 }, + + // [HGM] 4.3.xx options + { "boardWidth", "boardWidth", XtRInt, + sizeof(int), XtOffset(AppDataPtr, NrFiles), + XtRImmediate, (XtPointer) -1}, + { "boardHeight", "boardHeight", XtRInt, + sizeof(int), XtOffset(AppDataPtr, NrRanks), + XtRImmediate, (XtPointer) -1}, + { "matchPause", "matchPause", XtRInt, + sizeof(int), XtOffset(AppDataPtr, matchPause), + XtRImmediate, (XtPointer) 10000}, + { "holdingsSize", "holdingsSize", XtRInt, + sizeof(int), XtOffset(AppDataPtr, holdingsSize), + XtRImmediate, (XtPointer) -1}, + { "flipBlack", "flipBlack", XtRBoolean, + sizeof(Boolean), XtOffset(AppDataPtr, upsideDown), + XtRImmediate, (XtPointer) False}, + { "allWhite", "allWhite", XtRBoolean, + sizeof(Boolean), XtOffset(AppDataPtr, allWhite), + XtRImmediate, (XtPointer) False}, + { "pieceToCharTable", "pieceToCharTable", XtRString, + sizeof(String), XtOffset(AppDataPtr, pieceToCharTable), + XtRImmediate, (XtPointer) 0}, + { "alphaRank", "alphaRank", XtRBoolean, + sizeof(Boolean), XtOffset(AppDataPtr, alphaRank), + XtRImmediate, (XtPointer) False}, + { "testClaims", "testClaims", XtRBoolean, + sizeof(Boolean), XtOffset(AppDataPtr, testClaims), + XtRImmediate, (XtPointer) False}, + { "checkMates", "checkMates", XtRBoolean, + sizeof(Boolean), XtOffset(AppDataPtr, checkMates), + XtRImmediate, (XtPointer) False}, + { "materialDraws", "materialDraws", XtRBoolean, + sizeof(Boolean), XtOffset(AppDataPtr, materialDraws), + XtRImmediate, (XtPointer) False}, + { "trivialDraws", "trivialDraws", XtRBoolean, + sizeof(Boolean), XtOffset(AppDataPtr, trivialDraws), + XtRImmediate, (XtPointer) False}, + { "ruleMoves", "ruleMoves", XtRInt, + sizeof(int), XtOffset(AppDataPtr, ruleMoves), + XtRImmediate, (XtPointer) 51}, + { "repeatsToDraw", "repeatsToDraw", XtRInt, + sizeof(int), XtOffset(AppDataPtr, drawRepeats), + XtRImmediate, (XtPointer) 6}, + { "engineDebugOutput", "engineDebugOutput", XtRInt, + sizeof(int), XtOffset(AppDataPtr, engineComments), + XtRImmediate, (XtPointer) 1}, + { "userName", "userName", XtRString, + sizeof(int), XtOffset(AppDataPtr, userName), + XtRImmediate, (XtPointer) 0}, + { "autoKibitz", "autoKibitz", XtRBoolean, + sizeof(Boolean), XtOffset(AppDataPtr, autoKibitz), + XtRImmediate, (XtPointer) False}, + { "firstTimeOdds", "firstTimeOdds", XtRInt, + sizeof(int), XtOffset(AppDataPtr, firstTimeOdds), + XtRImmediate, (XtPointer) 1}, + { "secondTimeOdds", "secondTimeOdds", XtRInt, + sizeof(int), XtOffset(AppDataPtr, secondTimeOdds), + XtRImmediate, (XtPointer) 1}, + { "timeOddsMode", "timeOddsMode", XtRInt, + sizeof(int), XtOffset(AppDataPtr, timeOddsMode), + XtRImmediate, (XtPointer) 0}, + { "firstAccumulateTC", "firstAccumulateTC", XtRInt, + sizeof(int), XtOffset(AppDataPtr, firstAccumulateTC), + XtRImmediate, (XtPointer) 1}, + { "secondAccumulateTC", "secondAccumulateTC", XtRInt, + sizeof(int), XtOffset(AppDataPtr, secondAccumulateTC), + XtRImmediate, (XtPointer) 1}, + { "firstNPS", "firstNPS", XtRInt, + sizeof(int), XtOffset(AppDataPtr, firstNPS), + XtRImmediate, (XtPointer) -1}, + { "secondNPS", "secondNPS", XtRInt, + sizeof(int), XtOffset(AppDataPtr, secondNPS), + XtRImmediate, (XtPointer) -1}, + { "serverMoves", "serverMoves", XtRString, + sizeof(String), XtOffset(AppDataPtr, serverMovesName), + XtRImmediate, (XtPointer) 0}, + { "serverPause", "serverPause", XtRInt, + sizeof(int), XtOffset(AppDataPtr, serverPause), + XtRImmediate, (XtPointer) 0}, + { "suppressLoadMoves", "suppressLoadMoves", XtRBoolean, + sizeof(Boolean), XtOffset(AppDataPtr, suppressLoadMoves), + XtRImmediate, (XtPointer) False}, +}; + +XrmOptionDescRec shellOptions[] = { + { "-whitePieceColor", "whitePieceColor", XrmoptionSepArg, NULL }, + { "-blackPieceColor", "blackPieceColor", XrmoptionSepArg, NULL }, + { "-lightSquareColor", "lightSquareColor", XrmoptionSepArg, NULL }, + { "-darkSquareColor", "darkSquareColor", XrmoptionSepArg, NULL }, + { "-highlightSquareColor", "highlightSquareColor", XrmoptionSepArg, NULL }, + { "-premoveHighlightColor", "premoveHighlightColor", XrmoptionSepArg,NULL}, + { "-movesPerSession", "movesPerSession", XrmoptionSepArg, NULL }, + { "-mps", "movesPerSession", XrmoptionSepArg, NULL }, + { "-timeIncrement", "timeIncrement", XrmoptionSepArg, NULL }, + { "-inc", "timeIncrement", XrmoptionSepArg, NULL }, + { "-initString", "initString", XrmoptionSepArg, NULL }, + { "-firstInitString", "initString", XrmoptionSepArg, NULL }, + { "-secondInitString", "secondInitString", XrmoptionSepArg, NULL }, + { "-firstComputerString", "firstComputerString", XrmoptionSepArg, NULL }, + { "-secondComputerString", "secondComputerString", XrmoptionSepArg, NULL }, + { "-firstChessProgram", "firstChessProgram", XrmoptionSepArg, NULL }, + { "-fcp", "firstChessProgram", XrmoptionSepArg, NULL }, + { "-secondChessProgram", "secondChessProgram", XrmoptionSepArg, NULL }, + { "-scp", "secondChessProgram", XrmoptionSepArg, NULL }, + { "-firstPlaysBlack", "firstPlaysBlack", XrmoptionSepArg, NULL }, + { "-fb", "firstPlaysBlack", XrmoptionNoArg, "True" }, + { "-xfb", "firstPlaysBlack", XrmoptionNoArg, "False" }, + { "-noChessProgram", "noChessProgram", XrmoptionSepArg, NULL }, + { "-ncp", "noChessProgram", XrmoptionNoArg, "True" }, + { "-xncp", "noChessProgram", XrmoptionNoArg, "False" }, + { "-firstHost", "firstHost", XrmoptionSepArg, NULL }, + { "-fh", "firstHost", XrmoptionSepArg, NULL }, + { "-secondHost", "secondHost", XrmoptionSepArg, NULL }, + { "-sh", "secondHost", XrmoptionSepArg, NULL }, + { "-firstDirectory", "firstDirectory", XrmoptionSepArg, NULL }, + { "-fd", "firstDirectory", XrmoptionSepArg, NULL }, + { "-secondDirectory", "secondDirectory", XrmoptionSepArg, NULL }, + { "-sd", "secondDirectory", XrmoptionSepArg, NULL }, + { "-bitmapDirectory", "bitmapDirectory", XrmoptionSepArg, NULL }, + { "-bm", "bitmapDirectory", XrmoptionSepArg, NULL }, + { "-remoteShell", "remoteShell", XrmoptionSepArg, NULL }, + { "-rsh", "remoteShell", XrmoptionSepArg, NULL }, + { "-remoteUser", "remoteUser", XrmoptionSepArg, NULL }, + { "-ruser", "remoteUser", XrmoptionSepArg, NULL }, + { "-timeDelay", "timeDelay", XrmoptionSepArg, NULL }, + { "-td", "timeDelay", XrmoptionSepArg, NULL }, + { "-timeControl", "timeControl", XrmoptionSepArg, NULL }, + { "-tc", "timeControl", XrmoptionSepArg, NULL }, + { "-internetChessServerMode", "internetChessServerMode", + XrmoptionSepArg, NULL }, + { "-ics", "internetChessServerMode", XrmoptionNoArg, "True" }, + { "-xics", "internetChessServerMode", XrmoptionNoArg, "False" }, + { "-internetChessServerHost", "internetChessServerHost", + XrmoptionSepArg, NULL }, + { "-icshost", "internetChessServerHost", XrmoptionSepArg, NULL }, + { "-internetChessServerPort", "internetChessServerPort", + XrmoptionSepArg, NULL }, + { "-icsport", "internetChessServerPort", XrmoptionSepArg, NULL }, + { "-internetChessServerCommPort", "internetChessServerCommPort", + XrmoptionSepArg, NULL }, + { "-icscomm", "internetChessServerCommPort", XrmoptionSepArg, NULL }, + { "-internetChessServerLogonScript", "internetChessServerLogonScript", + XrmoptionSepArg, NULL }, + { "-icslogon", "internetChessServerLogonScript", XrmoptionSepArg, NULL }, + { "-internetChessServerHelper", "internetChessServerHelper", + XrmoptionSepArg, NULL }, + { "-icshelper", "internetChessServerHelper", XrmoptionSepArg, NULL }, + { "-internetChessServerInputBox", "internetChessServerInputBox", + XrmoptionSepArg, NULL }, + { "-icsinput", "internetChessServerInputBox", XrmoptionNoArg, "True" }, + { "-xicsinput", "internetChessServerInputBox", XrmoptionNoArg, "False" }, + { "-icsAlarm", "icsAlarm", XrmoptionSepArg, NULL }, + { "-alarm", "icsAlarm", XrmoptionNoArg, "True" }, + { "-xalarm", "icsAlarm", XrmoptionNoArg, "False" }, + { "-icsAlarmTime", "icsAlarmTime", XrmoptionSepArg, NULL }, + { "-useTelnet", "useTelnet", XrmoptionSepArg, NULL }, + { "-telnet", "useTelnet", XrmoptionNoArg, "True" }, + { "-xtelnet", "useTelnet", XrmoptionNoArg, "False" }, + { "-telnetProgram", "telnetProgram", XrmoptionSepArg, NULL }, + { "-gateway", "gateway", XrmoptionSepArg, NULL }, + { "-loadGameFile", "loadGameFile", XrmoptionSepArg, NULL }, + { "-lgf", "loadGameFile", XrmoptionSepArg, NULL }, + { "-loadGameIndex", "loadGameIndex", XrmoptionSepArg, NULL }, + { "-lgi", "loadGameIndex", XrmoptionSepArg, NULL }, + { "-saveGameFile", "saveGameFile", XrmoptionSepArg, NULL }, + { "-sgf", "saveGameFile", XrmoptionSepArg, NULL }, + { "-autoSaveGames", "autoSaveGames", XrmoptionSepArg, NULL }, + { "-autosave", "autoSaveGames", XrmoptionNoArg, "True" }, + { "-xautosave", "autoSaveGames", XrmoptionNoArg, "False" }, + { "-autoRaiseBoard", "autoRaiseBoard", XrmoptionSepArg, NULL }, + { "-autoraise", "autoRaiseBoard", XrmoptionNoArg, "True" }, + { "-xautoraise", "autoRaiseBoard", XrmoptionNoArg, "False" }, + { "-blindfold", "blindfold", XrmoptionSepArg, NULL }, + { "-blind", "blindfold", XrmoptionNoArg, "True" }, + { "-xblind", "blindfold", XrmoptionNoArg, "False" }, + { "-loadPositionFile", "loadPositionFile", XrmoptionSepArg, NULL }, + { "-lpf", "loadPositionFile", XrmoptionSepArg, NULL }, + { "-loadPositionIndex", "loadPositionIndex", XrmoptionSepArg, NULL }, + { "-lpi", "loadPositionIndex", XrmoptionSepArg, NULL }, + { "-savePositionFile", "savePositionFile", XrmoptionSepArg, NULL }, + { "-spf", "savePositionFile", XrmoptionSepArg, NULL }, + { "-matchMode", "matchMode", XrmoptionSepArg, NULL }, + { "-mm", "matchMode", XrmoptionNoArg, "True" }, + { "-xmm", "matchMode", XrmoptionNoArg, "False" }, + { "-matchGames", "matchGames", XrmoptionSepArg, NULL }, + { "-mg", "matchGames", XrmoptionSepArg, NULL }, + { "-monoMode", "monoMode", XrmoptionSepArg, NULL }, + { "-mono", "monoMode", XrmoptionNoArg, "True" }, + { "-xmono", "monoMode", XrmoptionNoArg, "False" }, + { "-debugMode", "debugMode", XrmoptionSepArg, NULL }, + { "-debug", "debugMode", XrmoptionNoArg, "True" }, + { "-xdebug", "debugMode", XrmoptionNoArg, "False" }, + { "-clockMode", "clockMode", XrmoptionSepArg, NULL }, + { "-clock", "clockMode", XrmoptionNoArg, "True" }, + { "-xclock", "clockMode", XrmoptionNoArg, "False" }, + { "-boardSize", "boardSize", XrmoptionSepArg, NULL }, + { "-size", "boardSize", XrmoptionSepArg, NULL }, + { "-searchTime", "searchTime", XrmoptionSepArg, NULL }, + { "-st", "searchTime", XrmoptionSepArg, NULL }, + { "-searchDepth", "searchDepth", XrmoptionSepArg, NULL }, + { "-depth", "searchDepth", XrmoptionSepArg, NULL }, + { "-showCoords", "showCoords", XrmoptionSepArg, NULL }, + { "-coords", "showCoords", XrmoptionNoArg, "True" }, + { "-xcoords", "showCoords", XrmoptionNoArg, "False" }, +#if JAIL + { "-showJail", "showJail", XrmoptionSepArg, NULL }, + { "-jail", "showJail", XrmoptionNoArg, "1" }, + { "-sidejail", "showJail", XrmoptionNoArg, "2" }, + { "-xjail", "showJail", XrmoptionNoArg, "0" }, +#endif + { "-showThinking", "showThinking", XrmoptionSepArg, NULL }, + { "-thinking", "showThinking", XrmoptionNoArg, "True" }, + { "-xthinking", "showThinking", XrmoptionNoArg, "False" }, + { "-ponderNextMove", "ponderNextMove", XrmoptionSepArg, NULL }, + { "-ponder", "ponderNextMove", XrmoptionNoArg, "True" }, + { "-xponder", "ponderNextMove", XrmoptionNoArg, "False" }, + { "-periodicUpdates", "periodicUpdates", XrmoptionSepArg, NULL }, + { "-periodic", "periodicUpdates", XrmoptionNoArg, "True" }, + { "-xperiodic", "periodicUpdates", XrmoptionNoArg, "False" }, + { "-clockFont", "clockFont", XrmoptionSepArg, NULL }, + { "-coordFont", "coordFont", XrmoptionSepArg, NULL }, + { "-font", "font", XrmoptionSepArg, NULL }, + { "-ringBellAfterMoves", "ringBellAfterMoves", XrmoptionSepArg, NULL }, + { "-bell", "ringBellAfterMoves", XrmoptionNoArg, "True" }, + { "-xbell", "ringBellAfterMoves", XrmoptionNoArg, "False" }, + { "-movesound", "ringBellAfterMoves", XrmoptionNoArg, "True" }, + { "-xmovesound", "ringBellAfterMoves", XrmoptionNoArg, "False" }, + { "-autoCallFlag", "autoCallFlag", XrmoptionSepArg, NULL }, + { "-autoflag", "autoCallFlag", XrmoptionNoArg, "True" }, + { "-xautoflag", "autoCallFlag", XrmoptionNoArg, "False" }, + { "-autoFlipView", "autoFlipView", XrmoptionSepArg, NULL }, + { "-autoflip", "autoFlipView", XrmoptionNoArg, "True" }, + { "-xautoflip", "autoFlipView", XrmoptionNoArg, "False" }, + { "-autoObserve", "autoObserve", XrmoptionSepArg, NULL }, + { "-autobs", "autoObserve", XrmoptionNoArg, "True" }, + { "-xautobs", "autoObserve", XrmoptionNoArg, "False" }, + { "-autoComment", "autoComment", XrmoptionSepArg, NULL }, + { "-autocomm", "autoComment", XrmoptionNoArg, "True" }, + { "-xautocomm", "autoComment", XrmoptionNoArg, "False" }, + { "-getMoveList", "getMoveList", XrmoptionSepArg, NULL }, + { "-moves", "getMoveList", XrmoptionNoArg, "True" }, + { "-xmoves", "getMoveList", XrmoptionNoArg, "False" }, +#if HIGHDRAG + { "-highlightDragging", "highlightDragging", XrmoptionSepArg, NULL }, + { "-highdrag", "highlightDragging", XrmoptionNoArg, "True" }, + { "-xhighdrag", "highlightDragging", XrmoptionNoArg, "False" }, +#endif + { "-highlightLastMove", "highlightLastMove", XrmoptionSepArg, NULL }, + { "-highlight", "highlightLastMove", XrmoptionNoArg, "True" }, + { "-xhighlight", "highlightLastMove", XrmoptionNoArg, "False" }, + { "-premove", "premove", XrmoptionSepArg, NULL }, + { "-pre", "premove", XrmoptionNoArg, "True" }, + { "-xpre", "premove", XrmoptionNoArg, "False" }, + { "-testLegality", "testLegality", XrmoptionSepArg, NULL }, + { "-legal", "testLegality", XrmoptionNoArg, "True" }, + { "-xlegal", "testLegality", XrmoptionNoArg, "False" }, + { "-flipView", "flipView", XrmoptionSepArg, NULL }, + { "-flip", "flipView", XrmoptionNoArg, "True" }, + { "-xflip", "flipView", XrmoptionNoArg, "False" }, + { "-cmail", "cmailGameName", XrmoptionSepArg, NULL }, + { "-alwaysPromoteToQueen", "alwaysPromoteToQueen", + XrmoptionSepArg, NULL }, + { "-queen", "alwaysPromoteToQueen", XrmoptionNoArg, "True" }, + { "-xqueen", "alwaysPromoteToQueen", XrmoptionNoArg, "False" }, + { "-oldSaveStyle", "oldSaveStyle", XrmoptionSepArg, NULL }, + { "-oldsave", "oldSaveStyle", XrmoptionNoArg, "True" }, + { "-xoldsave", "oldSaveStyle", XrmoptionNoArg, "False" }, + { "-quietPlay", "quietPlay", XrmoptionSepArg, NULL }, + { "-quiet", "quietPlay", XrmoptionNoArg, "True" }, + { "-xquiet", "quietPlay", XrmoptionNoArg, "False" }, + { "-titleInWindow", "titleInWindow", XrmoptionSepArg, NULL }, + { "-title", "titleInWindow", XrmoptionNoArg, "True" }, + { "-xtitle", "titleInWindow", XrmoptionNoArg, "False" }, +#ifdef ZIPPY + { "-zippyTalk", "zippyTalk", XrmoptionSepArg, NULL }, + { "-zt", "zippyTalk", XrmoptionNoArg, "True" }, + { "-xzt", "zippyTalk", XrmoptionNoArg, "False" }, + { "-zippyPlay", "zippyPlay", XrmoptionSepArg, NULL }, + { "-zp", "zippyPlay", XrmoptionNoArg, "True" }, + { "-xzp", "zippyPlay", XrmoptionNoArg, "False" }, + { "-zippyLines", "zippyLines", XrmoptionSepArg, NULL }, + { "-zippyPinhead", "zippyPinhead", XrmoptionSepArg, NULL }, + { "-zippyPassword", "zippyPassword", XrmoptionSepArg, NULL }, + { "-zippyPassword2", "zippyPassword2", XrmoptionSepArg, NULL }, + { "-zippyWrongPassword", "zippyWrongPassword", XrmoptionSepArg, NULL }, + { "-zippyAcceptOnly", "zippyAcceptOnly", XrmoptionSepArg, NULL }, + { "-zippyUseI", "zippyUseI", XrmoptionSepArg, NULL }, + { "-zui", "zippyUseI", XrmoptionNoArg, "True" }, + { "-xzui", "zippyUseI", XrmoptionNoArg, "False" }, + { "-zippyBughouse", "zippyBughouse", XrmoptionSepArg, NULL }, + { "-zippyNoplayCrafty", "zippyNoplayCrafty", XrmoptionSepArg, NULL }, + { "-znc", "zippyNoplayCrafty", XrmoptionNoArg, "True" }, + { "-xznc", "zippyNoplayCrafty", XrmoptionNoArg, "False" }, + { "-zippyGameEnd", "zippyGameEnd", XrmoptionSepArg, NULL }, + { "-zippyGameStart", "zippyGameStart", XrmoptionSepArg, NULL }, + { "-zippyAdjourn", "zippyAdjourn", XrmoptionSepArg, NULL }, + { "-zadj", "zippyAdjourn", XrmoptionNoArg, "True" }, + { "-xzadj", "zippyAdjourn", XrmoptionNoArg, "False" }, + { "-zippyAbort", "zippyAbort", XrmoptionSepArg, NULL }, + { "-zab", "zippyAbort", XrmoptionNoArg, "True" }, + { "-xzab", "zippyAbort", XrmoptionNoArg, "False" }, + { "-zippyVariants", "zippyVariants", XrmoptionSepArg, NULL }, + { "-zippyMaxGames", "zippyMaxGames", XrmoptionSepArg, NULL }, + { "-zippyReplayTimeout", "zippyReplayTimeout", XrmoptionSepArg, NULL }, +#endif + { "-flashCount", "flashCount", XrmoptionSepArg, NULL }, + { "-flash", "flashCount", XrmoptionNoArg, "3" }, + { "-xflash", "flashCount", XrmoptionNoArg, "0" }, + { "-flashRate", "flashRate", XrmoptionSepArg, NULL }, + { "-pixmapDirectory", "pixmapDirectory", XrmoptionSepArg, NULL }, + { "-msLoginDelay", "msLoginDelay", XrmoptionSepArg, NULL }, + { "-pixmap", "pixmapDirectory", XrmoptionSepArg, NULL }, + { "-colorizeMessages", "colorizeMessages", XrmoptionSepArg, NULL }, + { "-colorize", "colorizeMessages", XrmoptionNoArg, "True" }, + { "-xcolorize", "colorizeMessages", XrmoptionNoArg, "False" }, + { "-colorShout", "colorShout", XrmoptionSepArg, NULL }, + { "-colorSShout", "colorSShout", XrmoptionSepArg, NULL }, + { "-colorCShout", "colorSShout", XrmoptionSepArg, NULL }, /*FICS name*/ + { "-colorChannel1", "colorChannel1", XrmoptionSepArg, NULL }, + { "-colorChannel", "colorChannel", XrmoptionSepArg, NULL }, + { "-colorKibitz", "colorKibitz", XrmoptionSepArg, NULL }, + { "-colorTell", "colorTell", XrmoptionSepArg, NULL }, + { "-colorChallenge", "colorChallenge", XrmoptionSepArg, NULL }, + { "-colorRequest", "colorRequest", XrmoptionSepArg, NULL }, + { "-colorSeek", "colorSeek", XrmoptionSepArg, NULL }, + { "-colorNormal", "colorNormal", XrmoptionSepArg, NULL }, + { "-soundProgram", "soundProgram", XrmoptionSepArg, NULL }, + { "-soundShout", "soundShout", XrmoptionSepArg, NULL }, + { "-soundSShout", "soundSShout", XrmoptionSepArg, NULL }, + { "-soundCShout", "soundSShout", XrmoptionSepArg, NULL }, /*FICS name*/ + { "-soundChannel1", "soundChannel1", XrmoptionSepArg, NULL }, + { "-soundChannel", "soundChannel", XrmoptionSepArg, NULL }, + { "-soundKibitz", "soundKibitz", XrmoptionSepArg, NULL }, + { "-soundTell", "soundTell", XrmoptionSepArg, NULL }, + { "-soundChallenge", "soundChallenge", XrmoptionSepArg, NULL }, + { "-soundRequest", "soundRequest", XrmoptionSepArg, NULL }, + { "-soundSeek", "soundSeek", XrmoptionSepArg, NULL }, + { "-soundMove", "soundMove", XrmoptionSepArg, NULL }, + { "-soundIcsWin", "soundIcsWin", XrmoptionSepArg, NULL }, + { "-soundIcsLoss", "soundIcsLoss", XrmoptionSepArg, NULL }, + { "-soundIcsDraw", "soundIcsDraw", XrmoptionSepArg, NULL }, + { "-soundIcsUnfinished", "soundIcsUnfinished", XrmoptionSepArg, NULL }, + { "-soundIcsAlarm", "soundIcsAlarm", XrmoptionSepArg, NULL }, + { "-reuseFirst", "reuseFirst", XrmoptionSepArg, NULL }, + { "-reuseChessPrograms", "reuseFirst", XrmoptionSepArg, NULL }, /*compat*/ + { "-reuse", "reuseFirst", XrmoptionNoArg, "True" }, + { "-xreuse", "reuseFirst", XrmoptionNoArg, "False" }, + { "-reuseSecond", "reuseSecond", XrmoptionSepArg, NULL }, + { "-reuse2", "reuseSecond", XrmoptionNoArg, "True" }, + { "-xreuse2", "reuseSecond", XrmoptionNoArg, "False" }, + { "-animateMoving", "animateMoving", XrmoptionSepArg, NULL }, + { "-animate", "animateMoving", XrmoptionNoArg, "True" }, + { "-xanimate", "animateMoving", XrmoptionNoArg, "False" }, + { "-animateDragging", "animateDragging", XrmoptionSepArg, NULL }, + { "-drag", "animateDragging", XrmoptionNoArg, "True" }, + { "-xdrag", "animateDragging", XrmoptionNoArg, "False" }, + { "-animateSpeed", "animateSpeed", XrmoptionSepArg, NULL }, + { "-popupExitMessage", "popupExitMessage", XrmoptionSepArg, NULL }, + { "-exit", "popupExitMessage", XrmoptionNoArg, "True" }, + { "-xexit", "popupExitMessage", XrmoptionNoArg, "False" }, + { "-popupMoveErrors", "popupMoveErrors", XrmoptionSepArg, NULL }, + { "-popup", "popupMoveErrors", XrmoptionNoArg, "True" }, + { "-xpopup", "popupMoveErrors", XrmoptionNoArg, "False" }, + { "-fontSizeTolerance", "fontSizeTolerance", XrmoptionSepArg, NULL }, + { "-initialMode", "initialMode", XrmoptionSepArg, NULL }, + { "-mode", "initialMode", XrmoptionSepArg, NULL }, + { "-variant", "variant", XrmoptionSepArg, NULL }, + { "-firstProtocolVersion", "firstProtocolVersion", XrmoptionSepArg, NULL }, + { "-secondProtocolVersion","secondProtocolVersion",XrmoptionSepArg, NULL }, + { "-showButtonBar", "showButtonBar", XrmoptionSepArg, NULL }, + { "-buttons", "showButtonBar", XrmoptionNoArg, "True" }, + { "-xbuttons", "showButtonBar", XrmoptionNoArg, "False" }, + /* [AS,HR] New features */ + { "-firstScoreAbs", "firstScoreAbs", XrmoptionSepArg, NULL }, + { "-secondScoreAbs", "secondScoreAbs", XrmoptionSepArg, NULL }, + { "-pgnExtendedInfo", "pgnExtendedInfo", XrmoptionSepArg, NULL }, + { "-hideThinkingFromHuman", "hideThinkingFromHuman", XrmoptionSepArg, NULL }, + { "-adjudicateLossThreshold", "adjudicateLossThreshold", XrmoptionSepArg, NULL }, + { "-pgnEventHeader", "pgnEventHeader", XrmoptionSepArg, NULL }, + { "-defaultFrcPosition", "defaultFrcPosition", XrmoptionSepArg, NULL }, + // [HGM] I am sure AS added many more options, but we have to fish them out, from the list in winboard.c + + /* [HGM,HR] User-selectable board size */ + { "-boardWidth", "boardWidth", XrmoptionSepArg, NULL }, + { "-boardHeight", "boardHeight", XrmoptionSepArg, NULL }, + { "-matchPause", "matchPause", XrmoptionSepArg, NULL }, + + /* [HGM] new arguments of 4.3.xx. All except first three are back-end options, which should work immediately */ + { "-holdingsSize", "holdingsSize", XrmoptionSepArg, NULL }, // requires extensive front-end changes to work + { "-flipBlack", "flipBlack", XrmoptionSepArg, NULL }, // requires front-end changes to work + { "-allWhite", "allWhite", XrmoptionSepArg, NULL }, // requires front-end changes to work + { "-pieceToCharTable", "pieceToCharTable", XrmoptionSepArg, NULL }, + { "-alphaRank", "alphaRank", XrmoptionSepArg, NULL }, + { "-testClaims", "testClaims", XrmoptionSepArg, NULL }, + { "-checkMates", "checkMates", XrmoptionSepArg, NULL }, + { "-materialDraws", "materialDraws", XrmoptionSepArg, NULL }, + { "-trivialDraws", "trivialDraws", XrmoptionSepArg, NULL }, + { "-ruleMoves", "ruleMoves", XrmoptionSepArg, NULL }, + { "-repeatsToDraw", "repeatsToDraw", XrmoptionSepArg, NULL }, + { "-engineDebugOutput", "engineDebugOutput", XrmoptionSepArg, NULL }, + { "-userName", "userName", XrmoptionSepArg, NULL }, + { "-autoKibitz", "autoKibitz", XrmoptionNoArg, "True" }, + { "-firstTimeOdds", "firstTimeOdds", XrmoptionSepArg, NULL }, + { "-secondTimeOdds", "secondTimeOdds", XrmoptionSepArg, NULL }, + { "-timeOddsMode", "timeOddsMode", XrmoptionSepArg, NULL }, + { "-firstAccumulateTC", "firstAccumulateTC", XrmoptionSepArg, NULL }, + { "-secondAccumulateTC", "secondAccumulateTC", XrmoptionSepArg, NULL }, + { "-firstNPS", "firstNPS", XrmoptionSepArg, NULL }, + { "-secondNPS", "secondNPS", XrmoptionSepArg, NULL }, + { "-serverMoves", "serverMoves", XrmoptionSepArg, NULL }, + { "-serverPause", "serverPause", XrmoptionSepArg, NULL }, + { "-suppressLoadMoves", "suppressLoadMoves", XrmoptionSepArg, NULL }, +}; + + +XtActionsRec boardActions[] = { + { "DrawPosition", DrawPositionProc }, + { "HandleUserMove", HandleUserMove }, + { "AnimateUserMove", AnimateUserMove }, + { "FileNameAction", FileNameAction }, + { "AskQuestionProc", AskQuestionProc }, + { "AskQuestionReplyAction", AskQuestionReplyAction }, + { "PieceMenuPopup", PieceMenuPopup }, + { "WhiteClock", WhiteClock }, + { "BlackClock", BlackClock }, + { "Iconify", Iconify }, + { "ResetProc", ResetProc }, + { "LoadGameProc", LoadGameProc }, + { "LoadNextGameProc", LoadNextGameProc }, + { "LoadPrevGameProc", LoadPrevGameProc }, + { "LoadSelectedProc", LoadSelectedProc }, + { "ReloadGameProc", ReloadGameProc }, + { "LoadPositionProc", LoadPositionProc }, + { "LoadNextPositionProc", LoadNextPositionProc }, + { "LoadPrevPositionProc", LoadPrevPositionProc }, + { "ReloadPositionProc", ReloadPositionProc }, + { "CopyPositionProc", CopyPositionProc }, + { "PastePositionProc", PastePositionProc }, + { "CopyGameProc", CopyGameProc }, + { "PasteGameProc", PasteGameProc }, + { "SaveGameProc", SaveGameProc }, + { "SavePositionProc", SavePositionProc }, + { "MailMoveProc", MailMoveProc }, + { "ReloadCmailMsgProc", ReloadCmailMsgProc }, + { "QuitProc", QuitProc }, + { "MachineWhiteProc", MachineWhiteProc }, + { "MachineBlackProc", MachineBlackProc }, + { "AnalysisModeProc", AnalyzeModeProc }, + { "AnalyzeFileProc", AnalyzeFileProc }, + { "TwoMachinesProc", TwoMachinesProc }, + { "IcsClientProc", IcsClientProc }, + { "EditGameProc", EditGameProc }, + { "EditPositionProc", EditPositionProc }, + { "TrainingProc", EditPositionProc }, + { "ShowGameListProc", ShowGameListProc }, + { "ShowMoveListProc", HistoryShowProc}, + { "EditTagsProc", EditCommentProc }, + { "EditCommentProc", EditCommentProc }, + { "IcsAlarmProc", IcsAlarmProc }, + { "IcsInputBoxProc", IcsInputBoxProc }, + { "PauseProc", PauseProc }, + { "AcceptProc", AcceptProc }, + { "DeclineProc", DeclineProc }, + { "RematchProc", RematchProc }, + { "CallFlagProc", CallFlagProc }, + { "DrawProc", DrawProc }, + { "AdjournProc", AdjournProc }, + { "AbortProc", AbortProc }, + { "ResignProc", ResignProc }, + { "EnterKeyProc", EnterKeyProc }, + { "StopObservingProc", StopObservingProc }, + { "StopExaminingProc", StopExaminingProc }, + { "BackwardProc", BackwardProc }, + { "ForwardProc", ForwardProc }, + { "ToStartProc", ToStartProc }, + { "ToEndProc", ToEndProc }, + { "RevertProc", RevertProc }, + { "TruncateGameProc", TruncateGameProc }, + { "MoveNowProc", MoveNowProc }, + { "RetractMoveProc", RetractMoveProc }, + { "AlwaysQueenProc", AlwaysQueenProc }, + { "AnimateDraggingProc", AnimateDraggingProc }, + { "AnimateMovingProc", AnimateMovingProc }, + { "AutoflagProc", AutoflagProc }, + { "AutoflipProc", AutoflipProc }, + { "AutobsProc", AutobsProc }, + { "AutoraiseProc", AutoraiseProc }, + { "AutosaveProc", AutosaveProc }, + { "BlindfoldProc", BlindfoldProc }, + { "FlashMovesProc", FlashMovesProc }, + { "FlipViewProc", FlipViewProc }, + { "GetMoveListProc", GetMoveListProc }, +#if HIGHDRAG + { "HighlightDraggingProc", HighlightDraggingProc }, +#endif + { "HighlightLastMoveProc", HighlightLastMoveProc }, + { "IcsAlarmProc", IcsAlarmProc }, + { "MoveSoundProc", MoveSoundProc }, + { "OldSaveStyleProc", OldSaveStyleProc }, + { "PeriodicUpdatesProc", PeriodicUpdatesProc }, + { "PonderNextMoveProc", PonderNextMoveProc }, + { "PopupExitMessageProc", PopupExitMessageProc }, + { "PopupMoveErrorsProc", PopupMoveErrorsProc }, + { "PremoveProc", PremoveProc }, + { "QuietPlayProc", QuietPlayProc }, + { "ShowCoordsProc", ShowCoordsProc }, + { "ShowThinkingProc", ShowThinkingProc }, + { "TestLegalityProc", TestLegalityProc }, + { "InfoProc", InfoProc }, + { "ManProc", ManProc }, + { "HintProc", HintProc }, + { "BookProc", BookProc }, + { "AboutGameProc", AboutGameProc }, + { "AboutProc", AboutProc }, + { "DebugProc", DebugProc }, + { "NothingProc", NothingProc }, + { "CommentPopDown", (XtActionProc) CommentPopDown }, + { "EditCommentPopDown", (XtActionProc) EditCommentPopDown }, + { "TagsPopDown", (XtActionProc) TagsPopDown }, + { "ErrorPopDown", (XtActionProc) ErrorPopDown }, + { "ICSInputBoxPopDown", (XtActionProc) ICSInputBoxPopDown }, + { "AnalysisPopDown", (XtActionProc) AnalysisPopDown }, + { "FileNamePopDown", (XtActionProc) FileNamePopDown }, + { "AskQuestionPopDown", (XtActionProc) AskQuestionPopDown }, + { "GameListPopDown", (XtActionProc) GameListPopDown }, + { "PromotionPopDown", (XtActionProc) PromotionPopDown }, + { "HistoryPopDown", (XtActionProc) HistoryPopDown }, +}; + +char globalTranslations[] = + ":R: ResignProc() \n \ + :r: ResetProc() \n \ + :g: LoadGameProc() \n \ + :N: LoadNextGameProc() \n \ + :P: LoadPrevGameProc() \n \ + :Q: QuitProc() \n \ + :F: ToEndProc() \n \ + :f: ForwardProc() \n \ + :B: ToStartProc() \n \ + :b: BackwardProc() \n \ + :p: PauseProc() \n \ + :d: DrawProc() \n \ + :t: CallFlagProc() \n \ + :i: Iconify() \n \ + :c: Iconify() \n \ + :v: FlipViewProc() \n \ + Control_L: BackwardProc() \n \ + Control_L: ForwardProc() \n \ + Control_R: BackwardProc() \n \ + Control_R: ForwardProc() \n \ + Shift1: AskQuestionProc(\"Direct command\",\ + \"Send to chess program:\",,1) \n \ + Shift2: AskQuestionProc(\"Direct command\",\ + \"Send to second chess program:\",,2) \n"; + +char boardTranslations[] = + ": HandleUserMove() \n \ + : HandleUserMove() \n \ + : AnimateUserMove() \n \ + Shift: XawPositionSimpleMenu(menuB) XawPositionSimpleMenu(menuD)\ + PieceMenuPopup(menuB) \n \ + Any: XawPositionSimpleMenu(menuW) XawPositionSimpleMenu(menuD) \ + PieceMenuPopup(menuW) \n \ + Shift: XawPositionSimpleMenu(menuW) XawPositionSimpleMenu(menuD)\ + PieceMenuPopup(menuW) \n \ + Any: XawPositionSimpleMenu(menuB) XawPositionSimpleMenu(menuD) \ + PieceMenuPopup(menuB) \n"; + +char whiteTranslations[] = ": WhiteClock()\n"; +char blackTranslations[] = ": BlackClock()\n"; + +char ICSInputTranslations[] = + "Return: EnterKeyProc() \n"; + +String xboardResources[] = { + "*fileName*value.translations: #override\\n Return: FileNameAction()", + "*question*value.translations: #override\\n Return: AskQuestionReplyAction()", + "*errorpopup*translations: #override\\n Return: ErrorPopDown()", + NULL + }; + + +/* Max possible square size */ +#define MAXSQSIZE 256 + +static int xpm_avail[MAXSQSIZE]; + +#ifdef HAVE_DIR_STRUCT + +/* Extract piece size from filename */ +static int +xpm_getsize(name, len, ext) + char *name; + int len; + char *ext; +{ + char *p, *d; + char buf[10]; + + if (len < 4) + return 0; + + if ((p=strchr(name, '.')) == NULL || + StrCaseCmp(p+1, ext) != 0) + return 0; + + p = name + 3; + d = buf; + + while (*p && isdigit(*p)) + *(d++) = *(p++); + + *d = 0; + return atoi(buf); +} + +/* Setup xpm_avail */ +static int +xpm_getavail(dirname, ext) + char *dirname; + char *ext; +{ + DIR *dir; + struct dirent *ent; + int i; + + for (i=0; id_name, NAMLEN(ent), ext); + if (i > 0 && i < MAXSQSIZE) + xpm_avail[i] = 1; + } + + closedir(dir); + + return 0; +} + +void +xpm_print_avail(fp, ext) + FILE *fp; + char *ext; +{ + int i; + + fprintf(fp, "Available `%s' sizes:\n", ext); + for (i=1; i 99) /* watch bounds on buf */ + return -1; + + p = str; + d = buf; + for (i=0; iWM_PROTOCOLS: %s() \n", procname); + XtAugmentTranslations(w, XtParseTranslationTable(buf)); +} + +void +BoardToTop() +{ + Arg args[16]; + XtSetArg(args[0], XtNiconic, False); + XtSetValues(shellWidget, args, 1); + + XtPopup(shellWidget, XtGrabNone); /* Raise if lowered */ +} + +#ifdef IDSIZES + // eventually, all layout determining code should go into a subroutine, but until then IDSIZE remains undefined +#else +void InitDrawingSizes(BoardSize boardSize, int flags) +{ // [HGM] Dummy routine to be able to link with backend files from 4.3.xx, which call it + ; +} +#endif + +int +main(argc, argv) + int argc; + char **argv; +{ + int i, j, clockFontPxlSize, coordFontPxlSize, fontPxlSize; + XSetWindowAttributes window_attributes; + Arg args[16]; + Dimension timerWidth, boardWidth, boardHeight, w, h, sep, bor, wr, hr; + XrmValue vFrom, vTo; + XtGeometryResult gres; + char *p; + XrmDatabase xdb; + int forceMono = False; + + setbuf(stdout, NULL); + setbuf(stderr, NULL); + debugFP = stderr; + + programName = strrchr(argv[0], '/'); + if (programName == NULL) + programName = argv[0]; + else + programName++; + + shellWidget = + XtAppInitialize(&appContext, "XBoard", shellOptions, + XtNumber(shellOptions), + &argc, argv, xboardResources, NULL, 0); + if (argc > 1) { + fprintf(stderr, "%s: unrecognized argument %s\n", + programName, argv[1]); + exit(2); + } + + if ((chessDir = (char *) getenv("CHESSDIR")) == NULL) { + chessDir = "."; + } else { + if (chdir(chessDir) != 0) { + fprintf(stderr, "%s: can't cd to CHESSDIR: ", programName); + perror(chessDir); + exit(1); + } + } + + p = getenv("HOME"); + if (p == NULL) p = "/tmp"; + i = strlen(p) + strlen("/.xboardXXXXXx.pgn") + 1; + gameCopyFilename = (char*) malloc(i); + gamePasteFilename = (char*) malloc(i); + sprintf(gameCopyFilename, "%s/.xboard%05uc.pgn", p, getpid()); + sprintf(gamePasteFilename, "%s/.xboard%05up.pgn", p, getpid()); + + XtGetApplicationResources(shellWidget, (XtPointer) &appData, + clientResources, XtNumber(clientResources), + NULL, 0); + + /* [HGM,HR] 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] The following line must be moved to the "New Shuffle Game" menu as soon as there is one! */ + if(appData.defaultFrcPosition != -1) shuffleOpenings = TRUE; + +#if !HIGHDRAG + /* This feature does not work; animation needs a rewrite */ + appData.highlightDragging = FALSE; +#endif + InitBackEnd1(); + + xDisplay = XtDisplay(shellWidget); + xScreen = DefaultScreen(xDisplay); + wm_delete_window = XInternAtom(xDisplay, "WM_DELETE_WINDOW", True); + + 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 +#else + if (isdigit(appData.boardSize[0])) { + i = sscanf(appData.boardSize, "%d,%d,%d,%d,%d,%d,%d", &squareSize, + &lineGap, &clockFontPxlSize, &coordFontPxlSize, + &fontPxlSize, &smallLayout, &tinyLayout); + if (i == 0) { + fprintf(stderr, "%s: bad boardSize syntax %s\n", + programName, appData.boardSize); + exit(2); + } + if (i < 7) { + /* Find some defaults; use the nearest known size */ + SizeDefaults *szd, *nearest; + int distance = 99999; + nearest = szd = sizeDefaults; + while (szd->name != NULL) { + if (abs(szd->squareSize - squareSize) < distance) { + nearest = szd; + distance = abs(szd->squareSize - squareSize); + if (distance == 0) break; + } + szd++; + } + if (i < 2) lineGap = nearest->lineGap; + if (i < 3) clockFontPxlSize = nearest->clockFontPxlSize; + if (i < 4) coordFontPxlSize = nearest->coordFontPxlSize; + if (i < 5) fontPxlSize = nearest->fontPxlSize; + if (i < 6) smallLayout = nearest->smallLayout; + if (i < 7) tinyLayout = nearest->tinyLayout; + } + } else { + SizeDefaults *szd = sizeDefaults; + if (*appData.boardSize == NULLCHAR) { + while (DisplayWidth(xDisplay, xScreen) < szd->minScreenSize || + DisplayHeight(xDisplay, xScreen) < szd->minScreenSize) { + szd++; + } + if (szd->name == NULL) szd--; + } else { + while (szd->name != NULL && + StrCaseCmp(szd->name, appData.boardSize) != 0) szd++; + if (szd->name == NULL) { + fprintf(stderr, "%s: unrecognized boardSize name %s\n", + programName, appData.boardSize); + exit(2); + } + } + squareSize = szd->squareSize; + lineGap = szd->lineGap; + clockFontPxlSize = szd->clockFontPxlSize; + coordFontPxlSize = szd->coordFontPxlSize; + fontPxlSize = szd->fontPxlSize; + smallLayout = szd->smallLayout; + tinyLayout = szd->tinyLayout; + } + + /* Now, using squareSize as a hint, find a good XPM/XIM set size */ + if (strlen(appData.pixmapDirectory) > 0) { + p = ExpandPathName(appData.pixmapDirectory); + if (!p) { + fprintf(stderr, "Error expanding path name \"%s\"\n", + appData.pixmapDirectory); + exit(1); + } + if (appData.debugMode) { + fprintf(stderr, "XBoard square size (hint): %d\n", squareSize); + fprintf(stderr, "%s fulldir:%s:\n", IMAGE_EXT, p); + } + squareSize = xpm_closest_to(p, squareSize, IMAGE_EXT); + if (appData.debugMode) { + fprintf(stderr, "Closest %s size: %d\n", IMAGE_EXT, squareSize); + } + } + + /* [HR] height treated separately (hacked) */ + boardWidth = lineGap + BOARD_WIDTH * (squareSize + lineGap); + boardHeight = lineGap + BOARD_HEIGHT * (squareSize + lineGap); + if (appData.showJail == 1) { + /* Jail on top and bottom */ + XtSetArg(boardArgs[1], XtNwidth, boardWidth); + XtSetArg(boardArgs[2], XtNheight, + boardHeight + 2*(lineGap + squareSize)); + } else if (appData.showJail == 2) { + /* Jail on sides */ + XtSetArg(boardArgs[1], XtNwidth, + boardWidth + 2*(lineGap + squareSize)); + XtSetArg(boardArgs[2], XtNheight, boardHeight); + } else { + /* No jail */ + XtSetArg(boardArgs[1], XtNwidth, boardWidth); + XtSetArg(boardArgs[2], XtNheight, boardHeight); + } + + /* + * Determine what fonts to use. + */ + appData.clockFont = FindFont(appData.clockFont, clockFontPxlSize); + clockFontID = XLoadFont(xDisplay, appData.clockFont); + clockFontStruct = XQueryFont(xDisplay, clockFontID); + appData.coordFont = FindFont(appData.coordFont, coordFontPxlSize); + coordFontID = XLoadFont(xDisplay, appData.coordFont); + coordFontStruct = XQueryFont(xDisplay, coordFontID); + appData.font = FindFont(appData.font, fontPxlSize); + + xdb = XtDatabase(xDisplay); + XrmPutStringResource(&xdb, "*font", appData.font); + + /* + * Detect if there are not enough colors available and adapt. + */ + if (DefaultDepth(xDisplay, xScreen) <= 2) { + appData.monoMode = True; + } + + if (!appData.monoMode) { + vFrom.addr = (caddr_t) appData.lightSquareColor; + vFrom.size = strlen(appData.lightSquareColor); + XtConvert(shellWidget, XtRString, &vFrom, XtRPixel, &vTo); + if (vTo.addr == NULL) { + appData.monoMode = True; + forceMono = True; + } else { + lightSquareColor = *(Pixel *) vTo.addr; + } + } + if (!appData.monoMode) { + vFrom.addr = (caddr_t) appData.darkSquareColor; + vFrom.size = strlen(appData.darkSquareColor); + XtConvert(shellWidget, XtRString, &vFrom, XtRPixel, &vTo); + if (vTo.addr == NULL) { + appData.monoMode = True; + forceMono = True; + } else { + darkSquareColor = *(Pixel *) vTo.addr; + } + } + if (!appData.monoMode) { + vFrom.addr = (caddr_t) appData.whitePieceColor; + vFrom.size = strlen(appData.whitePieceColor); + XtConvert(shellWidget, XtRString, &vFrom, XtRPixel, &vTo); + if (vTo.addr == NULL) { + appData.monoMode = True; + forceMono = True; + } else { + whitePieceColor = *(Pixel *) vTo.addr; + } + } + if (!appData.monoMode) { + vFrom.addr = (caddr_t) appData.blackPieceColor; + vFrom.size = strlen(appData.blackPieceColor); + XtConvert(shellWidget, XtRString, &vFrom, XtRPixel, &vTo); + if (vTo.addr == NULL) { + appData.monoMode = True; + forceMono = True; + } else { + blackPieceColor = *(Pixel *) vTo.addr; + } + } + + if (!appData.monoMode) { + vFrom.addr = (caddr_t) appData.highlightSquareColor; + vFrom.size = strlen(appData.highlightSquareColor); + XtConvert(shellWidget, XtRString, &vFrom, XtRPixel, &vTo); + if (vTo.addr == NULL) { + appData.monoMode = True; + forceMono = True; + } else { + highlightSquareColor = *(Pixel *) vTo.addr; + } + } + + if (!appData.monoMode) { + vFrom.addr = (caddr_t) appData.premoveHighlightColor; + vFrom.size = strlen(appData.premoveHighlightColor); + XtConvert(shellWidget, XtRString, &vFrom, XtRPixel, &vTo); + if (vTo.addr == NULL) { + appData.monoMode = True; + forceMono = True; + } else { + premoveHighlightColor = *(Pixel *) vTo.addr; + } + } + + if (forceMono) { + fprintf(stderr, "%s: too few colors available; trying monochrome mode\n", + programName); + } + + if (appData.monoMode && appData.debugMode) { + fprintf(stderr, "white pixel = 0x%lx, black pixel = 0x%lx\n", + (unsigned long) XWhitePixel(xDisplay, xScreen), + (unsigned long) XBlackPixel(xDisplay, xScreen)); + } + + if (parse_cpair(ColorShout, appData.colorShout) < 0 || + parse_cpair(ColorSShout, appData.colorSShout) < 0 || + parse_cpair(ColorChannel1, appData.colorChannel1) < 0 || + parse_cpair(ColorChannel, appData.colorChannel) < 0 || + parse_cpair(ColorKibitz, appData.colorKibitz) < 0 || + parse_cpair(ColorTell, appData.colorTell) < 0 || + parse_cpair(ColorChallenge, appData.colorChallenge) < 0 || + parse_cpair(ColorRequest, appData.colorRequest) < 0 || + parse_cpair(ColorSeek, appData.colorSeek) < 0 || + parse_cpair(ColorNormal, appData.colorNormal) < 0) + { + if (appData.colorize) { + fprintf(stderr, + "%s: can't parse color names; disabling colorization\n", + programName); + } + appData.colorize = FALSE; + } + textColors[ColorNone].fg = textColors[ColorNone].bg = -1; + textColors[ColorNone].attr = 0; + + XtAppAddActions(appContext, boardActions, XtNumber(boardActions)); + + /* + * widget hierarchy + */ + if (tinyLayout) { + layoutName = "tinyLayout"; + } else if (smallLayout) { + layoutName = "smallLayout"; + } else { + layoutName = "normalLayout"; + } + /* Outer layoutWidget is there only to provide a name for use in + resources that depend on the layout style */ + layoutWidget = + XtCreateManagedWidget(layoutName, formWidgetClass, shellWidget, + layoutArgs, XtNumber(layoutArgs)); + formWidget = + XtCreateManagedWidget("form", formWidgetClass, layoutWidget, + formArgs, XtNumber(formArgs)); + XtSetArg(args[0], XtNdefaultDistance, &sep); + XtGetValues(formWidget, args, 1); + + j = 0; + widgetList[j++] = menuBarWidget = CreateMenuBar(menuBar); + + widgetList[j++] = whiteTimerWidget = + XtCreateWidget("whiteTime", labelWidgetClass, + formWidget, timerArgs, XtNumber(timerArgs)); + XtSetArg(args[0], XtNfont, clockFontStruct); + XtSetValues(whiteTimerWidget, args, 1); + + widgetList[j++] = blackTimerWidget = + XtCreateWidget("blackTime", labelWidgetClass, + formWidget, timerArgs, XtNumber(timerArgs)); + XtSetArg(args[0], XtNfont, clockFontStruct); + XtSetValues(blackTimerWidget, args, 1); + + if (appData.titleInWindow) { + widgetList[j++] = titleWidget = + XtCreateWidget("title", labelWidgetClass, formWidget, + titleArgs, XtNumber(titleArgs)); + } + + if (appData.showButtonBar) { + widgetList[j++] = buttonBarWidget = CreateButtonBar(buttonBar); + } + + widgetList[j++] = messageWidget = + XtCreateWidget("message", labelWidgetClass, formWidget, + messageArgs, XtNumber(messageArgs)); + + widgetList[j++] = boardWidget = + XtCreateWidget("board", widgetClass, formWidget, boardArgs, + XtNumber(boardArgs)); + + XtManageChildren(widgetList, j); + + timerWidth = (boardWidth - sep) / 2; + XtSetArg(args[0], XtNwidth, timerWidth); + XtSetValues(whiteTimerWidget, args, 1); + XtSetValues(blackTimerWidget, args, 1); + + XtSetArg(args[0], XtNbackground, &timerBackgroundPixel); + XtSetArg(args[1], XtNforeground, &timerForegroundPixel); + XtGetValues(whiteTimerWidget, args, 2); + + if (appData.showButtonBar) { + XtSetArg(args[0], XtNbackground, &buttonBackgroundPixel); + XtSetArg(args[1], XtNforeground, &buttonForegroundPixel); + XtGetValues(XtNameToWidget(buttonBarWidget, PAUSE_BUTTON), args, 2); + } + + /* + * formWidget uses these constraints but they are stored + * in the children. + */ + i = 0; + XtSetArg(args[i], XtNfromHoriz, 0); i++; + XtSetValues(menuBarWidget, args, i); + if (appData.titleInWindow) { + if (smallLayout) { + i = 0; + XtSetArg(args[i], XtNfromVert, menuBarWidget); i++; + XtSetValues(whiteTimerWidget, args, i); + i = 0; + XtSetArg(args[i], XtNfromVert, menuBarWidget); i++; + XtSetArg(args[i], XtNfromHoriz, whiteTimerWidget); i++; + XtSetValues(blackTimerWidget, args, i); + i = 0; + XtSetArg(args[i], XtNfromVert, whiteTimerWidget); i++; + XtSetArg(args[i], XtNjustify, XtJustifyLeft); i++; + XtSetValues(titleWidget, args, i); + i = 0; + XtSetArg(args[i], XtNfromVert, titleWidget); i++; + XtSetArg(args[i], XtNresizable, (XtArgVal) True); i++; + XtSetValues(messageWidget, args, i); + if (appData.showButtonBar) { + i = 0; + XtSetArg(args[i], XtNfromVert, titleWidget); i++; + XtSetArg(args[i], XtNfromHoriz, messageWidget); i++; + XtSetValues(buttonBarWidget, args, i); + } + } else { + i = 0; + XtSetArg(args[i], XtNfromVert, titleWidget); i++; + XtSetValues(whiteTimerWidget, args, i); + i = 0; + XtSetArg(args[i], XtNfromVert, titleWidget); i++; + XtSetArg(args[i], XtNfromHoriz, whiteTimerWidget); i++; + XtSetValues(blackTimerWidget, args, i); + i = 0; + XtSetArg(args[i], XtNfromHoriz, menuBarWidget); i++; + XtSetValues(titleWidget, args, i); + i = 0; + XtSetArg(args[i], XtNfromVert, whiteTimerWidget); i++; + XtSetArg(args[i], XtNresizable, (XtArgVal) True); i++; + XtSetValues(messageWidget, args, i); + if (appData.showButtonBar) { + i = 0; + XtSetArg(args[i], XtNfromVert, whiteTimerWidget); i++; + XtSetArg(args[i], XtNfromHoriz, messageWidget); i++; + XtSetValues(buttonBarWidget, args, i); + } + } + } else { + i = 0; + XtSetArg(args[i], XtNfromVert, menuBarWidget); i++; + XtSetValues(whiteTimerWidget, args, i); + i = 0; + XtSetArg(args[i], XtNfromVert, menuBarWidget); i++; + XtSetArg(args[i], XtNfromHoriz, whiteTimerWidget); i++; + XtSetValues(blackTimerWidget, args, i); + i = 0; + XtSetArg(args[i], XtNfromVert, whiteTimerWidget); i++; + XtSetArg(args[i], XtNresizable, (XtArgVal) True); i++; + XtSetValues(messageWidget, args, i); + if (appData.showButtonBar) { + i = 0; + XtSetArg(args[i], XtNfromVert, whiteTimerWidget); i++; + XtSetArg(args[i], XtNfromHoriz, messageWidget); i++; + XtSetValues(buttonBarWidget, args, i); + } + } + i = 0; + XtSetArg(args[0], XtNfromVert, messageWidget); + XtSetValues(boardWidget, args, 1); + + XtRealizeWidget(shellWidget); + + /* + * Correct the width of the message and title widgets. + * It is not known why some systems need the extra fudge term. + * The value "2" is probably larger than needed. + */ + XawFormDoLayout(formWidget, False); +#define WIDTH_FUDGE 2 + i = 0; + XtSetArg(args[i], XtNborderWidth, &bor); i++; + XtSetArg(args[i], XtNheight, &h); i++; + XtGetValues(messageWidget, args, i); + if (appData.showButtonBar) { + i = 0; + XtSetArg(args[i], XtNwidth, &w); i++; + XtGetValues(buttonBarWidget, args, i); + w = boardWidth - w - sep - 2*bor - WIDTH_FUDGE; + } else { + w = boardWidth - 2*bor + 1; /*!! +1 compensates for kludge below */ + } + + gres = XtMakeResizeRequest(messageWidget, w, h, &wr, &hr); + if (gres != XtGeometryYes && appData.debugMode) { + fprintf(stderr, "%s: messageWidget geometry error %d %d %d %d %d\n", + programName, gres, w, h, wr, hr); + } + + /* !! Horrible hack to work around bug in XFree86 4.0.1 (X11R6.4.3) */ + /* The size used for the child widget in layout lags one resize behind + its true size, so we resize a second time, 1 pixel smaller. Yeech! */ + w--; + gres = XtMakeResizeRequest(messageWidget, w, h, &wr, &hr); + if (gres != XtGeometryYes && appData.debugMode) { + fprintf(stderr, "%s: messageWidget geometry error %d %d %d %d %d\n", + programName, gres, w, h, wr, hr); + } + /* !! end hack */ + + if (appData.titleInWindow) { + i = 0; + XtSetArg(args[i], XtNborderWidth, &bor); i++; + XtSetArg(args[i], XtNheight, &h); i++; + XtGetValues(titleWidget, args, i); + if (smallLayout) { + w = boardWidth - 2*bor; + } else { + XtSetArg(args[0], XtNwidth, &w); + XtGetValues(menuBarWidget, args, 1); + w = boardWidth - w - sep - 2*bor - WIDTH_FUDGE; + } + + gres = XtMakeResizeRequest(titleWidget, w, h, &wr, &hr); + if (gres != XtGeometryYes && appData.debugMode) { + fprintf(stderr, + "%s: titleWidget geometry error %d %d %d %d %d\n", + programName, gres, w, h, wr, hr); + } + } + XawFormDoLayout(formWidget, True); + + xBoardWindow = XtWindow(boardWidget); + + // [HGM] it seems the layout code ends here, but perhaps the color stuff is size independent and would + // not need to go into InitDrawingSizes(). +#endif + + /* + * Create X checkmark bitmap and initialize option menu checks. + */ + ReadBitmap(&xMarkPixmap, "checkmark.bm", + checkmark_bits, checkmark_width, checkmark_height); + XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); + if (appData.alwaysPromoteToQueen) { + XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Always Queen"), + args, 1); + } + if (appData.animateDragging) { + XtSetValues(XtNameToWidget(menuBarWidget, + "menuOptions.Animate Dragging"), + args, 1); + } + if (appData.animate) { + XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Animate Moving"), + args, 1); + } + if (appData.autoComment) { + XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Auto Comment"), + args, 1); + } + if (appData.autoCallFlag) { + XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Auto Flag"), + args, 1); + } + if (appData.autoFlipView) { + XtSetValues(XtNameToWidget(menuBarWidget,"menuOptions.Auto Flip View"), + args, 1); + } + if (appData.autoObserve) { + XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Auto Observe"), + args, 1); + } + if (appData.autoRaiseBoard) { + XtSetValues(XtNameToWidget(menuBarWidget, + "menuOptions.Auto Raise Board"), args, 1); + } + if (appData.autoSaveGames) { + XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Auto Save"), + args, 1); + } + if (appData.saveGameFile[0] != NULLCHAR) { + /* Can't turn this off from menu */ + XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Auto Save"), + args, 1); + XtSetSensitive(XtNameToWidget(menuBarWidget, "menuOptions.Auto Save"), + False); + + } + if (appData.blindfold) { + XtSetValues(XtNameToWidget(menuBarWidget, + "menuOptions.Blindfold"), args, 1); + } + if (appData.flashCount > 0) { + XtSetValues(XtNameToWidget(menuBarWidget, + "menuOptions.Flash Moves"), + args, 1); + } + if (appData.getMoveList) { + XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Get Move List"), + args, 1); + } +#if HIGHDRAG + if (appData.highlightDragging) { + XtSetValues(XtNameToWidget(menuBarWidget, + "menuOptions.Highlight Dragging"), + args, 1); + } +#endif + if (appData.highlightLastMove) { + XtSetValues(XtNameToWidget(menuBarWidget, + "menuOptions.Highlight Last Move"), + args, 1); + } + if (appData.icsAlarm) { + XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.ICS Alarm"), + args, 1); + } + if (appData.ringBellAfterMoves) { + XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Move Sound"), + args, 1); + } + if (appData.oldSaveStyle) { + XtSetValues(XtNameToWidget(menuBarWidget, + "menuOptions.Old Save Style"), args, 1); + } + if (appData.periodicUpdates) { + XtSetValues(XtNameToWidget(menuBarWidget, + "menuOptions.Periodic Updates"), args, 1); + } + if (appData.ponderNextMove) { + XtSetValues(XtNameToWidget(menuBarWidget, + "menuOptions.Ponder Next Move"), args, 1); + } + if (appData.popupExitMessage) { + XtSetValues(XtNameToWidget(menuBarWidget, + "menuOptions.Popup Exit Message"), args, 1); + } + if (appData.popupMoveErrors) { + XtSetValues(XtNameToWidget(menuBarWidget, + "menuOptions.Popup Move Errors"), args, 1); + } + if (appData.premove) { + XtSetValues(XtNameToWidget(menuBarWidget, + "menuOptions.Premove"), args, 1); + } + if (appData.quietPlay) { + XtSetValues(XtNameToWidget(menuBarWidget, + "menuOptions.Quiet Play"), args, 1); + } + if (appData.showCoords) { + XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Show Coords"), + args, 1); + } + if (appData.showThinking) { + XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Show Thinking"), + args, 1); + } + if (appData.testLegality) { + XtSetValues(XtNameToWidget(menuBarWidget,"menuOptions.Test Legality"), + args, 1); + } + + /* + * Create an icon. + */ + ReadBitmap(&wIconPixmap, "icon_white.bm", + icon_white_bits, icon_white_width, icon_white_height); + ReadBitmap(&bIconPixmap, "icon_black.bm", + icon_black_bits, icon_black_width, icon_black_height); + iconPixmap = wIconPixmap; + i = 0; + XtSetArg(args[i], XtNiconPixmap, iconPixmap); i++; + XtSetValues(shellWidget, args, i); + + /* + * Create a cursor for the board widget. + */ + window_attributes.cursor = XCreateFontCursor(xDisplay, XC_hand2); + XChangeWindowAttributes(xDisplay, xBoardWindow, + CWCursor, &window_attributes); + + /* + * Inhibit shell resizing. + */ + shellArgs[0].value = (XtArgVal) &w; + shellArgs[1].value = (XtArgVal) &h; + XtGetValues(shellWidget, shellArgs, 2); + shellArgs[4].value = shellArgs[2].value = w; + shellArgs[5].value = shellArgs[3].value = h; + XtSetValues(shellWidget, &shellArgs[2], 4); + + CatchDeleteWindow(shellWidget, "QuitProc"); + + CreateGCs(); + CreateGrid(); +#if HAVE_LIBXPM + if (appData.bitmapDirectory[0] != NULLCHAR) { + CreatePieces(); + } else { + CreateXPMPieces(); + } +#else + CreateXIMPieces(); + /* Create regular pieces */ + if (!useImages) CreatePieces(); +#endif + + CreatePieceMenus(); + + if (appData.animate || appData.animateDragging) + CreateAnimVars(); + + XtAugmentTranslations(formWidget, + XtParseTranslationTable(globalTranslations)); + XtAugmentTranslations(boardWidget, + XtParseTranslationTable(boardTranslations)); + XtAugmentTranslations(whiteTimerWidget, + XtParseTranslationTable(whiteTranslations)); + XtAugmentTranslations(blackTimerWidget, + XtParseTranslationTable(blackTranslations)); + + /* Why is the following needed on some versions of X instead + * of a translation? */ + XtAddEventHandler(boardWidget, ExposureMask, False, + (XtEventHandler) EventProc, NULL); + /* end why */ + + InitBackEnd2(); + + if (errorExitStatus == -1) { + if (appData.icsActive) { + /* We now wait until we see "login:" from the ICS before + sending the logon script (problems with timestamp otherwise) */ + /*ICSInitScript();*/ + if (appData.icsInputBox) ICSInputBoxPopUp(); + } + + signal(SIGINT, IntSigHandler); + signal(SIGTERM, IntSigHandler); + if (*appData.cmailGameName != NULLCHAR) { + signal(SIGUSR1, CmailSigHandler); + } + } + InitPosition(TRUE); + + XtAppMainLoop(appContext); + return 0; +} + +void +ShutDownFrontEnd() +{ + if (appData.icsActive && oldICSInteractionTitle != NULL) { + DisplayIcsInteractionTitle(oldICSInteractionTitle); + } + unlink(gameCopyFilename); + unlink(gamePasteFilename); +} + +RETSIGTYPE +IntSigHandler(sig) + int sig; +{ + ExitEvent(sig); +} + +RETSIGTYPE +CmailSigHandler(sig) + int sig; +{ + int dummy = 0; + int error; + + signal(SIGUSR1, SIG_IGN); /* suspend handler */ + + /* Activate call-back function CmailSigHandlerCallBack() */ + OutputToProcess(cmailPR, (char *)(&dummy), sizeof(int), &error); + + signal(SIGUSR1, CmailSigHandler); /* re-activate handler */ +} + +void +CmailSigHandlerCallBack(isr, closure, message, count, error) + InputSourceRef isr; + VOIDSTAR closure; + char *message; + int count; + int error; +{ + BoardToTop(); + ReloadCmailMsgEvent(TRUE); /* Reload cmail msg */ +} +/**** end signal code ****/ + + +void +ICSInitScript() +{ + FILE *f; + char buf[MSG_SIZ]; + char *p; + + f = fopen(appData.icsLogon, "r"); + if (f == NULL) { + p = getenv("HOME"); + if (p != NULL) { + strcpy(buf, p); + strcat(buf, "/"); + strcat(buf, appData.icsLogon); + f = fopen(buf, "r"); + } + } + if (f != NULL) + ProcessICSInitScript(f); +} + +void +ResetFrontEnd() +{ + CommentPopDown(); + EditCommentPopDown(); + TagsPopDown(); + return; +} + +typedef struct { + char *name; + Boolean value; +} Enables; + +void +SetMenuEnables(enab) + Enables *enab; +{ + Widget w; + if (!menuBarWidget) return; + while (enab->name != NULL) { + w = XtNameToWidget(menuBarWidget, enab->name); + if (w == NULL) { + DisplayError(enab->name, 0); + } else { + XtSetSensitive(w, enab->value); + } + enab++; + } +} + +Enables icsEnables[] = { + { "menuFile.Mail Move", False }, + { "menuFile.Reload CMail Message", False }, + { "menuMode.Machine Black", False }, + { "menuMode.Machine White", False }, + { "menuMode.Analysis Mode", False }, + { "menuMode.Analyze File", False }, + { "menuMode.Two Machines", False }, +#ifndef ZIPPY + { "menuHelp.Hint", False }, + { "menuHelp.Book", False }, + { "menuStep.Move Now", False }, + { "menuOptions.Periodic Updates", False }, + { "menuOptions.Show Thinking", False }, + { "menuOptions.Ponder Next Move", False }, +#endif + { NULL, False } +}; + +Enables ncpEnables[] = { + { "menuFile.Mail Move", False }, + { "menuFile.Reload CMail Message", False }, + { "menuMode.Machine White", False }, + { "menuMode.Machine Black", False }, + { "menuMode.Analysis Mode", False }, + { "menuMode.Analyze File", False }, + { "menuMode.Two Machines", False }, + { "menuMode.ICS Client", False }, + { "menuMode.ICS Input Box", False }, + { "Action", False }, + { "menuStep.Revert", False }, + { "menuStep.Move Now", False }, + { "menuStep.Retract Move", False }, + { "menuOptions.Auto Comment", False }, + { "menuOptions.Auto Flag", False }, + { "menuOptions.Auto Flip View", False }, + { "menuOptions.Auto Observe", False }, + { "menuOptions.Auto Raise Board", False }, + { "menuOptions.Get Move List", False }, + { "menuOptions.ICS Alarm", False }, + { "menuOptions.Move Sound", False }, + { "menuOptions.Quiet Play", False }, + { "menuOptions.Show Thinking", False }, + { "menuOptions.Periodic Updates", False }, + { "menuOptions.Ponder Next Move", False }, + { "menuHelp.Hint", False }, + { "menuHelp.Book", False }, + { NULL, False } +}; + +Enables gnuEnables[] = { + { "menuMode.ICS Client", False }, + { "menuMode.ICS Input Box", False }, + { "menuAction.Accept", False }, + { "menuAction.Decline", False }, + { "menuAction.Rematch", False }, + { "menuAction.Adjourn", False }, + { "menuAction.Stop Examining", False }, + { "menuAction.Stop Observing", False }, + { "menuStep.Revert", False }, + { "menuOptions.Auto Comment", False }, + { "menuOptions.Auto Observe", False }, + { "menuOptions.Auto Raise Board", False }, + { "menuOptions.Get Move List", False }, + { "menuOptions.Premove", False }, + { "menuOptions.Quiet Play", False }, + + /* The next two options rely on SetCmailMode being called *after* */ + /* SetGNUMode so that when GNU is being used to give hints these */ + /* menu options are still available */ + + { "menuFile.Mail Move", False }, + { "menuFile.Reload CMail Message", False }, + { NULL, False } +}; + +Enables cmailEnables[] = { + { "Action", True }, + { "menuAction.Call Flag", False }, + { "menuAction.Draw", True }, + { "menuAction.Adjourn", False }, + { "menuAction.Abort", False }, + { "menuAction.Stop Observing", False }, + { "menuAction.Stop Examining", False }, + { "menuFile.Mail Move", True }, + { "menuFile.Reload CMail Message", True }, + { NULL, False } +}; + +Enables trainingOnEnables[] = { + { "menuMode.Edit Comment", False }, + { "menuMode.Pause", False }, + { "menuStep.Forward", False }, + { "menuStep.Backward", False }, + { "menuStep.Forward to End", False }, + { "menuStep.Back to Start", False }, + { "menuStep.Move Now", False }, + { "menuStep.Truncate Game", False }, + { NULL, False } +}; + +Enables trainingOffEnables[] = { + { "menuMode.Edit Comment", True }, + { "menuMode.Pause", True }, + { "menuStep.Forward", True }, + { "menuStep.Backward", True }, + { "menuStep.Forward to End", True }, + { "menuStep.Back to Start", True }, + { "menuStep.Move Now", True }, + { "menuStep.Truncate Game", True }, + { NULL, False } +}; + +Enables machineThinkingEnables[] = { + { "menuFile.Load Game", False }, + { "menuFile.Load Next Game", False }, + { "menuFile.Load Previous Game", False }, + { "menuFile.Reload Same Game", False }, + { "menuFile.Paste Game", False }, + { "menuFile.Load Position", False }, + { "menuFile.Load Next Position", False }, + { "menuFile.Load Previous Position", False }, + { "menuFile.Reload Same Position", False }, + { "menuFile.Paste Position", False }, + { "menuMode.Machine White", False }, + { "menuMode.Machine Black", False }, + { "menuMode.Two Machines", False }, + { "menuStep.Retract Move", False }, + { NULL, False } +}; + +Enables userThinkingEnables[] = { + { "menuFile.Load Game", True }, + { "menuFile.Load Next Game", True }, + { "menuFile.Load Previous Game", True }, + { "menuFile.Reload Same Game", True }, + { "menuFile.Paste Game", True }, + { "menuFile.Load Position", True }, + { "menuFile.Load Next Position", True }, + { "menuFile.Load Previous Position", True }, + { "menuFile.Reload Same Position", True }, + { "menuFile.Paste Position", True }, + { "menuMode.Machine White", True }, + { "menuMode.Machine Black", True }, + { "menuMode.Two Machines", True }, + { "menuStep.Retract Move", True }, + { NULL, False } +}; + +void SetICSMode() +{ + SetMenuEnables(icsEnables); +} + +void +SetNCPMode() +{ + SetMenuEnables(ncpEnables); +} + +void +SetGNUMode() +{ + SetMenuEnables(gnuEnables); +} + +void +SetCmailMode() +{ + SetMenuEnables(cmailEnables); +} + +void +SetTrainingModeOn() +{ + SetMenuEnables(trainingOnEnables); + if (appData.showButtonBar) { + XtSetSensitive(buttonBarWidget, False); + } + CommentPopDown(); +} + +void +SetTrainingModeOff() +{ + SetMenuEnables(trainingOffEnables); + if (appData.showButtonBar) { + XtSetSensitive(buttonBarWidget, True); + } +} + +void +SetUserThinkingEnables() +{ + if (appData.noChessProgram) return; + SetMenuEnables(userThinkingEnables); +} + +void +SetMachineThinkingEnables() +{ + if (appData.noChessProgram) return; + SetMenuEnables(machineThinkingEnables); + switch (gameMode) { + case MachinePlaysBlack: + case MachinePlaysWhite: + case TwoMachinesPlay: + XtSetSensitive(XtNameToWidget(menuBarWidget, + ModeToWidgetName(gameMode)), True); + break; + default: + break; + } +} + +#define Abs(n) ((n)<0 ? -(n) : (n)) + +/* + * Find a font that matches "pattern" that is as close as + * possible to the targetPxlSize. Prefer fonts that are k + * pixels smaller to fonts that are k pixels larger. The + * pattern must be in the X Consortium standard format, + * e.g. "-*-helvetica-bold-r-normal--*-*-*-*-*-*-*-*". + * The return value should be freed with XtFree when no + * longer needed. + */ +char *FindFont(pattern, targetPxlSize) + char *pattern; + int targetPxlSize; +{ + char **fonts, *p, *best, *scalable, *scalableTail; + int i, j, nfonts, minerr, err, pxlSize; + + fonts = XListFonts(xDisplay, pattern, 999999, &nfonts); + if (nfonts < 1) { + fprintf(stderr, "%s: no fonts match pattern %s\n", + programName, pattern); + exit(2); + } + best = fonts[0]; + scalable = NULL; + minerr = 999999; + for (i=0; i 0 && err < 0 && -err == minerr)) { + best = fonts[i]; + minerr = err; + } + } + } + if (scalable && Abs(minerr) > appData.fontSizeTolerance) { + /* If the error is too big and there is a scalable font, + use the scalable font. */ + int headlen = scalableTail - scalable; + p = (char *) XtMalloc(strlen(scalable) + 10); + while (isdigit(*scalableTail)) scalableTail++; + sprintf(p, "%.*s%d%s", headlen, scalable, targetPxlSize, scalableTail); + } else { + p = (char *) XtMalloc(strlen(best) + 1); + strcpy(p, best); + } + if (appData.debugMode) { + fprintf(debugFP, "resolved %s at pixel size %d\n to %s\n", + pattern, targetPxlSize, p); + } + XFreeFontNames(fonts); + return p; +} + +void CreateGCs() +{ + XtGCMask value_mask = GCLineWidth | GCLineStyle | GCForeground + | GCBackground | GCFunction | GCPlaneMask; + XGCValues gc_values; + GC copyInvertedGC; + + gc_values.plane_mask = AllPlanes; + gc_values.line_width = lineGap; + gc_values.line_style = LineSolid; + gc_values.function = GXcopy; + + gc_values.foreground = XBlackPixel(xDisplay, xScreen); + gc_values.background = XBlackPixel(xDisplay, xScreen); + lineGC = XtGetGC(shellWidget, value_mask, &gc_values); + + gc_values.foreground = XBlackPixel(xDisplay, xScreen); + gc_values.background = XWhitePixel(xDisplay, xScreen); + coordGC = XtGetGC(shellWidget, value_mask, &gc_values); + XSetFont(xDisplay, coordGC, coordFontID); + + if (appData.monoMode) { + gc_values.foreground = XWhitePixel(xDisplay, xScreen); + gc_values.background = XWhitePixel(xDisplay, xScreen); + highlineGC = XtGetGC(shellWidget, value_mask, &gc_values); + + gc_values.foreground = XWhitePixel(xDisplay, xScreen); + gc_values.background = XBlackPixel(xDisplay, xScreen); + lightSquareGC = wbPieceGC + = XtGetGC(shellWidget, value_mask, &gc_values); + + gc_values.foreground = XBlackPixel(xDisplay, xScreen); + gc_values.background = XWhitePixel(xDisplay, xScreen); + darkSquareGC = bwPieceGC + = XtGetGC(shellWidget, value_mask, &gc_values); + + if (DefaultDepth(xDisplay, xScreen) == 1) { + /* Avoid XCopyPlane on 1-bit screens to work around Sun bug */ + gc_values.function = GXcopyInverted; + copyInvertedGC = XtGetGC(shellWidget, value_mask, &gc_values); + gc_values.function = GXcopy; + if (XBlackPixel(xDisplay, xScreen) == 1) { + bwPieceGC = darkSquareGC; + wbPieceGC = copyInvertedGC; + } else { + bwPieceGC = copyInvertedGC; + wbPieceGC = lightSquareGC; + } + } + } else { + gc_values.foreground = highlightSquareColor; + gc_values.background = highlightSquareColor; + highlineGC = XtGetGC(shellWidget, value_mask, &gc_values); + + gc_values.foreground = premoveHighlightColor; + gc_values.background = premoveHighlightColor; + prelineGC = XtGetGC(shellWidget, value_mask, &gc_values); + + gc_values.foreground = lightSquareColor; + gc_values.background = darkSquareColor; + lightSquareGC = XtGetGC(shellWidget, value_mask, &gc_values); + + gc_values.foreground = darkSquareColor; + gc_values.background = lightSquareColor; + darkSquareGC = XtGetGC(shellWidget, value_mask, &gc_values); + + gc_values.foreground = jailSquareColor; + gc_values.background = jailSquareColor; + jailSquareGC = XtGetGC(shellWidget, value_mask, &gc_values); + + gc_values.foreground = whitePieceColor; + gc_values.background = darkSquareColor; + wdPieceGC = XtGetGC(shellWidget, value_mask, &gc_values); + + gc_values.foreground = whitePieceColor; + gc_values.background = lightSquareColor; + wlPieceGC = XtGetGC(shellWidget, value_mask, &gc_values); + + gc_values.foreground = whitePieceColor; + gc_values.background = jailSquareColor; + wjPieceGC = XtGetGC(shellWidget, value_mask, &gc_values); + + gc_values.foreground = blackPieceColor; + gc_values.background = darkSquareColor; + bdPieceGC = XtGetGC(shellWidget, value_mask, &gc_values); + + gc_values.foreground = blackPieceColor; + gc_values.background = lightSquareColor; + blPieceGC = XtGetGC(shellWidget, value_mask, &gc_values); + + gc_values.foreground = blackPieceColor; + gc_values.background = jailSquareColor; + bjPieceGC = XtGetGC(shellWidget, value_mask, &gc_values); + } +} + +void loadXIM(xim, xmask, filename, dest, mask) + XImage *xim; + XImage *xmask; + char *filename; + Pixmap *dest; + Pixmap *mask; +{ + int x, y, w, h, p; + FILE *fp; + Pixmap temp; + XGCValues values; + GC maskGC; + + fp = fopen(filename, "rb"); + if (!fp) { + fprintf(stderr, "%s: error loading XIM!\n", programName); + exit(1); + } + + w = fgetc(fp); + h = fgetc(fp); + + for (y=0; ydepth); + XPutImage(xDisplay, *dest, lightSquareGC, xim, + 0, 0, 0, 0, w, h); + + /* create Pixmap of clipmask + Note: We assume the white/black pieces have the same + outline, so we make only 6 masks. This is okay + since the XPM clipmask routines do the same. */ + if (xmask) { + temp = XCreatePixmap(xDisplay, DefaultRootWindow(xDisplay), + w, h, xim->depth); + XPutImage(xDisplay, temp, lightSquareGC, xmask, + 0, 0, 0, 0, w, h); + + /* now create the 1-bit version */ + *mask = XCreatePixmap(xDisplay, DefaultRootWindow(xDisplay), + w, h, 1); + + values.foreground = 1; + values.background = 0; + + /* Don't use XtGetGC, not read only */ + maskGC = XCreateGC(xDisplay, *mask, + GCForeground | GCBackground, &values); + XCopyPlane(xDisplay, temp, *mask, maskGC, + 0, 0, squareSize, squareSize, 0, 0, 1); + XFreePixmap(xDisplay, temp); + } +} + +void CreateXIMPieces() +{ + int piece, kind; + char buf[MSG_SIZ]; + u_int ss; + static char *ximkind[] = { "ll", "ld", "dl", "dd" }; + XImage *ximtemp; + + ss = squareSize; + + /* 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 */ + + /* temp needed by loadXIM() */ + ximtemp = XGetImage(xDisplay, DefaultRootWindow(xDisplay), + 0, 0, ss, ss, AllPlanes, XYPixmap); + + if (strlen(appData.pixmapDirectory) == 0) { + useImages = 0; + } else { + useImages = 1; + if (appData.monoMode) { + DisplayFatalError("XIM pieces cannot be used in monochrome mode", + 0, 2); + ExitEvent(2); + } + fprintf(stderr, "\nLoading XIMs...\n"); + /* Load pieces */ + for (piece = (int) WhitePawn; piece <= (int) WhiteKing; piece++) { + fprintf(stderr, "%d", piece+1); + for (kind=0; kind<4; kind++) { + fprintf(stderr, "."); + sprintf(buf, "%s/%c%s%u.xim", + ExpandPathName(appData.pixmapDirectory), + ToLower(PieceToChar((ChessSquare)piece)), + ximkind[kind], ss); + ximPieceBitmap[kind][piece] = + XGetImage(xDisplay, DefaultRootWindow(xDisplay), + 0, 0, ss, ss, AllPlanes, XYPixmap); + if (appData.debugMode) + fprintf(stderr, "(File:%s:) ", buf); + loadXIM(ximPieceBitmap[kind][piece], + ximtemp, buf, + &(xpmPieceBitmap[kind][piece]), + &(ximMaskPm[piece%(int)BlackPawn])); + } + fprintf(stderr," "); + } + /* Load light and dark squares */ + /* If the LSQ and DSQ pieces don't exist, we will + draw them with solid squares. */ + sprintf(buf, "%s/lsq%u.xim", ExpandPathName(appData.pixmapDirectory), ss); + if (access(buf, 0) != 0) { + useImageSqs = 0; + } else { + useImageSqs = 1; + fprintf(stderr, "light square "); + ximLightSquare= + XGetImage(xDisplay, DefaultRootWindow(xDisplay), + 0, 0, ss, ss, AllPlanes, XYPixmap); + if (appData.debugMode) + fprintf(stderr, "(File:%s:) ", buf); + + loadXIM(ximLightSquare, NULL, buf, &xpmLightSquare, NULL); + fprintf(stderr, "dark square "); + sprintf(buf, "%s/dsq%u.xim", + ExpandPathName(appData.pixmapDirectory), ss); + if (appData.debugMode) + fprintf(stderr, "(File:%s:) ", buf); + ximDarkSquare= + XGetImage(xDisplay, DefaultRootWindow(xDisplay), + 0, 0, ss, ss, AllPlanes, XYPixmap); + loadXIM(ximDarkSquare, NULL, buf, &xpmDarkSquare, NULL); + xpmJailSquare = xpmLightSquare; + } + fprintf(stderr, "Done.\n"); + } + XSynchronize(xDisplay, False); /* Work-around for xlib/xt buffering bug */ +} + +#if HAVE_LIBXPM +void CreateXPMPieces() +{ + int piece, kind, r; + char buf[MSG_SIZ]; + u_int ss = squareSize; + XpmAttributes attr; + 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 */ + + /* Setup translations so piece colors match square colors */ + symbols[0].name = "light_piece"; + symbols[0].value = appData.whitePieceColor; + symbols[1].name = "dark_piece"; + symbols[1].value = appData.blackPieceColor; + symbols[2].name = "light_square"; + symbols[2].value = appData.lightSquareColor; + symbols[3].name = "dark_square"; + symbols[3].value = appData.darkSquareColor; + + attr.valuemask = XpmColorSymbols; + attr.colorsymbols = symbols; + attr.numsymbols = 4; + + if (appData.monoMode) { + DisplayFatalError("XPM pieces cannot be used in monochrome mode", + 0, 2); + ExitEvent(2); + } + if (strlen(appData.pixmapDirectory) == 0) { + XpmPieces* pieces = builtInXpms; + useImages = 1; + /* Load pieces */ + while (pieces->size != squareSize && pieces->size) pieces++; + if (!pieces->size) { + fprintf(stderr, "No builtin XPM pieces of size %d\n", squareSize); + exit(1); + } + for (piece = (int) WhitePawn; piece <= (int) WhiteKing; piece++) { + for (kind=0; kind<4; kind++) { + + if ((r=XpmCreatePixmapFromData(xDisplay, xBoardWindow, + pieces->xpm[piece][kind], + &(xpmPieceBitmap[kind][piece]), + NULL, &attr)) != 0) { + fprintf(stderr, "Error %d loading XPM image \"%s\"\n", + r, buf); + exit(1); + } + } + } + useImageSqs = 0; + xpmJailSquare = xpmLightSquare; + } else { + useImages = 1; + + fprintf(stderr, "\nLoading XPMs...\n"); + + /* Load pieces */ + for (piece = (int) WhitePawn; piece <= (int) WhiteKing; piece++) { + fprintf(stderr, "%d ", piece+1); + for (kind=0; kind<4; kind++) { + sprintf(buf, "%s/%c%s%u.xpm", + ExpandPathName(appData.pixmapDirectory), + ToLower(PieceToChar((ChessSquare)piece)), + xpmkind[kind], ss); + if (appData.debugMode) { + fprintf(stderr, "(File:%s:) ", buf); + } + if ((r=XpmReadFileToPixmap(xDisplay, xBoardWindow, buf, + &(xpmPieceBitmap[kind][piece]), + NULL, &attr)) != 0) { + fprintf(stderr, "Error %d loading XPM file \"%s\"\n", + r, buf); + exit(1); + } + } + } + /* Load light and dark squares */ + /* If the LSQ and DSQ pieces don't exist, we will + draw them with solid squares. */ + fprintf(stderr, "light square "); + sprintf(buf, "%s/lsq%u.xpm", ExpandPathName(appData.pixmapDirectory), ss); + if (access(buf, 0) != 0) { + useImageSqs = 0; + } else { + useImageSqs = 1; + if (appData.debugMode) + fprintf(stderr, "(File:%s:) ", buf); + + if ((r=XpmReadFileToPixmap(xDisplay, xBoardWindow, buf, + &xpmLightSquare, NULL, &attr)) != 0) { + fprintf(stderr, "Error %d loading XPM file \"%s\"\n", r, buf); + exit(1); + } + fprintf(stderr, "dark square "); + sprintf(buf, "%s/dsq%u.xpm", + ExpandPathName(appData.pixmapDirectory), ss); + if (appData.debugMode) { + fprintf(stderr, "(File:%s:) ", buf); + } + if ((r=XpmReadFileToPixmap(xDisplay, xBoardWindow, buf, + &xpmDarkSquare, NULL, &attr)) != 0) { + fprintf(stderr, "Error %d loading XPM file \"%s\"\n", r, buf); + exit(1); + } + } + xpmJailSquare = xpmLightSquare; + fprintf(stderr, "Done.\n"); + } + XSynchronize(xDisplay, False); /* Work-around for xlib/xt + buffering bug */ +} +#endif /* HAVE_LIBXPM */ + +#if HAVE_LIBXPM +/* No built-in bitmaps */ +void CreatePieces() +{ + int piece, kind; + char buf[MSG_SIZ]; + u_int ss = squareSize; + + XSynchronize(xDisplay, True); /* Work-around for xlib/xt + buffering bug */ + + for (kind = SOLID; kind <= (appData.monoMode ? OUTLINE : SOLID); kind++) { + for (piece = (int) WhitePawn; piece <= (int) WhiteKing; piece++) { + sprintf(buf, "%c%u%c.bm", ToLower(PieceToChar((ChessSquare)piece)), + ss, kind == SOLID ? 's' : 'o'); + ReadBitmap(&pieceBitmap[kind][piece], buf, NULL, ss, ss); + } + } + + XSynchronize(xDisplay, False); /* Work-around for xlib/xt + buffering bug */ +} +#else +/* With built-in bitmaps */ +void CreatePieces() +{ + BuiltInBits* bib = builtInBits; + int piece, kind; + char buf[MSG_SIZ]; + u_int ss = squareSize; + + XSynchronize(xDisplay, True); /* Work-around for xlib/xt + buffering bug */ + + while (bib->squareSize != ss && bib->squareSize != 0) bib++; + + for (kind = SOLID; kind <= (appData.monoMode ? OUTLINE : SOLID); kind++) { + for (piece = (int) WhitePawn; piece <= (int) WhiteKing; piece++) { + sprintf(buf, "%c%u%c.bm", ToLower(PieceToChar((ChessSquare)piece)), + ss, kind == SOLID ? 's' : 'o'); + ReadBitmap(&pieceBitmap[kind][piece], buf, + bib->bits[kind][piece], ss, ss); + } + } + + XSynchronize(xDisplay, False); /* Work-around for xlib/xt + buffering bug */ +} +#endif + +void ReadBitmap(pm, name, bits, wreq, hreq) + Pixmap *pm; + String name; + unsigned char bits[]; + u_int wreq, hreq; +{ + int x_hot, y_hot; + u_int w, h; + int errcode; + char msg[MSG_SIZ], fullname[MSG_SIZ]; + + if (*appData.bitmapDirectory != NULLCHAR) { + strcpy(fullname, appData.bitmapDirectory); + strcat(fullname, "/"); + strcat(fullname, name); + errcode = XReadBitmapFile(xDisplay, xBoardWindow, fullname, + &w, &h, pm, &x_hot, &y_hot); + if (errcode != BitmapSuccess) { + switch (errcode) { + case BitmapOpenFailed: + sprintf(msg, "Can't open bitmap file %s", fullname); + break; + case BitmapFileInvalid: + sprintf(msg, "Invalid bitmap in file %s", fullname); + break; + case BitmapNoMemory: + sprintf(msg, "Ran out of memory reading bitmap file %s", + fullname); + break; + default: + sprintf(msg, "Unknown XReadBitmapFile error %d on file %s", + errcode, fullname); + break; + } + fprintf(stderr, "%s: %s...using built-in\n", + programName, msg); + } else if (w != wreq || h != hreq) { + fprintf(stderr, + "%s: Bitmap %s is %dx%d, not %dx%d...using built-in\n", + programName, fullname, w, h, wreq, hreq); + } else { + 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 { + *pm = XCreateBitmapFromData(xDisplay, xBoardWindow, (char *) bits, + wreq, hreq); + } +} + +void CreateGrid() +{ + int i, j; + + if (lineGap == 0) return; + + /* [HR] Split this into 2 loops for non-square boards. */ + + for (i = 0; i < BOARD_HEIGHT + 1; i++) { + gridSegments[i].x1 = 0; + gridSegments[i].x2 = + lineGap + BOARD_WIDTH * (squareSize + lineGap); + gridSegments[i].y1 = gridSegments[i].y2 + = lineGap / 2 + (i * (squareSize + lineGap)); + } + + for (j = 0; j < BOARD_WIDTH + 1; j++) { + gridSegments[j + i].y1 = 0; + gridSegments[j + i].y2 = + lineGap + BOARD_HEIGHT * (squareSize + lineGap); + gridSegments[j + i].x1 = gridSegments[j + i].x2 + = lineGap / 2 + (j * (squareSize + lineGap)); + } +} + +static void MenuBarSelect(w, addr, index) + Widget w; + caddr_t addr; + caddr_t index; +{ + XtActionProc proc = (XtActionProc) addr; + + (proc)(NULL, NULL, NULL, NULL); +} + +void CreateMenuBarPopup(parent, name, mb) + Widget parent; + String name; + Menu *mb; +{ + int j; + Widget menu, entry; + MenuItem *mi; + Arg args[16]; + + menu = XtCreatePopupShell(name, simpleMenuWidgetClass, + parent, NULL, 0); + j = 0; + XtSetArg(args[j], XtNleftMargin, 20); j++; + XtSetArg(args[j], XtNrightMargin, 20); j++; + mi = mb->mi; + while (mi->string != NULL) { + if (strcmp(mi->string, "----") == 0) { + entry = XtCreateManagedWidget(mi->string, smeLineObjectClass, + menu, args, j); + } else { + entry = XtCreateManagedWidget(mi->string, smeBSBObjectClass, + menu, args, j); + XtAddCallback(entry, XtNcallback, + (XtCallbackProc) MenuBarSelect, + (caddr_t) mi->proc); + } + mi++; + } +} + +Widget CreateMenuBar(mb) + Menu *mb; +{ + int j; + Widget anchor, menuBar; + Arg args[16]; + char menuName[MSG_SIZ]; + + j = 0; + XtSetArg(args[j], XtNorientation, XtorientHorizontal); j++; + XtSetArg(args[j], XtNvSpace, 0); j++; + XtSetArg(args[j], XtNborderWidth, 0); j++; + menuBar = XtCreateWidget("menuBar", boxWidgetClass, + formWidget, args, j); + + while (mb->name != NULL) { + strcpy(menuName, "menu"); + strcat(menuName, mb->name); + j = 0; + XtSetArg(args[j], XtNmenuName, XtNewString(menuName)); j++; + if (tinyLayout) { + char shortName[2]; + shortName[0] = mb->name[0]; + shortName[1] = NULLCHAR; + XtSetArg(args[j], XtNlabel, XtNewString(shortName)); j++; + } + XtSetArg(args[j], XtNborderWidth, 0); j++; + anchor = XtCreateManagedWidget(mb->name, menuButtonWidgetClass, + menuBar, args, j); + CreateMenuBarPopup(menuBar, menuName, mb); + mb++; + } + return menuBar; +} + +Widget CreateButtonBar(mi) + MenuItem *mi; +{ + int j; + Widget button, buttonBar; + Arg args[16]; + + j = 0; + XtSetArg(args[j], XtNorientation, XtorientHorizontal); j++; + if (tinyLayout) { + XtSetArg(args[j], XtNhSpace, 0); j++; + } + XtSetArg(args[j], XtNborderWidth, 0); j++; + XtSetArg(args[j], XtNvSpace, 0); j++; + buttonBar = XtCreateWidget("buttonBar", boxWidgetClass, + formWidget, args, j); + + while (mi->string != NULL) { + j = 0; + if (tinyLayout) { + XtSetArg(args[j], XtNinternalWidth, 2); j++; + XtSetArg(args[j], XtNborderWidth, 0); j++; + } + button = XtCreateManagedWidget(mi->string, commandWidgetClass, + buttonBar, args, j); + XtAddCallback(button, XtNcallback, + (XtCallbackProc) MenuBarSelect, + (caddr_t) mi->proc); + mi++; + } + return buttonBar; +} + +Widget +CreatePieceMenu(name, color) + char *name; + int color; +{ + int i; + Widget entry, menu; + Arg args[16]; + ChessSquare selection; + + menu = XtCreatePopupShell(name, simpleMenuWidgetClass, + boardWidget, args, 0); + + for (i = 0; i < PIECE_MENU_SIZE; i++) { + String item = pieceMenuStrings[color][i]; + + if (strcmp(item, "----") == 0) { + entry = XtCreateManagedWidget(item, smeLineObjectClass, + menu, NULL, 0); + } else { + entry = XtCreateManagedWidget(item, smeBSBObjectClass, + menu, NULL, 0); + selection = pieceMenuTranslation[color][i]; + XtAddCallback(entry, XtNcallback, + (XtCallbackProc) PieceMenuSelect, + (caddr_t) selection); + if (selection == WhitePawn || selection == BlackPawn) { + XtSetArg(args[0], XtNpopupOnEntry, entry); + XtSetValues(menu, args, 1); + } + } + } + return menu; +} + +void +CreatePieceMenus() +{ + int i; + Widget entry; + Arg args[16]; + ChessSquare selection; + + whitePieceMenu = CreatePieceMenu("menuW", 0); + blackPieceMenu = CreatePieceMenu("menuB", 1); + + XtRegisterGrabAction(PieceMenuPopup, True, + (unsigned)(ButtonPressMask|ButtonReleaseMask), + GrabModeAsync, GrabModeAsync); + + XtSetArg(args[0], XtNlabel, "Drop"); + dropMenu = XtCreatePopupShell("menuD", simpleMenuWidgetClass, + boardWidget, args, 1); + for (i = 0; i < DROP_MENU_SIZE; i++) { + String item = dropMenuStrings[i]; + + if (strcmp(item, "----") == 0) { + entry = XtCreateManagedWidget(item, smeLineObjectClass, + dropMenu, NULL, 0); + } else { + entry = XtCreateManagedWidget(item, smeBSBObjectClass, + dropMenu, NULL, 0); + selection = dropMenuTranslation[i]; + XtAddCallback(entry, XtNcallback, + (XtCallbackProc) DropMenuSelect, + (caddr_t) selection); + } + } +} + +void SetupDropMenu() +{ + int i, j, count; + char label[32]; + Arg args[16]; + Widget entry; + char* p; + + for (i=0; itype != ButtonPress) return; + if (errorUp) ErrorPopDown(); + switch (gameMode) { + case EditPosition: + case IcsExamining: + whichMenu = params[0]; + break; + case IcsPlayingWhite: + case IcsPlayingBlack: + case EditGame: + case MachinePlaysWhite: + case MachinePlaysBlack: + if (appData.testLegality && + gameInfo.variant != VariantBughouse && + gameInfo.variant != VariantCrazyhouse) return; + SetupDropMenu(); + whichMenu = "menuD"; + break; + default: + return; + } + + if (((pmFromX = EventToSquare(event->xbutton.x, BOARD_WIDTH)) < 0) || + ((pmFromY = EventToSquare(event->xbutton.y, BOARD_HEIGHT)) < 0)) { + pmFromX = pmFromY = -1; + return; + } + if (flipView) + pmFromX = BOARD_WIDTH - 1 - pmFromX; + else + pmFromY = BOARD_HEIGHT - 1 - pmFromY; + + XtPopupSpringLoaded(XtNameToWidget(boardWidget, whichMenu)); +} + +static void PieceMenuSelect(w, piece, junk) + Widget w; + ChessSquare piece; + caddr_t junk; +{ + if (pmFromX < 0 || pmFromY < 0) return; + EditPositionMenuEvent(piece, pmFromX, pmFromY); +} + +static void DropMenuSelect(w, piece, junk) + Widget w; + ChessSquare piece; + caddr_t junk; +{ + if (pmFromX < 0 || pmFromY < 0) return; + DropMenuEvent(piece, pmFromX, pmFromY); +} + +void WhiteClock(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + if (gameMode == EditPosition || gameMode == IcsExamining) { + SetWhiteToPlayEvent(); + } else if (gameMode == IcsPlayingBlack || gameMode == MachinePlaysWhite) { + CallFlagEvent(); + } +} + +void BlackClock(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + if (gameMode == EditPosition || gameMode == IcsExamining) { + SetBlackToPlayEvent(); + } else if (gameMode == IcsPlayingWhite || gameMode == MachinePlaysBlack) { + CallFlagEvent(); + } +} + + +/* + * If the user selects on a border boundary, return -1; if off the board, + * return -2. Otherwise map the event coordinate to the square. + */ +int EventToSquare(x, limit) + 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 >= limit) + return -2; + return x; +} + +static void do_flash_delay(msec) + unsigned long msec; +{ + TimeDelay(msec); +} + +static void drawHighlight(file, rank, gc) + int file, rank; + GC gc; +{ + int x, y; + + if (lineGap == 0 || appData.blindfold) return; + + if (flipView) { + x = lineGap/2 + ((BOARD_WIDTH-1)-file) * + (squareSize + lineGap); + y = lineGap/2 + rank * (squareSize + lineGap); + } else { + x = lineGap/2 + file * (squareSize + lineGap); + y = lineGap/2 + ((BOARD_HEIGHT-1)-rank) * + (squareSize + lineGap); + } + + XDrawRectangle(xDisplay, xBoardWindow, gc, x, y, + squareSize+lineGap, squareSize+lineGap); +} + +int hi1X = -1, hi1Y = -1, hi2X = -1, hi2Y = -1; +int pm1X = -1, pm1Y = -1, pm2X = -1, pm2Y = -1; + +void +SetHighlights(fromX, fromY, toX, toY) + int fromX, fromY, toX, toY; +{ + if (hi1X != fromX || hi1Y != fromY) { + if (hi1X >= 0 && hi1Y >= 0) { + drawHighlight(hi1X, hi1Y, lineGC); + } + if (fromX >= 0 && fromY >= 0) { + drawHighlight(fromX, fromY, highlineGC); + } + } + if (hi2X != toX || hi2Y != toY) { + if (hi2X >= 0 && hi2Y >= 0) { + drawHighlight(hi2X, hi2Y, lineGC); + } + if (toX >= 0 && toY >= 0) { + drawHighlight(toX, toY, highlineGC); + } + } + hi1X = fromX; + hi1Y = fromY; + hi2X = toX; + hi2Y = toY; +} + +void +ClearHighlights() +{ + SetHighlights(-1, -1, -1, -1); +} + + +void +SetPremoveHighlights(fromX, fromY, toX, toY) + int fromX, fromY, toX, toY; +{ + if (pm1X != fromX || pm1Y != fromY) { + if (pm1X >= 0 && pm1Y >= 0) { + drawHighlight(pm1X, pm1Y, lineGC); + } + if (fromX >= 0 && fromY >= 0) { + drawHighlight(fromX, fromY, prelineGC); + } + } + if (pm2X != toX || pm2Y != toY) { + if (pm2X >= 0 && pm2Y >= 0) { + drawHighlight(pm2X, pm2Y, lineGC); + } + if (toX >= 0 && toY >= 0) { + drawHighlight(toX, toY, prelineGC); + } + } + pm1X = fromX; + pm1Y = fromY; + pm2X = toX; + pm2Y = toY; +} + +void +ClearPremoveHighlights() +{ + SetPremoveHighlights(-1, -1, -1, -1); +} + +static void BlankSquare(x, y, color, piece, dest) + int x, y, color; + ChessSquare piece; + Drawable dest; +{ + if (useImages && useImageSqs) { + Pixmap pm; + switch (color) { + case 1: /* light */ + pm = xpmLightSquare; + break; + case 0: /* dark */ + pm = xpmDarkSquare; + break; + case 2: /* neutral */ + default: + pm = xpmJailSquare; + break; + } + XCopyArea(xDisplay, pm, dest, wlPieceGC, 0, 0, + squareSize, squareSize, x, y); + } else { + GC gc; + switch (color) { + case 1: /* light */ + gc = lightSquareGC; + break; + case 0: /* dark */ + gc = darkSquareGC; + break; + case 2: /* neutral */ + default: + gc = jailSquareGC; + break; + } + XFillRectangle(xDisplay, dest, gc, x, y, squareSize, squareSize); + } +} + +/* + I split out the routines to draw a piece so that I could + make a generic flash routine. +*/ +static void monoDrawPiece_1bit(piece, square_color, x, y, dest) + ChessSquare piece; + int square_color, x, y; + Drawable dest; +{ + /* Avoid XCopyPlane on 1-bit screens to work around Sun bug */ + switch (square_color) { + case 1: /* light */ + case 2: /* neutral */ + default: + XCopyArea(xDisplay, (int) piece < (int) BlackPawn + ? *pieceToOutline(piece) + : *pieceToSolid(piece), + dest, bwPieceGC, 0, 0, + squareSize, squareSize, x, y); + break; + case 0: /* dark */ + XCopyArea(xDisplay, (int) piece < (int) BlackPawn + ? *pieceToSolid(piece) + : *pieceToOutline(piece), + dest, wbPieceGC, 0, 0, + squareSize, squareSize, x, y); + break; + } +} + +static void monoDrawPiece(piece, square_color, x, y, dest) + ChessSquare piece; + int square_color, x, y; + Drawable dest; +{ + switch (square_color) { + case 1: /* light */ + case 2: /* neutral */ + default: + XCopyPlane(xDisplay, (int) piece < (int) BlackPawn + ? *pieceToOutline(piece) + : *pieceToSolid(piece), + dest, bwPieceGC, 0, 0, + squareSize, squareSize, x, y, 1); + break; + case 0: /* dark */ + XCopyPlane(xDisplay, (int) piece < (int) BlackPawn + ? *pieceToSolid(piece) + : *pieceToOutline(piece), + dest, wbPieceGC, 0, 0, + squareSize, squareSize, x, y, 1); + break; + } +} + +static void colorDrawPiece(piece, square_color, x, y, dest) + ChessSquare piece; + int square_color, x, y; + Drawable dest; +{ + if(pieceToSolid(piece) == NULL) return; // [HGM] bitmaps: make it non-fatal if we have no bitmap; + switch (square_color) { + case 1: /* light */ + XCopyPlane(xDisplay, *pieceToSolid(piece), + dest, (int) piece < (int) BlackPawn + ? wlPieceGC : blPieceGC, 0, 0, + squareSize, squareSize, x, y, 1); + break; + case 0: /* dark */ + XCopyPlane(xDisplay, *pieceToSolid(piece), + dest, (int) piece < (int) BlackPawn + ? wdPieceGC : bdPieceGC, 0, 0, + squareSize, squareSize, x, y, 1); + break; + case 2: /* neutral */ + default: + XCopyPlane(xDisplay, *pieceToSolid(piece), + dest, (int) piece < (int) BlackPawn + ? wjPieceGC : bjPieceGC, 0, 0, + squareSize, squareSize, x, y, 1); + break; + } +} + +static void colorDrawPieceImage(piece, square_color, x, y, dest) + ChessSquare piece; + int square_color, x, y; + Drawable dest; +{ + int kind; + + switch (square_color) { + case 1: /* light */ + case 2: /* neutral */ + default: + if ((int)piece < (int) BlackPawn) { + kind = 0; + } else { + kind = 2; + piece -= BlackPawn; + } + break; + case 0: /* dark */ + if ((int)piece < (int) BlackPawn) { + kind = 1; + } else { + kind = 3; + piece -= BlackPawn; + } + break; + } + XCopyArea(xDisplay, xpmPieceBitmap[kind][piece], + dest, wlPieceGC, 0, 0, + squareSize, squareSize, x, y); +} + +typedef void (*DrawFunc)(); + +DrawFunc ChooseDrawFunc() +{ + if (appData.monoMode) { + if (DefaultDepth(xDisplay, xScreen) == 1) { + return monoDrawPiece_1bit; + } else { + return monoDrawPiece; + } + } else { + if (useImages) + return colorDrawPieceImage; + else + return colorDrawPiece; + } +} + +/* [HR] determine square color depending on chess variant. */ +static int SquareColor(row, column) + int row, column; +{ + int square_color; + + if (gameInfo.variant == VariantXiangqi) { + if (column >= 3 && column <= 5 && row >= 0 && row <= 2) { + square_color = 0; + } else if (column >= 3 && column <= 5 && row >= 7 && row <= 9) { + square_color = 1; + } else if (row <= 4) { + square_color = 1; + } else { + square_color = 0; + } + } else { + square_color = ((column + row) % 2) == 1; + } + + /* [hgm] holdings: next line makes all holdings squares light */ + if(column < BOARD_LEFT || column >= BOARD_RGHT) square_color = 0; + + return square_color; +} + +void DrawSquare(row, column, piece, do_flash) + int row, column, do_flash; + ChessSquare piece; +{ + int square_color, x, y, direction, font_ascent, font_descent; + int i; + char string[2]; + XCharStruct overall; + DrawFunc drawfunc; + int flash_delay; + + /* Calculate delay in milliseconds (2-delays per complete flash) */ + flash_delay = 500 / appData.flashRate; + + if (flipView) { + x = lineGap + ((BOARD_WIDTH-1)-column) * + (squareSize + lineGap); + y = lineGap + row * (squareSize + lineGap); + } else { + x = lineGap + column * (squareSize + lineGap); + y = lineGap + ((BOARD_HEIGHT-1)-row) * + (squareSize + lineGap); + } + + square_color = SquareColor(row, column); + + if ( // [HGM] holdings: next 5 lines blank out area between board and holdings + column == BOARD_LEFT-1 || column == BOARD_RGHT + || (column == BOARD_LEFT-2 && row < BOARD_HEIGHT-gameInfo.holdingsSize) + || (column == BOARD_RGHT+1 && row >= gameInfo.holdingsSize) ) { + BlankSquare(x, y, 2, EmptySquare, xBoardWindow); + } else { + if (piece == EmptySquare || appData.blindfold) { + BlankSquare(x, y, square_color, piece, xBoardWindow); + } else { + drawfunc = ChooseDrawFunc(); + if (do_flash && appData.flashCount > 0) { + for (i=0; itype) { + case Expose: + if (event->xexpose.count > 0) return; /* no clipping is done */ + XDrawPosition(widget, True, NULL); + break; + default: + return; + } +} +/* end why */ + +void DrawPosition(fullRedraw, board) + /*Boolean*/int fullRedraw; + Board board; +{ + XDrawPosition(boardWidget, fullRedraw, board); +} + +/* Returns 1 if there are "too many" differences between b1 and b2 + (i.e. more than 1 move was made) */ +static int too_many_diffs(b1, b2) + Board b1, b2; +{ + int i, j; + int c = 0; + + for (i=0; i 4) /* Castling causes 4 diffs */ + return 1; + } + } + } + + return 0; +} + +/* Matrix describing castling maneuvers */ +/* Row, ColRookFrom, ColKingFrom, ColRookTo, ColKingTo */ +static int castling_matrix[4][5] = { + { 0, 0, 4, 3, 2 }, /* 0-0-0, white */ + { 0, 7, 4, 5, 6 }, /* 0-0, white */ + { 7, 0, 4, 3, 2 }, /* 0-0-0, black */ + { 7, 7, 4, 5, 6 } /* 0-0, black */ +}; + +/* Checks whether castling occurred. If it did, *rrow and *rcol + are set to the destination (row,col) of the rook that moved. + + Returns 1 if castling occurred, 0 if not. + + Note: Only handles a max of 1 castling move, so be sure + to call too_many_diffs() first. + */ +static int check_castle_draw(newb, oldb, rrow, rcol) + Board newb, oldb; + int *rrow, *rcol; +{ + int i, *r, j; + int match; + + /* For each type of castling... */ + for (i=0; i<4; ++i) { + r = castling_matrix[i]; + + /* Check the 4 squares involved in the castling move */ + match = 0; + for (j=1; j<=4; ++j) { + if (newb[r[0]][r[j]] == oldb[r[0]][r[j]]) { + match = 1; + break; + } + } + + if (!match) { + /* All 4 changed, so it must be a castling move */ + *rrow = r[0]; + *rcol = r[3]; + return 1; + } + } + return 0; +} + +static int damage[BOARD_SIZE][BOARD_SIZE]; + +/* + * event handler for redrawing the board + */ +void XDrawPosition(w, repaint, board) + Widget w; + /*Boolean*/int repaint; + Board board; +{ + int i, j, do_flash; + static int lastFlipView = 0; + static int lastBoardValid = 0; + static Board lastBoard; + Arg args[16]; + int rrow, rcol; + + if (board == NULL) { + if (!lastBoardValid) return; + board = lastBoard; + } + if (!lastBoardValid || lastFlipView != flipView) { + XtSetArg(args[0], XtNleftBitmap, (flipView ? xMarkPixmap : None)); + XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Flip View"), + args, 1); + } + + /* + * It would be simpler to clear the window with XClearWindow() + * but this causes a very distracting flicker. + */ + + if (!repaint && lastBoardValid && lastFlipView == flipView) { + + /* If too much changes (begin observing new game, etc.), don't + do flashing */ + do_flash = too_many_diffs(board, lastBoard) ? 0 : 1; + + /* Special check for castling so we don't flash both the king + and the rook (just flash the king). */ + if (do_flash) { + if (check_castle_draw(board, lastBoard, &rrow, &rcol)) { + /* Draw rook with NO flashing. King will be drawn flashing later */ + DrawSquare(rrow, rcol, board[rrow][rcol], 0); + lastBoard[rrow][rcol] = board[rrow][rcol]; + } + } + + /* First pass -- Draw (newly) empty squares and repair damage. + This prevents you from having a piece show up twice while it + is flashing on its new square */ + for (i = 0; i < BOARD_HEIGHT; i++) + for (j = 0; j < BOARD_WIDTH; j++) + if ((board[i][j] != lastBoard[i][j] && board[i][j] == EmptySquare) + || damage[i][j]) { + DrawSquare(i, j, board[i][j], 0); + damage[i][j] = False; + } + + /* Second pass -- Draw piece(s) in new position and flash them */ + for (i = 0; i < BOARD_HEIGHT; i++) + for (j = 0; j < BOARD_WIDTH; j++) + if (board[i][j] != lastBoard[i][j]) { + DrawSquare(i, j, board[i][j], do_flash); + } + } else { + if (lineGap > 0) + XDrawSegments(xDisplay, xBoardWindow, lineGC, + gridSegments, (BOARD_SIZE + 1) * 2); + + for (i = 0; i < BOARD_HEIGHT; i++) + for (j = 0; j < BOARD_WIDTH; j++) { + DrawSquare(i, j, board[i][j], 0); + damage[i][j] = False; + } + } + + CopyBoard(lastBoard, board); + lastBoardValid = 1; + lastFlipView = flipView; + + /* Draw highlights */ + if (pm1X >= 0 && pm1Y >= 0) { + drawHighlight(pm1X, pm1Y, prelineGC); + } + if (pm2X >= 0 && pm2Y >= 0) { + drawHighlight(pm2X, pm2Y, prelineGC); + } + if (hi1X >= 0 && hi1Y >= 0) { + drawHighlight(hi1X, hi1Y, highlineGC); + } + if (hi2X >= 0 && hi2Y >= 0) { + drawHighlight(hi2X, hi2Y, highlineGC); + } + + /* If piece being dragged around board, must redraw that too */ + DrawDragPiece(); + + XSync(xDisplay, False); +} + + +/* + * event handler for redrawing the board + */ +void DrawPositionProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + XDrawPosition(w, True, NULL); +} + + +/* + * event handler for parsing user moves + */ +// [HGM] This routine will need quite some reworking. Although the backend still supports the old +// way of doing things, by calling UserMoveEvent() to test the legality of the move and then perform +// it at the end, and doing all kind of preliminary tests here (e.g. to weed out self-captures), it +// should be made to use the new way, of calling UserMoveTest early to determine the legality of the +// move, (which will weed out the illegal selfcaptures and moves into the holdings, and flag promotions), +// and at the end FinishMove() to perform the move after optional promotion popups. +// For now I patched it to allow self-capture with King, and suppress clicks between board and holdings. +void HandleUserMove(w, event, prms, nprms) + Widget w; + XEvent *event; + 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); + XtDestroyWidget(promotionShell); + promotionUp = False; + ClearHighlights(); + fromX = fromY = -1; + } else { + return; + } + } + + 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; + + /* Check if clicking again on the same color piece */ + fromP = boards[currentMove][fromY][fromX]; + toP = boards[currentMove][y][x]; + if ((WhitePawn <= fromP && fromP < WhiteKing && // [HGM] this test should go, as UserMoveTest now does it. + WhitePawn <= toP && toP <= WhiteKing) || // For now I made it less critical by exempting King + (BlackPawn <= fromP && fromP < BlackKing && // moves, to not interfere with FRC castlings. + BlackPawn <= toP && toP <= BlackKing)) { + /* 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); + } +} + +void AnimateUserMove (Widget w, XEvent * event, + String * params, Cardinal * nParams) +{ + DragPieceMove(event->xmotion.x, event->xmotion.y); +} + +Widget CommentCreate(name, text, mutable, callback, lines) + char *name, *text; + int /*Boolean*/ mutable; + XtCallbackProc callback; + int lines; +{ + Arg args[16]; + Widget shell, layout, form, edit, b_ok, b_cancel, b_clear, b_close, b_edit; + Dimension bw_width; + int j; + + j = 0; + XtSetArg(args[j], XtNwidth, &bw_width); j++; + XtGetValues(boardWidget, args, j); + + j = 0; + XtSetArg(args[j], XtNresizable, True); j++; +#if TOPLEVEL + shell = + XtCreatePopupShell(name, topLevelShellWidgetClass, + shellWidget, args, j); +#else + shell = + XtCreatePopupShell(name, transientShellWidgetClass, + shellWidget, args, j); +#endif + layout = + XtCreateManagedWidget(layoutName, formWidgetClass, shell, + layoutArgs, XtNumber(layoutArgs)); + form = + XtCreateManagedWidget("form", formWidgetClass, layout, + formArgs, XtNumber(formArgs)); + + j = 0; + if (mutable) { + XtSetArg(args[j], XtNeditType, XawtextEdit); j++; + XtSetArg(args[j], XtNuseStringInPlace, False); j++; + } + XtSetArg(args[j], XtNstring, text); j++; + XtSetArg(args[j], XtNtop, XtChainTop); j++; + XtSetArg(args[j], XtNbottom, XtChainBottom); j++; + XtSetArg(args[j], XtNleft, XtChainLeft); j++; + 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 = + XtCreateManagedWidget("text", asciiTextWidgetClass, form, args, j); + + if (mutable) { + j = 0; + XtSetArg(args[j], XtNfromVert, edit); 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_ok = + XtCreateManagedWidget("ok", commandWidgetClass, form, args, j); + XtAddCallback(b_ok, XtNcallback, callback, (XtPointer) 0); + + j = 0; + XtSetArg(args[j], XtNfromVert, edit); j++; + XtSetArg(args[j], XtNfromHoriz, b_ok); 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_cancel = + XtCreateManagedWidget("cancel", commandWidgetClass, form, args, j); + XtAddCallback(b_cancel, XtNcallback, callback, (XtPointer) 0); + + j = 0; + XtSetArg(args[j], XtNfromVert, edit); j++; + XtSetArg(args[j], XtNfromHoriz, b_cancel); 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 = + XtCreateManagedWidget("clear", commandWidgetClass, form, args, j); + XtAddCallback(b_clear, XtNcallback, callback, (XtPointer) 0); + } else { + j = 0; + XtSetArg(args[j], XtNfromVert, edit); 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_close = + XtCreateManagedWidget("close", commandWidgetClass, form, args, j); + XtAddCallback(b_close, XtNcallback, callback, (XtPointer) 0); + + j = 0; + XtSetArg(args[j], XtNfromVert, edit); j++; + XtSetArg(args[j], XtNfromHoriz, b_close); 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_edit = + XtCreateManagedWidget("edit", commandWidgetClass, form, args, j); + XtAddCallback(b_edit, XtNcallback, callback, (XtPointer) 0); + } + + XtRealizeWidget(shell); + + if (commentX == -1) { + int xx, yy; + Window junk; + Dimension pw_height; + Dimension ew_height; + + 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); + commentH = pw_height + (lines - 1) * ew_height; + commentW = bw_width - 16; + + XSync(xDisplay, False); +#ifdef NOTDEF + /* This code seems to tickle an X bug if it is executed too soon + after xboard starts up. The coordinates get transformed as if + the main window was positioned at (0, 0). + */ + XtTranslateCoords(shellWidget, + (bw_width - commentW) / 2, 0 - commentH / 2, + &commentX, &commentY); +#else /*!NOTDEF*/ + XTranslateCoordinates(xDisplay, XtWindow(shellWidget), + RootWindowOfScreen(XtScreen(shellWidget)), + (bw_width - commentW) / 2, 0 - commentH / 2, + &xx, &yy, &junk); + commentX = xx; + commentY = yy; +#endif /*!NOTDEF*/ + if (commentY < 0) commentY = 0; /*avoid positioning top offscreen*/ + } + j = 0; + XtSetArg(args[j], XtNheight, commentH); j++; + XtSetArg(args[j], XtNwidth, commentW); j++; + XtSetArg(args[j], XtNx, commentX); j++; + XtSetArg(args[j], XtNy, commentY); j++; + XtSetValues(shell, args, j); + XtSetKeyboardFocus(shell, edit); + + return shell; +} + +/* Used for analysis window and ICS input window */ +Widget MiscCreate(name, text, mutable, callback, lines) + char *name, *text; + int /*Boolean*/ mutable; + XtCallbackProc callback; + int lines; +{ + Arg args[16]; + Widget shell, layout, form, edit; + Position x, y; + Dimension bw_width, pw_height, ew_height, w, h; + int j; + int xx, yy; + Window junk; + + j = 0; + XtSetArg(args[j], XtNresizable, True); j++; +#if TOPLEVEL + shell = + XtCreatePopupShell(name, topLevelShellWidgetClass, + shellWidget, args, j); +#else + shell = + XtCreatePopupShell(name, transientShellWidgetClass, + shellWidget, args, j); +#endif + layout = + XtCreateManagedWidget(layoutName, formWidgetClass, shell, + layoutArgs, XtNumber(layoutArgs)); + form = + XtCreateManagedWidget("form", formWidgetClass, layout, + formArgs, XtNumber(formArgs)); + + j = 0; + if (mutable) { + XtSetArg(args[j], XtNeditType, XawtextEdit); j++; + XtSetArg(args[j], XtNuseStringInPlace, False); j++; + } + XtSetArg(args[j], XtNstring, text); j++; + XtSetArg(args[j], XtNtop, XtChainTop); j++; + XtSetArg(args[j], XtNbottom, XtChainBottom); j++; + 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 = + XtCreateManagedWidget("text", asciiTextWidgetClass, form, args, j); + + XtRealizeWidget(shell); + + j = 0; + XtSetArg(args[j], XtNwidth, &bw_width); j++; + XtGetValues(boardWidget, args, j); + + 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); + h = pw_height + (lines - 1) * ew_height; + w = bw_width - 16; + + XSync(xDisplay, False); +#ifdef NOTDEF + /* This code seems to tickle an X bug if it is executed too soon + after xboard starts up. The coordinates get transformed as if + the main window was positioned at (0, 0). + */ + XtTranslateCoords(shellWidget, (bw_width - w) / 2, 0 - h / 2, &x, &y); +#else /*!NOTDEF*/ + XTranslateCoordinates(xDisplay, XtWindow(shellWidget), + RootWindowOfScreen(XtScreen(shellWidget)), + (bw_width - w) / 2, 0 - h / 2, &xx, &yy, &junk); +#endif /*!NOTDEF*/ + x = xx; + y = yy; + if (y < 0) y = 0; /*avoid positioning top offscreen*/ + + j = 0; + XtSetArg(args[j], XtNheight, h); j++; + XtSetArg(args[j], XtNwidth, w); j++; + XtSetArg(args[j], XtNx, x); j++; + XtSetArg(args[j], XtNy, y); j++; + XtSetValues(shell, args, j); + + return shell; +} + + +static int savedIndex; /* gross that this is global */ + +void EditCommentPopUp(index, title, text) + int index; + char *title, *text; +{ + Widget edit; + Arg args[16]; + int j; + + savedIndex = index; + if (text == NULL) text = ""; + + if (editShell == NULL) { + editShell = + CommentCreate(title, text, True, EditCommentCallback, 4); + XtRealizeWidget(editShell); + CatchDeleteWindow(editShell, "EditCommentPopDown"); + } else { + edit = XtNameToWidget(editShell, "*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(editShell, args, j); + } + + XtPopup(editShell, XtGrabNone); + + editUp = True; + j = 0; + XtSetArg(args[j], XtNleftBitmap, xMarkPixmap); j++; + XtSetValues(XtNameToWidget(menuBarWidget, "menuMode.Edit Comment"), + args, j); +} + +void EditCommentCallback(w, client_data, call_data) + Widget w; + XtPointer client_data, call_data; +{ + String name, val; + Arg args[16]; + int j; + Widget edit; + + j = 0; + XtSetArg(args[j], XtNlabel, &name); j++; + XtGetValues(w, args, j); + + if (strcmp(name, "ok") == 0) { + edit = XtNameToWidget(editShell, "*form.text"); + j = 0; + XtSetArg(args[j], XtNstring, &val); j++; + XtGetValues(edit, args, j); + ReplaceComment(savedIndex, val); + EditCommentPopDown(); + } else if (strcmp(name, "cancel") == 0) { + EditCommentPopDown(); + } else if (strcmp(name, "clear") == 0) { + edit = XtNameToWidget(editShell, "*form.text"); + XtCallActionProc(edit, "select-all", NULL, NULL, 0); + XtCallActionProc(edit, "kill-selection", NULL, NULL, 0); + } +} + +void EditCommentPopDown() +{ + Arg args[16]; + int j; + + if (!editUp) return; + j = 0; + XtSetArg(args[j], XtNx, &commentX); j++; + XtSetArg(args[j], XtNy, &commentY); j++; + XtSetArg(args[j], XtNheight, &commentH); j++; + XtSetArg(args[j], XtNwidth, &commentW); j++; + XtGetValues(editShell, args, j); + XtPopdown(editShell); + editUp = False; + j = 0; + XtSetArg(args[j], XtNleftBitmap, None); j++; + XtSetValues(XtNameToWidget(menuBarWidget, "menuMode.Edit Comment"), + args, j); +} + +void ICSInputBoxPopUp() +{ + Widget edit; + Arg args[16]; + int j; + char *title = "ICS Input"; + XtTranslations tr; + + if (ICSInputShell == NULL) { + ICSInputShell = MiscCreate(title, "", True, NULL, 1); + tr = XtParseTranslationTable(ICSInputTranslations); + edit = XtNameToWidget(ICSInputShell, "*form.text"); + XtOverrideTranslations(edit, tr); + XtRealizeWidget(ICSInputShell); + CatchDeleteWindow(ICSInputShell, "ICSInputBoxPopDown"); + + } else { + edit = XtNameToWidget(ICSInputShell, "*form.text"); + j = 0; + XtSetArg(args[j], XtNstring, ""); j++; + XtSetValues(edit, args, j); + j = 0; + XtSetArg(args[j], XtNiconName, (XtArgVal) title); j++; + XtSetArg(args[j], XtNtitle, (XtArgVal) title); j++; + XtSetValues(ICSInputShell, args, j); + } + + XtPopup(ICSInputShell, XtGrabNone); + XtSetKeyboardFocus(ICSInputShell, edit); + + ICSInputBoxUp = True; + j = 0; + XtSetArg(args[j], XtNleftBitmap, xMarkPixmap); j++; + XtSetValues(XtNameToWidget(menuBarWidget, "menuMode.ICS Input Box"), + args, j); +} + +void ICSInputSendText() +{ + Widget edit; + int j; + Arg args[16]; + String val; + + edit = XtNameToWidget(ICSInputShell, "*form.text"); + j = 0; + XtSetArg(args[j], XtNstring, &val); j++; + XtGetValues(edit, args, j); + SendMultiLineToICS(val); + XtCallActionProc(edit, "select-all", NULL, NULL, 0); + XtCallActionProc(edit, "kill-selection", NULL, NULL, 0); +} + +void ICSInputBoxPopDown() +{ + Arg args[16]; + int j; + + if (!ICSInputBoxUp) return; + j = 0; + XtPopdown(ICSInputShell); + ICSInputBoxUp = False; + j = 0; + XtSetArg(args[j], XtNleftBitmap, None); j++; + XtSetValues(XtNameToWidget(menuBarWidget, "menuMode.ICS Input Box"), + args, j); +} + +void CommentPopUp(title, text) + char *title, *text; +{ + Arg args[16]; + int j; + Widget edit; + + if (commentShell == NULL) { + commentShell = + CommentCreate(title, text, False, CommentCallback, 4); + XtRealizeWidget(commentShell); + CatchDeleteWindow(commentShell, "CommentPopDown"); + } else { + edit = XtNameToWidget(commentShell, "*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(commentShell, args, j); + } + + XtPopup(commentShell, XtGrabNone); + XSync(xDisplay, False); + + 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; +{ + String name; + Arg args[16]; + int j; + + j = 0; + XtSetArg(args[j], XtNlabel, &name); j++; + XtGetValues(w, args, j); + + if (strcmp(name, "close") == 0) { + CommentPopDown(); + } else if (strcmp(name, "edit") == 0) { + CommentPopDown(); + EditCommentEvent(); + } +} + + +void CommentPopDown() +{ + Arg args[16]; + int j; + + if (!commentUp) return; + j = 0; + XtSetArg(args[j], XtNx, &commentX); j++; + XtSetArg(args[j], XtNy, &commentY); j++; + XtSetArg(args[j], XtNwidth, &commentW); j++; + XtSetArg(args[j], XtNheight, &commentH); j++; + XtGetValues(commentShell, args, j); + XtPopdown(commentShell); + XSync(xDisplay, False); + commentUp = False; +} + +void AnalysisPopDown() +{ + if (!analysisUp) return; + XtPopdown(analysisShell); + XSync(xDisplay, False); + analysisUp = False; +} + + +void FileNamePopUp(label, def, proc, openMode) + char *label; + char *def; + FileProc proc; + char *openMode; +{ + Arg args[16]; + Widget popup, layout, dialog, edit; + Window root, child; + int x, y, i; + int win_x, win_y; + unsigned int mask; + + fileProc = proc; /* I can't see a way not */ + fileOpenMode = openMode; /* to use globals here */ + + i = 0; + XtSetArg(args[i], XtNresizable, True); i++; + XtSetArg(args[i], XtNwidth, DIALOG_SIZE); i++; + fileNameShell = popup = + XtCreatePopupShell("File name prompt", transientShellWidgetClass, + shellWidget, args, i); + + layout = + XtCreateManagedWidget(layoutName, formWidgetClass, popup, + layoutArgs, XtNumber(layoutArgs)); + + i = 0; + XtSetArg(args[i], XtNlabel, label); i++; + XtSetArg(args[i], XtNvalue, def); i++; + XtSetArg(args[i], XtNborderWidth, 0); i++; + dialog = XtCreateManagedWidget("fileName", dialogWidgetClass, + layout, args, i); + + XawDialogAddButton(dialog, "ok", FileNameCallback, (XtPointer) dialog); + XawDialogAddButton(dialog, "cancel", FileNameCallback, + (XtPointer) dialog); + + XtRealizeWidget(popup); + CatchDeleteWindow(popup, "FileNamePopDown"); + + 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); + filenameUp = True; + + edit = XtNameToWidget(dialog, "*value"); + XtSetKeyboardFocus(popup, edit); +} + +void FileNamePopDown() +{ + if (!filenameUp) return; + XtPopdown(fileNameShell); + XtDestroyWidget(fileNameShell); + filenameUp = False; + ModeHighlight(); +} + +void FileNameCallback(w, client_data, call_data) + Widget w; + XtPointer client_data, call_data; +{ + String name; + Arg args[16]; + + XtSetArg(args[0], XtNlabel, &name); + XtGetValues(w, args, 1); + + if (strcmp(name, "cancel") == 0) { + FileNamePopDown(); + return; + } + + FileNameAction(w, NULL, NULL, NULL); +} + +void FileNameAction(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + char buf[MSG_SIZ]; + String name; + FILE *f; + char *p, *fullname; + int index; + + name = XawDialogGetValueString(w = XtParent(w)); + + if ((name != NULL) && (*name != NULLCHAR)) { + strcpy(buf, name); + XtPopdown(w = XtParent(XtParent(w))); + XtDestroyWidget(w); + filenameUp = False; + + p = strrchr(buf, ' '); + if (p == NULL) { + index = 0; + } else { + *p++ = NULLCHAR; + index = atoi(p); + } + fullname = ExpandPathName(buf); + if (!fullname) { + ErrorPopUp("Error", "Can't open file", FALSE); + } + else { + f = fopen(fullname, fileOpenMode); + if (f == NULL) { + DisplayError("Failed to open file", errno); + } else { + (void) (*fileProc)(f, index, buf); + } + } + ModeHighlight(); + return; + } + + XtPopdown(w = XtParent(XtParent(w))); + XtDestroyWidget(w); + filenameUp = False; + ModeHighlight(); +} + +void PromotionPopUp() +{ + Arg args[16]; + Widget dialog, layout; + Position x, y; + Dimension bw_width, pw_width; + int j; + + j = 0; + XtSetArg(args[j], XtNwidth, &bw_width); j++; + XtGetValues(boardWidget, args, j); + + j = 0; + XtSetArg(args[j], XtNresizable, True); j++; + promotionShell = + XtCreatePopupShell("Promotion", transientShellWidgetClass, + shellWidget, args, j); + layout = + XtCreateManagedWidget(layoutName, formWidgetClass, promotionShell, + layoutArgs, XtNumber(layoutArgs)); + + j = 0; + XtSetArg(args[j], XtNlabel, "Promote pawn to what?"); j++; + XtSetArg(args[j], XtNborderWidth, 0); j++; + dialog = XtCreateManagedWidget("promotion", dialogWidgetClass, + layout, args, j); + + XawDialogAddButton(dialog, "Queen", PromotionCallback, + (XtPointer) dialog); + XawDialogAddButton(dialog, "Rook", PromotionCallback, + (XtPointer) dialog); + XawDialogAddButton(dialog, "Bishop", PromotionCallback, + (XtPointer) dialog); + XawDialogAddButton(dialog, "Knight", PromotionCallback, + (XtPointer) dialog); + if (!appData.testLegality || gameInfo.variant == VariantSuicide || + gameInfo.variant == VariantGiveaway) { + XawDialogAddButton(dialog, "King", PromotionCallback, + (XtPointer) dialog); + } + XawDialogAddButton(dialog, "cancel", PromotionCallback, + (XtPointer) dialog); + + XtRealizeWidget(promotionShell); + CatchDeleteWindow(promotionShell, "PromotionPopDown"); + + j = 0; + XtSetArg(args[j], XtNwidth, &pw_width); j++; + XtGetValues(promotionShell, args, j); + + XtTranslateCoords(boardWidget, (bw_width - pw_width) / 2, + lineGap + squareSize/3 + + ((toY == BOARD_HEIGHT-1) ^ (flipView) ? + 0 : 6*(squareSize + lineGap)), &x, &y); + + j = 0; + XtSetArg(args[j], XtNx, x); j++; + XtSetArg(args[j], XtNy, y); j++; + XtSetValues(promotionShell, args, j); + + XtPopup(promotionShell, XtGrabNone); + + promotionUp = True; +} + +void PromotionPopDown() +{ + if (!promotionUp) return; + XtPopdown(promotionShell); + XtDestroyWidget(promotionShell); + promotionUp = False; +} + +void PromotionCallback(w, client_data, call_data) + Widget w; + XtPointer client_data, call_data; +{ + String name; + Arg args[16]; + int promoChar; + + XtSetArg(args[0], XtNlabel, &name); + XtGetValues(w, args, 1); + + PromotionPopDown(); + + if (fromX == -1) return; + + if (strcmp(name, "cancel") == 0) { + fromX = fromY = -1; + ClearHighlights(); + return; + } else if (strcmp(name, "Knight") == 0) { + promoChar = 'n'; + } else { + promoChar = ToLower(name[0]); + } + + UserMoveEvent(fromX, fromY, toX, toY, promoChar); + + if (!appData.highlightLastMove || gotPremove) ClearHighlights(); + if (gotPremove) SetPremoveHighlights(fromX, fromY, toX, toY); + fromX = fromY = -1; +} + + +void ErrorCallback(w, client_data, call_data) + Widget w; + XtPointer client_data, call_data; +{ + errorUp = False; + XtPopdown(w = XtParent(XtParent(XtParent(w)))); + XtDestroyWidget(w); + if (errorExitStatus != -1) ExitEvent(errorExitStatus); +} + + +void ErrorPopDown() +{ + if (!errorUp) return; + errorUp = False; + XtPopdown(errorShell); + XtDestroyWidget(errorShell); + if (errorExitStatus != -1) ExitEvent(errorExitStatus); +} + +void ErrorPopUp(title, label, modal) + char *title, *label; + int modal; +{ + Arg args[16]; + Widget dialog, layout; + Position x, y; + int xx, yy; + Window junk; + Dimension bw_width, pw_width; + Dimension pw_height; + int i; + + i = 0; + XtSetArg(args[i], XtNresizable, True); i++; + XtSetArg(args[i], XtNtitle, title); i++; + errorShell = + XtCreatePopupShell("errorpopup", transientShellWidgetClass, + shellWidget, args, i); + layout = + XtCreateManagedWidget(layoutName, formWidgetClass, errorShell, + layoutArgs, XtNumber(layoutArgs)); + + i = 0; + XtSetArg(args[i], XtNlabel, label); i++; + XtSetArg(args[i], XtNborderWidth, 0); i++; + dialog = XtCreateManagedWidget("dialog", dialogWidgetClass, + layout, args, i); + + XawDialogAddButton(dialog, "ok", ErrorCallback, (XtPointer) dialog); + + XtRealizeWidget(errorShell); + CatchDeleteWindow(errorShell, "ErrorPopDown"); + + i = 0; + XtSetArg(args[i], XtNwidth, &bw_width); i++; + XtGetValues(boardWidget, args, i); + i = 0; + XtSetArg(args[i], XtNwidth, &pw_width); i++; + XtSetArg(args[i], XtNheight, &pw_height); i++; + XtGetValues(errorShell, args, i); + +#ifdef NOTDEF + /* This code seems to tickle an X bug if it is executed too soon + after xboard starts up. The coordinates get transformed as if + the main window was positioned at (0, 0). + */ + XtTranslateCoords(boardWidget, (bw_width - pw_width) / 2, + 0 - pw_height + squareSize / 3, &x, &y); +#else + XTranslateCoordinates(xDisplay, XtWindow(boardWidget), + RootWindowOfScreen(XtScreen(boardWidget)), + (bw_width - pw_width) / 2, + 0 - pw_height + squareSize / 3, &xx, &yy, &junk); + x = xx; + y = yy; +#endif + if (y < 0) y = 0; /*avoid positioning top offscreen*/ + + i = 0; + XtSetArg(args[i], XtNx, x); i++; + XtSetArg(args[i], XtNy, y); i++; + XtSetValues(errorShell, args, i); + + errorUp = True; + XtPopup(errorShell, modal ? XtGrabExclusive : XtGrabNone); +} + +/* Disable all user input other than deleting the window */ +static int frozen = 0; +void FreezeUI() +{ + if (frozen) return; + /* Grab by a widget that doesn't accept input */ + XtAddGrab(messageWidget, TRUE, FALSE); + frozen = 1; +} + +/* Undo a FreezeUI */ +void ThawUI() +{ + if (!frozen) return; + XtRemoveGrab(messageWidget); + frozen = 0; +} + +char *ModeToWidgetName(mode) + GameMode mode; +{ + switch (mode) { + case BeginningOfGame: + if (appData.icsActive) + return "menuMode.ICS Client"; + else if (appData.noChessProgram || + *appData.cmailGameName != NULLCHAR) + return "menuMode.Edit Game"; + else + return "menuMode.Machine Black"; + case MachinePlaysBlack: + return "menuMode.Machine Black"; + case MachinePlaysWhite: + return "menuMode.Machine White"; + case AnalyzeMode: + return "menuMode.Analysis Mode"; + case AnalyzeFile: + return "menuMode.Analyze File"; + case TwoMachinesPlay: + return "menuMode.Two Machines"; + case EditGame: + return "menuMode.Edit Game"; + case PlayFromGameFile: + return "menuFile.Load Game"; + case EditPosition: + return "menuMode.Edit Position"; + case Training: + return "menuMode.Training"; + case IcsPlayingWhite: + case IcsPlayingBlack: + case IcsObserving: + case IcsIdle: + case IcsExamining: + return "menuMode.ICS Client"; + default: + case EndOfGame: + return NULL; + } +} + +void ModeHighlight() +{ + Arg args[16]; + static int oldPausing = FALSE; + static GameMode oldmode = (GameMode) -1; + char *wname; + + if (!boardWidget || !XtIsRealized(boardWidget)) return; + + if (pausing != oldPausing) { + oldPausing = pausing; + if (pausing) { + XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); + } else { + XtSetArg(args[0], XtNleftBitmap, None); + } + XtSetValues(XtNameToWidget(menuBarWidget, "menuMode.Pause"), + 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. */ + { + Pixel oldbg, oldfg; + XtSetArg(args[0], XtNbackground, &oldbg); + XtSetArg(args[1], XtNforeground, &oldfg); + XtGetValues(XtNameToWidget(buttonBarWidget, PAUSE_BUTTON), + args, 2); + XtSetArg(args[0], XtNbackground, oldfg); + XtSetArg(args[1], XtNforeground, oldbg); + } +#endif + XtSetValues(XtNameToWidget(buttonBarWidget, PAUSE_BUTTON), args, 2); + } + } + + wname = ModeToWidgetName(oldmode); + if (wname != NULL) { + XtSetArg(args[0], XtNleftBitmap, None); + XtSetValues(XtNameToWidget(menuBarWidget, wname), args, 1); + } + wname = ModeToWidgetName(gameMode); + if (wname != NULL) { + XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); + XtSetValues(XtNameToWidget(menuBarWidget, wname), args, 1); + } + oldmode = gameMode; + + /* Maybe all the enables should be handled here, not just this one */ + XtSetSensitive(XtNameToWidget(menuBarWidget, "menuMode.Training"), + gameMode == Training || gameMode == PlayFromGameFile); +} + + +/* + * Button/menu procedures + */ +void ResetProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + ResetGameEvent(); + AnalysisPopDown(); +} + +int LoadGamePopUp(f, gameNumber, title) + FILE *f; + int gameNumber; + char *title; +{ + cmailMsgLoaded = FALSE; + if (gameNumber == 0) { + int error = GameListBuild(f); + if (error) { + DisplayError("Cannot build game list", error); + } else if (!ListEmpty(&gameList) && + ((ListGame *) gameList.tailPred)->number > 1) { + GameListPopUp(f, title); + return TRUE; + } + GameListDestroy(); + gameNumber = 1; + } + return LoadGame(f, gameNumber, title, FALSE); +} + +void LoadGameProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + if (gameMode == AnalyzeMode || gameMode == AnalyzeFile) { + Reset(FALSE, TRUE); + } + FileNamePopUp("Load game file name?", "", LoadGamePopUp, "rb"); +} + +void LoadNextGameProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + ReloadGame(1); +} + +void LoadPrevGameProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + ReloadGame(-1); +} + +void ReloadGameProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + ReloadGame(0); +} + +void LoadNextPositionProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + ReloadPosition(1); +} + +void LoadPrevPositionProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + ReloadPosition(-1); +} + +void ReloadPositionProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + ReloadPosition(0); +} + +void LoadPositionProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + if (gameMode == AnalyzeMode || gameMode == AnalyzeFile) { + Reset(FALSE, TRUE); + } + FileNamePopUp("Load position file name?", "", LoadPosition, "rb"); +} + +void SaveGameProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + FileNamePopUp("Save game file name?", + DefaultFileName(appData.oldSaveStyle ? "game" : "pgn"), + SaveGame, "a"); +} + +void SavePositionProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + FileNamePopUp("Save position file name?", + DefaultFileName(appData.oldSaveStyle ? "pos" : "fen"), + SavePosition, "a"); +} + +void ReloadCmailMsgProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + ReloadCmailMsgEvent(FALSE); +} + +void MailMoveProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + MailMoveEvent(); +} + +/* this variable is shared between CopyPositionProc and SendPositionSelection */ +static char *selected_fen_position=NULL; + +static Boolean +SendPositionSelection(Widget w, Atom *selection, Atom *target, + Atom *type_return, XtPointer *value_return, + unsigned long *length_return, int *format_return) +{ + char *selection_tmp; + + if (!selected_fen_position) return False; /* should never happen */ + if (*target == XA_STRING){ + /* 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 */ + selection_tmp= XtMalloc(strlen(selected_fen_position)+16); + strcpy(selection_tmp, selected_fen_position); + + *value_return=selection_tmp; + *length_return=strlen(selection_tmp); + *type_return=XA_STRING; + *format_return = 8; /* bits per byte */ + return True; + } else { + return False; + } +} + +/* note: when called from menu all parameters are NULL, so no clue what the + * Widget which was clicked on was, or what the click event was + */ +void CopyPositionProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; + { + int ret; + + if (selected_fen_position) free(selected_fen_position); + selected_fen_position = (char *)PositionToFEN(currentMove,1); + 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; + } + } + +/* function called when the data to Paste is ready */ +static void +PastePositionCB(Widget w, XtPointer client_data, Atom *selection, + Atom *type, XtPointer value, unsigned long *len, int *format) +{ + char *fenstr=value; + if (value==NULL || *len==0) return; /* nothing had been selected to copy */ + fenstr[*len]='\0'; /* normally this string is terminated, but be safe */ + EditPositionPasteFEN(fenstr); + XtFree(value); +} + +/* called when Paste Position button is pressed, + * all parameters will be NULL */ +void PastePositionProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + XtGetSelectionValue(menuBarWidget, XA_PRIMARY, XA_STRING, + /* (XtSelectionCallbackProc) */ PastePositionCB, + NULL, /* client_data passed to PastePositionCB */ + + /* better to use the time field from the event that triggered the + * call to this function, but that isn't trivial to get + */ + CurrentTime + ); + return; +} + +static Boolean +SendGameSelection(Widget w, Atom *selection, Atom *target, + Atom *type_return, XtPointer *value_return, + unsigned long *length_return, int *format_return) +{ + char *selection_tmp; + + if (*target == XA_STRING){ + FILE* f = fopen(gameCopyFilename, "r"); + long len; + size_t count; + if (f == NULL) return False; + fseek(f, 0, 2); + len = ftell(f); + rewind(f); + selection_tmp = XtMalloc(len + 1); + count = fread(selection_tmp, 1, len, f); + if (len != count) { + XtFree(selection_tmp); + return False; + } + selection_tmp[len] = NULLCHAR; + *value_return = selection_tmp; + *length_return = len; + *type_return = XA_STRING; + *format_return = 8; /* bits per byte */ + return True; + } else { + return False; + } +} + +/* note: when called from menu all parameters are NULL, so no clue what the + * Widget which was clicked on was, or what the click event was + */ +void CopyGameProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + int ret; + + ret = SaveGameToFile(gameCopyFilename, FALSE); + if (!ret) return; + + ret = XtOwnSelection(menuBarWidget, XA_PRIMARY, + CurrentTime, + SendGameSelection, + NULL/* lose_ownership_proc */ , + NULL/* transfer_done_proc */); +} + +/* function called when the data to Paste is ready */ +static void +PasteGameCB(Widget w, XtPointer client_data, Atom *selection, + Atom *type, XtPointer value, unsigned long *len, int *format) +{ + FILE* f; + if (value == NULL || *len == 0) { + return; /* nothing had been selected to copy */ + } + f = fopen(gamePasteFilename, "w"); + if (f == NULL) { + DisplayError("Can't open temp file", errno); + return; + } + fwrite(value, 1, *len, f); + fclose(f); + XtFree(value); + LoadGameFromFile(gamePasteFilename, 0, gamePasteFilename, TRUE); +} + +/* called when Paste Game button is pressed, + * all parameters will be NULL */ +void PasteGameProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + XtGetSelectionValue(menuBarWidget, XA_PRIMARY, XA_STRING, + /* (XtSelectionCallbackProc) */ PasteGameCB, + NULL, /* client_data passed to PasteGameCB */ + + /* better to use the time field from the event that triggered the + * call to this function, but that isn't trivial to get + */ + CurrentTime + ); + return; +} + + +void AutoSaveGame() +{ + SaveGameProc(NULL, NULL, NULL, NULL); +} + + +void QuitProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + ExitEvent(0); +} + +void PauseProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + PauseEvent(); +} + + +void MachineBlackProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + MachineBlackEvent(); +} + +void MachineWhiteProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + MachineWhiteEvent(); +} + +void AnalyzeModeProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + if (!first.analysisSupport) { + char buf[MSG_SIZ]; + sprintf(buf, "%s does not support analysis", first.tidy); + DisplayError(buf, 0); + return; + } + if (!appData.showThinking) + ShowThinkingProc(w,event,prms,nprms); + + AnalyzeModeEvent(); +} + +void AnalyzeFileProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + if (!first.analysisSupport) { + char buf[MSG_SIZ]; + sprintf(buf, "%s does not support analysis", first.tidy); + DisplayError(buf, 0); + return; + } + Reset(FALSE, TRUE); + + if (!appData.showThinking) + ShowThinkingProc(w,event,prms,nprms); + + AnalyzeFileEvent(); + FileNamePopUp("File to analyze", "", LoadGamePopUp, "rb"); + AnalysisPeriodicEvent(1); +} + +void TwoMachinesProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + TwoMachinesEvent(); +} + +void IcsClientProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + IcsClientEvent(); +} + +void EditGameProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + EditGameEvent(); +} + +void EditPositionProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + EditPositionEvent(); +} + +void TrainingProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + TrainingEvent(); +} + +void EditCommentProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + if (editUp) { + EditCommentPopDown(); + } else { + EditCommentEvent(); + } +} + +void IcsInputBoxProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + if (ICSInputBoxUp) { + ICSInputBoxPopDown(); + } else { + ICSInputBoxPopUp(); + } +} + +void AcceptProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + AcceptEvent(); +} + +void DeclineProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + DeclineEvent(); +} + +void RematchProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + RematchEvent(); +} + +void CallFlagProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + CallFlagEvent(); +} + +void DrawProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + DrawEvent(); +} + +void AbortProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + AbortEvent(); +} + +void AdjournProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + AdjournEvent(); +} + +void ResignProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + ResignEvent(); +} + +void EnterKeyProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + if (ICSInputBoxUp == True) + ICSInputSendText(); +} + +void StopObservingProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + StopObservingEvent(); +} + +void StopExaminingProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + StopExaminingEvent(); +} + + +void ForwardProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + ForwardEvent(); +} + + +void BackwardProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + BackwardEvent(); +} + +void ToStartProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + ToStartEvent(); +} + +void ToEndProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + ToEndEvent(); +} + +void RevertProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + RevertEvent(); +} + +void TruncateGameProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + TruncateGameEvent(); +} +void RetractMoveProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + RetractMoveEvent(); +} + +void MoveNowProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + MoveNowEvent(); +} + + +void AlwaysQueenProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + Arg args[16]; + + appData.alwaysPromoteToQueen = !appData.alwaysPromoteToQueen; + + if (appData.alwaysPromoteToQueen) { + XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); + } else { + XtSetArg(args[0], XtNleftBitmap, None); + } + XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Always Queen"), + args, 1); +} + +void AnimateDraggingProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + Arg args[16]; + + appData.animateDragging = !appData.animateDragging; + + if (appData.animateDragging) { + XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); + CreateAnimVars(); + } else { + XtSetArg(args[0], XtNleftBitmap, None); + } + XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Animate Dragging"), + args, 1); +} + +void AnimateMovingProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + Arg args[16]; + + appData.animate = !appData.animate; + + if (appData.animate) { + XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); + CreateAnimVars(); + } else { + XtSetArg(args[0], XtNleftBitmap, None); + } + XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Animate Moving"), + args, 1); +} + +void AutocommProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + Arg args[16]; + + appData.autoComment = !appData.autoComment; + + if (appData.autoComment) { + XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); + } else { + XtSetArg(args[0], XtNleftBitmap, None); + } + XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Auto Comment"), + args, 1); +} + + +void AutoflagProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + Arg args[16]; + + appData.autoCallFlag = !appData.autoCallFlag; + + if (appData.autoCallFlag) { + XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); + } else { + XtSetArg(args[0], XtNleftBitmap, None); + } + XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Auto Flag"), + args, 1); +} + +void AutoflipProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + Arg args[16]; + + appData.autoFlipView = !appData.autoFlipView; + + if (appData.autoFlipView) { + XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); + } else { + XtSetArg(args[0], XtNleftBitmap, None); + } + XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Auto Flip View"), + args, 1); +} + +void AutobsProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + Arg args[16]; + + appData.autoObserve = !appData.autoObserve; + + if (appData.autoObserve) { + XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); + } else { + XtSetArg(args[0], XtNleftBitmap, None); + } + XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Auto Observe"), + args, 1); +} + +void AutoraiseProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + Arg args[16]; + + appData.autoRaiseBoard = !appData.autoRaiseBoard; + + if (appData.autoRaiseBoard) { + XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); + } else { + XtSetArg(args[0], XtNleftBitmap, None); + } + XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Auto Raise Board"), + args, 1); +} + +void AutosaveProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + Arg args[16]; + + appData.autoSaveGames = !appData.autoSaveGames; + + if (appData.autoSaveGames) { + XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); + } else { + XtSetArg(args[0], XtNleftBitmap, None); + } + XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Auto Save"), + args, 1); +} + +void BlindfoldProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + Arg args[16]; + + appData.blindfold = !appData.blindfold; + + if (appData.blindfold) { + XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); + } else { + XtSetArg(args[0], XtNleftBitmap, None); + } + XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Blindfold"), + args, 1); + + DrawPosition(True, NULL); +} + +void TestLegalityProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + Arg args[16]; + + appData.testLegality = !appData.testLegality; + + if (appData.testLegality) { + XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); + } else { + XtSetArg(args[0], XtNleftBitmap, None); + } + XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Test Legality"), + args, 1); +} + + +void FlashMovesProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + Arg args[16]; + + if (appData.flashCount == 0) { + appData.flashCount = 3; + } else { + appData.flashCount = -appData.flashCount; + } + + if (appData.flashCount > 0) { + XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); + } else { + XtSetArg(args[0], XtNleftBitmap, None); + } + XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Flash Moves"), + args, 1); +} + +void FlipViewProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + flipView = !flipView; + DrawPosition(True, NULL); +} + +void GetMoveListProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + Arg args[16]; + + appData.getMoveList = !appData.getMoveList; + + if (appData.getMoveList) { + XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); + GetMoveListEvent(); + } else { + XtSetArg(args[0], XtNleftBitmap, None); + } + XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Get Move List"), + args, 1); +} + +#if HIGHDRAG +void HighlightDraggingProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + Arg args[16]; + + appData.highlightDragging = !appData.highlightDragging; + + if (appData.highlightDragging) { + XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); + } else { + XtSetArg(args[0], XtNleftBitmap, None); + } + XtSetValues(XtNameToWidget(menuBarWidget, + "menuOptions.Highlight Dragging"), args, 1); +} +#endif + +void HighlightLastMoveProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + Arg args[16]; + + appData.highlightLastMove = !appData.highlightLastMove; + + if (appData.highlightLastMove) { + XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); + } else { + XtSetArg(args[0], XtNleftBitmap, None); + } + XtSetValues(XtNameToWidget(menuBarWidget, + "menuOptions.Highlight Last Move"), args, 1); +} + +void IcsAlarmProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + Arg args[16]; + + appData.icsAlarm = !appData.icsAlarm; + + if (appData.icsAlarm) { + XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); + } else { + XtSetArg(args[0], XtNleftBitmap, None); + } + XtSetValues(XtNameToWidget(menuBarWidget, + "menuOptions.ICS Alarm"), args, 1); +} + +void MoveSoundProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + Arg args[16]; + + appData.ringBellAfterMoves = !appData.ringBellAfterMoves; + + if (appData.ringBellAfterMoves) { + XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); + } else { + XtSetArg(args[0], XtNleftBitmap, None); + } + XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Move Sound"), + args, 1); +} + + +void OldSaveStyleProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + Arg args[16]; + + appData.oldSaveStyle = !appData.oldSaveStyle; + + if (appData.oldSaveStyle) { + XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); + } else { + XtSetArg(args[0], XtNleftBitmap, None); + } + XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Old Save Style"), + args, 1); +} + +void PeriodicUpdatesProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + Arg args[16]; + + PeriodicUpdatesEvent(!appData.periodicUpdates); + + if (appData.periodicUpdates) { + XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); + } else { + XtSetArg(args[0], XtNleftBitmap, None); + } + XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Periodic Updates"), + args, 1); +} + +void PonderNextMoveProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + Arg args[16]; + + PonderNextMoveEvent(!appData.ponderNextMove); + + if (appData.ponderNextMove) { + XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); + } else { + XtSetArg(args[0], XtNleftBitmap, None); + } + XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Ponder Next Move"), + args, 1); +} + +void PopupExitMessageProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + Arg args[16]; + + appData.popupExitMessage = !appData.popupExitMessage; + + if (appData.popupExitMessage) { + XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); + } else { + XtSetArg(args[0], XtNleftBitmap, None); + } + XtSetValues(XtNameToWidget(menuBarWidget, + "menuOptions.Popup Exit Message"), args, 1); +} + +void PopupMoveErrorsProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + Arg args[16]; + + appData.popupMoveErrors = !appData.popupMoveErrors; + + if (appData.popupMoveErrors) { + XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); + } else { + XtSetArg(args[0], XtNleftBitmap, None); + } + XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Popup Move Errors"), + args, 1); +} + +void PremoveProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + Arg args[16]; + + appData.premove = !appData.premove; + + if (appData.premove) { + XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); + } else { + XtSetArg(args[0], XtNleftBitmap, None); + } + XtSetValues(XtNameToWidget(menuBarWidget, + "menuOptions.Premove"), args, 1); +} + +void QuietPlayProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + Arg args[16]; + + appData.quietPlay = !appData.quietPlay; + + if (appData.quietPlay) { + XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); + } else { + XtSetArg(args[0], XtNleftBitmap, None); + } + XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Quiet Play"), + args, 1); +} + +void ShowCoordsProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + Arg args[16]; + + appData.showCoords = !appData.showCoords; + + if (appData.showCoords) { + XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); + } else { + XtSetArg(args[0], XtNleftBitmap, None); + } + XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Show Coords"), + args, 1); + + DrawPosition(True, NULL); +} + +void ShowThinkingProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + Arg args[16]; + + ShowThinkingEvent(!appData.showThinking); + + if (appData.showThinking) { + XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); + } else { + XtSetArg(args[0], XtNleftBitmap, None); + } + XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Show Thinking"), + args, 1); +} + +void InfoProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + char buf[MSG_SIZ]; + sprintf(buf, "xterm -e info --directory %s --directory . -f %s &", + INFODIR, INFOFILE); + system(buf); +} + +void ManProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + char buf[MSG_SIZ]; + String name; + if (nprms && *nprms > 0) + name = prms[0]; + else + name = "xboard"; + sprintf(buf, "xterm -e man %s &", name); + system(buf); +} + +void HintProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + HintEvent(); +} + +void BookProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + BookEvent(); +} + +void AboutProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + char buf[MSG_SIZ]; +#if ZIPPY + char *zippy = " (with Zippy code)"; +#else + char *zippy = ""; +#endif + sprintf(buf, "%s%s\n\n%s\n%s\n\n%s%s\n%s", + programVersion, zippy, + "Copyright 1991 Digital Equipment Corporation", + "Enhancements Copyright 1992-2001 Free Software Foundation", + PRODUCT, " is free software and carries NO WARRANTY;", + "see the file COPYING for more information."); + ErrorPopUp("About XBoard", buf, FALSE); +} + +void DebugProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + appData.debugMode = !appData.debugMode; +} + +void AboutGameProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + AboutGameEvent(); +} + +void NothingProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + return; +} + +void Iconify(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + Arg args[16]; + + fromX = fromY = -1; + XtSetArg(args[0], XtNiconic, True); + XtSetValues(shellWidget, args, 1); +} + +void DisplayMessage(message, extMessage) + char *message, *extMessage; +{ + char buf[MSG_SIZ]; + Arg arg; + + if (extMessage) { + if (*message) { + sprintf(buf, "%s %s", message, extMessage); + message = buf; + } else { + message = extMessage; + } + } + XtSetArg(arg, XtNlabel, message); + XtSetValues(messageWidget, &arg, 1); +} + +void DisplayTitle(text) + char *text; +{ + Arg args[16]; + int i; + char title[MSG_SIZ]; + char icon[MSG_SIZ]; + + if (text == NULL) text = ""; + + if (appData.titleInWindow) { + i = 0; + XtSetArg(args[i], XtNlabel, text); i++; + XtSetValues(titleWidget, args, i); + } + + if (*text != NULLCHAR) { + strcpy(icon, text); + strcpy(title, text); + } else if (appData.icsActive) { + sprintf(icon, "%s", appData.icsHost); + sprintf(title, "%s: %s", programName, appData.icsHost); + } else if (appData.cmailGameName[0] != NULLCHAR) { + sprintf(icon, "%s", "CMail"); + sprintf(title, "%s: %s", programName, "CMail"); + } else if (appData.noChessProgram) { + strcpy(icon, programName); + strcpy(title, programName); + } else { + strcpy(icon, first.tidy); + sprintf(title, "%s: %s", programName, first.tidy); + } + i = 0; + XtSetArg(args[i], XtNiconName, (XtArgVal) icon); i++; + XtSetArg(args[i], XtNtitle, (XtArgVal) title); i++; + XtSetValues(shellWidget, args, i); +} + + +void DisplayError(message, error) + String message; + int error; +{ + char buf[MSG_SIZ]; + + if (error == 0) { + if (appData.debugMode || appData.matchMode) { + fprintf(stderr, "%s: %s\n", programName, message); + } + } else { + if (appData.debugMode || appData.matchMode) { + fprintf(stderr, "%s: %s: %s\n", + programName, message, strerror(error)); + } + sprintf(buf, "%s: %s", message, strerror(error)); + message = buf; + } + ErrorPopUp("Error", message, FALSE); +} + + +void DisplayMoveError(message) + String message; +{ + fromX = fromY = -1; + ClearHighlights(); + DrawPosition(FALSE, NULL); + if (appData.debugMode || appData.matchMode) { + fprintf(stderr, "%s: %s\n", programName, message); + } + if (appData.popupMoveErrors) { + ErrorPopUp("Error", message, FALSE); + } else { + DisplayMessage(message, ""); + } +} + + +void DisplayFatalError(message, error, status) + String message; + int error, status; +{ + char buf[MSG_SIZ]; + + errorExitStatus = status; + if (error == 0) { + fprintf(stderr, "%s: %s\n", programName, message); + } else { + fprintf(stderr, "%s: %s: %s\n", + programName, message, strerror(error)); + sprintf(buf, "%s: %s", message, strerror(error)); + message = buf; + } + if (appData.popupExitMessage && boardWidget && XtIsRealized(boardWidget)) { + ErrorPopUp(status ? "Fatal Error" : "Exiting", message, TRUE); + } else { + ExitEvent(status); + } +} + +void DisplayInformation(message) + String message; +{ + ErrorPopDown(); + ErrorPopUp("Information", message, TRUE); +} + +void DisplayNote(message) + String message; +{ + ErrorPopDown(); + ErrorPopUp("Note", message, FALSE); +} + +static int +NullXErrorCheck(dpy, error_event) + Display *dpy; + XErrorEvent *error_event; +{ + return 0; +} + +void DisplayIcsInteractionTitle(message) + String message; +{ + if (oldICSInteractionTitle == NULL) { + /* Magic to find the old window title, adapted from vim */ + char *wina = getenv("WINDOWID"); + if (wina != NULL) { + Window win = (Window) atoi(wina); + Window root, parent, *children; + unsigned int nchildren; + int (*oldHandler)() = XSetErrorHandler(NullXErrorCheck); + for (;;) { + if (XFetchName(xDisplay, win, &oldICSInteractionTitle)) break; + if (!XQueryTree(xDisplay, win, &root, &parent, + &children, &nchildren)) break; + if (children) XFree((void *)children); + if (parent == root || parent == 0) break; + win = parent; + } + XSetErrorHandler(oldHandler); + } + if (oldICSInteractionTitle == NULL) { + oldICSInteractionTitle = "xterm"; + } + } + printf("\033]0;%s\007", message); + fflush(stdout); +} + +char pendingReplyPrefix[MSG_SIZ]; +ProcRef pendingReplyPR; + +void AskQuestionProc(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + if (*nprms != 4) { + fprintf(stderr, "AskQuestionProc needed 4 parameters, got %d\n", + *nprms); + return; + } + AskQuestionEvent(prms[0], prms[1], prms[2], prms[3]); +} + +void AskQuestionPopDown() +{ + if (!askQuestionUp) return; + XtPopdown(askQuestionShell); + XtDestroyWidget(askQuestionShell); + askQuestionUp = False; +} + +void AskQuestionReplyAction(w, event, prms, nprms) + Widget w; + XEvent *event; + String *prms; + Cardinal *nprms; +{ + char buf[MSG_SIZ]; + int err; + String reply; + + reply = XawDialogGetValueString(w = XtParent(w)); + strcpy(buf, pendingReplyPrefix); + if (*buf) strcat(buf, " "); + strcat(buf, reply); + strcat(buf, "\n"); + OutputToProcess(pendingReplyPR, buf, strlen(buf), &err); + AskQuestionPopDown(); + + if (err) DisplayFatalError("Error writing to chess program", err, 0); +} + +void AskQuestionCallback(w, client_data, call_data) + Widget w; + XtPointer client_data, call_data; +{ + String name; + Arg args[16]; + + XtSetArg(args[0], XtNlabel, &name); + XtGetValues(w, args, 1); + + if (strcmp(name, "cancel") == 0) { + AskQuestionPopDown(); + } else { + AskQuestionReplyAction(w, NULL, NULL, NULL); + } +} + +void AskQuestion(title, question, replyPrefix, pr) + char *title, *question, *replyPrefix; + ProcRef pr; +{ + Arg args[16]; + Widget popup, layout, dialog, edit; + Window root, child; + int x, y, i; + int win_x, win_y; + unsigned int mask; + + strcpy(pendingReplyPrefix, replyPrefix); + pendingReplyPR = pr; + + i = 0; + XtSetArg(args[i], XtNresizable, True); i++; + XtSetArg(args[i], XtNwidth, DIALOG_SIZE); i++; + askQuestionShell = popup = + XtCreatePopupShell(title, transientShellWidgetClass, + shellWidget, args, i); + + layout = + XtCreateManagedWidget(layoutName, formWidgetClass, popup, + layoutArgs, XtNumber(layoutArgs)); + + i = 0; + XtSetArg(args[i], XtNlabel, question); i++; + XtSetArg(args[i], XtNvalue, ""); i++; + XtSetArg(args[i], XtNborderWidth, 0); i++; + dialog = XtCreateManagedWidget("question", dialogWidgetClass, + layout, args, i); + + XawDialogAddButton(dialog, "enter", AskQuestionCallback, + (XtPointer) dialog); + XawDialogAddButton(dialog, "cancel", AskQuestionCallback, + (XtPointer) dialog); + + XtRealizeWidget(popup); + CatchDeleteWindow(popup, "AskQuestionPopDown"); + + 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); + askQuestionUp = True; + + edit = XtNameToWidget(dialog, "*value"); + XtSetKeyboardFocus(popup, edit); +} + + +void +PlaySound(name) + char *name; +{ + if (*name == NULLCHAR) { + return; + } else if (strcmp(name, "$") == 0) { + putc(BELLCHAR, stderr); + } else { + char buf[2048]; + sprintf(buf, "%s '%s' &", appData.soundProgram, name); + system(buf); + } +} + +void +RingBell() +{ + PlaySound(appData.soundMove); +} + +void +PlayIcsWinSound() +{ + PlaySound(appData.soundIcsWin); +} + +void +PlayIcsLossSound() +{ + PlaySound(appData.soundIcsLoss); +} + +void +PlayIcsDrawSound() +{ + PlaySound(appData.soundIcsDraw); +} + +void +PlayIcsUnfinishedSound() +{ + PlaySound(appData.soundIcsUnfinished); +} + +void +PlayAlarmSound() +{ + PlaySound(appData.soundIcsAlarm); +} + +void +EchoOn() +{ + system("stty echo"); +} + +void +EchoOff() +{ + system("stty -echo"); +} + +void +Colorize(cc, continuation) + ColorClass cc; + int continuation; +{ + char buf[MSG_SIZ]; + int count, outCount, error; + + if (textColors[(int)cc].bg > 0) { + if (textColors[(int)cc].fg > 0) { + sprintf(buf, "\033[0;%d;%d;%dm", textColors[(int)cc].attr, + textColors[(int)cc].fg, textColors[(int)cc].bg); + } else { + sprintf(buf, "\033[0;%d;%dm", textColors[(int)cc].attr, + textColors[(int)cc].bg); + } + } else { + if (textColors[(int)cc].fg > 0) { + sprintf(buf, "\033[0;%d;%dm", textColors[(int)cc].attr, + textColors[(int)cc].fg); + } else { + sprintf(buf, "\033[0;%dm", textColors[(int)cc].attr); + } + } + count = strlen(buf); + outCount = OutputToProcess(NoProc, buf, count, &error); + if (outCount < count) { + DisplayFatalError("Error writing to display", error, 1); + } + + if (continuation) return; + switch (cc) { + case ColorShout: + PlaySound(appData.soundShout); + break; + case ColorSShout: + PlaySound(appData.soundSShout); + break; + case ColorChannel1: + PlaySound(appData.soundChannel1); + break; + case ColorChannel: + PlaySound(appData.soundChannel); + break; + case ColorKibitz: + PlaySound(appData.soundKibitz); + break; + case ColorTell: + PlaySound(appData.soundTell); + break; + case ColorChallenge: + PlaySound(appData.soundChallenge); + break; + case ColorRequest: + PlaySound(appData.soundRequest); + break; + case ColorSeek: + PlaySound(appData.soundSeek); + break; + case ColorNormal: + case ColorNone: + default: + break; + } +} + +char *UserName() +{ + return getpwuid(getuid())->pw_name; +} + +static char *ExpandPathName(path) + char *path; +{ + static char static_buf[2000]; + char *d, *s, buf[2000]; + struct passwd *pwd; + + s = path; + d = static_buf; + + while (*s && isspace(*s)) + ++s; + + if (!*s) { + *d = 0; + return static_buf; + } + + if (*s == '~') { + if (*(s+1) == '/') { + strcpy(d, getpwuid(getuid())->pw_dir); + strcat(d, s+1); + } + else { + strcpy(buf, s+1); + *strchr(buf, '/') = 0; + pwd = getpwnam(buf); + if (!pwd) + { + fprintf(stderr, "ERROR: Unknown user %s (in path %s)\n", + buf, path); + return NULL; + } + strcpy(d, pwd->pw_dir); + strcat(d, strchr(s+1, '/')); + } + } + else + strcpy(d, s); + + return static_buf; +} + +char *HostName() +{ + static char host_name[MSG_SIZ]; + +#if HAVE_GETHOSTNAME + gethostname(host_name, MSG_SIZ); + return host_name; +#else /* not HAVE_GETHOSTNAME */ +# if HAVE_SYSINFO && HAVE_SYS_SYSTEMINFO_H + sysinfo(SI_HOSTNAME, host_name, MSG_SIZ); + return host_name; +# else /* not (HAVE_SYSINFO && HAVE_SYS_SYSTEMINFO_H) */ + return "localhost"; +# endif/* not (HAVE_SYSINFO && HAVE_SYS_SYSTEMINFO_H) */ +#endif /* not HAVE_GETHOSTNAME */ +} + +XtIntervalId delayedEventTimerXID = 0; +DelayedEventCallback delayedEventCallback = 0; + +void +FireDelayedEvent() +{ + delayedEventTimerXID = 0; + delayedEventCallback(); +} + +void +ScheduleDelayedEvent(cb, millisec) + DelayedEventCallback cb; long millisec; +{ + delayedEventCallback = cb; + delayedEventTimerXID = + XtAppAddTimeOut(appContext, millisec, + (XtTimerCallbackProc) FireDelayedEvent, (XtPointer) 0); +} + +DelayedEventCallback +GetDelayedEvent() +{ + if (delayedEventTimerXID) { + return delayedEventCallback; + } else { + return NULL; + } +} + +void +CancelDelayedEvent() +{ + if (delayedEventTimerXID) { + XtRemoveTimeOut(delayedEventTimerXID); + delayedEventTimerXID = 0; + } +} + +XtIntervalId loadGameTimerXID = 0; + +int LoadGameTimerRunning() +{ + return loadGameTimerXID != 0; +} + +int StopLoadGameTimer() +{ + if (loadGameTimerXID != 0) { + XtRemoveTimeOut(loadGameTimerXID); + loadGameTimerXID = 0; + return TRUE; + } else { + return FALSE; + } +} + +void +LoadGameTimerCallback(arg, id) + XtPointer arg; + XtIntervalId *id; +{ + loadGameTimerXID = 0; + AutoPlayGameLoop(); +} + +void +StartLoadGameTimer(millisec) + long millisec; +{ + loadGameTimerXID = + XtAppAddTimeOut(appContext, millisec, + (XtTimerCallbackProc) LoadGameTimerCallback, + (XtPointer) 0); +} + +XtIntervalId analysisClockXID = 0; + +void +AnalysisClockCallback(arg, id) + XtPointer arg; + XtIntervalId *id; +{ + if (gameMode == AnalyzeMode || gameMode == AnalyzeFile) { + AnalysisPeriodicEvent(0); + StartAnalysisClock(); + } +} + +void +StartAnalysisClock() +{ + analysisClockXID = + XtAppAddTimeOut(appContext, 2000, + (XtTimerCallbackProc) AnalysisClockCallback, + (XtPointer) 0); +} + +XtIntervalId clockTimerXID = 0; + +int ClockTimerRunning() +{ + return clockTimerXID != 0; +} + +int StopClockTimer() +{ + if (clockTimerXID != 0) { + XtRemoveTimeOut(clockTimerXID); + clockTimerXID = 0; + return TRUE; + } else { + return FALSE; + } +} + +void +ClockTimerCallback(arg, id) + XtPointer arg; + XtIntervalId *id; +{ + clockTimerXID = 0; + DecrementClocks(); +} + +void +StartClockTimer(millisec) + long millisec; +{ + clockTimerXID = + XtAppAddTimeOut(appContext, millisec, + (XtTimerCallbackProc) ClockTimerCallback, + (XtPointer) 0); +} + +void +DisplayTimerLabel(w, color, timer, highlight) + Widget w; + char *color; + long timer; + int highlight; +{ + char buf[MSG_SIZ]; + Arg args[16]; + + if (appData.clockMode) { + sprintf(buf, "%s: %s", color, TimeString(timer)); + XtSetArg(args[0], XtNlabel, buf); + } else { + sprintf(buf, "%s ", color); + XtSetArg(args[0], XtNlabel, buf); + } + + if (highlight) { + XtSetArg(args[1], XtNbackground, timerForegroundPixel); + XtSetArg(args[2], XtNforeground, timerBackgroundPixel); + } else { + XtSetArg(args[1], XtNbackground, timerBackgroundPixel); + XtSetArg(args[2], XtNforeground, timerForegroundPixel); + } + + XtSetValues(w, args, 3); +} + +void +DisplayWhiteClock(timeRemaining, highlight) + long timeRemaining; + int highlight; +{ + Arg args[16]; + DisplayTimerLabel(whiteTimerWidget, "White", timeRemaining, highlight); + if (highlight && iconPixmap == bIconPixmap) { + iconPixmap = wIconPixmap; + XtSetArg(args[0], XtNiconPixmap, iconPixmap); + XtSetValues(shellWidget, args, 1); + } +} + +void +DisplayBlackClock(timeRemaining, highlight) + long timeRemaining; + int highlight; +{ + Arg args[16]; + DisplayTimerLabel(blackTimerWidget, "Black", timeRemaining, highlight); + if (highlight && iconPixmap == wIconPixmap) { + iconPixmap = bIconPixmap; + XtSetArg(args[0], XtNiconPixmap, iconPixmap); + XtSetValues(shellWidget, args, 1); + } +} + +#define CPNone 0 +#define CPReal 1 +#define CPComm 2 +#define CPSock 3 +#define CPLoop 4 +typedef int CPKind; + +typedef struct { + CPKind kind; + int pid; + int fdTo, fdFrom; +} ChildProc; + + +int StartChildProcess(cmdLine, dir, pr) + char *cmdLine; + char *dir; + ProcRef *pr; +{ + char *argv[64], *p; + int i, pid; + int to_prog[2], from_prog[2]; + ChildProc *cp; + char buf[MSG_SIZ]; + + if (appData.debugMode) { + fprintf(stderr, "StartChildProcess (dir=\"%s\") %s\n",dir, cmdLine); + } + + /* We do NOT feed the cmdLine to the shell; we just + parse it into blank-separated arguments in the + most simple-minded way possible. + */ + i = 0; + strcpy(buf, cmdLine); + p = buf; + for (;;) { + argv[i++] = p; + p = strchr(p, ' '); + if (p == NULL) break; + *p++ = NULLCHAR; + } + argv[i] = NULL; + + SetUpChildIO(to_prog, from_prog); + + if ((pid = fork()) == 0) { + /* Child process */ + dup2(to_prog[0], 0); + dup2(from_prog[1], 1); + close(to_prog[0]); + close(to_prog[1]); + close(from_prog[0]); + close(from_prog[1]); + dup2(1, fileno(stderr)); /* force stderr to the pipe */ + + if (dir[0] != NULLCHAR && chdir(dir) != 0) { + perror(dir); + exit(1); + } + + execvp(argv[0], argv); + + /* If we get here, exec failed */ + perror(argv[0]); + exit(1); + } + + /* Parent process */ + close(to_prog[0]); + close(from_prog[1]); + + cp = (ChildProc *) calloc(1, sizeof(ChildProc)); + cp->kind = CPReal; + cp->pid = pid; + cp->fdFrom = from_prog[0]; + cp->fdTo = to_prog[1]; + *pr = (ProcRef) cp; + return 0; +} + +void +DestroyChildProcess(pr, signal) + ProcRef pr; + int signal; +{ + ChildProc *cp = (ChildProc *) pr; + + if (cp->kind != CPReal) return; + cp->kind = CPNone; + if (signal) { + kill(cp->pid, SIGTERM); + } + /* Process is exiting either because of the kill or because of + a quit command sent by the backend; either way, wait for it to die. + */ + wait((int *) 0); + close(cp->fdFrom); + close(cp->fdTo); +} + +void +InterruptChildProcess(pr) + ProcRef pr; +{ + ChildProc *cp = (ChildProc *) pr; + + if (cp->kind != CPReal) return; + (void) kill(cp->pid, SIGINT); /* stop it thinking */ +} + +int OpenTelnet(host, port, pr) + 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); +} + +int OpenTCP(host, port, pr) + char *host; + char *port; + ProcRef *pr; +{ +#if OMIT_SOCKETS + DisplayFatalError("Socket support is not configured in", 0, 2); +#else /* !OMIT_SOCKETS */ + int s; + struct sockaddr_in sa; + struct hostent *hp; + unsigned short uport; + ChildProc *cp; + + if ((s = socket(AF_INET, SOCK_STREAM, 6)) < 0) { + return errno; + } + + memset((char *) &sa, (int)0, sizeof(struct sockaddr_in)); + sa.sin_family = AF_INET; + sa.sin_addr.s_addr = INADDR_ANY; + uport = (unsigned short) 0; + sa.sin_port = htons(uport); + if (bind(s, (struct sockaddr *) &sa, sizeof(struct sockaddr_in)) < 0) { + return errno; + } + + memset((char *) &sa, (int)0, sizeof(struct sockaddr_in)); + if (!(hp = gethostbyname(host))) { + int b0, b1, b2, b3; + if (sscanf(host, "%d.%d.%d.%d", &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] = b0; + hp->h_addr_list[0][1] = b1; + hp->h_addr_list[0][2] = b2; + hp->h_addr_list[0][3] = b3; + } else { + return ENOENT; + } + } + 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); + + if (connect(s, (struct sockaddr *) &sa, + sizeof(struct sockaddr_in)) < 0) { + return errno; + } + + cp = (ChildProc *) calloc(1, sizeof(ChildProc)); + cp->kind = CPSock; + cp->pid = 0; + cp->fdFrom = s; + cp->fdTo = s; + *pr = (ProcRef) cp; + +#endif /* !OMIT_SOCKETS */ + + return 0; +} + +int OpenCommPort(name, pr) + char *name; + ProcRef *pr; +{ + int fd; + ChildProc *cp; + + fd = open(name, 2, 0); + if (fd < 0) return errno; + + cp = (ChildProc *) calloc(1, sizeof(ChildProc)); + cp->kind = CPComm; + cp->pid = 0; + cp->fdFrom = fd; + cp->fdTo = fd; + *pr = (ProcRef) cp; + + return 0; +} + +int OpenLoopback(pr) + ProcRef *pr; +{ + ChildProc *cp; + int to[2], from[2]; + + SetUpChildIO(to, from); + + cp = (ChildProc *) calloc(1, sizeof(ChildProc)); + cp->kind = CPLoop; + cp->pid = 0; + cp->fdFrom = to[0]; /* note not from[0]; we are doing a loopback */ + cp->fdTo = to[1]; + *pr = (ProcRef) cp; + + return 0; +} + +int OpenRcmd(host, user, cmd, pr) + char *host, *user, *cmd; + ProcRef *pr; +{ + DisplayFatalError("internal rcmd not implemented for Unix", 0, 1); + return -1; +} + +#define INPUT_SOURCE_BUF_SIZE 8192 + +typedef struct { + CPKind kind; + int fd; + int lineByLine; + char *unused; + InputCallback func; + XtInputId xid; + char buf[INPUT_SOURCE_BUF_SIZE]; + VOIDSTAR closure; +} InputSource; + +void +DoInputCallback(closure, source, xid) + caddr_t closure; + int *source; + XtInputId *xid; +{ + InputSource *is = (InputSource *) closure; + int count; + int error; + char *p, *q; + + if (is->lineByLine) { + count = read(is->fd, is->unused, + INPUT_SOURCE_BUF_SIZE - (is->unused - is->buf)); + if (count <= 0) { + (is->func)(is, is->closure, is->buf, count, count ? errno : 0); + return; + } + is->unused += count; + p = is->buf; + while (p < is->unused) { + q = memchr(p, '\n', is->unused - p); + if (q == NULL) break; + q++; + (is->func)(is, is->closure, p, q - p, 0); + p = q; + } + q = is->buf; + while (p < is->unused) { + *q++ = *p++; + } + is->unused = q; + } else { + count = read(is->fd, is->buf, INPUT_SOURCE_BUF_SIZE); + if (count == -1) + error = errno; + else + error = 0; + (is->func)(is, is->closure, is->buf, count, error); + } +} + +InputSourceRef AddInputSource(pr, lineByLine, func, closure) + ProcRef pr; + int lineByLine; + InputCallback func; + VOIDSTAR closure; +{ + InputSource *is; + ChildProc *cp = (ChildProc *) pr; + + is = (InputSource *) calloc(1, sizeof(InputSource)); + is->lineByLine = lineByLine; + is->func = func; + if (pr == NoProc) { + is->kind = CPReal; + is->fd = fileno(stdin); + } else { + is->kind = cp->kind; + is->fd = cp->fdFrom; + } + if (lineByLine) { + is->unused = is->buf; + } + + is->xid = XtAppAddInput(appContext, is->fd, + (XtPointer) (XtInputReadMask), + (XtInputCallbackProc) DoInputCallback, + (XtPointer) is); + is->closure = closure; + return (InputSourceRef) is; +} + +void +RemoveInputSource(isr) + InputSourceRef isr; +{ + InputSource *is = (InputSource *) isr; + + if (is->xid == 0) return; + XtRemoveInput(is->xid); + is->xid = 0; +} + +int OutputToProcess(pr, message, count, outError) + ProcRef pr; + char *message; + int count; + int *outError; +{ + ChildProc *cp = (ChildProc *) pr; + int outCount; + + if (pr == NoProc) + outCount = fwrite(message, 1, count, stdout); + else + outCount = write(cp->fdTo, message, count); + + if (outCount == -1) + *outError = errno; + else + *outError = 0; + + return outCount; +} + +/* Output message to process, with "ms" milliseconds of delay + between each character. This is needed when sending the logon + script to ICC, which for some reason doesn't like the + instantaneous send. */ +int OutputToProcessDelayed(pr, message, count, outError, msdelay) + ProcRef pr; + char *message; + int count; + int *outError; + long msdelay; +{ + ChildProc *cp = (ChildProc *) pr; + int outCount = 0; + int r; + + while (count--) { + r = write(cp->fdTo, message++, 1); + if (r == -1) { + *outError = errno; + return outCount; + } + ++outCount; + if (msdelay >= 0) + TimeDelay(msdelay); + } + + return outCount; +} + +/**** Animation code by Hugh Fisher, DCS, ANU. + + Known problem: if a window overlapping the board is + moved away while a piece is being animated underneath, + the newly exposed area won't be updated properly. + I can live with this. + + Known problem: if you look carefully at the animation + of pieces in mono mode, they are being drawn as solid + shapes without interior detail while moving. Fixing + this would be a major complication for minimal return. +****/ + +/* Masks for XPM pieces. Black and white pieces can have + different shapes, but in the interest of retaining my + sanity pieces must have the same outline on both light + and dark squares, and all pieces must use the same + background square colors/images. */ + +static void +CreateAnimMasks (pieceDepth) + int pieceDepth; +{ + ChessSquare piece; + Pixmap buf; + GC bufGC, maskGC; + int kind, n; + unsigned long plane; + XGCValues values; + + /* Need a bitmap just to get a GC with right depth */ + buf = XCreatePixmap(xDisplay, xBoardWindow, + 8, 8, 1); + values.foreground = 1; + values.background = 0; + /* Don't use XtGetGC, not read only */ + maskGC = XCreateGC(xDisplay, buf, + GCForeground | GCBackground, &values); + XFreePixmap(xDisplay, buf); + + buf = XCreatePixmap(xDisplay, xBoardWindow, + squareSize, squareSize, pieceDepth); + values.foreground = XBlackPixel(xDisplay, xScreen); + values.background = XWhitePixel(xDisplay, xScreen); + bufGC = XCreateGC(xDisplay, buf, + GCForeground | GCBackground, &values); + + for (piece = WhitePawn; piece <= BlackKing; piece++) { + /* Begin with empty mask */ + xpmMask[piece] = XCreatePixmap(xDisplay, xBoardWindow, + squareSize, squareSize, 1); + XSetFunction(xDisplay, maskGC, GXclear); + XFillRectangle(xDisplay, xpmMask[piece], maskGC, + 0, 0, squareSize, squareSize); + + /* Take a copy of the piece */ + if (White(piece)) + kind = 0; + else + kind = 2; + XSetFunction(xDisplay, bufGC, GXcopy); + XCopyArea(xDisplay, xpmPieceBitmap[kind][((int)piece) % (int)BlackPawn], + buf, bufGC, + 0, 0, squareSize, squareSize, 0, 0); + + /* XOR the background (light) over the piece */ + XSetFunction(xDisplay, bufGC, GXxor); + if (useImageSqs) + XCopyArea(xDisplay, xpmLightSquare, buf, bufGC, + 0, 0, squareSize, squareSize, 0, 0); + else { + XSetForeground(xDisplay, bufGC, lightSquareColor); + XFillRectangle(xDisplay, buf, bufGC, 0, 0, squareSize, squareSize); + } + + /* We now have an inverted piece image with the background + erased. Construct mask by just selecting all the non-zero + pixels - no need to reconstruct the original image. */ + XSetFunction(xDisplay, maskGC, GXor); + plane = 1; + /* Might be quicker to download an XImage and create bitmap + data from it rather than this N copies per piece, but it + only takes a fraction of a second and there is a much + longer delay for loading the pieces. */ + for (n = 0; n < pieceDepth; n ++) { + XCopyPlane(xDisplay, buf, xpmMask[piece], maskGC, + 0, 0, squareSize, squareSize, + 0, 0, plane); + plane = plane << 1; + } + } + /* Clean up */ + XFreePixmap(xDisplay, buf); + XFreeGC(xDisplay, bufGC); + XFreeGC(xDisplay, maskGC); +} + +static void +InitAnimState (anim, info) + AnimState * anim; + XWindowAttributes * info; +{ + XtGCMask mask; + XGCValues values; + + /* Each buffer is square size, same depth as window */ + anim->saveBuf = XCreatePixmap(xDisplay, xBoardWindow, + squareSize, squareSize, info->depth); + anim->newBuf = XCreatePixmap(xDisplay, xBoardWindow, + squareSize, squareSize, info->depth); + + /* Create a plain GC for blitting */ + mask = GCForeground | GCBackground | GCFunction | + GCPlaneMask | GCGraphicsExposures; + values.foreground = XBlackPixel(xDisplay, xScreen); + values.background = XWhitePixel(xDisplay, xScreen); + values.function = GXcopy; + values.plane_mask = AllPlanes; + values.graphics_exposures = False; + anim->blitGC = XCreateGC(xDisplay, xBoardWindow, mask, &values); + + /* Piece will be copied from an existing context at + the start of each new animation/drag. */ + anim->pieceGC = XCreateGC(xDisplay, xBoardWindow, 0, &values); + + /* Outline will be a read-only copy of an existing */ + anim->outlineGC = None; +} + +static void +CreateAnimVars () +{ + static int done = 0; + XWindowAttributes info; + + if (done) return; + done = 1; + XGetWindowAttributes(xDisplay, xBoardWindow, &info); + + InitAnimState(&game, &info); + InitAnimState(&player, &info); + + /* For XPM pieces, we need bitmaps to use as masks. */ + if (useImages) + CreateAnimMasks(info.depth); +} + +#ifndef HAVE_USLEEP + +static Boolean frameWaiting; + +static RETSIGTYPE FrameAlarm (sig) + int sig; +{ + frameWaiting = False; + /* In case System-V style signals. Needed?? */ + signal(SIGALRM, FrameAlarm); +} + +static void +FrameDelay (time) + int time; +{ + struct itimerval delay; + + XSync(xDisplay, False); + + if (time > 0) { + frameWaiting = True; + signal(SIGALRM, FrameAlarm); + delay.it_interval.tv_sec = + delay.it_value.tv_sec = time / 1000; + 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); + } +} + +#else + +static void +FrameDelay (time) + int time; +{ + XSync(xDisplay, False); + if (time > 0) + usleep(time * 1000); +} + +#endif + +/* Convert board position to corner of screen rect and color */ + +static void +ScreenSquare(column, row, pt, color) + int column; int row; XPoint * pt; int * color; +{ + 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); + } + *color = SquareColor(row, column); +} + +/* Convert window coords to square */ + +static void +BoardSquare(x, y, column, row) + int x; int y; int * column; int * row; +{ + *column = EventToSquare(x, BOARD_WIDTH); + if (flipView && *column >= 0) + *column = BOARD_WIDTH - 1 - *column; + *row = EventToSquare(y, BOARD_HEIGHT); + if (!flipView && *row >= 0) + *row = BOARD_HEIGHT - 1 - *row; +} + +/* Utilities */ + +#undef Max /* just in case */ +#undef Min +#define Max(a, b) ((a) > (b) ? (a) : (b)) +#define Min(a, b) ((a) < (b) ? (a) : (b)) + +static void +SetRect(rect, x, y, width, height) + XRectangle * rect; int x; int y; int width; int height; +{ + rect->x = x; + rect->y = y; + rect->width = width; + rect->height = height; +} + +/* Test if two frames overlap. If they do, return + intersection rect within old and location of + that rect within new. */ + +static Boolean +Intersect(old, new, size, area, pt) + XPoint * old; XPoint * new; + int size; XRectangle * area; XPoint * pt; +{ + if (old->x > new->x + size || new->x > old->x + size || + old->y > new->y + size || new->y > old->y + size) { + return False; + } else { + SetRect(area, Max(new->x - old->x, 0), Max(new->y - old->y, 0), + size - abs(old->x - new->x), size - abs(old->y - new->y)); + pt->x = Max(old->x - new->x, 0); + pt->y = Max(old->y - new->y, 0); + return True; + } +} + +/* For two overlapping frames, return the rect(s) + in the old that do not intersect with the new. */ + +static void +CalcUpdateRects(old, new, size, update, nUpdates) + XPoint * old; XPoint * new; int size; + XRectangle update[]; int * nUpdates; +{ + int count; + + /* If old = new (shouldn't happen) then nothing to draw */ + if (old->x == new->x && old->y == new->y) { + *nUpdates = 0; + return; + } + /* Work out what bits overlap. Since we know the rects + are the same size we don't need a full intersect calc. */ + count = 0; + /* Top or bottom edge? */ + if (new->y > old->y) { + SetRect(&(update[count]), old->x, old->y, size, new->y - old->y); + count ++; + } else if (old->y > new->y) { + SetRect(&(update[count]), old->x, old->y + size - (old->y - new->y), + size, old->y - new->y); + count ++; + } + /* Left or right edge - don't overlap any update calculated above. */ + if (new->x > old->x) { + SetRect(&(update[count]), old->x, Max(new->y, old->y), + new->x - old->x, size - abs(new->y - old->y)); + count ++; + } else if (old->x > new->x) { + SetRect(&(update[count]), new->x + size, Max(new->y, old->y), + old->x - new->x, size - abs(new->y - old->y)); + count ++; + } + /* Done */ + *nUpdates = count; +} + +/* 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) + XPoint * start; XPoint * mid; + XPoint * finish; int factor; + XPoint frames[]; int * nFrames; +{ + int fraction, n, count; + + count = 0; + + /* Slow in, stepping 1/16th, then 1/8th, ... */ + fraction = 1; + 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; +} + +/* Draw a piece on the screen without disturbing what's there */ + +static void +SelectGCMask(piece, clip, outline, mask) + ChessSquare piece; GC * clip; GC * outline; Pixmap * mask; +{ + GC source; + + /* Bitmap for piece being moved. */ + if (appData.monoMode) { + *mask = *pieceToSolid(piece); + } else if (useImages) { +#if HAVE_LIBXPM + *mask = xpmMask[piece]; +#else + *mask = ximMaskPm[piece%(int)BlackPawn]; +#endif + } else { + *mask = *pieceToSolid(piece); + } + + /* GC for piece being moved. Square color doesn't matter, but + since it gets modified we make a copy of the original. */ + if (White(piece)) { + if (appData.monoMode) + source = bwPieceGC; + else + source = wlPieceGC; + } else { + if (appData.monoMode) + source = wbPieceGC; + else + source = blPieceGC; + } + XCopyGC(xDisplay, source, 0xFFFFFFFF, *clip); + + /* Outline only used in mono mode and is not modified */ + if (White(piece)) + *outline = bwPieceGC; + else + *outline = wbPieceGC; +} + +static void +OverlayPiece(piece, clip, outline, dest) + ChessSquare piece; GC clip; GC outline; Drawable dest; +{ + int kind; + + if (!useImages) { + /* Draw solid rectangle which will be clipped to shape of piece */ + XFillRectangle(xDisplay, dest, clip, + 0, 0, squareSize, squareSize); + if (appData.monoMode) + /* Also draw outline in contrasting color for black + on black / white on white cases */ + XCopyPlane(xDisplay, *pieceToOutline(piece), dest, outline, + 0, 0, squareSize, squareSize, 0, 0, 1); + } else { + /* Copy the piece */ + if (White(piece)) + kind = 0; + else + kind = 2; + XCopyArea(xDisplay, xpmPieceBitmap[kind][((int)piece) % (int)BlackPawn], + dest, clip, + 0, 0, squareSize, squareSize, + 0, 0); + } +} + +/* Animate the movement of a single piece */ + +static void +BeginAnimation(anim, piece, startColor, start) + AnimState *anim; + ChessSquare piece; + int startColor; + XPoint * start; +{ + Pixmap mask; + + /* The old buffer is initialised with the start square (empty) */ + BlankSquare(0, 0, startColor, EmptySquare, anim->saveBuf); + anim->prevFrame = *start; + + /* The piece will be drawn using its own bitmap as a matte */ + SelectGCMask(piece, &anim->pieceGC, &anim->outlineGC, &mask); + XSetClipMask(xDisplay, anim->pieceGC, mask); +} + +static void +AnimationFrame(anim, frame, piece) + AnimState *anim; + XPoint *frame; + ChessSquare piece; +{ + XRectangle updates[4]; + XRectangle overlap; + XPoint pt; + int count, i; + + /* Save what we are about to draw into the new buffer */ + XCopyArea(xDisplay, xBoardWindow, anim->newBuf, anim->blitGC, + frame->x, frame->y, squareSize, squareSize, + 0, 0); + + /* Erase bits of the previous frame */ + if (Intersect(&anim->prevFrame, frame, squareSize, &overlap, &pt)) { + /* Where the new frame overlapped the previous, + the contents in newBuf are wrong. */ + XCopyArea(xDisplay, anim->saveBuf, anim->newBuf, anim->blitGC, + overlap.x, overlap.y, + overlap.width, overlap.height, + pt.x, pt.y); + /* Repaint the areas in the old that don't overlap new */ + CalcUpdateRects(&anim->prevFrame, frame, squareSize, updates, &count); + for (i = 0; i < count; i++) + XCopyArea(xDisplay, anim->saveBuf, xBoardWindow, anim->blitGC, + updates[i].x - anim->prevFrame.x, + updates[i].y - anim->prevFrame.y, + updates[i].width, updates[i].height, + updates[i].x, updates[i].y); + } else { + /* Easy when no overlap */ + XCopyArea(xDisplay, anim->saveBuf, xBoardWindow, anim->blitGC, + 0, 0, squareSize, squareSize, + anim->prevFrame.x, anim->prevFrame.y); + } + + /* Save this frame for next time round */ + XCopyArea(xDisplay, anim->newBuf, anim->saveBuf, anim->blitGC, + 0, 0, squareSize, squareSize, + 0, 0); + anim->prevFrame = *frame; + + /* Draw piece over original screen contents, not current, + and copy entire rect. Wipes out overlapping piece images. */ + OverlayPiece(piece, anim->pieceGC, anim->outlineGC, anim->newBuf); + XCopyArea(xDisplay, anim->newBuf, xBoardWindow, anim->blitGC, + 0, 0, squareSize, squareSize, + frame->x, frame->y); +} + +static void +EndAnimation (anim, finish) + AnimState *anim; + XPoint *finish; +{ + XRectangle updates[4]; + XRectangle overlap; + XPoint pt; + int count, i; + + /* The main code will redraw the final square, so we + only need to erase the bits that don't overlap. */ + if (Intersect(&anim->prevFrame, finish, squareSize, &overlap, &pt)) { + CalcUpdateRects(&anim->prevFrame, finish, squareSize, updates, &count); + for (i = 0; i < count; i++) + XCopyArea(xDisplay, anim->saveBuf, xBoardWindow, anim->blitGC, + updates[i].x - anim->prevFrame.x, + updates[i].y - anim->prevFrame.y, + updates[i].width, updates[i].height, + updates[i].x, updates[i].y); + } else { + XCopyArea(xDisplay, anim->saveBuf, xBoardWindow, anim->blitGC, + 0, 0, squareSize, squareSize, + anim->prevFrame.x, anim->prevFrame.y); + } +} + +static void +FrameSequence(anim, piece, startColor, start, finish, frames, nFrames) + AnimState *anim; + ChessSquare piece; int startColor; + XPoint * start; XPoint * finish; + XPoint frames[]; int nFrames; +{ + int n; + + BeginAnimation(anim, piece, startColor, start); + for (n = 0; n < nFrames; n++) { + AnimationFrame(anim, &(frames[n]), piece); + FrameDelay(appData.animSpeed); + } + EndAnimation(anim, finish); +} + +/* Main control logic for deciding what to animate and how */ + +void +AnimateMove(board, fromX, fromY, toX, toY) + Board board; + int fromX; + int fromY; + int toX; + int toY; +{ + ChessSquare piece; + int hop; + XPoint start, finish, mid; + XPoint frames[kFactor * 2 + 1]; + int nFrames, startColor, endColor; + + /* Are we animating? */ + if (!appData.animate || appData.blindfold) + return; + + if (fromY < 0 || fromX < 0 || toX < 0 || toY < 0) return; + piece = board[fromY][fromX]; + if (piece >= EmptySquare) return; + +#if DONT_HOP + hop = FALSE; +#else + hop = (piece == WhiteKnight || piece == BlackKnight); +#endif + + if (appData.debugMode) { + printf("AnimateMove: piece %d %s from %d,%d to %d,%d \n", + piece, hop ? "hops" : "slides", fromX, fromY, toX, toY); + } + + ScreenSquare(fromX, fromY, &start, &startColor); + ScreenSquare(toX, toY, &finish, &endColor); + + if (hop) { + /* 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; + } + } else { + mid.x = start.x + (finish.x - start.x) / 2; + 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); + FrameSequence(&game, piece, startColor, &start, &finish, frames, nFrames); + + /* Be sure end square is redrawn */ + damage[toY][toX] = True; +} + +static void +DragPieceBegin(x, y) + int x; int y; +{ + int boardX, boardY, color; + XPoint corner; + + /* Are we animating? */ + if (!appData.animateDragging || appData.blindfold) + return; + + /* Figure out which square we start in and the + mouse position relative to top left corner. */ + BoardSquare(x, y, &boardX, &boardY); + player.startBoardX = boardX; + player.startBoardY = boardY; + 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 */ + if (player.dragPiece >= 0 && player.dragPiece < EmptySquare) { + player.dragActive = True; + BeginAnimation(&player, player.dragPiece, color, &corner); + /* Mark this square as needing to be redrawn. Note that + we don't remove the piece though, since logically (ie + as seen by opponent) the move hasn't been made yet. */ + damage[boardY][boardX] = True; + } else { + player.dragActive = False; + } +} + +static void +DragPieceMove(x, y) + int x; int y; +{ + XPoint corner; + + /* Are we animating? */ + if (!appData.animateDragging || appData.blindfold) + return; + + /* Sanity check */ + if (! player.dragActive) + return; + /* Move piece, maintaining same relative position + of mouse within square */ + corner.x = x - player.mouseDelta.x; + corner.y = y - player.mouseDelta.y; + AnimationFrame(&player, &corner, player.dragPiece); +#if HIGHDRAG + if (appData.highlightDragging) { + int boardX, boardY; + BoardSquare(x, y, &boardX, &boardY); + SetHighlights(fromX, fromY, boardX, boardY); + } +#endif +} + +static void +DragPieceEnd(x, y) + int x; int y; +{ + int boardX, boardY, color; + XPoint corner; + + /* Are we animating? */ + if (!appData.animateDragging || appData.blindfold) + return; + + /* Sanity check */ + if (! player.dragActive) + return; + /* Last frame in sequence is square piece is + placed on, which may not match mouse exactly. */ + BoardSquare(x, y, &boardX, &boardY); + ScreenSquare(boardX, boardY, &corner, &color); + EndAnimation(&player, &corner); + + /* Be sure end square is redrawn */ + damage[boardY][boardX] = True; + + /* This prevents weird things happening with fast successive + clicks which on my Sun at least can cause motion events + without corresponding press/release. */ + player.dragActive = False; +} + +/* Handle expose event while piece being dragged */ + +static void +DrawDragPiece () +{ + if (!player.dragActive || appData.blindfold) + return; + + /* What we're doing: logically, the move hasn't been made yet, + so the piece is still in it's original square. But visually + it's being dragged around the board. So we erase the square + that the piece is on and draw it at the last known drag point. */ + BlankSquare(player.startSquare.x, player.startSquare.y, + player.startColor, EmptySquare, xBoardWindow); + AnimationFrame(&player, &player.prevFrame, player.dragPiece); + damage[player.startBoardY][player.startBoardX] = TRUE; +} + +void +SetProgramStats( FrontEndProgramStats * stats ) +{ + // [HR] TODO +} diff --git a/xboard.h b/xboard.h index 119d604..03e2d5c 100644 --- a/xboard.h +++ b/xboard.h @@ -1,117 +1,119 @@ -/* - * xboard.h -- Parameter definitions for X front end - * $Id$ - * - * Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts. - * Enhancements Copyright 1992-95 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: - * ------------------------------------------------------------------------ - * 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 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * ------------------------------------------------------------------------ - */ - -#include - -#define ICS_LOGON ".icsrc" -#define INFOFILE "xboard.info" -#define MANPAGE "xboard.6" -#define CLOCK_FONT "-*-helvetica-bold-r-normal--*-*-*-*-*-*-*-*" -#define COORD_FONT "-*-helvetica-bold-r-normal--*-*-*-*-*-*-*-*" -#define DEFAULT_FONT "-*-helvetica-medium-r-normal--*-*-*-*-*-*-*-*" -#define COLOR_SHOUT "green" -#define COLOR_SSHOUT "green,black,1" -#define COLOR_CHANNEL1 "cyan" -#define COLOR_CHANNEL "cyan,black,1" -#define COLOR_KIBITZ "magenta,black,1" -#define COLOR_TELL "yellow,black,1" -#define COLOR_CHALLENGE "red,black,1" -#define COLOR_REQUEST "red" -#define COLOR_SEEK "blue" -#define COLOR_NORMAL "default" - -typedef struct { - char *name; - int squareSize; - int lineGap; - int clockFontPxlSize; - int coordFontPxlSize; - int fontPxlSize; - int smallLayout; - int tinyLayout; - int minScreenSize; -} SizeDefaults; - -#define SIZE_DEFAULTS \ -{ { "Titanic", 129, 4, 34, 14, 14, 0, 0, 1200 }, \ - { "Colossal", 116, 4, 34, 14, 14, 0, 0, 1200 }, \ - { "Giant", 108, 3, 34, 14, 14, 0, 0, 1024 }, \ - { "Huge", 95, 3, 34, 14, 14, 0, 0, 1024 }, \ - { "Big", 87, 3, 34, 14, 14, 0, 0, 864 }, \ - { "Large", 80, 3, 34, 14, 14, 0, 0, 864 }, \ - { "Bulky", 72, 3, 34, 12, 14, 0, 0, 864 }, \ - { "Medium", 64, 3, 34, 12, 14, 0, 0, 768 }, \ - { "Moderate", 58, 3, 34, 12, 14, 0, 0, 768 }, \ - { "Average", 54, 2, 30, 11, 12, 0, 0, 600 }, \ - { "Middling", 49, 2, 24, 10, 12, 0, 0, 600 }, \ - { "Mediocre", 45, 2, 20, 10, 12, 1, 0, 600 }, \ - { "Small", 40, 2, 20, 10, 12, 1, 0, 480 }, \ - { "Slim", 37, 2, 20, 10, 12, 1, 0, 480 }, \ - { "Petite", 33, 1, 15, 9, 11, 1, 0, 480 }, \ - { "Dinky", 29, 1, 15, 9, 11, 1, 0, 480 }, \ - { "Teeny", 25, 1, 12, 8, 11, 1, 1, 480 }, \ - { "Tiny", 21, 1, 12, 8, 11, 1, 1, 0 }, \ - { NULL, 0, 0, 0, 0, 0, 0 } } - -#define BORDER_X_OFFSET 3 -#define BORDER_Y_OFFSET 27 -#define FIRST_CHESS_PROGRAM "gnuchessx" -#define SECOND_CHESS_PROGRAM "gnuchessx" - -/* Default to no flashing (the "usual" XBoard behavior) */ -#define FLASH_COUNT 0 /* Number of times to flash */ -#define FLASH_RATE 5 /* Flashes per second */ - -/* Default delay per character (in msec) while sending login script */ -#define MS_LOGIN_DELAY 0 - -typedef int (*FileProc) P((FILE *f, int n, char *title)); -void CatchDeleteWindow(Widget w, String procname); - -#define TOPLEVEL 1 /* preference item; 1 = make popup windows toplevel */ - +/* + * xboard.h -- Parameter definitions for X front end + * $Id: xboard.h,v 2.1 2003/10/27 19:21:00 mann Exp $ + * + * Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts. + * Enhancements Copyright 1992-95 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: + * ------------------------------------------------------------------------ + * 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 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * ------------------------------------------------------------------------ + */ + +#include + +#define ICS_LOGON ".icsrc" +#define INFOFILE "xboard.info" +#define MANPAGE "xboard.6" +#define CLOCK_FONT "-*-helvetica-bold-r-normal--*-*-*-*-*-*-*-*" +#define COORD_FONT "-*-helvetica-bold-r-normal--*-*-*-*-*-*-*-*" +#define DEFAULT_FONT "-*-helvetica-medium-r-normal--*-*-*-*-*-*-*-*" +#define COLOR_SHOUT "green" +#define COLOR_SSHOUT "green,black,1" +#define COLOR_CHANNEL1 "cyan" +#define COLOR_CHANNEL "cyan,black,1" +#define COLOR_KIBITZ "magenta,black,1" +#define COLOR_TELL "yellow,black,1" +#define COLOR_CHALLENGE "red,black,1" +#define COLOR_REQUEST "red" +#define COLOR_SEEK "blue" +#define COLOR_NORMAL "default" + +typedef struct { + char *name; + int squareSize; + int lineGap; + int clockFontPxlSize; + int coordFontPxlSize; + int fontPxlSize; + int smallLayout; + int tinyLayout; + int minScreenSize; +} SizeDefaults; + +#define SIZE_DEFAULTS \ +{ { "Titanic", 129, 4, 34, 14, 14, 0, 0, 1200 }, \ + { "Colossal", 116, 4, 34, 14, 14, 0, 0, 1200 }, \ + { "Giant", 108, 3, 34, 14, 14, 0, 0, 1024 }, \ + { "Huge", 95, 3, 34, 14, 14, 0, 0, 1024 }, \ + { "Big", 87, 3, 34, 14, 14, 0, 0, 864 }, \ + { "Large", 80, 3, 34, 14, 14, 0, 0, 864 }, \ + { "Bulky", 72, 3, 34, 12, 14, 0, 0, 864 }, \ + { "Medium", 64, 3, 34, 12, 14, 0, 0, 768 }, \ + { "Moderate", 58, 3, 34, 12, 14, 0, 0, 768 }, \ + { "Average", 54, 2, 30, 11, 12, 0, 0, 600 }, \ + { "Middling", 49, 2, 24, 10, 12, 0, 0, 600 }, \ + { "Mediocre", 45, 2, 20, 10, 12, 1, 0, 600 }, \ + { "Small", 40, 2, 20, 10, 12, 1, 0, 480 }, \ + { "Slim", 37, 2, 20, 10, 12, 1, 0, 480 }, \ + { "Petite", 33, 1, 15, 9, 11, 1, 0, 480 }, \ + { "Dinky", 29, 1, 15, 9, 11, 1, 0, 480 }, \ + { "Teeny", 25, 1, 12, 8, 11, 1, 1, 480 }, \ + { "Tiny", 21, 1, 12, 8, 11, 1, 1, 0 }, \ + { NULL, 0, 0, 0, 0, 0, 0 } } + +#define BORDER_X_OFFSET 3 +#define BORDER_Y_OFFSET 27 +#define FIRST_CHESS_PROGRAM "./fmax" +#define SECOND_CHESS_PROGRAM "./fmax" +#define FIRST_DIRECTORY "./Fairy-Max" +#define SECOND_DIRECTORY "./Fairy-Max" + +/* Default to no flashing (the "usual" XBoard behavior) */ +#define FLASH_COUNT 0 /* Number of times to flash */ +#define FLASH_RATE 5 /* Flashes per second */ + +/* Default delay per character (in msec) while sending login script */ +#define MS_LOGIN_DELAY 0 + +typedef int (*FileProc) P((FILE *f, int n, char *title)); +void CatchDeleteWindow(Widget w, String procname); + +#define TOPLEVEL 1 /* preference item; 1 = make popup windows toplevel */ + diff --git a/xedittags.c b/xedittags.c index 9e07bf0..d7d0751 100644 --- a/xedittags.c +++ b/xedittags.c @@ -1,6 +1,6 @@ /* * xedittags.c -- Tags edit window, part of X front end for XBoard - * $Id$ + * $Id: xedittags.c,v 2.1 2003/10/27 19:21:00 mann Exp $ * * Copyright 1995 Free Software Foundation, Inc. * diff --git a/xedittags.h b/xedittags.h index 3281818..a1b6f2c 100644 --- a/xedittags.h +++ b/xedittags.h @@ -1,6 +1,6 @@ /* * xedittags.h - * $Id$ + * $Id: xedittags.h,v 2.1 2003/10/27 19:21:00 mann Exp $ * * Copyright 1995 Free Software Foundation, Inc. * diff --git a/xgamelist.c b/xgamelist.c index 403db04..4f4812e 100644 --- a/xgamelist.c +++ b/xgamelist.c @@ -1,6 +1,6 @@ /* * xgamelist.c -- Game list window, part of X front end for XBoard - * $Id$ + * $Id: xgamelist.c,v 2.1 2003/10/27 19:21:00 mann Exp $ * * Copyright 1995 Free Software Foundation, Inc. * diff --git a/xgamelist.h b/xgamelist.h index 7b74352..99e266a 100644 --- a/xgamelist.h +++ b/xgamelist.h @@ -1,6 +1,6 @@ /* * xgamelist.h -- Game list window, part of X front end for XBoard - * $Id$ + * $Id: xgamelist.h,v 2.1 2003/10/27 19:21:00 mann Exp $ * * Copyright 1995 Free Software Foundation, Inc. * diff --git a/xhistory.c b/xhistory.c index bcb71e9..7f02ab8 100644 --- a/xhistory.c +++ b/xhistory.c @@ -1,6 +1,6 @@ /* * xhistory.c -- Move list window, part of X front end for XBoard - * $Id$ + * $Id: xhistory.c,v 2.1 2003/10/27 19:21:00 mann Exp $ * * Copyright 2000 Free Software Foundation, Inc. * diff --git a/xhistory.h b/xhistory.h index 61af988..6a375ba 100644 --- a/xhistory.h +++ b/xhistory.h @@ -1,6 +1,6 @@ /* * xgamelist.h -- Game list window, part of X front end for XBoard - * $Id$ + * $Id: xhistory.h,v 2.1 2003/10/27 19:21:00 mann Exp $ * * Copyright 1995 Free Software Foundation, Inc. * diff --git a/zippy.README b/zippy.README index 292646c..acedb9d 100644 --- a/zippy.README +++ b/zippy.README @@ -1,6 +1,6 @@ Zippy README file For version xboard/WinBoard 4.2.4 and later only -$Id$ +$Id: zippy.README,v 2.3 2003/11/17 07:39:44 mann Exp $ ----------------------------------------------------- Zippy is a program that lets GNU Chess act as a computer player on an diff --git a/zippy.h b/zippy.h index f42d1d3..c8cf6e8 100644 --- a/zippy.h +++ b/zippy.h @@ -1,57 +1,57 @@ -/* - * zippy.h -- Interface to zippy.c module in XBoard - * $Id: zippy.h,v 2.1 2003/10/27 19:21:01 mann Exp $ - * - * Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts. - * Enhancements Copyright 1992-95 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: - * ------------------------------------------------------------------------ - * 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 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * ------------------------------------------------------------------------ - */ - -void ZippyInit P((void)); -int ZippyControl P((char *buf, int *i)); -int ZippyConverse P((char *buf, int *i)); -void ZippyGameStart P((char *white, char *black)); -int ZippyMatch P((char *buf, int *i)); -void ZippyFirstBoard P((int moveNum, int basetime, int increment)); -void ZippyGameEnd P((ChessMove result, char *resultDetails)); -void ZippyHoldings P((char *white_holding, char *black_holding, - char *new_piece)); +/* + * zippy.h -- Interface to zippy.c module in XBoard + * $Id: zippy.h,v 2.1 2003/10/27 19:21:01 mann Exp $ + * + * Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts. + * Enhancements Copyright 1992-95 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: + * ------------------------------------------------------------------------ + * 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 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * ------------------------------------------------------------------------ + */ + +void ZippyInit P((void)); +int ZippyControl P((char *buf, int *i)); +int ZippyConverse P((char *buf, int *i)); +void ZippyGameStart P((char *white, char *black)); +int ZippyMatch P((char *buf, int *i)); +void ZippyFirstBoard P((int moveNum, int basetime, int increment)); +void ZippyGameEnd P((ChessMove result, char *resultDetails)); +void ZippyHoldings P((char *white_holding, char *black_holding, + char *new_piece));