$ # K Contents
Copying

Introduction							

Technical Notes (Limitations in Beta test version)			

Establishing a Connection

Saving and Loading

Starting a new Game

List Game to text File

Options

View

Colors

$ # K Copying

GNU CHESS GENERAL PUBLIC LICENSE
Copyright (C) 1986,1987 Free Software Foundation, Inc.  Everyone is permitted to copy and distribute verbatim copies  of this license, but changing it is not allowed.
The license agreements of most software companies keep you at the mercy of those companies.  By contrast, our general public license is intended to give everyone the right to share GNU Chess.  To make sure that you get the rights we want you to have, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights.  Hence this license agreement.
Specifically, we want to make sure that you have the right to give away copies of GNU Chess, that you receive source code or else can get it if you want it, that you can change GNU Chess or use pieces of it in new free programs, and that you know you can do these things.
To make sure that everyone has such rights, we have to forbid you to deprive anyone else of these rights.  For example, if you distribute copies of GNU Chess, you must give the recipients all the rights that you have.  You must make sure that they, too, receive or can get the source code.  And you must tell them their rights.
Also, for our own protection, we must make certain that everyone finds out that there is no warranty for GNU Chess.  If GNU Chess is modified by someone else and passed on, we want its recipients to know that what they have is not what we distributed, so that any problems introduced by others will not reflect on our reputation.
Therefore the Free Software Foundation, Inc. makes the following terms which say what you must do to be allowed to distribute or change GNU Chess.
COPYING POLICIES
1. You may copy and distribute verbatim copies of GNU Chess source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each file a valid copyright notice "Copyright (C) 1986,1987 Free Software Foundation, Inc.", containing the year of last change for the file in question; keep intact the notices on all files that refer to this License Agreement and to the absence of any warranty; and give any other recipients of the GNU Chess program a copy of this License Agreement along with the program.
2. You may modify your copy or copies of GNU Chess source code or any portion of it, and copy and distribute such modifications under the terms of Paragraph 1 above, provided that you also do the following:
a) cause the modified files to carry prominent notices stating who last changed such files and the date of any change; and
b) cause the whole of any work that you distribute or publish, that in whole or in part contains or is a derivative of GNU Chess or any part thereof, to be freely distributed and licensed to all third parties on terms identical to those contained in this License Agreement (except that you may choose to grant more extensive warranty protection to third parties, at your option).
c) if the modified program serves as a text editor, cause it when started running in the simplest and usual way, to print an announcement including a valid copyright notice ("Copyright     (C)", the year of authorship, and all copyright owners' names),     saying that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License Agreement.
3. You may copy and distribute GNU Chess or any portion of it in compiled, executable or object code form under the terms of Paragraphs 1 and 2 above provided that you do the following:
a) cause each such copy of GNU Chess to be accompanied by the corresponding machine-readable source code; or
b) cause each such copy of GNU Chess to be accompanied by a written offer, with no time limit, to give any third party free (except for a nominal shipping charge) machine readable copy of the corresponding source code; or
c) in the case of a recipient of GNU Chess in compiled, executable or object code form (without the corresponding source code) you shall cause copies you distribute to be accompanied by a copy of the written offer of source code which you received along with the copy of GNU Chess.
4. You may not copy, sublicense, distribute or transfer GNU Chess except as expressly provided under this License Agreement.  Any attempt otherwise to copy, sublicense, distribute or transfer GNU Chess is void and your rights to use GNU Chess under this License agreement shall be automatically terminated.  However, parties who have received computer software programs from you with this License Agreement will not have their licenses terminated so long as such parties remain in full compliance.
Your comments and suggestions about our licensing policies and our software are welcome!  Please contact the Free Software Foundation, Inc., 1000 Mass Ave, Cambridge, MA 02138, or call (617) 876-3296.
NO WARRANTY
 BECAUSE GNU CHESS IS LICENSED FREE OF CHARGE, WE PROVIDE ABSOLUTELY NO WARRANTY, TO THE EXTENT PERMITTED BY APPLICABLE STATE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING, FREE SOFTWARE FOUNDATION, INC, AND/OR OTHER PARTIES PROVIDE GNU CHESS "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE GNU CHESS PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW WILL FREE SOFTWARE FOUNDATION, INC., AND/OR ANY OTHER PARTY WHO MAY MODIFY AND REDISTRIBUTE GNU CHESS AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY LOST PROFITS, LOST MONIES, OR OTHER SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH PROGRAMS NOT DISTRIBUTED BY FREE SOFTWARE FOUNDATION, INC.) THE PROGRAM, EVEN IF YOU HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, OR FOR ANY CLAIM BY ANY OTHER PARTY.

