================
Colossus 4 Chess
================
Document created by [email protected] on 18th Nov 99 for
World of Spectrum: http://www.void.demon.nl/spectrum.html

Taken from the CDS compilation 'The Complete Home Entertainment Centre'.

CHESS has the widest range of true features available, including some never
before implemented on any home computer chess program including the 2D flat
board display or the 3D real life board which makes it clear and easy to use.

CDS Software Ltd. CDS House, Beckett Road, Doncaster, DN2 4AD, England

Loading Instructions
--------------------
All the programs will load in 48K Basic mode using LOAD"".

Chess
-----
Table of Chess Contents

Section No. Subject

1 INTRODUCTION
a General
b Quick Guide
2 DISPLAY
a General
b The board
c Messages & questions
d The move record
i The player names
ii The clocks
iii The moves
e Technical information
i Lookahead
ii Positions examined
iii Best line
iv Current line
v Assured move
3 PLAYING A GAME
a New game
b Your move
c The programs move
d Game over
4 KEYBOARD ENTRIES
a Cursor movement
b Numeric data - *IMPORTANT* - PLEASE READ
c Commands
d 2D/3D Option (Shift Q)
5 PROGRAM INFORMATION
a Statistics
b Openings Book

Section 1 - Introduction
------------------------
1 a - General
This program is the best computer chess program available on any home
computer. It is written using the very latest techniques by a computer chess
programmer of ten years experience. It has been tested against a wide range
of other chess programs and proven stronger than any of the opposition. It
has the widest range of true features and sub-features available, including
some, never before implemented on any home computer chess program. The
program also has a perfect understanding of all the rules of chess, including
underpromotions, the fifty move rule and all draws by repetition. It can also
handle all the standard mates including King and two Bishops versus King and
the very difficult King, Bishop and Knight versus King.

1 b - Quick guide
This program has so many features, that at first you may be overwhelmed by
the sheer size of the manual. However you do not have to read if from cover
to cover but merely sample the relevant sections as your knowledge of the
program increases.
The only section you should need to read to get started (apart from this
introduction of course) are "3b - Your Move" and "4a - Cursor Movement." Then
the most commonly used commands in section 4c are "Go", "New Game" and "Type".
After that, the other sections can be read at your leisure, as you discover
the truly amazing features that the program has to offer.

Section 2 - Display
-------------------
2 a - General
The display uses two screens to provide clear, extensive information as to
the state of the game, the programs current thoughts and the past move
record. The main screen shows a graphics chess board and various messages
and questions as required. The second screen shows the past move record,
including the player name and chess clocks and also information on the
programs thought processes including lookahead, positions examined,
current-line and best-line with evaluation. The display can be toggled
between the two screens by pressing the <SPACE> bar.

2 b - The board
The main screen has a graphics board printout showing the current position.
Letters and numbers around the board indicate the algebraic notation used
for each square.

2 c - Messages and questions
Various messages and questions are displayed around the board as neccessary.
These are explained in more detail in later sections.

2 d - The move record
The secondary screen shows the last six moves made by each side in two
columns including nove numbers. Above the moves are displayed the colours,
player names and elapsed-time chess clocks for each side.

2 d i - The player names
Above each column is displayed the names of the white and black players. The
programs name is displayed as 'Colossus' while its opponents name is
displayed as 'Opponent'.

2 d ii - The clocks
Below the player names are displayed the elapsed-time clocks for white and
black. The clocks are in the format 'hh:mm:ss' (hh=hours, mm=minutes,
ss=seconds). The clocks show the total time used by each side in the game so
far.

2 d iii - The moves
The moves are displayed in algebraic notation with the from-square followed
by the to-square. The separator between the from- and to-squares indicates
whether the move is a capture or not ('x' signifies a capture, '-' signifies
a non-capture). Castling moves are indicated with the from- and to-squares
of the moving king. En-passant captures are indicated by the letters 'EP'
printed above the move.
Promotions are indicated after the move by a '/', followed by a letter to
indicate the promoted piece ('N' = knight, 'B' = bishop, 'R' = rook, 'Q' =
queen). Checks are indicated by a '+' being printed after the move.

2 e - Technical information
The bottom of the secondary screen is used to display detailed information
of the program thought process. This information can provide a great
insight into how a good chess program works, but only takes a fraction
of one percent of the program thinking time to display it.

