
COLOSSUS CHESS 2.0

A chess playing program, for the CBM 64 micro.

(c) 1984
CDS Micro Systems
by Martin Bryant


SECTION SUBJECT

1     INTRODUCTION
a     General
b     Running the program

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 move

3     PLAYING A GAME
a     New game
b     Your move
c     Colossus move
d     Game over

4    KEYBOARD ENTRIES
a    Cursor movement
b    Numeric data
c    Commands

5    PROGRAM INFORMATION
a    Statistics
b    Openings book
c    Results


SECTION 1 - INTRODUCTION

1.a - General
Colossus 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 seven 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 available, including some, never before
implemented on any home computer chess program.  Colossus
also has a perfect understanding of all the rules of chess,
including underpromotions, the fifty move rule and all draws by
repetition.

1.b - Running the program
Put the cassette into the recorder and rewind it to the start.  Press
the SHIFT and RUN/STOP keys simultaneously and press PLAY
on the recorder.  The cassette will run until it finds the BASIC
startup program called 'COLOSSUS CHESS'.  It will then display
'FOUND COLOSSUS CHESS'.  Press the COMMODORE key to
allow the computer to load in the program, which takes
approximately 8.5 minutes.
The program once loaded will run automatically.

DISKETTE VERSION

1.b - Running the program
Put the diskette into the drive.  Type  in
'Load 'Colossus*',8' and press RETURN.  This will find the
basic loader program, RUN This and after a short time
the program will be ready for play.

Tape - Type 'T'

This allows you to save / load move-records and positions
to / from the diskette.  The program asks load or save?.  Type
' L' if you wish to load a previously saved records, or 's'
if you wish to save the current record.  If any error occurs
during loading then the current move-record will be lost.
The (stop) key can be used to abort a save / load early.

SECTION 2 - DISPLAY

2.a - General
The display uses two screens to provide clear 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
names and chess clocks and also information on the programs
thought processes including lookahead, positions examined 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 below the board
as necessary.  These are explained in more detail in later sections.

2.d - The move record
The secondary screen shows the last seven moves made by each
side in two columns including move 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 seperator 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
kind.  En-passent captures have no special indication.
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  programs  thought  processes.  This
information can provide a great insight into how a good chess
program works, but only takes a fraction of one percent of the
programs thinking time to display it.

2.e.i - Lookahead
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 at every position
and in fact takes very little time because of the single-byte/
character type of display.  The program examines on average
about 520 positions per second.

2.e.iii - Best line
The program displays the best line it has found so far in its
search.  This can provide you with a 'hint' move and an analysis of
the game in the next few moves.  (Usually the line will contain a
'null' move.  This simply means a passive, non-capturing move).
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.

2.e.iv - Current move
To the right of the board is displayed the move the program is
currently considering.  This can be seen to change as the search
progresses.

SECTION 3 - PLAYING A GAME

3.a - New game
When a new game is started, the pieces are setup in their initial
positions, the clocks are reset to '00:00:00', the move display is
cleared, the white clock is started, and you are given the option of
moving first.  Pressing '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 the
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 (RETURN) key.  This causes the from-square to
be displayed.  If you accidentally 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 (RETURN).  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 move is a pawn promotion the program then asks
'Promotion piece?'.  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.

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 - Colossus move
When the program computes its move it displays the message
'Let me think...' below the board, and displays the current move
under consideration to the right of 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 indicates it on the
board (in the same way as your moves are indicated) Pressing
the COMMODORE 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 state of the game.  The messages are:-
'Drawn'      the game has been drawn by 3-fold repetition of
             position or the 50-move rule.
'Checkmate'  the side which moved last delivered checkmate.
'Stalemate'  the side to move is in stalemate.

The program then asks 'What now? and waits for you to enter
one of the program commands.
Type '(CTRL)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 two ways.

1) The four cursor controls, provide single square movement in
any direction.  If the cursor is moved off the edge of the board,
it reappears at the opposite edge.