GNU CHESS GENERAL PUBLIC LICENSE
Copyright (C) 1986,1987 Free Software Foundation, Inc.  Everyone is permitted to copy and distribute verbatim copies  of this license, but changing it is not allowed.
The license agreements of most software companies keep you at the mercy of those companies.  By contrast, our general public license is intended to give everyone the right to share GNU Chess.  To make sure that you get the rights we want you to have, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights.  Hence this license agreement.
Specifically, we want to make sure that you have the right to give away copies of GNU Chess, that you receive source code or else can get it if you want it, that you can change GNU Chess or use pieces of it in new free programs, and that you know you can do these things.
To make sure that everyone has such rights, we have to forbid you to deprive anyone else of these rights.  For example, if you distribute copies of GNU Chess, you must give the recipients all the rights that you have.  You must make sure that they, too, receive or can get the source code.  And you must tell them their rights.
Also, for our own protection, we must make certain that everyone finds out that there is no warranty for GNU Chess.  If GNU Chess is modified by someone else and passed on, we want its recipients to know that what they have is not what we distributed, so that any problems introduced by others will not reflect on our reputation.
Therefore the Free Software Foundation, Inc. makes the following terms which say what you must do to be allowed to distribute or change GNU Chess.
COPYING POLICIES
1. You may copy and distribute verbatim copies of GNU Chess source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each file a valid copyright notice "Copyright (C) 1986,1987 Free Software Foundation, Inc.", containing the year of last change for the file in question; keep intact the notices on all files that refer to this License Agreement and to the absence of any warranty; and give any other recipients of the GNU Chess program a copy of this License Agreement along with the program.
2. You may modify your copy or copies of GNU Chess source code or any portion of it, and copy and distribute such modifications under the terms of Paragraph 1 above, provided that you also do the following:
a) cause the modified files to carry prominent notices stating who last changed such files and the date of any change; and
b) cause the whole of any work that you distribute or publish, that in whole or in part contains or is a derivative of GNU Chess or any part thereof, to be freely distributed and licensed to all third parties on terms identical to those contained in this License Agreement (except that you may choose to grant more extensive warranty protection to third parties, at your option).
c) if the modified program serves as a text editor, cause it when started running in the simplest and usual way, to print an announcement including a valid copyright notice ("Copyright     (C)", the year of authorship, and all copyright owners' names),     saying that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License Agreement.
3. You may copy and distribute GNU Chess or any portion of it in compiled, executable or object code form under the terms of Paragraphs 1 and 2 above provided that you do the following:
a) cause each such copy of GNU Chess to be accompanied by the corresponding machine-readable source code; or
b) cause each such copy of GNU Chess to be accompanied by a written offer, with no time limit, to give any third party free (except for a nominal shipping charge) machine readable copy of the corresponding source code; or
c) in the case of a recipient of GNU Chess in compiled, executable or object code form (without the corresponding source code) you shall cause copies you distribute to be accompanied by a copy of the written offer of source code which you received along with the copy of GNU Chess.
4. You may not copy, sublicense, distribute or transfer GNU Chess except as expressly provided under this License Agreement.  Any attempt otherwise to copy, sublicense, distribute or transfer GNU Chess is void and your rights to use GNU Chess under this License agreement shall be automatically terminated.  However, parties who have received computer software programs from you with this License Agreement will not have their licenses terminated so long as such parties remain in full compliance.
Your comments and suggestions about our licensing policies and our software are welcome!  Please contact the Free Software Foundation, Inc., 1000 Mass Ave, Cambridge, MA 02138, or call (617) 876-3296.
NO WARRANTY
 BECAUSE GNU CHESS IS LICENSED FREE OF CHARGE, WE PROVIDE ABSOLUTELY NO WARRANTY, TO THE EXTENT PERMITTED BY APPLICABLE STATE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING, FREE SOFTWARE FOUNDATION, INC, AND/OR OTHER PARTIES PROVIDE GNU CHESS "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE GNU CHESS PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW WILL FREE SOFTWARE FOUNDATION, INC., AND/OR ANY OTHER PARTY WHO MAY MODIFY AND REDISTRIBUTE GNU CHESS AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY LOST PROFITS, LOST MONIES, OR OTHER SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH PROGRAMS NOT DISTRIBUTED BY FREE SOFTWARE FOUNDATION, INC.) THE PROGRAM, EVEN IF YOU HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, OR FOR ANY CLAIM BY ANY OTHER PARTY.