2 e i - Look ahead
When the program thinks about its move, it displays the lookahead depth of
its search. The depth is printed in 'ply' or 'half-moves'. The program will
search most move sequences to at least this depth, with some being
searched much deeper.

2 e ii - Positions examined
The number of positions examined in the tree of move sequences is displayed.
This number is updated after each iteration or when a new best-move is found.
The program examines on average about 170 positions per second in the
middlegame.

2 e iii - Best line
The program displays the best line it has found so far in its search. This
can provide you with the usual 'hint' move and also an analysis of the game
in the next few moves beyond the 'hint'! (Usually the line will contain a
'null' move. This simply means a passive, non-capturing move has been
assumed.) Also displayed is the evaluation of the best-line, as two numbers.
The first is the material evaluation (in terms of number of pawns up or
down), the second the positional evaluation. A positive number means the
program is better, a negative number means the opponent is better. If the
best-line is found to lead to a checkmate then the material score will be set
to plus or minus 62.

2 e iv - Current line
The move sequence the program is currently considering is displayed. This can
be seen to change as the search progresses. The length of the line shown, can
be adjusted as required (for further details see the 'Quantify' command
described later).

2 e v - Assumed move
The program thinks on its opponents time. It assumes the opponent will make a
particular move and then continues thinking about its next move. Sometimes
the program will not have a move to assume and then will not think ahead.
The move assumed is displayed so that you can follow the programs thought
process and to provide a 'hint' move. However, the quality of this move is
for you to decide. If you play a different move from the one assumed, the
time is wasted, but the program will correctly predict about one third of
your moves on average.

Section 3 - Playing the Game
----------------------------
3 a - New game
When a new game is started, the pieces are set-up in their initial positions,
the clocks are reset to '00:00:00', the move display is cleared and you are
given the option of moving first. Typing <SHIFT> 'G' will make the program
take the white pieces and move first (for further details see the 'Go'
command described later).

3 b - Your move
Whenever it is your turn to move, the program asks 'Your move?' at the bottom
of the main screen. You enter moves by following cursor positioning method
(see the later section 'Cursor movement' for further details).
1) Move the cursor to the square of the piece you wish to move, and press the
<ENTER> key or the Joystick [FIRE]. This causes the from-square to be
displayed. If you accidently enter the wrong from-square it can be
cancelled by pressing the <DELETE> key. (The cursor is shown as an
inverse line drawn through the current square).
2) Move the cursor to the square you wish to move to and again press <ENTER>.
This causes the 'to-square' to be displayed. If the move is illegal, the
message 'illegal' is displayed and the move entry cleared. You must then
return to step-1 above and try again.
3) If the movie is a pawn promotion the program then asks 'Promote to?'. You
must then specify the piece you want to promote to by typing one of the
following: 'N'-knight, 'B'-bishop, 'R'-rook or 'Q'-queen. If you press
any other key, the program assumes you promote to a queen.

Note: if you wish to enter a castling move, you should move the king two
squares either way. If you wish to enter an en passant cpature, you should
move the pawn as in a normal capture.

The legal move is now indicated on the board, by flashing the cursor on the
from-square, then moving the piece and flashing the cursor on the to-square.

3 c - The programs move
When the program computes its move it displays the message 'Let me think...'
below the board. The technical information on the secondary screen is updated
as the search progresses. When the program has finished its search, it
prints the selected move in the move-record and to the right of the board,
and also indicates it on the board (in the same way as your moves are
indicated). Pressing the <DELETE> key, whilst the program is thinking about
its move, will cause it to abort its search, display the message 'Escape'
and make the best move it has found so far. If the program has found that its
move leads to checkmate, it announces the move with the message 'Mate in N'
where N is the number of moves till the mate.

3 d - Game over
When a game is completed, the clocks are stopped and the program displays a
message, to the right of the board, to indicate the final stage of the game.
The messages are:-
'Drawn' - the game has been drawn by 3-fold repetition of position,
the 50-move rule or neither side having enough material to mate the opponent.
This occurs in the cases of King, King and Bishop or King and Knight versus
lone Knight.
'Checkmate' - the side which moved last delivered check-mate.
'Stalemate' - the side to move is in stalemate.
'Time-up' - the side to move lost 'on-time'. This occurs only if you
are playing an 'All-the-moves' game. (See 'Type' command described later).

