TODO: * make alarm not dump core (MV_LAST not set for move trees under construction) * rewrite language stuff to not leak memory. * print_current_move: use write instead of fprintf which is unsafe in handler. * use enums instead of macros where possible. * use bitfields for move_t instead of bit fiddling with masks. * complete man page. * Maybe use flex/yacc to parse language file. * Dump a running calculation, resume it later. * Optimize Algorithm: Learn about escape moves and try them first when opponent tries another move. Learn about mating moves and try them first when opponent tries another move. * Maybe use hashing to find identical positions after 2 or more moves. (Promising for a *playing* program) * Investigate lclint complaints: LCLint 2.2a --- 04 Sep 96 init.c: (in function Initialize_moves) init.c:307,13: Value sorted[] used before definition An rvalue is used that may not be initialized to a value on some execution path. (-usedef will suppress message) init.c:321,24: Array element steps[0] used before definition init.c:323,16: Value dest[0][] used before definition init.c:329,16: Array element dest[][0] used before definition init.c:335,40: Array element sorted[0] used before definition init.c:335,19: Array element dest[][0] used before definition init.c:337,19: Value steps[] used before definition Finished LCLint checking --- 7 code errors found