Chess engine issues are hopefully now all resolved -
http://code.google.com/p/surveyor-srv1-firmware/ or
http://www.surveyor.com/blackfin/srv-blackfin-122908.zip The original TSCP code used multi-dimension static arrays, eg history[][], and these had to be dynamically allocated using malloc() because of limited Blackfin L1 memory. In theory, the pointer type "int **history" could be used to replace "int history[][]", but this turns out generate some bogus addresses. So the dynamically allocated arrays in chess.c are now single dimension, and the program seems to be working properly. Book openings now work as well.
For testing, you can let the robot play itself by entering the "on" command for each move.
Don't forget to upload and save the book openings. Use a script like "send1" or a terminal program such as TeraTerm to upload "book.txt" via XMODEM, confirm that it arrived in the flash buffer using "zd" - you'll see stuff like this -
g1f3 g8f6 c2c4 b7b6 g2g3
g1f3 g8f6 c2c4 c7c5 b1c3 b8c6
g1f3 g8f6 c2c4 c7c5 b1c3 e7e6 g2g3 b7b6 f1g2 c8b7 e1g1 f8e7
g1f3 g8f6 c2c4 c7c5 g2g3
g1f3 g8f6 c2c4 e7e6 b1c3 d7d5 d2d4 b8d7
g1f3 g8f6 c2c4 e7e6 b1c3 d7d5 d2d4 f8e7 c1f4 e8g8 e2e3
g1f3 g8f6 c2c4 e7e6 b1c3 d7d5 d2d4 f8e7 c1g5 h7h6 g5h4 e8g8 e2e3 b7b6
Then save it to flash sector 5 with "zW05"
You can confirm that it arrived by clearing the buffer with "zc", then read with "zR05", then view again with "zd"