------- CHESSBD ------- (c) 1994, 1995 by Don Fong (dfong@igc.apc.org) Updated august 1995 1. GENERAL DESCRIPTION CHESSBD is a chess game reader (or "viewer") for Windows, similar to PGNRD by Keith Fuller. It can read "almost any" game file. It incorporates a heuristic parser that attempts to handle sloppy "natural" input and poorly specified formats. The goal --- not quite attained --- is to parse anything posted to the the rec.games.chess newsgroup, with no hand editing. For example, CHESSBD can more or less make sense of the "Shamkovich benchmark" posted by Steven J. Edwards in Jan 1994. However, some files cannot be parsed without hand editing. CHESSBD is shareware. See section 4 below for details. See section 6 below for installation instructions. See the online help for usage instructions, or for information about the syntax and heuristics used by CHESSBD. 2. FEATURES * Recognizes both algebraic and descriptive move notation, eg, p-k4 p-n8=Q+ e4 e8Q * Accepts most known variants of "castling" notation oo 0-0-0 * Disambiguates using +# (ep) indicators, etc nxp# * Recognizes PGN game headers [Event "..."] * Recognizes "natural" game headers of the form White: XXX Black: YYY * Handles nested variations between ()'s (14. Nxd5 Qxd5 (14...Nxd5 e5!)) * Heuristically recognizes variations embedded in commentary text 15... d5 If 15... dc, Black will be faced with the ... * Interactive "drag and drop" moves using the mouse * Interactive traversal of game tree * Works under Windows 3.1; uses color * Can function as an ICS interface via Winsock TCP/IP. 2.1a NEW IN CHESSBD 2.1 Features added since release SLICS 2.0i : * Can function as a NETSCAPE helper. * Autoflag and Autoqueen options. * ICS mode no longer disables the viewer functions. * Can paste text from the Windows clipboard into the viewer textport. * Redesign of dialogs, use of "mini" dialogs. * Can pop up multiple "scratch" boards for analysis (Alt-V). * Improved TtyMode dialog makes it easier to negotiate firewalls. * Server profiles added to ICS menu for faster login. * Cool new pieces by Harry Toups (toups.ini). 2.1b NEW IN CHESSBD 2.0 Features added since first release as CHESSBD 1.0 : * ICS interface capability * Bug fixes (see section 7). * SAN compatible output. * Supports PGN [Setup "..."] tag. * Partial support for USCF standard headers * Improved dialogs for navigation and game selection. * Textport wraps long lines (%set wrapcol=NNN). * Create index files for faster reloading of large files. * Fairly complete options dialog. * Windows help file. 3. BUGS AND MISFEATURES * Makes NO attempt to fix incorrect input moves (eg by capitalization) or guess ambiguous moves. * Windows 3.1 only; will NOT run under 3.0 . * Inefficient, may run slow. * Uses Borland C++ 4.0 and OWL 2.0, therefore it exhibits the associated peculiarities and glitches. * OPTIONS dialog is weak and needs more work. * HELP file is weak and needs more work. * See also the section "Implicit Header Recognition Failures" in the "Parser Heuristics" help topic. * ICS functions are still somewhat immature. 4. ORDERING INFORMATION CHESSBD is shareware. If you find this program useful, please send a contribution of $5.00 or more to: Don Fong/227 Alta Ave/Santa Cruz, CA 95060 USA Thanks to everyone who sent $$ for CHESSBD 1.0 ! Send bug reports and suggestions to: dfong@igc.apc.org Thanks. 5. ACKNOWLEDGEMENTS Thanks to Keith Fuller (PGNRD) who gave me advice on windowization, and to Daryl K. Baker whose windows port of GNUCHESS contained many instructive examples of how do do things. 6. INSTALLATION CHESSBD is a windows program; install it as you would any windows program. Decide what directory you want to put it in, and make that the startup directory for the program when creating the program item. Move the files chessbd.exe, chessbd.ini, chessbd.hlp, _chessbd.rc, and icsprofs.dat files into the same directory. If you are going to use custom .ini files --- for example, setting up your user-programmable buttons or menu items (see "About other .ini files" below) --- then put these files in the same directory too. See the online help for more info. You will probably want to edit the example ex_ics.rc script (and then rename it to be _ics.rc) to have your correct ICS login name and password, so the program can log you in automatically. You will probably want to edit the icsprofs.dat dialing directory to have your correct login name on the different servers, so the program can help you switch between servers easily. See the online help for more info. 6.1. INVENTORY chessbd.exe - the executable - required chessbd.hlp - winhelp file - required chessbd.ini - initialization - recommended _chessbd.rc - program startup script - optional icsprofs.dat - dialing directory - recommended dfong.ini - default "minimalist" pieces - doc nicok.ini - alternative "baroque" pieces by nicok@IAEhv.nl (Nico Koolsbergen) - doc ericch.ini - alternative "staunton" pieces by ericch@microsoft.com (Eric Churchill) - doc toups.ini - alternative "classic" pieces by Harry Toups - doc tinyscrn.ini - additional chessbd.ini for small monitors bigscrn.ini - additional chessbd.ini for big monitors. ex_ics.rc - sample ics login script - doc dial_ics.rc - sample ics login script for direct modem connection - doc readme.txt - this file - doc qanda.txt - questions and answers - doc demofile.txt - sample games file - doc About chessbd.ini : You can edit the windows initialization file chessbd.ini (using an external text editor of your choice) to alter the appearance or operation of CHESSBD. Or you can use the program's Options dialog. You do not need to have a chessbd.ini file: the program will default to reasonable values in its absence. About other .ini files : If you want to try one of the extra .ini files, you can either edit chessbd.ini to add the assignments from the other files, -or- you can add the other file to the command line when you invoke it from the program manager. (Eg, "chessbd nicok.ini" will read in nicok.ini after the normal chessbd.ini file.) You can specify multiple .ini files if you wish. They will be processed from left to right. The values in the rightmost (last) file will take precedence in case of a conflict. (Eg, the command "chessbd nicok.ini bigscrn.ini" uses the alternative pieces and the big-screen layout.) CHESSBD treats these ini files as read-only: thus if you change and save variables at run-time using the options dialog, the changes will be saved to chessbd.ini , NOT to these additional .ini files. This may or may not be what you want. About _chessbd.rc : The script file _chessbd.rc is read upon program startup. You can edit the file (using an external text editor of your choice) and add script commands to customize the program according to your taste. See the "Script Commands" "Option Variables" topics. You do not need to have a _chessbd.rc file. 7. HISTORY History of changes to CHESSBD. ----- feb 94 first release as CHESSBD 1.0 . ----- mar 94 bug fix - vertical bar garbage '|' char caused crash because it looks like a variation bug fix - board update board display not updated properly if user drags a piece w/ mouse, then drops it back on its starting location, then decides to drag another piece. bug fix - weak header, punct moves improper rejection of weak headers containing number comma, because it looked like a move. bug fix - W: B: header improper rejection of W: B: headers when W: and B: on same line enhancement - scrollbar added thumb tracking to move scrollbar cosmetic - colors changed default colors to be more pastelish ----- jun 94 bug fix - W: B: header workaround for borland varargs bug enhancement - FEN recognize PGN's FEN/Setup tags enhancement - SAN add shortened algebraic (SAN) option (%set sanout=1) enhancement - HH:MM time notations recognize, treat as comments enhancement - $NAGs recognize them, treat as comments. ----- jul 94 enhancement - wrapcol auto line wrap in the text window (almost working) ----- aug 94 bug fix - easyvar mainline bug under some circumstances, the main line would be taken as a variation after an easy variation! bug fix - navigate dialog disable bc++ 4.0 OK/CANCEL misfeature enhancement - rearrange controls make game selection part of navigate dialog enhancement - improved game selection dialog listbox now scrolls horizontally; cancel+ok buttons disable +G and -G as appropriate enhancement - options dialog set options thru dialog enhancement - ini file options be saved to ini file, thru options dialog bug fix - real comment within implicit comment if a multi-line real {} comment occurred within an implicit comment, the program would not recover to the main line afterwards. ----- sep 94 bug fix - memory allocation improperly freed mem could have caused corruption enhancement - open file can now "run" a file while another file is "open" can now "open" a file from with a "run" file (but not %open from within %open, or run from within %open) enhancement - scan file open cmd now adds files to game list without clearing it close clears the game list enhancement - drag & drop moves flicker-free piece dragging; target square indicator ----- oct 94 bug fix - move scrollbar move scrollbar is now properly updated when adding moves via drag & drop change - ini vars got rid of separate "ini" table; ini vars are now just regular vars with a flag enhancement - piece motion simple chess moves can now be animated change - cmds cmd routines now "void" not "int" change - graphics change added "grchange" method to textport, nav dialog, etc enhancement - index added index file feature uploaded to caissa.onenet.net! ----- nov 94 enhancement - for >1000 games implement ownerdraw listbox for selection enhancement - accelerators added accelerator stuff bug fix - esc in setup dialog enhancement - file dialogs now have memory of cur dir change - help clean up help file options section enhancement - material update flag display material balance in to-move string enhancement - saveall command to save all games enhancement - score line len when writing score, put multiple moves on same line - upto outlinelen change - speedup faster check testing change - cleanup muck with header files opt bug - in eng.c -O2 or -Ov seem to trigger (eng_extreme()) workaround to defeat faulty optimization enhancement - piecechars now can set to different letters... change - bit fields use IPCLASS uniformly reorder bit fields in IDLOC reduce r & c bitfield sizes in IDLOC, to 3 bits! bug fix - repaint after dialog add UpdateWindow() calls to eliminate "flash effects" after dialog. bug fix - non-dos text files read input in binary mode (borland iostream messes up if reading a UNIX text file w/o '\r's in text mode) change - rename mainx.h routines for consistency change - cleanup naming of event stuff enhancement - search feature search in select game dialog change - use library for non-windows objects enhancement - edit game dialog to edit current game ----- jan 95 enhancement - add ics stuff change - redesign chesswin --> msgbdwin put msgs in subclass of bdwin rearrange grchange stuff rearrange initialization stuff enhancement - ics cmds %icsinput %icsoutput etc enhancement - %cecho cmd enhancement - fixed output-over-input problem enhancement - textport noecho mode, beep on \7 change to unix-like tty processing enhancement - added sysmenu to most dialogs add "ics arena match" dialog cleanup - eliminate obsolete MakeWindow() calls improve modularity bug fix - filtering overrun problem corrected change - disable viewer stuff in ics mode enhancement - resizable chatwin - save ics window layout ----- feb95 bug fixes who dropping lines changes to match dialog change - move strings to text segment enhancement - resizable arenawin bug fix - ICS info dialog ----- mar95 enhancement - automatically add people to chat combobox enhancement - make icsrawout work change - for FICS compatibility change - tweak dialog sizes version h bug fix - FICS match command enhancement - dialing dir enhancement - querylogout change - rename and renumber all ID's ! ----- apr 95 enhancement - capture dialog change - make various ICS buttons expand to internal commands instead of ICS commands - for generality change - get rid of "EDITLINE" class bug fix - add "." and "..." after move numbers in icsgames.pgn enhancement - adding direct modem support enhancement - user programmable menu change - use checkmenuitem instead of changing the item name enhancement - board scaling, mainwindow scaling version i change - gross.c, modified to handle periods at end of name. change - board window menu change - reorganize nav data structures for per-board menu changes change - eliminated "botside" variable - overhaul botside handling ----- may 95 slics20ipatch bug fix - "..." on first move in icsgames.pgn ! enhancement - alert messages instead of caption change bug fix - killtimer should now work better enhancement - rudimentary paste feature bug fix - "unexamine" examined games when close exam window bug fix - update tree display after moused move ----- jun95 enhancement - netscape iface - FPATH used in ini_readin() enhancement - warn about bad style messages from ICS bug fix - save infoconnect vars change - explicit loading of winsock.dll enhancement - add a user menu to main board window change - make Option and ICS sub-menus - eliminate "skip this dialog". enhancement - "undo" removes move from tree change - use EnableCommNotification() etc enhancement - allow "pre-dragging" of piece while board update occurs enhancement - UX and ICS buttons in ttymode window ----- jul95 change - new "2.1" ics layout with mini dialogs many bug fixes enhancement - all ttyedit's now support color & font change - derive chesswin from msgbdwin instead of tframewindow bug fix - added x=0 to CondDel macro! change - constructors take RECT as arg enhancement - bitmap support enhancement - autoqueen enhancement - autoflag experiment with eliminating redundant deletes ----- aug 95 update documentation enhancement - improved beep and prompt suppression release as 2.1a bitmap support temporarily removed