The program then asks 'What now?' and waits for you to enter one of the
program commands.
Type <SHIFT> 'N' to start a new game (for further details see the 'New-game'
command described later).

Section 4 - Keyboard Entries
----------------------------
4 a - Cursor movement
The cursor is indicated by an inverse line, drawn through the middle of the
current square. It can be moved in three ways.
1) Cursor keys.
For cursor controls, provide single square movement in any direction. The
<LEFT-ARROW> and <RIGHT-ARROW> keys give left/right movement, while the
<UP-ARROW> and <DOWN-ARROW> keys give up/down movement. If the cursor is
moved off one edge of the board, it reappears at the opposite edge.
2) Algebraic keys.
The cursor can be moved immediately to any rank, by typing one of the
number keys '1' to '8'. It can be moved to any file by typing one of the
letters 'a' to 'h'. This allows algebraic notation to be used when entering
moves e.g. typing e2<ENTER> e4<ENTER> will enter the common opening move
Pe2-e4. Note that if the rank or file of the from- and to- squares is the
same, the key sequence can be shortened, i.e. in the above example e2<ENTER>
4<ENTER> would also work.
3) Joystick.
The joystick also gives four directional cursor movement.
The initial position of the cursor depends on the current side to move.
If white is to move, the cursor starts on square a1.
If black is to move, the cursor starts on square h8.

4 b - Numeric data - *IMPORTANT* - PLEASE READ
Many of the programs commands require numbers to be entered to set-up new
values of parameters etc. The program employs a simple to use, error-proof
method of entering numbers. First the current value of the parameter is
displayed at the query position. To increment the displayed value, use
the <UP-ARROW> key. If the new value is above the upper limit for that
parameter then it is reset to its lower limit. To decrement the display
value , use the <DOWN-ARROW> key. If the new value is below the lower limit
for that parameter then it is reset to its upper-limit. To enter the new
value into the program, press <ENTER>.
(If you do not wish to change the current value, then just press <ENTER>,
instead of the "increment" or "decrement" keys.)

4 c - Commands
The following commands can be entered, when it is your turn to move or when
the game is over. To enter a command, just type its first letter (shown in
capitals in the descriptions below) with the <SHIFT> key also pressed. The
commands are ordered alphabetically and are designed to be easy and logical
to use and to greatly increase your enjoyment of the game of chess.

Note 1: If the selected command requires numeric input, and you are viewing
the secondary text screen, then the program will automatically switch back
to the primary graphics screen.
Note 2: If the command is entered, then any 'thinking on the opponents time'
will be aborted.

Alter position - Type <SHIFT> 'A'
Any legal chess position can be set-up with this command. When selected, the
program displays the message:-
'Alter position:SSSSS: Command?' (where SSSSS is the side to move) When in
'Alter-position' mode, a further subset of commands, allow you to adjust the
board thus:-
Get initial data: Type 'G'
If after changing part of the position, you decide you've made a mistake, the
initial position can be retrieved with this command.
Move-number: Type 'M'
The program asks: 'Move number?', thus allowing you to enter the new move
number required. (See section 4.b for details on how to enter numeric data.)
Side-to-move: Type 'S'
This toggles the side to move between white and black. When pieces are added
to the board, their colour is determined by the current side to move.
Clear, Pawn, Knight, Bishop, Rook, Queen, King: Type 'C', 'P', 'N', 'B', 'R',
'Q' or 'K'. To change a particular square, place the corner over it and enter
one of the above, to determine the new status of that square. (Note that
algebraic control of the cursor is not available in 'Alter-position'.) When
a square is changed the cursor will move one square to the right to make the
setting up of pieces very easy.
Wipe: Type 'W'
This removes all pieces from the board, thus allowing positions with very
few pieces, to be set-up more quickly.
New-game: Type <SHIFT> 'N'
The 'New-game' command is still available when in 'Alter-position' mode. (See
full description later.)
Exit: Type 'E'
This allows you to exit from 'Alter-position', when the required position has
been achived. (Remember to set the correct side-to-move before exiting). If
the position is illegal for any reason, the message 'illegal' is displayed
and 'Alter-position' will not be exited. You must then correct the error
before exiting.
Illegal positions occur with any of the following:
either side has no king
either side has more than one king
the side not to move is in check
either side has a pawn on the first or eighth rank
either side has more than eight pawns or promoted pieces
When you exit 'Alter-position', if you made any changes, the current
game-record is cleared of all previous moves, so that you cannot 'Back-step'
through these (now possibly illegal) moves. (Note that changing the side-to-
move or the move-number is also considered as a change).

