Well, computer chess has been one of my hobbies for over thirty years now, so I guess it's time I put up a Web page about it.
My interest in computers and chess has focused on the man-machine interface rather than actual chess-playing algorithms. I treat a chess algorithm as a "black box", and my concern is getting the human player's moves into it and displaying its moves for the human player.
My first research along this line was done in the late 1970s using a 6502 based single-board computer (KIM-1) with a hexadecimal keypad and a seven-segment LED display. I bought a chess playing program for five dollars that was delivered on a punched paper tape (or audio cassette, I forget which. :-) The program ran in 1K of RAM, which was all the KIM-1 had.
This program used a "from-to" notation on the LED display, with the squares numbered "00" to "77" for the "row/column" positions on the board ... you had to move pieces on your own chessboard, and input your moves using the keypad, while the programs response appeared on the display.
Since the KIM-1 came wire to talk to a TeleType Model 33-ASR (TTY-33), I first programmed it (in my additional 4K of RAM, for which I spent $250 in 1979) to print the board position between each move, thus ... 1. ♖e8+ ♖×e4 2. ♕g4+ ♕×g4 3. ♘f6#
Forsyth–Edwards Notation: "3r2kr/ppp2n1p/7B/5q1N/1bp5/2Pp4/PP2RPPP/R2Q2K1"
. * .-R . *-K-R -P-P-P . *-N *-P . * . * . * . B * . * . *-Q * N .-B-P * . * . * * . P-P * . * . P P . * R P P P R . * Q * . K .
This is the position shown in the 1600x1200x16M color JPEG image next to it. It was published in Scientific American the month I was born, February, 1950. At that time, there were no computers that could play chess, but one had recently been programmed to play checkers.
In his article, Claude Shannon gave this position as an example of a problem where most chess-playing algorithms would fail to seize the initiative and win in three moves by sacrificing both a rook and their queen.
This program could also read English Descriptive Notation (EDN) from the keyboard of the TTY-33 and then print it's reply in EDN, e.g., "KNIGHT ON KING ROOK TWO MOVES TO KING BISHOP THREE".
Later, I added a speech synthesizer to it, a bit-mapped graphics board, and a joystick that I built from a kit. Eventually, you could play against this five dollar, one kilobyte program using a joystick and a "glass chessboard" on the monitor ... you picked up the piece and moved it with the joystick, then the computer "spoke" your move and its reply through a Radio Shack speaker.
BTW, I had to wire-up my own hardware interface for the synthesizer, and write my own software drivers to access it's 64 phoneme vocabulary and four levels of pitch ... I almost got it to do a passable rendition of Daisy. Eventually, I hacked Tom Pittman's Tiny Basic to give it a "SAY" statement to go along with the "PRINT" statement. For example, to say the phrase "hello world" you would enter "HEL0 W/LD", with the digit ZERO for the hard "O" sound ("3" for hard "E", "E" for soft "EH", and "/" for the "ER" diphthong (two-part, i.e., "UH" and "RH")). But that's a Tell for another day.
Recently, I dug out a program I've been porting since 1976 ... it "draws" a chessboard on a line-printer in a 80 column, 64 line format with pieces represented by letters in a 4x5 matrix with "W" or "B" characters to indicate white and black pieces. Click here to see what the default SHANNON board looks like. To see the data used to represent the pieces on the board, click here. If you are Truly Ambitious, here is the C source code for the program, chess.
Below is a position that I used a lot because it recurred in the 7th, 11th, and 15th game of the Fischer-Spassky World Championship in 1972. Because it occurred three times in the twenty-four game match, it seemed like a good "starting" board position. I call it NAJDORF because it shows the board after white's seventh move in the Najdorf Variation of the Sicilian Opening (ECO B94): 1. e4 c5 2. ♘f3 d6 3. d4 c×d4 4. ♘×d4 ♘f6 5. ♘c3 a6 6. ♗g5 e6 7. f4
-4 -3 -2 -5 -6 -2 0 -4 0 -1 0 0 0 -1 -1 -1 -1 0 0 -1 -1 -3 0 0 0 0 0 0 0 0 2 0 0 0 0 3 1 1 0 0 0 0 3 0 0 0 0 0 1 1 1 0 0 0 1 1 4 0 0 5 6 2 0 4
After 7. f4 (Decimal Board Format)
Having been through the exercise of calculating the XYZ coordinates of each of the pieces to create two of these 3D ray-traced chesssboards already, I decided to modify my program to output the appropriate statements in the DKBtrace modeling language Click here to see the data for NAJDORF created from the numbers above, which is used to create the 1600x1200x16M color JPEG image on the right.
This change in the program took about a half an hour. Here is the C source code for the revised program, chess3d.2009-04-20: I just discovered Portable Game Notation and Forsyth-Edwards Notation. I modified the output format of chess2 to use lower-case letters for black pieces (instead of having a "-" in front of the piece letter), and created chessfen to create .FEN files from my .DAT files (which used Decimal Board Format) ... then I modified chess2 to read .FEN files instead of .DAT files. Here is SpaFis72:
FEN = "rnbqkb1r/1p3ppp/p2ppn2/6B1/3NPP2/2N5/PPP3PP/R2QKB1R"
-R-N-B-Q-K-B .-R *-P * . *-P-P-P -P * .-P-P-N . * * . * . * . B . . * . N P P . * * . N . * . * . P P P * . * P P R . * Q K B * ROld format
r n b q k b . r * p * . * p p p p * . p p n . * * . * . * . B . . * . N P P . * * . N . * . * . P P P * . * P P R . * Q K B * RNew format
I also discovered that: