MLChess V1.07 ------------- MLChess is a chess-playing program for the HP48. It is written in a combination of machine language and System RPL. License ------- MLChess: Machine language chess program for the HP48. Copyright (C) 1996 Peter Österlund. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Playing ------- A move is entered as a 4-letter string, i.e. e2e4 followed by ENTER. In addition to legal moves you can also type one of the following commands: swap Rotates the board 180 degrees. quit Quit program. load Load a game from the top level of the stack. save Save the current game to the stack. go Make the computer do one move. (Use this to play black.) auto Start auto mode. (computer plays against itself) Turn off with ON key. undo Take back the last half-move. new Start a new game. beep Toggle the sound on/off. oppo Toggle between computer opponent and human opponent. lev1 Select level 1. lev2 Select level 2. lev3 Select level 3. edit Edit board position. The program also understands the following special keys: DEL Clear the current input string. BS Remove the last character from the input string. ON Same as DEL. OFF Turn the calculator off. The program correctly handles castling, en passant moves and pawn promotion. It does not, however, handle draw by repeated position and draw by the 50-move rule. Algorithm --------- The program uses the negamax algorithm with alpha-beta cutoff. The search depth is set to 2 PLY with depth-extension on capture moves (up to 6 PLY). (Note: This is true only for level 1.) The static position evaluation is based on quite a few heuristical rules. Most of them are simplified versions of heuristics taken from the GnuChess program. Look at the file StatEval.s for details. In spite of the quite advanced heuristics, the program still plays very bad because of the low search depth. (It can't even find a mate-in-one on level 1, unless it is lucky.) On level 2 the program will always find a mate-in-one, and on level 3 the program will always avoid a mate-in-one by the opponent if it is possible. Skill levels ------------ The only difference between the three skill levels is the search depth and the search extension depth. Level Depth ExtDepth 1 2 6 2 3 7 3 4 8 Note that I have not tested level 3 in a complete game, so I don't know how much time the computer needs to make moves in that level. Editing board positions ----------------------- The edit command starts the edit mode. In this mode the program understands the following commands: c Change color. e Erase board. quit Leave edit mode. Psq Put piece P on square sq. P is one of x,p,n,b,r,q,k. (x = empty) Note: When you enter edit mode, the move count restarts at 001, and you will not be able to take back any previous moves. You should not set up illegal positions (more than one king for each side, pawns on 1:st or 8:th rank, etc.) The program does not check for illegal positions, but it will get very confused if such a position is set up. The source code --------------- The program was developed on an Amiga 3000 using the GNU HP tools 2.1.4. (Available at fly.cc.fer.hr:/pub/hp48/gtools/src/gtools2.1.4.zip) All source files were compiled with RPLCOMP and SASM. To compile the support program needed to generate the binary opening book, you will also need gcc (or maybe some other C compiler will do). The comments in the source code are mostly in swedish, but I will probably translate them to english sometime in the future. Credits ------- I wish to thank the following people (in alphabetical order): Richard Backman : (Bug report, test play, general good ideas) Paul Dale : (I used the graphics from his chess program on Goodies disk #6) Michael Heinz : (Test play, suggested randomness in evaluation function) Mika Heiskanen : (GX compatibility, lots of programming tricks) Author ------ Please send me suggestions or bug reports, preferably by email. Peter Österlund Email: peter.osterlund@mailbox.swipnet.se Sköndalsvägen 35 f90-pos@nada.kth.se S-128 66 Sköndal Sweden