From Chris Pile
Started a chess program back in 1999 - then got 'demoted' to writing games for the Gameboy Color, so the chess thingy got shelved. Gordon Wallis did some fantastic graphics - which, sadly, never saw the light of day.
The engine is playable - and is time based, rather than ply depth. So one can choose the engine's thinking time for its moves. I knocked up a very rudimentary interface (mostly in BASIC) to test it against various other chess programs and a few hardware chess computers I owned. It puts up a reasonable fight - but will blunder moves occasionally. I wasn't completely happy with its performance.
Picking it up again probably won't happen. It would be a rewrite if I decided to.
More from Chris Pile
Further to Howard Price's request to see the chess thingy "...in any form", as posted in the 'started and never finished' thread, I've dug out the very last (latest?) test version - built from a source almost a quarter of a century old! Needless to say, looking at the source it makes very little sense after all this time. It really was just a dog's dinner of a prototype/proof-of-concept. If I were to pick this up again (highly unlikely) I would start with a complete rewrite.
Anyway, booting the disk will present you with a very simple chess board (just ASCII) with the pieces represented by their alpha equivalent (Q=Queen, Etc. Knights shown as 'N' or 'n')... Lower case = Black pieces; Upper = White. This test version only allows you to play as White - so you enter the first move.
Moves are entered in standard algebraic notation, with nothing between the 'from' and 'to' squares: c2c4... b1c3... Etc. Lower case too. Castling is achieved by entering the 'from' and 'to' squares and not 'O-O' as some chess programs. Same with 'en passant' captures - just enter the 'from' and 'to' squares - in the case of 'en passant' the 'to' square will be empty, but the engine will know which pawn to capture.
Entering 'new' (without the quotes) will start a new game; and entering 'stop' will bail out to BASIC.
The BASIC interface to the engine has very few safeguards, is very clunky and certainly not an exercise in efficient BASIC programming! It was never intended for public consumption!
The 'SCORE' line on the display is a measure of how well (or not!) the engine thinks it's doing. Positive scores up to 10000 (checkmate) and it thinks it is winning. Negative scores and its opponent (you or another chess engine) is winning.
The engine will announce 'Mate in X' and 'Checkmate' from its perspective. However, only 'Mate in X' will be announced from your perspective. If you checkmate the engine it will still attempt to make another move. And will be stuck in a perpetual state of 'not knowing what to do!'. So, if you see the SCORE display anything over -9000 then is a pretty fair bet you (or the other chess engine) has won. In which case entering 'new' will restart.
The first line of the BASIC contains the variable 'time'... This controls how many seconds the engine has to think about each move. Currently set to 180 seconds. The maximum is 1310 seconds. Basically 65536/50. So, around 20(ish) minutes per move. However, due to the way the search tree exponentially explodes the deeper it goes; beyond around 10 minutes per move doesn't really gain much extra depth - until there are very few pieces left. The old SAM just doesn't have the horsepower!
The engine currently doesn't recognise stalemate or draws by repetition. So, when playing against another similarly matched engine you may find both simply blundering along in a perpetual state of check. Deep Scan will blunder moves quite often. The current board evaluation logic is flawed, and plays quite a weak game.
The engine is a NEGAMAX variant of a standard Alpha/Beta minimax tree searcher; with a simple history heuristic, a narrowing/widening 'aspiration window' along the main search line and dynamic 'piece square' tables. Plans were to add hashing, a simple opening book and also some compressed endgame references.
There it is - Deep Scan... The SAM chess proggy that never was!