Author: Steven Edwards
Date: 21:16:17 06/11/05
Symbolic: Status report 2005.06.12 With the prospect of hosting Symbolic on an Apple Macintosh with an iAPX32 CPU, I've revised the toolkit's compile time configuration preprocessor symbols to allow for this, as well as allowing for running under Linux on a PowerPC. Inside the ChessLisp interpreter, I deleted the old "platform" intrinsic and added a "host-cpu" intrinsic along with a "host-os" intrinsic for supplying host specific identification data to a Lisp program. The configuration symbols really don't affect too much. There is only one line of PowerPC assembly language and one line of iAPX32 assembly language; these are found in routines that support toolkit bitboard operations. When used, there is an overall 15% speed up in toolkit performance. Of course, for the sake of purity there is the option of specifying no specific host CPU data and so not to use assembly language at all. On a Macintosh, there is also a compile time option to support voice synthesis that is not present on a typically configured Linux host. Within Symbolic's Lisp source, the host-os intrinsic is used but not the host-cpu function. The host OS is referenced only once in the Lisp, and that's at Symbolic Lisp file load time where the Lisp load intrinsic constructs absolute file pathnames. I suppose I could eliminate this dependency as well, but it's not a high priority item. -------- I did a bit of clean-up work in the ChessLisp interpreter. In its early days I had included all of the common MacLisp predicates (e.g., null atom listp numberp evenp plusp) so that I could cut and paste textbook Lisp samples for testing. But I prefer a more consistent and Scheme like style for predicate names (e.g., null? atom? list? number? even? plus?) and so these were also included. Now that the interpreter is much more mature, I've gone through its code and deleted all the old style predicates. The observed adage is not to do the same thing in two places when it should be done in one place. -------- The still-to-be-written KsExpPlayMove Lisp routine is called during the plan exploration process when the current goal in the plan indicates that a specific move is to be made. However, it is possible that the given move may not be legal or not fully specified (e.g., flags for checking, checkmating, notation construction). To handle this particular plan failure detection and to supply any flags, I've added a new ChessLisp primitive function "LegalMove?". It takes a position and a move as operands. It returns nil if the move is not legal, else it returns a new atom representing the move with any flag bits added. The related function for move synthesis is the new intrinsic "SynthMove". It takes five arguments: the from man, the from square, the to man, the to square, and the move special case indicator. For example: (SynthMove WhitePawn SqE2 VacantMan SqE4 RegularMove) will return #<Move e4> Currently there is no provision for manually adding move flags; this can be done with the new LegalMove? function and also with the handy DecodeSAN instrinsic when a position value is available. -------- I'm still working on some of the details of the general transformation utilities that perform plan elaboration. One of the difficulties is that when a higher level goal is transfromed to a lower level, the substitution is not always going to be either a single goal or a chain of single goals. It's more like a fantastic tree surgery where an intermediate branch is removed and a whole new set of replacement subtrees are grafted into its place; also, every subbranch of the orignal has to be cloned and then attached to every terminal point in the collection of replacements. I hope to have this running in the next week or so. -------- Let me thank everyone for their concern about my erratic ticker. I was the hospital for less than a day for the cardiac examination and it wasn't as uncomfortable as I had thought it might be. I don't yet have the full prognosis but will find out more soon. I do know that the Tc99 radioisotope (half life of six hours) injections used for part of the imaging process does not make one glow in the dark, but it does give one the runs. I'll try to take it easy for a while. -------- More to come.
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.