Kallisto protocol expects your engine to be compiled as a dll with functions
// callback function to display information about the progress of calculations
// score - position estimation.
// the winning is better described as: 32767 - N, where N is the number of yields before winning
// win over the non-root database, it's better to designate this: 30000 - N
// depth - information about the depth of the search
// pv is the best option
// cm - the process being analyzed at the moment
void PF_SearchInfo(int score, int depth, int speed, char *pv, char *cm);
// second variand
// all paramaters - strings
void PF_SearchInfoEx(char *score, char *depth, char *speed, char **pv, char *cv);
// Do move
// Format: "a3b4" и "a3:b4:d6:e7".
void EI_MakeMove(char *move)
// Start search and return move
char *EI_Think()
// Init engine
// si - PF_SearchInfo function
// mem_lim - memory limit used by engine
void EI_Initialization(PF_SearchInfo si, int mem_lim)
// set second search information function
void _EI_SetSearchInfoEx(PF_SearchInfoEx sie)
// Start new game
void _EI_NewGame()
// Stop search
void _EI_Stop()
// Set position
// b - black soldier
// B - black king
// w - white soldier
// W - whire king
// . - empty cell
// cells sequence : b8, d8, f8, h8, a7, c7, ..., a1, c1, e1, g1
// The lsat character - turn indicator(w - white,b-blacck)
void EI_SetupBoard(char *pos)
// set time control
// time minutes for game
// inc ms - bonus for each move
void EI_SetTimeControl(int time, int inc)
// set ms for clock
// time - your time
// otime - oponent time
// called before each move
void EI_SetTime(int time, int otime)
// get name of thr engine
char * EI_GetName()
// called before quit engine
void EI_OnExit()