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