Back-step - Type <SHIFT> 'B' & For-step - Type <SHIFT> 'F'. All the moves
in the game are stored in the programs memory. This allows you to step
backwards or forwards through the game record, to get to any required
position. This can be used for several reasons:-
e.g. after you accidentally lose a piece, you can recover your error by
using Back-step.
e.g. If you wish to try a different line earlier in the game, you can Back-
step to the required position and then carry on playing the different
line.

Stepping through the game record only does one move at a time so you must do
an even number of steps if you still want to play for the same side.
Colours - Type <SHIFT> 'C'
The piece, square, border, ink and paper colours can be set to any of the
eight available colours. The piece and square colours are only used for the
2-D board display. The only limitation is that the ink and paper colours
cannot be the same because this would cause the display to 'disappear'.
If you try to enter conflicting colours the message 'illegal' will be
displayed and you must re-enter another colour. Note also for the 3-D
display, you should use a lighter colour for the ink than the paper or the
piece 'colours' will appear inverted i.e. the 'white' pieces will appear
darker than the 'black' pieces.
The default colours are: light-piece = 7(white), dark-pieces = 0(black),
light-square = 4(green), dark-square = 2(red), border = 2(red), ink =
7(white), paper = 1(blue). (See section 4.b for details on how to enter
numeric data).
Tape - Type <SHIFT> 'D'
This allows you to save/load move-records and positions to/from the tape. The
program asks 'Load or Save?'. Type 'L' to load a previously saved record, or
'S' if you wish to save the current record. Any other keypress will abort the
'Tape' command.
The program then asks for a file number (0 to 255), which is used as part
of the filename on the tape. (See section 4.b for details on how to enter
numeric data.) If any error occurs during loading the current move-record
will be lost. Note that the program parameters, such as playing speed,
elapsed time, are not saved and so may need to be reset after loading. The
<BREAK> key can be used to abort saving and loading early.
Elapsed-time clocks - Type <SHIFT> 'E'
The elapsed time clocks for both sides can be set from 00:00:00 to 255:59:59.
First the program asks for the new value for the white clock and then the new
value for the black clock. (See section 4.b for details on how to enter
numeric data.) This can be used to set-up reasonable values for the elapsed
time clocks, if you change the playing speed in mid-game. The program makes
extensive use of the elapsed time clocks to determine how quickly it should
play e.g. if you increase the elapsed on the programs clock it will then
play quicker to keep within the average time it is currently set to.
Go - Type <SHIFT> 'G'
This forces the program to move for the current side to move. This can be
used repeatedly to make the program play several moves against itself or to
force the program to resume play, for the side to move, after the
'Supervisor' command has been entered (see later). It also allows you to
switch sides with the program in mid-game.
After a new game has been initiated, this will make the program play for
white. In this case the program automatically clears the clocks and sets the
orientation for you to play the black pieces up the board.
This command is ignored if the game is over.
Invisible - Type <SHIFT> 'I'
This allows you (if you feel confident enough) to play the equivalent of a
game of 'blindfold' chess, as sometimes done by strong chess players. The
program asks 'Invisibility?', when you must enter a number from 0 to 3. (See
section 4.b for details on how to enter numeric data.) The number entered
determines which pieces on the board are made invisible.
0 is the default value where both sides pieces are displayed.
1 will make the white pieces invisible.
2 will make the black pieces invisible.
3 will make all the pieces invisible.
The moves are still indicated on the board and displayed in the move record.
When 'invisible' is selected, the word 'invisible' appears in the top right
of the board, to avoid confusion.
Joystick - Type <SHIFT> 'J'
The joystick can be switched on/off with this command. A message is printed
to show the current joystick status.
Legal moves - Type <SHIFT> 'L'
All the legal moves by any piece of the side to move can be shown. First
position the cursor on the subject piece and type <SHIFT> 'L'. The legal
moves will be shown in sequence by flashing the cursor on the target squares.
The cursor is then returned to the subject square. If no legal moves exist
the cursor will not move. This can be used as a tutorial aid for learners.
New-game - Type <SHIFT> 'N'
A new game can be started with this command. If you have not used
'Alter-position' since the last 'New-game', then the game record is left
intact until the first move of the new game is entered. This allows you to
replay through the whole of the last game, by using the 'For-step' or
'Replay' commands.
Orientation - Type <SHIFT> 'O'
The orientation of the board printout can be reversed, so that you can play
the black pieces up the board. The algebraic notation around the board is
also reversed. This is most useful when you wish to play black against the
program.
Play-self - Type <SHIFT> 'P'
This makes the program play a game against itself, but moving for both sides.
When a game is completed, the program pauses for a few seconds, to allow you
to study the final position, and then starts a new game automatically. This
command is ignored if the program is in 'problem' or 'infinite' mode (see
later), or the game is over. Pressing the <DELETE> key, whilst the computer
is thinking about its move (but not while it is indicating its move on the
board) or after the game is over, will stop the program playing against
itself and allow you to resume play for the current side to move.
When playing itself, both player names are displayed as 'Colossus'.
Quantify parameters - Type <SHIFT> 'Q'
This allows you to adjust some of the programs internal parameters to make it
function in different ways. (See section 4.b for details on how to enter
numeric data.) The program first asks 'Book?'. The parameter value can be 0
or 1. If it is set to 0 the program will search its 'openings book' for moves
(effectively making the openings easier for you). If it is set to 1 the
program will use its book in the normal manner. The program then asks
'Prediction?'. The parameter value can be 0 or 1. If it is set to 0 the
program will not predict your move or think ahead on your time (effectively
making the whole game easier for you). If it is set to 1 the program will
predict your move in the normal manner. The program then asks 'Line depth?'.
The number of moves in the "current-line" display can be set from 1 to 12 ply.
The default is 1, i.e. the moves at the first ply of the tree are displayed.
The program then asks 'Dimensions?'. The parameter value can be 2 or 3. If
it is set to 2 the graphics board printout is the two-dimensional (2D)
representation as used in chess literature.
If it is set to 3 (the default) the board is displayed as three dimensional
(3D) as though you are looking at a real board and pieces. The program then
asks 'Draw score?'. The "material" part can be set from -9 to +9 and the
"positional" part from -60 to +60. The lower the draw score is set the more
the program will keep trying to win. The higher the draw score is set the
more the program will be happy to allow a draw (effectively making it
easier for you to achieve a draw by repetition of position).
Replay - Type <SHIFT> 'R'
The whole game-record can be replayed from the start to the final position to
demonstrate the game-so-far to a spectator. The program pauses between moves
to allow you to follow the game. The pause time can be set from 0 to 20
seconds. (See section 4.b for details on how to enter numeric data). You can
interrupt the replay by pressing the <DELETE> key during one of the pauses.
When an action replay is in progress the message "Replaying" is displayed
below the board.
Supervisor - Type <SHIFT> 'S'
This stops the program making any moves, and allows you to play moves for
both sides. This allows you to set-up a required position by playing through
a sequence of moves, or to play a friend using the programs board display.
All moves entered are still checked for legality. When supervising, both
player names are displayed as 'Opponent'.
Type of playing mode - Type <SHIFT> 'T'
The program has six modes of play, to allow different speed and style games
to be selected. The more time you give the program to think about it move,
the better it will play. The program asks 'Type?', to allow you to select
one of the following:- (See section 4.b for details on how to enter
numeric data.)