2) 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 'lowercase' letters 'a' to 'h'.  (Lowercase
letters are entered by pressing the letter key and (SHIFT)
together.  Alternatively (SHIFT-LOCK) can be engaged if you
wish to use this method regularly.)  This allows algebraic
notation to be used when entering moves e.g. engaging
(SHIFT-LOCK) and typing e2(RETURN)e4(RETURN) 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(RETURN)4(RETURN) would also work.

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 a8.

4.b - Numeric data
Many of the programs commands require numbers to be
entered to setup new values of parameters etc.  The program
employs a simple to use, idiot-proof method for 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
displayed 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 (RETURN).
(If you do not wish to change the current value, then just press
(RETURN), instead of using the up-arrow or the down-arrow
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).

Note 1:      the clocks are paused while a command is
             processed.
Note 2:      if the selected command requires numeric input
             and you are viewing the secondary screen, then
             the program will automatically switch back to the
             graphics screen.

Alter-position - Type 'A'
Any legal chess position can be setup 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 retreived with this command.

Move-number: Type 'M'
The program asks 'Move number?, thus allowing you to enter
the new move number required.  (See section 3.b for more 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 cursor
over it and enter one of the above, to determine the new status of
that square.

Wipe: Type 'W'
This removes all pieces from the board, thus allowing positions
with very few pieces, to be set-up more quickly.

Invisible, New-game, Orientation:
The 'Invisible', 'New-game' and 'Orientation' commands are still
available when in 'Alter-position' mode.  (See full descriptions
later).

Exit: Type 'E'
This allows you to exit from 'Alter-position', when the required
position has bee achieved.

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 followings:-

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

Back-step - Type 'B' & For-step - Type '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 accidently 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.

Note:     In fact the program only has room in memory for
          about the most recent 120 moves. This should
          be enough to store most games completely.
          If however the game goes on for more than 120
          moves, the game record is automatically up-
          dated to store the most recent 120.  You cannot
          then Back-step right to the beginning of the
          game.

Colours - Type 'C'
The ink, paper and border colours can be set to any of the sixteen
available colours.  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 that 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: ink = 3(cyan), paper = 0(black), border
= 14(light blue).

Elapsed-time clocks - Type 'E'
The elapsed time clocks for both sides can be set from 00:00:00
to 99:59:59.  First the program asks for the new value for the white
clock and then the new value for the black clock.  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 time on the
programs clock, it will then play quicker to keep within the
average time it is currently set to.

Go - Type '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.
This command makes the program play white, after a new game
has been started.
This command is ignored if the game is over.

Invisible - Type '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 pieces displayed on the board are
made invisible.  The moves are still indicated on the board and
displayed in the move record.  Using this command again will
make the pieces visible once more.
When 'Invisible' is selected, the word 'Invisible' appears at the top
right of the board, to avoid confusion.

Legal moves - Type '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 '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.

Mode - Type 'M'
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 its move, the better it will play.
The program asks 'Mode?, to allow you to select one of the
following:-

1) Tournament mode
   Full tournament parameters can be setup.
   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 seconds for the average move
   time, selects the programs fastest level).  This effectively
   provides thousands of 'levels' of play.
   Note: 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: 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'.

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 similar 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 combina-
   tions of all moves to ensure that it does not miss a sacrifice.  It
   also continues searching, further and further ahead, until you
   tell it to stop, or it finds a mate, or it has searched 14 ply ahead
   (the programs maximum lookahead).  This is very useful for
   postal chess games where you can just leave the program
   running overnight 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.  Of
   course, the program may find the same move in much less
   time using its normal playing mode.

6) Problem mode
   This mode is used to solve chess mating problems.
   When selected the program asks 'Problem Type?'.  The
   program can solve two types of problems:- ( 1 ) Normal mates
   - of the form 'White to move and, mate black in X moves' and
   (2) Self mates - of the form 'White to move and selfmate
   himself in X moves.  Of course, Colossus can find mates for
   black just as easily.  Colossus is the first home computer
   chess program ever to be able to solve selfmates!
   The program then asks 'Mate in?', whereupon you must enter
   the number of moves till the intended mate.  Colossus can
   solve mates up to seven moves ahead.  This is more than any
   previously available chess program.  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 clocks, 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 auto-
   matically enters 'Alter-position' to allow you to select another
   position or correct the current one.