$ # K Introduction
Winsock Chess is a chess implementation allowing two players to play chess over a Winsock supporting network.  The program will validate moves and disallow illegal moves.
Winsock Chess uses GNU Chess as a basis for checking moves and GNU chess forms the underlying engine for the program.  Thanks to the FSF for allowing usage of their source - it would have taken considerably more than the (after hours) week and 2 days which it did -  to develop Winsock chess without the well structured GNU chess source.  Copyrights for GNU chess are :
(C) 1985 Stuart Cracraft
(C) 1988,1989,1990 John Stanback
(C) 1986,1987,1988,1989,1990 Free Software Foundation INC
Conversion to Microsoft Windows by Daryl K. Baker (C) 1990,1991

Copyright for Winsock Chess :
Winsock Chess (C) D. Munro 1994

All GNU copyright, warranty and distribution conditions as described in the file COPYING and the section above titled GNU CHESS GENERAL PUBLIC LICENSE also apply to Winsock Chess.

This is a beta test release - please report all bugs and/or suggestions to me :
Donald Munro  
Internet : ccahdm@beluga.upe.ac.za

Important Note : All bugs in this program are intentional are were inserted as an exercise for the reader. ( :

$ # K Technical Notes, Limitations and To Do List
*	Does not allow undo yet. Should be implemented soon.
*	There is currently no facility to change sides - host is always white.  
*	There is no need for a Host... option on the Connect menu - a listening socket could be in place at all times while there is no connection, monitoring the wschess port (port 1985). My excuse here is that I do not have a TCP network at home on which to attempt to open a socket so while I was developing I tested with DDE (it would probably have been easier just using messages but I wanted to try out DDEML which I had never played with before).  When I no longer need to test at home I will change to a continuos listen socket.
*	The connect dialog could display a list of available wschess servers using getservbyport perhaps.
*	Save/Open - When saving only the saving players time is saved - when opening a saved game the remote player and local players time are set equal. Possible solution - at save time request remote machine to send its time to be saved as well.
*	Communication is currently via a stream whereas datagrams are probably more suitable for this application.  Streams do make life a bit easier for the lazy (me) however since you don't have to worry about ACK's and NACK's and CRC's etc.
*	Commands affecting both players (eg New, Open etc.) can only be actioned during the players turn and these menu items are greyed when it is not the players turn.  There should be a separate command socket perhaps or alternately provision for out of band signalling.  I will investigate this in the future.
*	Make review dialog into a modeless dialog.
*	I have started making provision for porting to Win32 by converting most message handlers to using message crackers. Hopefully when the local Microsoft distributors finally get the Visual C 1.5 upgrade here I'll be able to upgrade to get the 16/32 bit upgrade and turn out a Win32S version. 

$ # K Connection

To start a game the first player should select Host... mode from the connect menu (this should not be necessary in the future - see Technical Notes).  A dialog will then appear informing the host player that the program is waiting for a connection.
The second player then selects Connect to Host... from the connect menu.  He will then be prompted to enter the hosts name or IP address.  The name must be a valid network name in the hosts file or available on a DNS.  If a successful connection is established the dialog box will disappear and you will be ready to play.
Currently there is no negotiation as to who plays what colour - the host always plays white.  This should change in the future (see Technical Notes).
Select Disconnect on the Connect menu to disconnect from your remote opponent.

$ # K Saving and Loading Games
You may save the game at any point using the Save... option on the File menu.  You will be prompted to enter the save game name using a standard save as dialog box.
To load a game select  Open... from the File menu.  Then select the file to load using the standard open dialog which will then appear.  Your opponent will then be asked whether he agrees to allow you to load the game.  If he does the game will be loaded on your machine and transmitted to his. Note : Currently you can only select this option when it is your turn (see Technical Notes).  The game then continues as usual.

$ # K Starting a New Game
To start a new game select New on the File menu.  Your opponent will then be asked whether he allows a new game - if he does the boards will be reset on both sides and play can then restart.

$ # K List Game to Text File
Use this option to print the game moves to a text file which may then be loaded into another program to be printed.  Select List... on the file menu.  You will be prompted for the list file name. Enter this and the file will be created.
Print to printer option will be added by the next beta release.

$ # K Options Menu Options
Tone - Switches beep on receipt of opponent move on or off.
Co-ordinates - Switches display of algebraic co-ordinates on or off.
Review Game - Displays a dialog showing a list box with all moves in the game so far.

$ # K View
There is currently only one item here namely Reverse Board which allows you to see the board from the opposite side.

$ # K Colors
This option allows you to change the background color, the colors of the black and white pieces and the colors of the black and white squares.  You may also reset the colors to the default colors.
Color selection is done via the standard color selection dialog.