[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: gnuchess/xboard protocol

From: Ethan A Burns
Subject: Re: gnuchess/xboard protocol
Date: Thu, 18 May 2006 17:11:55 -0400

>Ethan A Burns wrote:
>> Looking at this page and comparing with output from ``gnuchess --xboard''
>> doesn't match up.
>> Does anyone have input for this?  Is this document out dated now?
>The document is current.
>Deviations are bugs, or in some cases just missing features.

According to xboard protocol spec, section 9 Commands from the engine to xboard:

move MOVE
    Your engine is making the move MOVE. Do not echo moves from xboard with 
                this command; send only new moves made by the engine.

However, when I enter a move into gnuchess --xboard the reply doesn't look like
that at all:

address@hidden ~ $ gnuchess --xboard
Adjusting HashSize to 1024 slots
1. b2b3
1. ... d7d5
My move is: d7d5

the ``My move is: <MOVE>'' string is no where mentioned in the xboard protocol.
Is this then a bug in gnuchess?

>> Chess
>> Adjusting HashSize to 1024 slots
>> ...
>> Testing around a bit, sending and reading (reading in a seperate thread), I 
>> found that gnuchess only seems to send output to my pipe AFTER receiving a 
>> move from my program.
>It is easier to look at the source for this, as you'll see where output
>is done to the stdout, in xboard mode, the pipe is explicitly flushed
>(the code should have been refactored to stuff this into a subroutine).
>It isn't flushed for the hash output, so I think this is a clear bug
>(Indeed I'll have to check if it should be output at all).

This output is not mentioned in the xboard protocol, so I believe it would be
a bug.

>I think the reason it doesn't cause any issues for most of the programs
>that work with it because of how they do the communication. Most do a
>"ping", and check for "pong", and so eat all this dross in the output
>that shouldn't be there at start-up.

Could you explain this a little bit more please?  My understanding would be:
My program sends a ping, and reads in input untill I see a pong, just ignoring
everything inbetween?  Is this correct?

>I will tidy this up for the next release, but suggest the "ping"/"pong"
>check is probably worth doing in general and as a workaround if you have
>to cope with earlier GNU Chess versions.
>Can I ask what your program does?

I am working on a 3D chess UI using opengl/glut.

        Thanks for your responce,

reply via email to

[Prev in Thread] Current Thread [Next in Thread]