GNU CHESS - THINGS TO DO

5.The routine repetition() is still not correct since it considers
  only where a piece is placed not the type of the piece.

6.A tournament program to play chess between two different chess
  programs. This could be done by extending xchess so it could play
  two chess programs against each other. If such a beast exsisted we
  could play different versions of gnuchess against each other. And
  calculate ratings for different machines. A nodes/sec - rating table
  would be very nice to have. Also we could test different evaluation
  heuristics against each other.

7.A chess database to store historical games.

10.gnuchess does not handle stalemate correctly(is this still true?)

13.Convert the type of all time variables to time_t.

18.Check gnuchess compliance with GNU Coding Standards.

19.Readability of the code can be increased by using these suggested
   types where apropriate instead of just plain short.

typedef enum
{
  white, black, neutral
} color_t;
/* OR */
typedef short color_t;		/* (0..2) */
typedef enum
{
  no_piece, pawn, knight, bishop, rook, queen, king, bpawn
} piece_t;
/* OR */
typedef short piece_t;		/* (0..7) */
typedef enum
{
  a1, a2, a3, a4, a5, a6, a7, a8,
  b1, b2, b3, b4, b5, b6, b7, b8,
  c1, c2, c3, c4, c5, c6, c7, c8,
  d1, d2, d3, d4, d5, d6, d7, d8,
  e1, e2, e3, e4, e5, e6, e7, e8,
  f1, f2, f3, f4, f5, f6, f7, f8,
  g1, g2, g3, g4, g5, g6, g7, g8,
  h1, h2, h3, h4, h5, h6, h7, h8
} square_t;
/* OR */
typedef short square_t;		/* (0..63) */

typedef short piececnt_t;	/* (0..32) piece count */
typedef short offset_t;		/* (-63..63) distances on the board */
typedef short score_t;		/* (-32768..32767) position scores */
typedef short boolean_t;

20.write more documentation

21.Fix this bug report
Article 95 in gnu.chess:
From: campbell@rnd.GBA.NYU.EDU (Bruce Dietrich-Campbell)
Subject: A Couple of Minor Bugs
Summary: mate ignored, removing en passant
Message-ID: <2004@rnd.GBA.NYU.EDU>
Date: 21 Feb 90 19:41:40 GMT
Reply-To: campbell@rnd.UUCP (Bruce Dietrich-Campbell)
Organization: NYU Stern School of Business
Lines: 43

Good fighting spirit!!  Gnuchess fights on even when mated !-)

                    -------------------------------
Try the following 8|   |   |*R |   |   |   |*K |   |   Board Layout
moves:             |-------------------------------|
                  7|   |   |   |   |   | R |   | R |   white    black
white   black      |-------------------------------|
                  6|   |   |   |   |   |   |   |   |   kg2      kg8
f5e6    b8e8       |-------------------------------|   rh7      rb8
f7g7    g8f8      5|   |   |   |   |   | B |   |   |   rf7
g7g8    f8f7(??)   |-------------------------------|   bf5
                  4|   |   |   |   |   |   |   |   |
That's the way     |-------------------------------|
to fight!!        3|   |   |   |   |   |   |   |   |
                   |-------------------------------|
                  2|   |   |   |   |   |   | K |   |
                   |-------------------------------|
                  1|   |   |   |   |   |   |   |   |
                    -------------------------------
                     a   b   c   d   e   f   g   h


                    -------------------------------
Try the following 8|   |   |   |   |   |   |   |   |   Board Layout:
moves:             |-------------------------------|
                  7|   |   |   |   |   |   |   |   |   white    black
white   black      |-------------------------------|
                  6|   |   |   |   |   |   |   |   |   ke2      kb2
c2c4    d4c3       |-------------------------------|   pc2      pd4
                  5|   |   |   |   |   |   |   |   |
ie. black takes    |-------------------------------|
en passant        4|   |   |   |*P |   |   |   |   |
                   |-------------------------------|
Now try the       3|   |   |   |   |   |   |   |   |
remove command.    |-------------------------------|
The white pawn    2|   |*K | P |   | K |   |   |   |
doesn't reappear.  |-------------------------------|
                  1|   |   |   |   |   |   |   |   |
                    -------------------------------
                     a   b   c   d   e   f   g   h
.............................................................................
Bruce Dietrich-Campbell  ARPA:   campbell@rnd.gba.nyu.edu
                         USENET: ...!{uunet,rocky,harvard}!cmcl2!rnd!campbell

Try moving a rook to row and and the undo (it becomes a pawn!!!)
And also fix undo of promotions when using edit to setup a position.

22. Regression testing of strength against a bank
  of positions. The regression should compare
  performance between two releases, assess
  solution times, speed in nodes per second,
  accuracy of evaluation, and depth and then
  produce a comparison table, along with a final
  assessment of which version is superior.

23. Complete rework of the book, eliminating all
  illegal moves, providing a score for each variation and then use
  dither to choose a random move. Support code to enter variations
  based on the score.

24. An analyse mode, feed gnuchess with a game. gnuchess will
  analyse each posistion in that game giving it`s own principle
  variation and score and a principle variation and score for the
  played move, if they are not the same.

25. New code structure:

gnuchess.h:	As is!
gnuchess.c:	(just the main program)		from gnuchess.c
eval.c:		(evaluation routines)		from gnuchess.c
move.c:		(move generation)		from gnuchess.c
tran.c:		(transposition table)		from gnuchess.c
book.c:		(opening book)			from *dsp.c and gnuchess.c
search.c:	(move tree search)		from gnuchess.c
dsp.c:		(common display routies)	from *dsp.c
nondsp.c:	(the non common nondsp routines)from nondsp.c
uxdsp.c:	(the non common uxdsp routines) from uxdsp.c
nuxdsp.c:	(the non common nuxdsp routines)from nuxdsp.c

26. Better forced mate recogition by adding all check moves to the quiescent
    analyse (this probably means that the KingScan heuristics can be removed)

27. an empty command line should display the board, to be compatibe with
    unix chess in CHESSTOOL mode.

28. The CHESSTOOL mode should not be a compile time option but rather an
    option depending on a flag (-c) or if gnuchessr is named chess.