1) Tournament mode
Full tournament parameters can be set-up.
First, the program asks for the move number of the first time control.
Second, the program asks for the number of moves to secondary time
controls.
Third, the program asks for the time of the first time control.
Fourth, the program asks for the time to the secondary time controls.
The program is not strict about your time control and will not claim a win
'on time', if you exceed any time control. The program will usually never
exceed its own time control.

2) Average mode
This is really an easy usage version of Tournament mode. Instead of entering
all four parameters needed for tournament mode, the program simply asks you
'Move time?' The program will then control its search to use on average the
time you enter. (Entering 0 second for the average time, selects the
programs fastest level.) This effectively provides thousands of 'levels'
of play.
Note 1: In fact, this mode sets up tournament parameters of 60 moves to each
time control, with 60 times the average move-time being allocated for
each control.
Note 2: this is the initial mode, with an average of 10 seconds per move.

3) All-the-moves mode
In chess clubs, most games are played with chess clocks, with each player
having say five minutes to complete the game or 'lose on time'.
This mode allows you to set the complete game-time and the program will try
to play all the moves of the game within the specified time. If either player
exceeds the game time, the game will be terminated with the message 'Time up'.
By using the 'Elapsed-time clocks' command, you can 'handicap' the program or
yourself, by putting some time on one of the clocks before starting the game.
This can be very useful for players who are much worse or much better than
the program.

