dgtdrv |
|
Goal of the ProjectThe main purpose of dgtdrv is to give Non-Windows-Users the opportunity to use their DGT Electronic Chess Board in their used environment. In principle, dgtdrv allows to use almost every current chess GUI to use the board. The sole requirement is that this GUI offers an engine tournament mode. |
|||||
ImplementationTo allow almost every GUI to use dgtdrv it is implemented as a normal chess engine. It supports both the common xboard (sometimes called winboard) command set as well as the newer UCI commands. A special mode is also provided for the well known crafty chess engine by Robert Hyatt. Version 1 of dgtdrv was actually built upon the code provided by crafty. This version can only use a board connected by the serial port. Later versions however (dgtdrv2) are completely rewritten from scratch and use the dgtnix library supporting also boards connected via USB. The dgtnix library also supports various platforms. For a list of tested platforms for dgtdrv2 see below. | ||||||
How it is usedExisting Chess GUI integrationAn engine-engine tournament is realised by a chess GUI by havin one chess engine to play another in tournament mode. Normally the user can set the time limits and so on and then the computer "plays itself" a specified set of games where each engine plays one game as white and the subsequent one as black. The idea for the integration of the DGT Electronic Chess Board is now simple: provided one engine in this mode is actually the user at his electronic chess board all that has to be done is to feed all moves the user makes on the DGT board to the GUI as if they were from another chess engine. This is actually the way dgtdrv works in this scenario.Advantages:
Disadvantages:
Proof of concept: xboard 4.2.7-2_DGTOne of the main reasons to implement dgtdrv was, that a software like this would greatly simplify the integration of external chess boards into already existing GUIs. The idea of the proposed Input Engine Protocol, which is mainly an extension to the well known uci and xboard protocol, is that no new infrastructure is necessary to get external hardware working and that upon change of this hardware no chagnes to the GUI would be necessary anymore. As a proof of concept a simple extension to xboard, the main chess interface on the Un*x platform, was implemented. The current version is available for download as a patch against xboard 4.2.7, Debian patchlevel 2 (the latter includes some patches to get cmail (e-mail correspondence chess) working again). The Debian Patch is available for convenience.
The current implementation adds merely 80 lines of code to xboard and involves the adoption of one function only!It already allows to play another engine, even with arbitrary starting positions which are read in from the DGT board. Just set up a postion (or the normal starting position) and use dgtdrv as one of the two chess engines xboard can load upon startup. (See -fcp and -scp, use dgtdrv as second chess program to play with black.) Upon startup xboard will read the postion from the DGT board and set up its internal postion. If a DGT-clock is connected it should even set the clocks to use your external clock. Use Mode/Two Machines to start the game. The typical xboard call could look like this (playing white against crafty) xboard -fcp "dgtdrv2.i686 /dev/ttyUSB0 rw $LOGNAME" -scp crafty Note the quotes for the dgtdrv-call! To ease up the use of multiple engines with xboard as well as to integrate dgtdrv more smoothly a small Python-GTK program named Scotty was developed. | ||||||
For DevelopersTow goals where in mind while developing dgtdrv
| ||||||
Supported Platformsdgtdrv based on craftys code is only known to run on Intel and compabible based PCs running Linux with a serial connector for the DGT Electronic Chess Board dgtdrv2 based upon the dgtnix library use only POSIX features. So in principle it should compile and run on any *nix-type system, at least when using gcc. New is also the compatiblity with USB-type boards. This was tested using a serial board and a serial to USB convertor. dgtdrv2 is known to compile and run on the following platforms:
| ||||||
How to get it:You can check out the latest version of dgtdrv right out of the cvs repository at sourceforge and compile the driver yourself. The following steps are required: Get dgtnixEither download the prepacked library source or get it from the svn-repository at sourceforge:svn co https://svn.sourceforge.net/svnroot/dgtnix dgtnix/trunk You will find the current release of the library in dgtnix/trunk subdir. See the documents there how to build and install the library. Get dgtdrvCheck out the current version of dgtdrv from the cvs-repository at sourceforge: cvs -d:pserver:anonymous@dgtdrv.cvs.sourceforge.net:/cvsroot/dgtdrv login cvs -z3 -d:pserver:anonymous@dgtdrv.cvs.sourceforge.net:/cvsroot/dgtdrv co -P dgtdrv The subdir dgtdrv will conatain the current version of the driver. Follow the documentation there to build it. Adoptions of the makefile might be required. | ||||||