New-game - Type (CTRL)' N'
A new game can be started with this command. Because of the
destructive nature of this command it must be entered with the
(CTRL) key also pressed.  This stops any accidental keypress
destroying the current game.
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 repeated 'For-steps'.

Orientation - Type '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 P
This makes the program play a game against itself, by 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 mode or the game is over.  Pressing the
COMMODORE key, whilst the program 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'.

Replay - Type 'R'
The whole game can be replayed from the start to the current
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 1 to 20 seconds.  You can
interrupt the replay by pressing the COMMODORE key during
one of the pauses.  When an action replay is in progress, the
message '*Replaying*' is displayed below the board.

Supervisor - Type '5'
This stops the program making any moves, and allows you to
play moves for both sides.  This allows you to setup 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'.

Tape - Type T
This allows you to save/load move-records and positions
to/from the cassette.  The program asks 'Load or Save?'.  Type ' L'
if you wish to load a previously saved record, or'S' if you wish to
save the current record.  If any error occurs during loading the
current move-record will be lost.  Any errors are reported in the
form 'Tape error N' where N is one of the error numbers shown
on page 306 of the Programmer's Reference Guide.  The (STOP)
key can be used to abort a save/load early.

Volume - Type 'V'
The volume of the programs 'beeps' can be adjusted from
0(silent) to 15(loudest).  This allows you to change volume
without having to go to the television.

SECTION 5 - PROGRAM INFORMATION

5.a - Statistics
Author: Mr. M.P. Bryant
Publisher. CDS Microsystems
Language: 6502 assembly
Code size: 26K
Data size: 5K
Positions examined per second: 520 (average)
Estimated Rating: 1750+ ELO

5.b - Openings book
Colossus 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, Colossus will choose
between them at random, with a slight bias towards the moves
which Colossus itself considers best.

5.c - Results
Colossus 2.0 has been tested against numerous other chess
programs and has beaten them all.  In the tests, sixteen games
were played, on various levels, with an equal number of whites
and blacks for each program.  One point was awarded for a win,
half a point for a draw, no points for a loss.  The results of these
tests were as follows:-

Colossus 2.0 beat the following programs by:-

White-Knight Mk11   BBC Publications    BBC        11-5
Superchess 3.0      CP - Software       Spectrum   12-4
Grandmaster         Audiogenic          CBM 64     12-4
Cyrus IS Chess      Sinclair            Spectrum   13-3
Spectrum Chess II   Artic               Spectrum   14-2
Chess               Acornsoft           BBC        16-0
Chess               Bug-Byte            BBC        16-0
Chess               Computer Concepts   BBC        16-0
Chess               Program Power       BBC        16-0
Chess               Atari               Atari      16-0
Chess               Oric                Oric       16-0
Chess               Psion               Spectrum   16-0 
Master Chess        Mikro-Gen           Spectrum   16-0
Sargon 2.0          Hayden              Apple II   16-0     
ZX Chess            Artic               ZX81       16-0

NOTE: White-Knight was the 1983 Home Computer European
      Champion!!!

Back Cover:

'COLOSSUS CHESS 2.0'

Colossus is the best computer chess program available on
any home computer.  It is written using the very latest tech-
niques by a computer chess programmer of seven years
experience.  It has been tested against a wide range of other
chess programs and proven stronger than any of the oppos-
ition.  It has the widest range of true features available,
including some, never before implemented on any home
computer chess program.  Colossus also has a perfect under-
standing of all the rules of chess, including underpromot-
ions, the fifty move rule and all draws by repetition.

CDS Micro Systems  10, Westfield Close, Tickhill, Doncaster DN11 9LA.