4) Equality mode
In this mode, the program will attempt to keep its elapsed time clock,
closely matched to your elapsed time clock, effectively playing at a sililar
speed as you are playing. If you make several quick moves, the program will
also probably have to play quickly to keep up with the 'pace' you are
setting. If however, you think for a long time over some moves, the program
will also be able to think longer over its moves. In practice, the programs
clock will usually trail yours by a few minutes.

5) Infinite mode
This mode can be used to solve chess puzzles of the form 'find the best move
in this position'. It searches all combinations of all moves to ensure that
it does not miss a sacrifice. It continues searching, further and further
ahead, until you tell it to stop, or it finds a forced checkmate for either
side, or it has searched 12 ply ahead (the programs maximum lookahead) or
their is only one legal move in the position. This is very useful for postal
chess games where you can just leave the program running overnight (or
sometimes even longer) to find the best move. When the program starts
searching for the move, the clocks are set to 00:00:00, so that the time
taken on the move can be recorded. Also note that the openings book is not
searched in this mode. Of course, the program may find the same move in much
less time using its normal playing mode, because certain 'obviously bad'
moves are ignored.

6) Problem mode
This mode is used to solve chess mating problems. When selected the program
asks 'Program Type?'. The program can solve three types of problems:-
1) Normal mates - of the form 'White to move and mate black in X moves'
2) Self mates - of the form 'White to move and force black to mate white in
X moves' and
3) Help mates - of the form 'White to move and help black to mate in X moves'.
Of course, the program can find mates for black just as easily. This program
is the first home computer chess program ever to be able to solve selfmates
and helpmates.
The program then asks 'Mate in?', whereupon you enter the number of moves
till the intended mate. The program can solve mates up to seven moves ahead.
When the program starts searching for the mate, the clocks are set to
00:00:00, so that the time to find the mate can be recorded.
If the program finds a mating move, it prints the mating line below the move
record, stops the clock, and asks 'Continue?'. If you are satisfied with the
discovered move, then pressing 'N' will cause the program to make this
move immediately. If however you wish the program to continue searching for
any alternative mate, press "Y" and the program will restart the clocks and
continue searching for another mate. This process is repeated until no more
mating moves are found, in which case the program will then make the last
mating move found, on the board. If the program does not find any mate,
the message 'No mate' is displayed and the program automatically enters
'Alter-position' to allow you to select another position or correct the
current one. This program is one of the fastest problem solving chess
programs in the world!
Use next best - Type <SHIFT> 'U'
After the program has made a move, you can instruct it to choose a different
move from those remaining. You can use this repeatedly unitl all the moves
have been used up. When no more moves are available, it prints the message
'*NO MORE MOVES*' and starts again choosing from the whole move list. If the
program is still using its openings books, it will choose the next book
alternative (selected at random). This can be used to examine the programs
book choices to select the line you prefer. (No non-book moves are
considered!) If the program is out of book, it will choose the move it
considers to be its next best choice from the remaining moves.
Volume - Type <SHIFT> 'V'
The programs 'beeps' can be turned off/on with this command. When the sound
is turned off, no further 'beeps' will be heard.

Section 5 - Program Information
-------------------------------
5 a - Statistics
Author: Mr. M. P. Bryant
Publisher: CDS Software Ltd., CDS House, Beckett Road,
Doncaster, South Yorkshire, England.
Language: Z80 assembly
Code size: 36K
Data size: 5K
Positions examined per second: 170 (average)
Estimated Rating: 1850+ELO (156+BCF)

5 b - Openings book
The program has an openings 'book' of about 3000 positions, which it uses to
play the first few moves of the game quickly and accurately. Lines vary from
2 ply to 17 ply deep. When there is a choice of book moves at any position,
the program will choose between them at random, with a slight bias towards
the moves which the program itself considers best.