

    ********************************************************************
    **                                                                **
    **        Chess 2.0 - Copyright (c) 1989 A.H.W. Kaufmann          **
    **                                                                **
    ********************************************************************

     
     REQUIRED FILES/DIRECTORY
     ========================

                 Chess
                 Chess.Doc
                 Chess.Openings
                 Chess.Pieces
                 Chess.Colours
                 Chess.info
                 Games/????


     SIMPLE INSTRUCTIONS
     ===================

        Format a floppy named "Chess" and copy these files to that
        floppy making sure that the directory Games is created OR
        copy the files to any directory and make that your current
        directory by using the CD command.

        Now you can issue the command "run Chess" from the CLI or
        simply click on the Chess Icon if you are in the WorkBench.

        To move the pieces - point and push the left mouse button. 
        ( To castle, move the king the two spaces.)  To find out more
        use the right mouse button to bring up the menus or finish
        reading this file.


     LISCENCING AND DISTRIBUTION
     ===========================

        This program may be distributed free of charge, provided that
        no extra restrictions are placed on it.  Nominal charges for
        copying or on-line services are permitted provided that they
        are only for those services.  No payment is required for using
        this program but you should feel yourself obligated to send
        in bug reports.

        OPTIONALLY, if you enjoy the program I would not mind getting
        getting your comments and suggestions for future enhancements.

                Alfred H.W. Kaufmann
                124 Silversprings Rise N.W.,
                Calgary, Alberta
                Canada T3B 3Z6


     CREDITS AND THANKS
     ==================

        John Stanback:          For the Chess playing program.

        Bob Leivian:            For originally porting it to the Amiga

        Peter da Silva )
        Matt Dillon     )
        Jeff Lydiat      )      For the file requester
        Jay Miner       )
        R.J. Mical     ) 

        Bruce Dawson   )
        John Russell    )
        Mike Ballantyne  )      For the colour requester
        R. French       )
        R.J. Mical     )

        Fred Fish:              For distributing great programs and
                                utilities.

        Lattice Inc:            For giving it the good old college try
                                with their C5.02 and CodePRobe

        Commodore-Amiga:        For providing a great machine


     Special Raspberries
     ===================

        Lattice Inc.:           For their relentless research in genetic
                                engineering, producing newer and better
                                bugs.

        Commodore-Amiga:        For providing a buggy SETPATCH



     **********************************
     *                                *
     *   The Nitty/Gritty Details     *
     *                                *
     **********************************


     The Files
     =========

        Chess                   The game.

        Chess.info              The chess game icon which may need work,
                                I'm not really an artist.

        Chess.Doc               This file that you are now reading.

        Chess.Pieces            This file contains the images for the
                                chess pieces that are read in each
                time.  The file also contains sufficient information
                to enable you to change them.  If you don't like them
                you can get out some graph paper and design your own.

        Chess.Opening           These are some standard book openings
                                that are read in at startup.  You can
                change them to whatever you want.  Presently you are
                limited to 80 different book openings and you must
                ensure that the moves start in column 1 and 7.
 
        Chess.Colours           This file determines the colours.  You
                                can change this file from within the
                chess playing program to suit your own tastes.

        Games                   This is a DIRECTORY that is automatically
                                searched for games that you want to save
                or load.  Presently there should be a few files in it
                that you may load from the chess program.  The games 
                starting with 'B' means that black should move first and
                the games starting with 'W' means white should move first.
                For best results set the timer to about 1800 seconds.


     The Menus
     =========

        Load Game               This will bring up a requester allowing
        ---------       you to chose the game you want loaded.  When you
                        have specified the game, place the pointer or the
                        accept gadget and press the left mouse button.

        Save Game               This will bring up the same requester
        ---------       but will allow you to specify a file to save the
                        current game.

        Set Board               This allows you to set up a chess board
        ---------       however you want.  The requester includes a help
                        gadget which will explain how you set up the board.
                        When done, place the pointer over the OK gadget
                        and press the left mouse button.

        List Moves              This will print the moves to the window
        ----------      or bring up the standard requestor to allow you
                        to specify a file.

        Colours                 This brings up a colour requester which
        -------         will allow you to setup the colours to your own
                        preferences.  To make them permanent, place the
                        pointer over the save gadget and press the left
                        mouse button.

        Read Docs               Will allow you to read this file or it
        ---------       will produce a background task to send this file
                        to the printer.

        Quit                    This or the close gadget to end a game.
        ----            If you are in the middle of a game you may
                        consider saving it first!

        Switch Sides            If you were white you are now black and
        ------------    if you were black you are now white.

        Reverse Board           Reverses the board for you.
        -------------

        Set Time Limit          Brings up a requestor allowing you to
        --------------  set the response time.  Use the backspace key to
                        change it to whatever you want.

        Skip Move               If you have switched sides you may want
        ---------       to do this.

        Undo Move               Undoes the last move if possible, if not
        ---------       use the set board menu.

        Hint                    Obvious
        ----

        Credits                 Just for showing.
        -------


     The Game           from a Usenet message written by John Stanback
     ========           of HP, Colorado Integrated Circuits Div.,
                        Loveland, CO.

        The program plays a fairly respectable game of chess, although it 
  is not competetive with a state-of-the art commercial program. The search
  rate is typically 100-300 nodes/sec. on an HP Vectra (8 Mhz. 286) and
  about 300-900 nodes/sec. on an HP 350 (25 Mhz. 68020). I am interested to
  find out what is achieved on other machines. I would also be interested
  in any comments on playing strength, weaknesses or bugs in the program,
  and suggested improvements in the algorithm. 
  
  Here are a few comments on the program:
  
  1. Opening Library
       I'm a terrible chess player and don't know anything about 
       openings. I copied 70-80 random lines of play from MCO into 
       the file chess.opn. I think there are a few mistakes in the 
       translation. If anyone generates a better library please let 
       me know. 
       
  2. Positional Heuristics
       I think that improvement in this area would help the program 
       quite a bit. In most situations the computer cannot do
       anything forceful and the choice of a move is based on 
       positional aspects. I haven't spent a lot of time on the 
       heuristics and many times the program has no idea of what is 
       happening and how to proceed. Perhaps optimizing the values of 
       the existing heuristics would help, but to get a major 
       improvement I think more chess knowledge will be necessary. 
       
  3. Search Algorithm
       This program uses a full-width alpha-beta searching technique 
       with depth extensions on checks, check evasions, pawn promotion
       threats and threats to multiple pieces. Capture sequences are
       handled by a separate search routine. I imagine that much more
       efficient search routines exist, and would be interested to hear
       of any. Refinements of the search extension heuristics (similar
       to the extensions for pawn promotion threats) could have a major 
       effect on the programs ability. 
       
  4. Move Generation
       There are probably better ways to do this, but they would 
       likely change the data structure drastically and necessitate 
       a complete re-write. Maybe some good hacks would speed things 
       up, the ataks function would be the best place to start.
        

     Future Enhancements
     ===================

        If there is enough interest in this chess player I would like
  to speed up the chess player.  This could be produced fairly easily
  by reducing the large number of automatic variables and arrays, by
  using registered parameters for subroutine calls and entry points and
  by removing the stack checking code.

        Also I would like to revise the setboard function to make it
  point and click instead of having to key in "e2wp", etc.


     Bugs
     ====

        None known of "at the present time".   I am using a new compiler,
  Lattice C 5.02 and have already hacked around some problems, there may
  be more!

  Lets have your suggestions !
  ****************************

