Engine to Interface

id
* name <X>

This must be sent after recieving the "cxboard" command to identify the engine. Example: "id name tsito 2.0.0"

* author <X>

This must be sent after recieving the "cxboard". Example: "id author Noah Roberts"

cxboardok

Must be sent after the it and optional option to tell the GUI that the engine has sent all info and is ready in cxboard mode.

readyok

This must be sent in reply to isready when it has finished processing all input and is ready to accept new commands.

bestmove <move>

Used in force mode when finished with a go command. The engine has not made the move and will not enter ponder mode until requested.

copyprotection

Used to tell the interface that copyprotection is being checked. After the cxboardok command the engine can say "copyprotection checking". When it has finished checking the engin must send "copyprotection ok" or "copyprotection error". If there is an error the engine should respond to every command but quit with an Error reply and not quit until requested.

info

Send info to interface. This command should be sent any time something changes or in responce to a request for information (ie. hint).

* depth <X>

search depth in plies.

* seldepth <X>

selective search depth in plies; must be accompanied by a depth in same string.

* time <X>

time speant searching in miliseconds. should be sent with pv.

* pv <move1> ... <movei>

the best line found

* multipv <num>

for multi pv mode. send with pv to represent the order of pvs. best line is multipv 1.

* score <X>

* cp <X>

score from the engine's perspective in centipawns

* mate <X>

mate in x moves

* lowerbound

score is a lowerbound

* upperbound

score is an upperbound

* currmove <move>

currently searching move.

* currmovenumber <X>

currently searching move number x. The first move is 1 not 0.

* hashfull <X>

The hash is x permill full, the engine should send this regularly.

* nps <X>

x nodes per second searched, the engine should send this regularly.

* tbhits <X>

x positions where found in the endgame tablebases.

* cpuload <X>

the cpu usage of the engine is x permill.

* string <X>

any string to be displayed. all following characters on the line will be considered part of the string.

* hint <move>

the engine recommends move as the next best. Sent in responce to hint command.

option

This command tells the GUI about parameters that can be set by the user. These should be sent after the id command sequence and before cxboardok. The GUI should use this information to build a settings dialog. The GUI will use the setoption command to alter these options on the user's behalf. One string will be sent for each parameter.

name <id>

The option has the name id. This can be sent in any language. Certain options have fixed value for id, which means that the semantics for the option are fixed:

id = Hash, type is spin

Amount of memory in MB used for trasposition table.

id = Ponder, type is check

the engine is able to ponder.

id = OwnBook, type is check

The engine is in charge of its own opening book.

id = MultiPV, type is spin

the engine supports multiple best line mode. default is 1

id = Variant, type is combo

The engine supports the listed variants. Default is XiangQi.

type

check

A checkbox that can be either true or false.

spin

a spin wheel that can be an integer in a certain range

combo

a combo box that can have different predefined strings as a value

button

a button that can be pressed to send the engine a command.

string

a text field that has a string as a value. an empty string has the value "<empty>"

default

The default value of this parameter

min

the minimum of this parameter

max

the maximum of this parameter

var

a predefined value of this parameter

Examples:

option name OwnBook type check default true

option name Hash type spin default 32 min 0 max 1024

option name Search type combo default AlphaBeta var MTD var AlphaBeta var NegaScout

option name OpeningBookPath type string default /usr/share/tsito/book.dat

option name Clear Hash type button

Illegal move[ (<reason>)]: <move>

The attempted move is illegal given the current position. The engine may optionally specify a reason. Examples: "Illegal move: e2e3", ""Illegal move (in check): e2f2"

Error (<errortype>): <command>

The given command has generated the errortype error.

move <m>

The engine is making the move m.

result RESULT {COMMENT}

The engine has detected an end to the game and is claiming a win, loss, or draw. As far as the engine is concerned the game has finished and will process no more moves until a new position is provided.

resign

The engine is resigning. As far as the engine is concerned the game is finished and will process no more moves until a new position is provided. The engine may use the result command instead of this one.

offerdraw

The engine wants to claim a draw. The offer is considered valid until two moves are made. The game is still on until the engine recieves a result command.

telluser MESSAGE

Relay MESSAGE to user.

askuser RESPTAG MESSAGE

Ask user a question. Interface responds with RESPTAG ANSWER.

tellopponent MESSAGE

Relay MESSAGE to teh opponent only

tellothers MESSAGE

Relay MESSAGE to everyone but the opponent.

tellall MESSAGE

Relay MESSAGE to everyone.