changes from H.G. Muller; version 4.3.14 v4.3.14
authorH.G. Muller <h.g.muller@hccnet.nl>
Sat, 2 May 2009 17:38:39 +0000 (10:38 -0700)
committerArun Persaud <arun@nubati.net>
Sat, 2 May 2009 17:38:39 +0000 (10:38 -0700)
817 files changed:
AUTHORS
FAQ.html
Makefile.in
READ_ME
ToDo
backend.c
backend.h
backendz.h
bitmaps/README.bitmaps
bitmaps/a33o.bm [new file with mode: 0644]
bitmaps/a33s.bm [new file with mode: 0644]
bitmaps/a37o.bm [new file with mode: 0644]
bitmaps/a37s.bm [new file with mode: 0644]
bitmaps/a40o.bm [new file with mode: 0644]
bitmaps/a40s.bm [new file with mode: 0644]
bitmaps/a45o.bm [new file with mode: 0644]
bitmaps/a45s.bm [new file with mode: 0644]
bitmaps/a49o.bm [new file with mode: 0644]
bitmaps/a49s.bm [new file with mode: 0644]
bitmaps/a54o.bm [new file with mode: 0644]
bitmaps/a54s.bm [new file with mode: 0644]
bitmaps/a58o.bm [new file with mode: 0644]
bitmaps/a58s.bm [new file with mode: 0644]
bitmaps/a64o.bm [new file with mode: 0644]
bitmaps/a64s.bm [new file with mode: 0644]
bitmaps/a72o.bm [new file with mode: 0644]
bitmaps/a72s.bm [new file with mode: 0644]
bitmaps/as33o.bm [new file with mode: 0644]
bitmaps/as33s.bm [new file with mode: 0644]
bitmaps/as49o.bm [new file with mode: 0644]
bitmaps/as49s.bm [new file with mode: 0644]
bitmaps/as72o.bm [new file with mode: 0644]
bitmaps/as72s.bm [new file with mode: 0644]
bitmaps/as74o.bm [new file with mode: 0644]
bitmaps/bitmaps.h
bitmaps/c33o.bm [new file with mode: 0644]
bitmaps/c33s.bm [new file with mode: 0644]
bitmaps/c37o.bm [new file with mode: 0644]
bitmaps/c37s.bm [new file with mode: 0644]
bitmaps/c40o.bm [new file with mode: 0644]
bitmaps/c40s.bm [new file with mode: 0644]
bitmaps/c45o.bm [new file with mode: 0644]
bitmaps/c45s.bm [new file with mode: 0644]
bitmaps/c49o.bm [new file with mode: 0644]
bitmaps/c49s.bm [new file with mode: 0644]
bitmaps/c54o.bm [new file with mode: 0644]
bitmaps/c54s.bm [new file with mode: 0644]
bitmaps/c58o.bm [new file with mode: 0644]
bitmaps/c58s.bm [new file with mode: 0644]
bitmaps/c64o.bm [new file with mode: 0644]
bitmaps/c64s.bm [new file with mode: 0644]
bitmaps/c72o.bm [new file with mode: 0644]
bitmaps/c72s.bm [new file with mode: 0644]
bitmaps/convert.c [new file with mode: 0644]
bitmaps/cv33o.bm [new file with mode: 0644]
bitmaps/cv33s.bm [new file with mode: 0644]
bitmaps/cv37o.bm [new file with mode: 0644]
bitmaps/cv37s.bm [new file with mode: 0644]
bitmaps/cv40o.bm [new file with mode: 0644]
bitmaps/cv40s.bm [new file with mode: 0644]
bitmaps/cv45o.bm [new file with mode: 0644]
bitmaps/cv45s.bm [new file with mode: 0644]
bitmaps/cv49o.bm [new file with mode: 0644]
bitmaps/cv49s.bm [new file with mode: 0644]
bitmaps/cv54o.bm [new file with mode: 0644]
bitmaps/cv54s.bm [new file with mode: 0644]
bitmaps/cv58o.bm [new file with mode: 0644]
bitmaps/cv58s.bm [new file with mode: 0644]
bitmaps/cv64o.bm [new file with mode: 0644]
bitmaps/cv64s.bm [new file with mode: 0644]
bitmaps/cv72o.bm [new file with mode: 0644]
bitmaps/cv72s.bm [new file with mode: 0644]
bitmaps/d49o.bm [new file with mode: 0644]
bitmaps/d49s.bm [new file with mode: 0644]
bitmaps/d72o.bm [new file with mode: 0644]
bitmaps/d72s.bm [new file with mode: 0644]
bitmaps/dk33o.bm [new file with mode: 0644]
bitmaps/dk33s.bm [new file with mode: 0644]
bitmaps/dk49o.bm [new file with mode: 0644]
bitmaps/dk49s.bm [new file with mode: 0644]
bitmaps/dk72o.bm [new file with mode: 0644]
bitmaps/dk72s.bm [new file with mode: 0644]
bitmaps/e33o.bm [new file with mode: 0644]
bitmaps/e33s.bm [new file with mode: 0644]
bitmaps/e49o.bm [new file with mode: 0644]
bitmaps/e49s.bm [new file with mode: 0644]
bitmaps/e72o.bm [new file with mode: 0644]
bitmaps/e72s.bm [new file with mode: 0644]
bitmaps/f33o.bm [new file with mode: 0644]
bitmaps/f33s.bm [new file with mode: 0644]
bitmaps/f49o.bm [new file with mode: 0644]
bitmaps/f49s.bm [new file with mode: 0644]
bitmaps/f72o.bm [new file with mode: 0644]
bitmaps/f72s.bm [new file with mode: 0644]
bitmaps/g33o.bm [new file with mode: 0644]
bitmaps/g33s.bm [new file with mode: 0644]
bitmaps/g49o.bm [new file with mode: 0644]
bitmaps/g49s.bm [new file with mode: 0644]
bitmaps/g72o.bm [new file with mode: 0644]
bitmaps/g72s.bm [new file with mode: 0644]
bitmaps/h33o.bm [new file with mode: 0644]
bitmaps/h33s.bm [new file with mode: 0644]
bitmaps/h49o.bm [new file with mode: 0644]
bitmaps/h49s.bm [new file with mode: 0644]
bitmaps/h72o.bm [new file with mode: 0644]
bitmaps/h72s.bm [new file with mode: 0644]
bitmaps/l33o.bm [new file with mode: 0644]
bitmaps/l33s.bm [new file with mode: 0644]
bitmaps/l37o.bm [new file with mode: 0644]
bitmaps/l37s.bm [new file with mode: 0644]
bitmaps/l40o.bm [new file with mode: 0644]
bitmaps/l40s.bm [new file with mode: 0644]
bitmaps/l45o.bm [new file with mode: 0644]
bitmaps/l45s.bm [new file with mode: 0644]
bitmaps/l49o.bm [new file with mode: 0644]
bitmaps/l49s.bm [new file with mode: 0644]
bitmaps/l54o.bm [new file with mode: 0644]
bitmaps/l54s.bm [new file with mode: 0644]
bitmaps/l58o.bm [new file with mode: 0644]
bitmaps/l58s.bm [new file with mode: 0644]
bitmaps/l64o.bm [new file with mode: 0644]
bitmaps/l64s.bm [new file with mode: 0644]
bitmaps/l72o.bm [new file with mode: 0644]
bitmaps/l72s.bm [new file with mode: 0644]
bitmaps/m33o.bm [new file with mode: 0644]
bitmaps/m33s.bm [new file with mode: 0644]
bitmaps/m49o.bm [new file with mode: 0644]
bitmaps/m49s.bm [new file with mode: 0644]
bitmaps/m72o.bm [new file with mode: 0644]
bitmaps/m72s.bm [new file with mode: 0644]
bitmaps/o33o.bm [new file with mode: 0644]
bitmaps/o33s.bm [new file with mode: 0644]
bitmaps/o49o.bm [new file with mode: 0644]
bitmaps/o49s.bm [new file with mode: 0644]
bitmaps/o72o.bm [new file with mode: 0644]
bitmaps/o72s.bm [new file with mode: 0644]
bitmaps/s49o.bm [new file with mode: 0644]
bitmaps/s49s.bm [new file with mode: 0644]
bitmaps/s72o.bm [new file with mode: 0644]
bitmaps/s72s.bm [new file with mode: 0644]
bitmaps/test.c [new file with mode: 0644]
bitmaps/u49o.bm [new file with mode: 0644]
bitmaps/u49s.bm [new file with mode: 0644]
bitmaps/u72o.bm [new file with mode: 0644]
bitmaps/u72s.bm [new file with mode: 0644]
bitmaps/v49o.bm [new file with mode: 0644]
bitmaps/v49s.bm [new file with mode: 0644]
bitmaps/v72o.bm [new file with mode: 0644]
bitmaps/v72s.bm [new file with mode: 0644]
bitmaps/w33o.bm [new file with mode: 0644]
bitmaps/w33s.bm [new file with mode: 0644]
bitmaps/w49o.bm [new file with mode: 0644]
bitmaps/w49s.bm [new file with mode: 0644]
bitmaps/w72o.bm [new file with mode: 0644]
bitmaps/w72s.bm [new file with mode: 0644]
bitmaps/wl49o.bm [new file with mode: 0644]
bitmaps/wl49s.bm [new file with mode: 0644]
bitmaps/wl72o.bm [new file with mode: 0644]
bitmaps/wl72s.bm [new file with mode: 0644]
bitmaps/wn49o.bm [new file with mode: 0644]
bitmaps/wn49s.bm [new file with mode: 0644]
bitmaps/wn72o.bm [new file with mode: 0644]
bitmaps/wn72s.bm [new file with mode: 0644]
bitmaps/wp49o.bm [new file with mode: 0644]
bitmaps/wp49s.bm [new file with mode: 0644]
bitmaps/wp72o.bm [new file with mode: 0644]
bitmaps/wp72s.bm [new file with mode: 0644]
bitmaps/ws49o.bm [new file with mode: 0644]
bitmaps/ws49s.bm [new file with mode: 0644]
bitmaps/ws72o.bm [new file with mode: 0644]
bitmaps/ws72s.bm [new file with mode: 0644]
childio.h
cmail.in
common.h
configure
engine-intf.html
frontend.h
gamelist.c
ics-parsing.txt
lists.c
lists.h
mkinstalldirs
moves.c
moves.h
pgntags.c
pixmaps/README.pixmaps
pixmaps/add33.xpm [new file with mode: 0644]
pixmaps/add37.xpm [new file with mode: 0644]
pixmaps/add40.xpm [new file with mode: 0644]
pixmaps/add45.xpm [new file with mode: 0644]
pixmaps/add49.xpm [new file with mode: 0644]
pixmaps/add54.xpm [new file with mode: 0644]
pixmaps/add58.xpm [new file with mode: 0644]
pixmaps/add64.xpm [new file with mode: 0644]
pixmaps/add72.xpm [new file with mode: 0644]
pixmaps/adl33.xpm [new file with mode: 0644]
pixmaps/adl37.xpm [new file with mode: 0644]
pixmaps/adl40.xpm [new file with mode: 0644]
pixmaps/adl45.xpm [new file with mode: 0644]
pixmaps/adl49.xpm [new file with mode: 0644]
pixmaps/adl54.xpm [new file with mode: 0644]
pixmaps/adl58.xpm [new file with mode: 0644]
pixmaps/adl64.xpm [new file with mode: 0644]
pixmaps/adl72.xpm [new file with mode: 0644]
pixmaps/ald33.xpm [new file with mode: 0644]
pixmaps/ald37.xpm [new file with mode: 0644]
pixmaps/ald40.xpm [new file with mode: 0644]
pixmaps/ald45.xpm [new file with mode: 0644]
pixmaps/ald49.xpm [new file with mode: 0644]
pixmaps/ald54.xpm [new file with mode: 0644]
pixmaps/ald58.xpm [new file with mode: 0644]
pixmaps/ald64.xpm [new file with mode: 0644]
pixmaps/ald72.xpm [new file with mode: 0644]
pixmaps/all33.xpm [new file with mode: 0644]
pixmaps/all37.xpm [new file with mode: 0644]
pixmaps/all40.xpm [new file with mode: 0644]
pixmaps/all45.xpm [new file with mode: 0644]
pixmaps/all49.xpm [new file with mode: 0644]
pixmaps/all54.xpm [new file with mode: 0644]
pixmaps/all58.xpm [new file with mode: 0644]
pixmaps/all64.xpm [new file with mode: 0644]
pixmaps/all72.xpm [new file with mode: 0644]
pixmaps/asdd33.xpm [new file with mode: 0644]
pixmaps/asdd45.xpm [new file with mode: 0644]
pixmaps/asdd49.xpm [new file with mode: 0644]
pixmaps/asdd72.xpm [new file with mode: 0644]
pixmaps/asdl33.xpm [new file with mode: 0644]
pixmaps/asdl45.xpm [new file with mode: 0644]
pixmaps/asdl49.xpm [new file with mode: 0644]
pixmaps/asdl72.xpm [new file with mode: 0644]
pixmaps/asld33.xpm [new file with mode: 0644]
pixmaps/asld45.xpm [new file with mode: 0644]
pixmaps/asld49.xpm [new file with mode: 0644]
pixmaps/asld72.xpm [new file with mode: 0644]
pixmaps/asll33.xpm [new file with mode: 0644]
pixmaps/asll45.xpm [new file with mode: 0644]
pixmaps/asll49.xpm [new file with mode: 0644]
pixmaps/asll72.xpm [new file with mode: 0644]
pixmaps/cdd33.xpm [new file with mode: 0644]
pixmaps/cdd37.xpm [new file with mode: 0644]
pixmaps/cdd40.xpm [new file with mode: 0644]
pixmaps/cdd45.xpm [new file with mode: 0644]
pixmaps/cdd49.xpm [new file with mode: 0644]
pixmaps/cdd54.xpm [new file with mode: 0644]
pixmaps/cdd58.xpm [new file with mode: 0644]
pixmaps/cdd64.xpm [new file with mode: 0644]
pixmaps/cdd72.xpm [new file with mode: 0644]
pixmaps/cdl33.xpm [new file with mode: 0644]
pixmaps/cdl37.xpm [new file with mode: 0644]
pixmaps/cdl40.xpm [new file with mode: 0644]
pixmaps/cdl45.xpm [new file with mode: 0644]
pixmaps/cdl49.xpm [new file with mode: 0644]
pixmaps/cdl54.xpm [new file with mode: 0644]
pixmaps/cdl58.xpm [new file with mode: 0644]
pixmaps/cdl64.xpm [new file with mode: 0644]
pixmaps/cdl72.xpm [new file with mode: 0644]
pixmaps/cld33.xpm [new file with mode: 0644]
pixmaps/cld37.xpm [new file with mode: 0644]
pixmaps/cld40.xpm [new file with mode: 0644]
pixmaps/cld45.xpm [new file with mode: 0644]
pixmaps/cld49.xpm [new file with mode: 0644]
pixmaps/cld54.xpm [new file with mode: 0644]
pixmaps/cld58.xpm [new file with mode: 0644]
pixmaps/cld64.xpm [new file with mode: 0644]
pixmaps/cld72.xpm [new file with mode: 0644]
pixmaps/cll33.xpm [new file with mode: 0644]
pixmaps/cll37.xpm [new file with mode: 0644]
pixmaps/cll40.xpm [new file with mode: 0644]
pixmaps/cll45.xpm [new file with mode: 0644]
pixmaps/cll49.xpm [new file with mode: 0644]
pixmaps/cll54.xpm [new file with mode: 0644]
pixmaps/cll58.xpm [new file with mode: 0644]
pixmaps/cll64.xpm [new file with mode: 0644]
pixmaps/cll72.xpm [new file with mode: 0644]
pixmaps/convert.c [new file with mode: 0644]
pixmaps/cvdd33.xpm [new file with mode: 0644]
pixmaps/cvdd37.xpm [new file with mode: 0644]
pixmaps/cvdd40.xpm [new file with mode: 0644]
pixmaps/cvdd45.xpm [new file with mode: 0644]
pixmaps/cvdd49.xpm [new file with mode: 0644]
pixmaps/cvdd54.xpm [new file with mode: 0644]
pixmaps/cvdd58.xpm [new file with mode: 0644]
pixmaps/cvdd64.xpm [new file with mode: 0644]
pixmaps/cvdd72.xpm [new file with mode: 0644]
pixmaps/cvdl33.xpm [new file with mode: 0644]
pixmaps/cvdl37.xpm [new file with mode: 0644]
pixmaps/cvdl40.xpm [new file with mode: 0644]
pixmaps/cvdl45.xpm [new file with mode: 0644]
pixmaps/cvdl49.xpm [new file with mode: 0644]
pixmaps/cvdl54.xpm [new file with mode: 0644]
pixmaps/cvdl58.xpm [new file with mode: 0644]
pixmaps/cvdl64.xpm [new file with mode: 0644]
pixmaps/cvdl72.xpm [new file with mode: 0644]
pixmaps/cvld33.xpm [new file with mode: 0644]
pixmaps/cvld37.xpm [new file with mode: 0644]
pixmaps/cvld40.xpm [new file with mode: 0644]
pixmaps/cvld45.xpm [new file with mode: 0644]
pixmaps/cvld49.xpm [new file with mode: 0644]
pixmaps/cvld54.xpm [new file with mode: 0644]
pixmaps/cvld58.xpm [new file with mode: 0644]
pixmaps/cvld64.xpm [new file with mode: 0644]
pixmaps/cvld72.xpm [new file with mode: 0644]
pixmaps/cvll33.xpm [new file with mode: 0644]
pixmaps/cvll37.xpm [new file with mode: 0644]
pixmaps/cvll40.xpm [new file with mode: 0644]
pixmaps/cvll45.xpm [new file with mode: 0644]
pixmaps/cvll49.xpm [new file with mode: 0644]
pixmaps/cvll54.xpm [new file with mode: 0644]
pixmaps/cvll58.xpm [new file with mode: 0644]
pixmaps/cvll64.xpm [new file with mode: 0644]
pixmaps/cvll72.xpm [new file with mode: 0644]
pixmaps/dkdd33.xpm [new file with mode: 0644]
pixmaps/dkdd49.xpm [new file with mode: 0644]
pixmaps/dkdd72.xpm [new file with mode: 0644]
pixmaps/dkdl33.xpm [new file with mode: 0644]
pixmaps/dkdl49.xpm [new file with mode: 0644]
pixmaps/dkdl72.xpm [new file with mode: 0644]
pixmaps/dkld33.xpm [new file with mode: 0644]
pixmaps/dkld49.xpm [new file with mode: 0644]
pixmaps/dkld72.xpm [new file with mode: 0644]
pixmaps/dkll33.xpm [new file with mode: 0644]
pixmaps/dkll49.xpm [new file with mode: 0644]
pixmaps/dkll72.xpm [new file with mode: 0644]
pixmaps/edd33.xpm [new file with mode: 0644]
pixmaps/edd49.xpm [new file with mode: 0644]
pixmaps/edd72.xpm [new file with mode: 0644]
pixmaps/edl33.xpm [new file with mode: 0644]
pixmaps/edl49.xpm [new file with mode: 0644]
pixmaps/edl72.xpm [new file with mode: 0644]
pixmaps/eld33.xpm [new file with mode: 0644]
pixmaps/eld49.xpm [new file with mode: 0644]
pixmaps/eld72.xpm [new file with mode: 0644]
pixmaps/ell33.xpm [new file with mode: 0644]
pixmaps/ell49.xpm [new file with mode: 0644]
pixmaps/ell72.xpm [new file with mode: 0644]
pixmaps/fdd33.xpm [new file with mode: 0644]
pixmaps/fdd49.xpm [new file with mode: 0644]
pixmaps/fdd72.xpm [new file with mode: 0644]
pixmaps/fdl33.xpm [new file with mode: 0644]
pixmaps/fdl49.xpm [new file with mode: 0644]
pixmaps/fdl72.xpm [new file with mode: 0644]
pixmaps/fld33.xpm [new file with mode: 0644]
pixmaps/fld49.xpm [new file with mode: 0644]
pixmaps/fld72.xpm [new file with mode: 0644]
pixmaps/fll33.xpm [new file with mode: 0644]
pixmaps/fll49.xpm [new file with mode: 0644]
pixmaps/fll72.xpm [new file with mode: 0644]
pixmaps/gdd33.xpm [new file with mode: 0644]
pixmaps/gdd49.xpm [new file with mode: 0644]
pixmaps/gdd72.xpm [new file with mode: 0644]
pixmaps/gdl33.xpm [new file with mode: 0644]
pixmaps/gdl49.xpm [new file with mode: 0644]
pixmaps/gdl72.xpm [new file with mode: 0644]
pixmaps/gld33.xpm [new file with mode: 0644]
pixmaps/gld49.xpm [new file with mode: 0644]
pixmaps/gld72.xpm [new file with mode: 0644]
pixmaps/gll33.xpm [new file with mode: 0644]
pixmaps/gll49.xpm [new file with mode: 0644]
pixmaps/gll72.xpm [new file with mode: 0644]
pixmaps/hdd33.xpm [new file with mode: 0644]
pixmaps/hdd49.xpm [new file with mode: 0644]
pixmaps/hdd72.xpm [new file with mode: 0644]
pixmaps/hdl33.xpm [new file with mode: 0644]
pixmaps/hdl49.xpm [new file with mode: 0644]
pixmaps/hdl72.xpm [new file with mode: 0644]
pixmaps/hld33.xpm [new file with mode: 0644]
pixmaps/hld49.xpm [new file with mode: 0644]
pixmaps/hld72.xpm [new file with mode: 0644]
pixmaps/hll33.xpm [new file with mode: 0644]
pixmaps/hll49.xpm [new file with mode: 0644]
pixmaps/hll72.xpm [new file with mode: 0644]
pixmaps/ldd33.xpm [new file with mode: 0644]
pixmaps/ldd37.xpm [new file with mode: 0644]
pixmaps/ldd40.xpm [new file with mode: 0644]
pixmaps/ldd45.xpm [new file with mode: 0644]
pixmaps/ldd49.xpm [new file with mode: 0644]
pixmaps/ldd54.xpm [new file with mode: 0644]
pixmaps/ldd58.xpm [new file with mode: 0644]
pixmaps/ldd64.xpm [new file with mode: 0644]
pixmaps/ldd72.xpm [new file with mode: 0644]
pixmaps/ldl33.xpm [new file with mode: 0644]
pixmaps/ldl37.xpm [new file with mode: 0644]
pixmaps/ldl40.xpm [new file with mode: 0644]
pixmaps/ldl45.xpm [new file with mode: 0644]
pixmaps/ldl49.xpm [new file with mode: 0644]
pixmaps/ldl54.xpm [new file with mode: 0644]
pixmaps/ldl58.xpm [new file with mode: 0644]
pixmaps/ldl64.xpm [new file with mode: 0644]
pixmaps/ldl72.xpm [new file with mode: 0644]
pixmaps/lld33.xpm [new file with mode: 0644]
pixmaps/lld37.xpm [new file with mode: 0644]
pixmaps/lld40.xpm [new file with mode: 0644]
pixmaps/lld45.xpm [new file with mode: 0644]
pixmaps/lld49.xpm [new file with mode: 0644]
pixmaps/lld54.xpm [new file with mode: 0644]
pixmaps/lld58.xpm [new file with mode: 0644]
pixmaps/lld64.xpm [new file with mode: 0644]
pixmaps/lld72.xpm [new file with mode: 0644]
pixmaps/lll33.xpm [new file with mode: 0644]
pixmaps/lll37.xpm [new file with mode: 0644]
pixmaps/lll40.xpm [new file with mode: 0644]
pixmaps/lll45.xpm [new file with mode: 0644]
pixmaps/lll49.xpm [new file with mode: 0644]
pixmaps/lll54.xpm [new file with mode: 0644]
pixmaps/lll58.xpm [new file with mode: 0644]
pixmaps/lll64.xpm [new file with mode: 0644]
pixmaps/lll72.xpm [new file with mode: 0644]
pixmaps/mdd33.xpm [new file with mode: 0644]
pixmaps/mdd49.xpm [new file with mode: 0644]
pixmaps/mdd72.xpm [new file with mode: 0644]
pixmaps/mdl33.xpm [new file with mode: 0644]
pixmaps/mdl49.xpm [new file with mode: 0644]
pixmaps/mdl72.xpm [new file with mode: 0644]
pixmaps/mld33.xpm [new file with mode: 0644]
pixmaps/mld49.xpm [new file with mode: 0644]
pixmaps/mld72.xpm [new file with mode: 0644]
pixmaps/mll33.xpm [new file with mode: 0644]
pixmaps/mll49.xpm [new file with mode: 0644]
pixmaps/mll72.xpm [new file with mode: 0644]
pixmaps/odd33.xpm [new file with mode: 0644]
pixmaps/odd49.xpm [new file with mode: 0644]
pixmaps/odd72.xpm [new file with mode: 0644]
pixmaps/odl33.xpm [new file with mode: 0644]
pixmaps/odl49.xpm [new file with mode: 0644]
pixmaps/odl72.xpm [new file with mode: 0644]
pixmaps/old33.xpm [new file with mode: 0644]
pixmaps/old49.xpm [new file with mode: 0644]
pixmaps/old72.xpm [new file with mode: 0644]
pixmaps/oll33.xpm [new file with mode: 0644]
pixmaps/oll49.xpm [new file with mode: 0644]
pixmaps/oll72.xpm [new file with mode: 0644]
pixmaps/pixmaps.h
pixmaps/sdd49.xpm [new file with mode: 0644]
pixmaps/sdd72.xpm [new file with mode: 0644]
pixmaps/sdl49.xpm [new file with mode: 0644]
pixmaps/sdl72.xpm [new file with mode: 0644]
pixmaps/sld49.xpm [new file with mode: 0644]
pixmaps/sld72.xpm [new file with mode: 0644]
pixmaps/sll49.xpm [new file with mode: 0644]
pixmaps/sll72.xpm [new file with mode: 0644]
pixmaps/test.c [new file with mode: 0644]
pixmaps/udd49.xpm [new file with mode: 0644]
pixmaps/udd72.xpm [new file with mode: 0644]
pixmaps/udl49.xpm [new file with mode: 0644]
pixmaps/udl72.xpm [new file with mode: 0644]
pixmaps/uld49.xpm [new file with mode: 0644]
pixmaps/uld72.xpm [new file with mode: 0644]
pixmaps/ull49.xpm [new file with mode: 0644]
pixmaps/ull72.xpm [new file with mode: 0644]
pixmaps/vdd33.xpm [new file with mode: 0644]
pixmaps/vdd49.xpm [new file with mode: 0644]
pixmaps/vdd54.xpm [new file with mode: 0644]
pixmaps/vdd72.xpm [new file with mode: 0644]
pixmaps/vdl33.xpm [new file with mode: 0644]
pixmaps/vdl49.xpm [new file with mode: 0644]
pixmaps/vdl54.xpm [new file with mode: 0644]
pixmaps/vdl72.xpm [new file with mode: 0644]
pixmaps/vld33.xpm [new file with mode: 0644]
pixmaps/vld49.xpm [new file with mode: 0644]
pixmaps/vld54.xpm [new file with mode: 0644]
pixmaps/vld72.xpm [new file with mode: 0644]
pixmaps/vll33.xpm [new file with mode: 0644]
pixmaps/vll49.xpm [new file with mode: 0644]
pixmaps/vll54.xpm [new file with mode: 0644]
pixmaps/vll72.xpm [new file with mode: 0644]
pixmaps/wdd33.xpm [new file with mode: 0644]
pixmaps/wdd49.xpm [new file with mode: 0644]
pixmaps/wdd54.xpm [new file with mode: 0644]
pixmaps/wdd72.xpm [new file with mode: 0644]
pixmaps/wdl33.xpm [new file with mode: 0644]
pixmaps/wdl49.xpm [new file with mode: 0644]
pixmaps/wdl54.xpm [new file with mode: 0644]
pixmaps/wdl72.xpm [new file with mode: 0644]
pixmaps/wld33.xpm [new file with mode: 0644]
pixmaps/wld49.xpm [new file with mode: 0644]
pixmaps/wld54.xpm [new file with mode: 0644]
pixmaps/wld72.xpm [new file with mode: 0644]
pixmaps/wldd49.xpm [new file with mode: 0644]
pixmaps/wldd72.xpm [new file with mode: 0644]
pixmaps/wldl49.xpm [new file with mode: 0644]
pixmaps/wldl72.xpm [new file with mode: 0644]
pixmaps/wll33.xpm [new file with mode: 0644]
pixmaps/wll49.xpm [new file with mode: 0644]
pixmaps/wll54.xpm [new file with mode: 0644]
pixmaps/wll72.xpm [new file with mode: 0644]
pixmaps/wlld49.xpm [new file with mode: 0644]
pixmaps/wlld72.xpm [new file with mode: 0644]
pixmaps/wlll49.xpm [new file with mode: 0644]
pixmaps/wlll72.xpm [new file with mode: 0644]
pixmaps/wndd49.xpm [new file with mode: 0644]
pixmaps/wndd72.xpm [new file with mode: 0644]
pixmaps/wndl49.xpm [new file with mode: 0644]
pixmaps/wndl72.xpm [new file with mode: 0644]
pixmaps/wnld49.xpm [new file with mode: 0644]
pixmaps/wnld72.xpm [new file with mode: 0644]
pixmaps/wnll49.xpm [new file with mode: 0644]
pixmaps/wnll72.xpm [new file with mode: 0644]
pixmaps/wpdd49.xpm [new file with mode: 0644]
pixmaps/wpdd72.xpm [new file with mode: 0644]
pixmaps/wpdl49.xpm [new file with mode: 0644]
pixmaps/wpdl72.xpm [new file with mode: 0644]
pixmaps/wpld49.xpm [new file with mode: 0644]
pixmaps/wpld72.xpm [new file with mode: 0644]
pixmaps/wpll49.xpm [new file with mode: 0644]
pixmaps/wpll72.xpm [new file with mode: 0644]
pixmaps/wsdd49.xpm [new file with mode: 0644]
pixmaps/wsdd72.xpm [new file with mode: 0644]
pixmaps/wsdl49.xpm [new file with mode: 0644]
pixmaps/wsdl72.xpm [new file with mode: 0644]
pixmaps/wsld49.xpm [new file with mode: 0644]
pixmaps/wsld72.xpm [new file with mode: 0644]
pixmaps/wsll49.xpm [new file with mode: 0644]
pixmaps/wsll72.xpm [new file with mode: 0644]
shiphtml [new file with mode: 0644]
texi2man
uci.c
winboard/bitmaps/a33o.bmp [new file with mode: 0644]
winboard/bitmaps/a33s.bmp [new file with mode: 0644]
winboard/bitmaps/a33w.bmp [new file with mode: 0644]
winboard/bitmaps/a37o.bmp [new file with mode: 0644]
winboard/bitmaps/a37s.bmp [new file with mode: 0644]
winboard/bitmaps/a37w.bmp [new file with mode: 0644]
winboard/bitmaps/a40o.bmp [new file with mode: 0644]
winboard/bitmaps/a40s.bmp [new file with mode: 0644]
winboard/bitmaps/a40w.bmp [new file with mode: 0644]
winboard/bitmaps/a45o.bmp [new file with mode: 0644]
winboard/bitmaps/a45s.bmp [new file with mode: 0644]
winboard/bitmaps/a45w.bmp [new file with mode: 0644]
winboard/bitmaps/a49c.bmp [new file with mode: 0644]
winboard/bitmaps/a49o.bmp [new file with mode: 0644]
winboard/bitmaps/a49s.bmp [new file with mode: 0644]
winboard/bitmaps/a49w.bmp [new file with mode: 0644]
winboard/bitmaps/a54o.bmp [new file with mode: 0644]
winboard/bitmaps/a54s.bmp [new file with mode: 0644]
winboard/bitmaps/a54w.bmp [new file with mode: 0644]
winboard/bitmaps/a58o.bmp [new file with mode: 0644]
winboard/bitmaps/a58s.bmp [new file with mode: 0644]
winboard/bitmaps/a58w.bmp [new file with mode: 0644]
winboard/bitmaps/a64o.bmp [new file with mode: 0644]
winboard/bitmaps/a64s.bmp [new file with mode: 0644]
winboard/bitmaps/a64w.bmp [new file with mode: 0644]
winboard/bitmaps/a72o.bmp [new file with mode: 0644]
winboard/bitmaps/a72s.bmp [new file with mode: 0644]
winboard/bitmaps/a72w.bmp [new file with mode: 0644]
winboard/bitmaps/analyze2_14.ico [new file with mode: 0644]
winboard/bitmaps/analyze_14.ico [new file with mode: 0644]
winboard/bitmaps/as33o.bmp [new file with mode: 0644]
winboard/bitmaps/as33s.bmp [new file with mode: 0644]
winboard/bitmaps/as33w.bmp [new file with mode: 0644]
winboard/bitmaps/as45o.bmp [new file with mode: 0644]
winboard/bitmaps/as45s.bmp [new file with mode: 0644]
winboard/bitmaps/as45w.bmp [new file with mode: 0644]
winboard/bitmaps/as49o.bmp [new file with mode: 0644]
winboard/bitmaps/as49s.bmp [new file with mode: 0644]
winboard/bitmaps/as49w.bmp [new file with mode: 0644]
winboard/bitmaps/as72o.bmp [new file with mode: 0644]
winboard/bitmaps/as72s.bmp [new file with mode: 0644]
winboard/bitmaps/as72w.bmp [new file with mode: 0644]
winboard/bitmaps/baloon_14.ico [new file with mode: 0644]
winboard/bitmaps/bas.gif [new file with mode: 0644]
winboard/bitmaps/bcv.gif [new file with mode: 0644]
winboard/bitmaps/bitmaps.h [new file with mode: 0644]
winboard/bitmaps/black_14.ico [new file with mode: 0644]
winboard/bitmaps/c33o.bmp [new file with mode: 0644]
winboard/bitmaps/c33s.bmp [new file with mode: 0644]
winboard/bitmaps/c33w.bmp [new file with mode: 0644]
winboard/bitmaps/c37o.bmp [new file with mode: 0644]
winboard/bitmaps/c37s.bmp [new file with mode: 0644]
winboard/bitmaps/c37w.bmp [new file with mode: 0644]
winboard/bitmaps/c40o.bmp [new file with mode: 0644]
winboard/bitmaps/c40s.bmp [new file with mode: 0644]
winboard/bitmaps/c40w.bmp [new file with mode: 0644]
winboard/bitmaps/c45o.bmp [new file with mode: 0644]
winboard/bitmaps/c45s.bmp [new file with mode: 0644]
winboard/bitmaps/c45w.bmp [new file with mode: 0644]
winboard/bitmaps/c49o.bmp [new file with mode: 0644]
winboard/bitmaps/c49s.bmp [new file with mode: 0644]
winboard/bitmaps/c49w.bmp [new file with mode: 0644]
winboard/bitmaps/c54o.bmp [new file with mode: 0644]
winboard/bitmaps/c54s.bmp [new file with mode: 0644]
winboard/bitmaps/c54w.bmp [new file with mode: 0644]
winboard/bitmaps/c58o.bmp [new file with mode: 0644]
winboard/bitmaps/c58s.bmp [new file with mode: 0644]
winboard/bitmaps/c58w.bmp [new file with mode: 0644]
winboard/bitmaps/c64o.bmp [new file with mode: 0644]
winboard/bitmaps/c64s.bmp [new file with mode: 0644]
winboard/bitmaps/c64w.bmp [new file with mode: 0644]
winboard/bitmaps/c72o.bmp [new file with mode: 0644]
winboard/bitmaps/c72s.bmp [new file with mode: 0644]
winboard/bitmaps/c72w.bmp [new file with mode: 0644]
winboard/bitmaps/clock_14.ico [new file with mode: 0644]
winboard/bitmaps/convert.c [new file with mode: 0644]
winboard/bitmaps/convert.exe [new file with mode: 0644]
winboard/bitmaps/cv33o.bmp [new file with mode: 0644]
winboard/bitmaps/cv33s.bmp [new file with mode: 0644]
winboard/bitmaps/cv33w.bmp [new file with mode: 0644]
winboard/bitmaps/cv37o.bmp [new file with mode: 0644]
winboard/bitmaps/cv37s.bmp [new file with mode: 0644]
winboard/bitmaps/cv37w.bmp [new file with mode: 0644]
winboard/bitmaps/cv40o.bmp [new file with mode: 0644]
winboard/bitmaps/cv40s.bmp [new file with mode: 0644]
winboard/bitmaps/cv40w.bmp [new file with mode: 0644]
winboard/bitmaps/cv45o.bmp [new file with mode: 0644]
winboard/bitmaps/cv45s.bmp [new file with mode: 0644]
winboard/bitmaps/cv45w.bmp [new file with mode: 0644]
winboard/bitmaps/cv49o.bmp [new file with mode: 0644]
winboard/bitmaps/cv49s.bmp [new file with mode: 0644]
winboard/bitmaps/cv49w.bmp [new file with mode: 0644]
winboard/bitmaps/cv54o.bmp [new file with mode: 0644]
winboard/bitmaps/cv54s.bmp [new file with mode: 0644]
winboard/bitmaps/cv54w.bmp [new file with mode: 0644]
winboard/bitmaps/cv58o.bmp [new file with mode: 0644]
winboard/bitmaps/cv58s.bmp [new file with mode: 0644]
winboard/bitmaps/cv58w.bmp [new file with mode: 0644]
winboard/bitmaps/cv64o.bmp [new file with mode: 0644]
winboard/bitmaps/cv64s.bmp [new file with mode: 0644]
winboard/bitmaps/cv64w.bmp [new file with mode: 0644]
winboard/bitmaps/cv72o.bmp [new file with mode: 0644]
winboard/bitmaps/cv72s.bmp [new file with mode: 0644]
winboard/bitmaps/cv72w.bmp [new file with mode: 0644]
winboard/bitmaps/dk33o.bmp [new file with mode: 0644]
winboard/bitmaps/dk33s.bmp [new file with mode: 0644]
winboard/bitmaps/dk33w.bmp [new file with mode: 0644]
winboard/bitmaps/dk49o.bmp [new file with mode: 0644]
winboard/bitmaps/dk49s.bmp [new file with mode: 0644]
winboard/bitmaps/dk49w.bmp [new file with mode: 0644]
winboard/bitmaps/dk72o.bmp [new file with mode: 0644]
winboard/bitmaps/dk72s.bmp [new file with mode: 0644]
winboard/bitmaps/dk72w.bmp [new file with mode: 0644]
winboard/bitmaps/e129o.bmp [new file with mode: 0644]
winboard/bitmaps/e33o.bmp [new file with mode: 0644]
winboard/bitmaps/e33s.bmp [new file with mode: 0644]
winboard/bitmaps/e33w.bmp [new file with mode: 0644]
winboard/bitmaps/e49o.bmp [new file with mode: 0644]
winboard/bitmaps/e49s.bmp [new file with mode: 0644]
winboard/bitmaps/e49w.bmp [new file with mode: 0644]
winboard/bitmaps/e72o.bmp [new file with mode: 0644]
winboard/bitmaps/e72s.bmp [new file with mode: 0644]
winboard/bitmaps/e72w.bmp [new file with mode: 0644]
winboard/bitmaps/f33o.bmp [new file with mode: 0644]
winboard/bitmaps/f33s.bmp [new file with mode: 0644]
winboard/bitmaps/f33w.bmp [new file with mode: 0644]
winboard/bitmaps/f49o.bmp [new file with mode: 0644]
winboard/bitmaps/f49s.bmp [new file with mode: 0644]
winboard/bitmaps/f49w.bmp [new file with mode: 0644]
winboard/bitmaps/f72o.bmp [new file with mode: 0644]
winboard/bitmaps/f72s.bmp [new file with mode: 0644]
winboard/bitmaps/f72w.bmp [new file with mode: 0644]
winboard/bitmaps/g33o.bmp [new file with mode: 0644]
winboard/bitmaps/g33s.bmp [new file with mode: 0644]
winboard/bitmaps/g33w.bmp [new file with mode: 0644]
winboard/bitmaps/g49o.bmp [new file with mode: 0644]
winboard/bitmaps/g49s.bmp [new file with mode: 0644]
winboard/bitmaps/g49w.bmp [new file with mode: 0644]
winboard/bitmaps/g72o.bmp [new file with mode: 0644]
winboard/bitmaps/g72s.bmp [new file with mode: 0644]
winboard/bitmaps/g72w.bmp [new file with mode: 0644]
winboard/bitmaps/h129o.bmp [new file with mode: 0644]
winboard/bitmaps/h33o.bmp [new file with mode: 0644]
winboard/bitmaps/h33s.bmp [new file with mode: 0644]
winboard/bitmaps/h33w.bmp [new file with mode: 0644]
winboard/bitmaps/h49o.bmp [new file with mode: 0644]
winboard/bitmaps/h49s.bmp [new file with mode: 0644]
winboard/bitmaps/h49w.bmp [new file with mode: 0644]
winboard/bitmaps/h72o.bmp [new file with mode: 0644]
winboard/bitmaps/h72s.bmp [new file with mode: 0644]
winboard/bitmaps/h72w.bmp [new file with mode: 0644]
winboard/bitmaps/l33o.bmp [new file with mode: 0644]
winboard/bitmaps/l33s.bmp [new file with mode: 0644]
winboard/bitmaps/l33w.bmp [new file with mode: 0644]
winboard/bitmaps/l37o.bmp [new file with mode: 0644]
winboard/bitmaps/l37s.bmp [new file with mode: 0644]
winboard/bitmaps/l37w.bmp [new file with mode: 0644]
winboard/bitmaps/l40o.bmp [new file with mode: 0644]
winboard/bitmaps/l40s.bmp [new file with mode: 0644]
winboard/bitmaps/l40w.bmp [new file with mode: 0644]
winboard/bitmaps/l45o.bmp [new file with mode: 0644]
winboard/bitmaps/l45s.bmp [new file with mode: 0644]
winboard/bitmaps/l45w.bmp [new file with mode: 0644]
winboard/bitmaps/l49o.bmp [new file with mode: 0644]
winboard/bitmaps/l49s.bmp [new file with mode: 0644]
winboard/bitmaps/l49w.bmp [new file with mode: 0644]
winboard/bitmaps/l54o.bmp [new file with mode: 0644]
winboard/bitmaps/l54s.bmp [new file with mode: 0644]
winboard/bitmaps/l54w.bmp [new file with mode: 0644]
winboard/bitmaps/l58o.bmp [new file with mode: 0644]
winboard/bitmaps/l58s.bmp [new file with mode: 0644]
winboard/bitmaps/l58w.bmp [new file with mode: 0644]
winboard/bitmaps/l64o.bmp [new file with mode: 0644]
winboard/bitmaps/l64s.bmp [new file with mode: 0644]
winboard/bitmaps/l64w.bmp [new file with mode: 0644]
winboard/bitmaps/l72o.bmp [new file with mode: 0644]
winboard/bitmaps/l72s.bmp [new file with mode: 0644]
winboard/bitmaps/l72w.bmp [new file with mode: 0644]
winboard/bitmaps/m129o.bmp [new file with mode: 0644]
winboard/bitmaps/m33o.bmp [new file with mode: 0644]
winboard/bitmaps/m33s.bmp [new file with mode: 0644]
winboard/bitmaps/m33w.bmp [new file with mode: 0644]
winboard/bitmaps/m49o.bmp [new file with mode: 0644]
winboard/bitmaps/m49s.bmp [new file with mode: 0644]
winboard/bitmaps/m49w.bmp [new file with mode: 0644]
winboard/bitmaps/m72o.bmp [new file with mode: 0644]
winboard/bitmaps/m72s.bmp [new file with mode: 0644]
winboard/bitmaps/m72w.bmp [new file with mode: 0644]
winboard/bitmaps/ni49o.bmp [new file with mode: 0644]
winboard/bitmaps/ni49s.bmp [new file with mode: 0644]
winboard/bitmaps/ni49w.bmp [new file with mode: 0644]
winboard/bitmaps/ni72o.bmp [new file with mode: 0644]
winboard/bitmaps/ni72s.bmp [new file with mode: 0644]
winboard/bitmaps/ni72w.bmp [new file with mode: 0644]
winboard/bitmaps/o33o.bmp [new file with mode: 0644]
winboard/bitmaps/o33s.bmp [new file with mode: 0644]
winboard/bitmaps/o33w.bmp [new file with mode: 0644]
winboard/bitmaps/o49o.bmp [new file with mode: 0644]
winboard/bitmaps/o49s.bmp [new file with mode: 0644]
winboard/bitmaps/o49w.bmp [new file with mode: 0644]
winboard/bitmaps/o72o.bmp [new file with mode: 0644]
winboard/bitmaps/o72s.bmp [new file with mode: 0644]
winboard/bitmaps/o72w.bmp [new file with mode: 0644]
winboard/bitmaps/ponder_14.ico [new file with mode: 0644]
winboard/bitmaps/s49o.bmp [new file with mode: 0644]
winboard/bitmaps/s49s.bmp [new file with mode: 0644]
winboard/bitmaps/s49w.bmp [new file with mode: 0644]
winboard/bitmaps/s72o.bmp [new file with mode: 0644]
winboard/bitmaps/s72s.bmp [new file with mode: 0644]
winboard/bitmaps/s72w.bmp [new file with mode: 0644]
winboard/bitmaps/trans_14.ico [new file with mode: 0644]
winboard/bitmaps/u49o.bmp [new file with mode: 0644]
winboard/bitmaps/u49s.bmp [new file with mode: 0644]
winboard/bitmaps/u49w.bmp [new file with mode: 0644]
winboard/bitmaps/u72o.bmp [new file with mode: 0644]
winboard/bitmaps/u72s.bmp [new file with mode: 0644]
winboard/bitmaps/u72w.bmp [new file with mode: 0644]
winboard/bitmaps/unknown_14.ico [new file with mode: 0644]
winboard/bitmaps/v33o.bmp [new file with mode: 0644]
winboard/bitmaps/v33s.bmp [new file with mode: 0644]
winboard/bitmaps/v33w.bmp [new file with mode: 0644]
winboard/bitmaps/v49o.bmp [new file with mode: 0644]
winboard/bitmaps/v49s.bmp [new file with mode: 0644]
winboard/bitmaps/v49w.bmp [new file with mode: 0644]
winboard/bitmaps/v54o.bmp [new file with mode: 0644]
winboard/bitmaps/v54s.bmp [new file with mode: 0644]
winboard/bitmaps/v54w.bmp [new file with mode: 0644]
winboard/bitmaps/v72o.bmp [new file with mode: 0644]
winboard/bitmaps/v72s.bmp [new file with mode: 0644]
winboard/bitmaps/v72w.bmp [new file with mode: 0644]
winboard/bitmaps/w33o.bmp [new file with mode: 0644]
winboard/bitmaps/w33s.bmp [new file with mode: 0644]
winboard/bitmaps/w33w.bmp [new file with mode: 0644]
winboard/bitmaps/w49o.bmp [new file with mode: 0644]
winboard/bitmaps/w49s.bmp [new file with mode: 0644]
winboard/bitmaps/w49w.bmp [new file with mode: 0644]
winboard/bitmaps/w54o.bmp [new file with mode: 0644]
winboard/bitmaps/w54s.bmp [new file with mode: 0644]
winboard/bitmaps/w54w.bmp [new file with mode: 0644]
winboard/bitmaps/w72o.bmp [new file with mode: 0644]
winboard/bitmaps/w72s.bmp [new file with mode: 0644]
winboard/bitmaps/w72w.bmp [new file with mode: 0644]
winboard/bitmaps/was.gif [new file with mode: 0644]
winboard/bitmaps/wcv.gif [new file with mode: 0644]
winboard/bitmaps/white_14.ico [new file with mode: 0644]
winboard/bitmaps/wl49o.bmp [new file with mode: 0644]
winboard/bitmaps/wl49s.bmp [new file with mode: 0644]
winboard/bitmaps/wl72o.bmp [new file with mode: 0644]
winboard/bitmaps/wl72s.bmp [new file with mode: 0644]
winboard/bitmaps/wn49o.bmp [new file with mode: 0644]
winboard/bitmaps/wn49s.bmp [new file with mode: 0644]
winboard/bitmaps/wn72o.bmp [new file with mode: 0644]
winboard/bitmaps/wn72s.bmp [new file with mode: 0644]
winboard/bitmaps/wp49o.bmp [new file with mode: 0644]
winboard/bitmaps/wp49s.bmp [new file with mode: 0644]
winboard/bitmaps/wp72o.bmp [new file with mode: 0644]
winboard/bitmaps/wp72s.bmp [new file with mode: 0644]
winboard/bitmaps/ws49o.bmp [new file with mode: 0644]
winboard/bitmaps/ws49s.bmp [new file with mode: 0644]
winboard/bitmaps/ws72o.bmp [new file with mode: 0644]
winboard/bitmaps/ws72s.bmp [new file with mode: 0644]
winboard/config.h
winboard/defaults.h
winboard/readme.txt [new file with mode: 0644]
winboard/resource.h
winboard/shogibitmaps/sa58o.bmp [new file with mode: 0644]
winboard/shogibitmaps/sb58o.bmp [new file with mode: 0644]
winboard/shogibitmaps/sc58o.bmp [new file with mode: 0644]
winboard/shogibitmaps/sf58o.bmp [new file with mode: 0644]
winboard/shogibitmaps/sg58o.bmp [new file with mode: 0644]
winboard/shogibitmaps/sh58o.bmp [new file with mode: 0644]
winboard/shogibitmaps/sk58o.bmp [new file with mode: 0644]
winboard/shogibitmaps/sk58w.bmp [new file with mode: 0644]
winboard/shogibitmaps/sl58o.bmp [new file with mode: 0644]
winboard/shogibitmaps/sl58w.bmp [new file with mode: 0644]
winboard/shogibitmaps/sn58o.bmp [new file with mode: 0644]
winboard/shogibitmaps/sn58w.bmp [new file with mode: 0644]
winboard/shogibitmaps/sp58o.bmp [new file with mode: 0644]
winboard/shogibitmaps/sp58w.bmp [new file with mode: 0644]
winboard/shogibitmaps/sr58o.bmp [new file with mode: 0644]
winboard/shogibitmaps/sr58w.bmp [new file with mode: 0644]
winboard/shogibitmaps/ss58o.bmp [new file with mode: 0644]
winboard/shogibitmaps/su58o.bmp [new file with mode: 0644]
winboard/shogibitmaps/sw58o.bmp [new file with mode: 0644]
winboard/shogibitmaps/sw58w.bmp [new file with mode: 0644]
winboard/winboard.c
winboard/winboard.h
winboard/winboard.htm [new file with mode: 0644]
winboard/winboard.rc
winboard/winboard.rtf
winboard/woptions.c
xboard.c
xboard.h
xedittags.c
xedittags.h
xgamelist.c
xgamelist.h
xhistory.c
xhistory.h
zippy.README
zippy.h

diff --git a/AUTHORS b/AUTHORS
index 38b6302..6cf36e6 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
-Contributions of xboard and WinBoard authors by file
-$Id$
-
-0. Files covered
-
-The first group are included in the xboard distribution.  The second
-group are included in the WinBoard source distribution but not in the
-xboard distribution.  All are part of the joint xboard/WinBoard source
-base and are covered by the same copyrights and licensing terms.
-
-FAQ.html
-backend.c
-backend.h
-backendz.h
-bitmaps
-childio.c
-childio.h
-cmail.in
-cmail.man
-comment.in
-common.h
-config.h.in
-configure.in
-engine-intf.txt
-frontend.h
-gamelist.c
-ics-parsing.txt
-lists.c
-lists.h
-moves.c
-moves.h
-parser.h
-parser.l
-pgntags.c
-xboard.c
-xboard.h
-xboard.man
-xboard.texi
-xedittags.c
-xedittags.h
-xgamelist.c
-xgamelist.h
-zic2xpm.c
-zic2xpm.man
-zippy.README
-zippy.c
-zippy.h
-
-winboard.rtf (compiles to winboard.hlp)
-config.h
-defaults.h
-resource.h
-wedittags.c
-wedittags.h
-wgamelist.c
-wgamelist.h
-winboard.c
-winboard.h
-winboard.rc
-
-bitmaps/*
-bitmaps.xchess/*
-
-1. Wayne Christopher
-
-Wrote from scratch (I believe) bitmaps.xchess/*80*.bm.  Other bitmaps
-in the bitmaps.xchess directory were derived from these by shrinking
-and some hand-tuning.  By default these bitmaps are no longer used.
-Their copyright status is unclear.
-
-2. Chris Sears and Dan Sears
-
-Wrote from scratch parser.l, xboard.c, xboard.h, xboard.man.  Parts
-(sometimes small) of these files were later moved by Tim Mann to
-backend.c, backend.h, childio.c, common.h, frontend.h, and parser.h.
-
-Chris and Dan's original work is copyrighted by Digital Equipment
-Corporation with licensing terms similar to what the X Consortium uses
-(see the file COPYRIGHT).  All the work listed below is copyrighted by
-the Free Software Foundation and covered by the GPL (see the files
-COPYRIGHT and COPYING).
-
-3. Tim Mann <tim@tim-mann.org>
-
-Wrote from scratch FAQ.html, backendz.h, childio.h, comment.in,
-config.h.in, configure.in, engine-intf.txt, ics-parsing.txt, moves.c,
-moves.h, pgntags.c (split from backend.c by Jochen Wiedmann),
-xedittags.c, xedittags.h, xgamelist.c, xgamelist.h, zippy.README,
-zippy.c, zippy.h, winboard.rtf, config.h, defaults.h, resource.h,
-wedittags.c, wedittags.h, wgamelist.c, wgamelist.h, winboard.c,
-winboard.h, winboard.rc.
-
-Major additions and changes to nearly all other files listed in
-section 0.
-
-4. John Chanak
-
-Addition to xboard.c, mostly later moved into backend.c.
-
-5. Evan Welsh <Evan.Welsh@msdw.com>
-
-Wrote from scratch cmail.in and cmail.man.  Additions to backend.c and
-xboard.c.
-
-6. Elmar Bartel <bartel@informatik.tu-muenchen.de>
-
-Wrote from scratch the Metafont code from which bitmaps/* were
-generated.  The Metafont code itself is not included in the package.
-
-7. Jochen Wiedmann
-
-Wrote from scratch gamelist.c, lists.c, lists.h.  Wrote xboard.texi,
-mostly based on xboard.man and cmail.man.  Minor additions to backend.c.
-
-8. Frank McIngvale <frankm@hiwaay.net>
-
-Wrote from scratch zic2xpm.c and zic2xpm.man.  Additions to backend.c,
-xboard.c, and xboard.man.
-
-9. Hugh Fisher <Hugh.Fisher@cs.anu.edu.au>
-
-Additions to backend.c and xboard.c.
+Contributions of xboard and WinBoard authors by file\r
+$Id: AUTHORS,v 1.1 2003/11/02 04:42:06 mann Exp $\r
+\r
+0. Files covered\r
+\r
+The first group are included in the xboard distribution.  The second\r
+group are included in the WinBoard source distribution but not in the\r
+xboard distribution.  All are part of the joint xboard/WinBoard source\r
+base and are covered by the same copyrights and licensing terms.\r
+\r
+FAQ.html\r
+backend.c\r
+backend.h\r
+backendz.h\r
+bitmaps\r
+childio.c\r
+childio.h\r
+cmail.in\r
+cmail.man\r
+comment.in\r
+common.h\r
+config.h.in\r
+configure.in\r
+engine-intf.txt\r
+frontend.h\r
+gamelist.c\r
+ics-parsing.txt\r
+lists.c\r
+lists.h\r
+moves.c\r
+moves.h\r
+parser.h\r
+parser.l\r
+pgntags.c\r
+xboard.c\r
+xboard.h\r
+xboard.man\r
+xboard.texi\r
+xedittags.c\r
+xedittags.h\r
+xgamelist.c\r
+xgamelist.h\r
+zic2xpm.c\r
+zic2xpm.man\r
+zippy.README\r
+zippy.c\r
+zippy.h\r
+\r
+winboard.rtf (compiles to winboard.hlp)\r
+config.h\r
+defaults.h\r
+resource.h\r
+wedittags.c\r
+wedittags.h\r
+wgamelist.c\r
+wgamelist.h\r
+winboard.c\r
+winboard.h\r
+winboard.rc\r
+\r
+bitmaps/*\r
+bitmaps.xchess/*\r
+\r
+1. Wayne Christopher\r
+\r
+Wrote from scratch (I believe) bitmaps.xchess/*80*.bm.  Other bitmaps\r
+in the bitmaps.xchess directory were derived from these by shrinking\r
+and some hand-tuning.  By default these bitmaps are no longer used.\r
+Their copyright status is unclear.\r
+\r
+2. Chris Sears and Dan Sears\r
+\r
+Wrote from scratch parser.l, xboard.c, xboard.h, xboard.man.  Parts\r
+(sometimes small) of these files were later moved by Tim Mann to\r
+backend.c, backend.h, childio.c, common.h, frontend.h, and parser.h.\r
+\r
+Chris and Dan's original work is copyrighted by Digital Equipment\r
+Corporation with licensing terms similar to what the X Consortium uses\r
+(see the file COPYRIGHT).  All the work listed below is copyrighted by\r
+the Free Software Foundation and covered by the GPL (see the files\r
+COPYRIGHT and COPYING).\r
+\r
+3. Tim Mann <tim@tim-mann.org>\r
+\r
+Wrote from scratch FAQ.html, backendz.h, childio.h, comment.in,\r
+config.h.in, configure.in, engine-intf.txt, ics-parsing.txt, moves.c,\r
+moves.h, pgntags.c (split from backend.c by Jochen Wiedmann),\r
+xedittags.c, xedittags.h, xgamelist.c, xgamelist.h, zippy.README,\r
+zippy.c, zippy.h, winboard.rtf, config.h, defaults.h, resource.h,\r
+wedittags.c, wedittags.h, wgamelist.c, wgamelist.h, winboard.c,\r
+winboard.h, winboard.rc.\r
+\r
+Major additions and changes to nearly all other files listed in\r
+section 0.\r
+\r
+4. John Chanak\r
+\r
+Addition to xboard.c, mostly later moved into backend.c.\r
+\r
+5. Evan Welsh <Evan.Welsh@msdw.com>\r
+\r
+Wrote from scratch cmail.in and cmail.man.  Additions to backend.c and\r
+xboard.c.\r
+\r
+6. Elmar Bartel <bartel@informatik.tu-muenchen.de>\r
+\r
+Wrote from scratch the Metafont code from which bitmaps/* were\r
+generated.  The Metafont code itself is not included in the package.\r
+\r
+7. Jochen Wiedmann\r
+\r
+Wrote from scratch gamelist.c, lists.c, lists.h.  Wrote xboard.texi,\r
+mostly based on xboard.man and cmail.man.  Minor additions to backend.c.\r
+\r
+8. Frank McIngvale <frankm@hiwaay.net>\r
+\r
+Wrote from scratch zic2xpm.c and zic2xpm.man.  Additions to backend.c,\r
+xboard.c, and xboard.man.\r
+\r
+9. Hugh Fisher <Hugh.Fisher@cs.anu.edu.au>\r
+\r
+Additions to backend.c and xboard.c.\r
+\r
+10. Allessandro Scotti\r
+\r
+Made many additions to the WinBoard user interface and graphics \r
+capabilities, such as new windows for engine output, board textures \r
+and font-based piece rendering. These changes became collectively known\r
+as Winboard_x.\r
+\r
+11. H.G. Muller <h.g.muller AT hccnet DOT nl>\r
+\r
+Heaviliy modified winboard.c, backend.c, moves.c and parser.l, to\r
+allow board sizes other than 8x8, and many non-orthodox Chess pieces,\r
+so that WinBoard is now capable of playing variants like Shogi and Xiangqi.\r
+Also implemented displaying of the Crazyhouse holdings, and many adjudication\r
+and other backend options. This version of WinBoard, (4.3.xx) containing all \r
+of the WinBoard_x options, became known as WinBoard_F.
\ No newline at end of file
index 224748c..2c07930 100644 (file)
--- a/FAQ.html
+++ b/FAQ.html
@@ -1696,6 +1696,6 @@ GNU Chess 5 and its book.  You can add more xboard options at the
 end of the command line.
 
 <p><HR>
-$Id$<br>
+$Id: FAQ.html,v 2.2 2003/11/28 09:35:21 mann Exp $<br>
 ** End of XBoard/WinBoard FAQ **
 </BODY></HTML>
index cc5eb21..bb8ec86 100644 (file)
@@ -1,7 +1,7 @@
 #
 # Run ./configure to generate a Makefile from Makefile.in
 # See INSTALL for more information
-# $Id$
+# $Id: Makefile.in,v 2.7 2003/11/28 18:26:06 mann Exp $
 #
 
 PRODUCT = @PRODUCT@
diff --git a/READ_ME b/READ_ME
index 4ddc997..a27021b 100644 (file)
--- a/READ_ME
+++ b/READ_ME
-
-What is XBoard?
-===============
-XBoard is a graphical chessboard for the X Window System.  It can
-serve as a user interface for chess engines such as GNU Chess, for the
-Internet Chess Server, or for electronic mail correspondence chess.
-XBoard can also be used by itself.  See the manual page xboard.txt for
-further details.
-
-XBoard is free software, copyrighted by the Free Software Foundation
-and released under the GNU General Public License (GPL).  See the file
-COPYING for details.
-
-You can build xboard on most systems with the following commands.
-
-       ./configure
-       make
-
-See the file INSTALL for more detailed instructions.
-
-See the file FAQ.html for answers to frequently asked questions.
-
-
-What is WinBoard?
-=================
-WinBoard is a port of XBoard to run natively on Windows.  It is part
-of the XBoard project and is released under the same terms as XBoard.
-
-You can build WinBoard using the free Cygwin toolchain from
-www.cygnus.com with the following commands.
-
-       cd winboard
-       make -f cygwin.mak
-
-You can build WinBoard using Microsoft Visual C with the following
-commands, or by opening the project in Visual Studio and clicking the
-build button.
-
-       cd winboard
-       nmake -f msvc.mak
-
-There is also a contributed .mak file for Borland C.  It's not
-maintained and thus may need updating if you want to use it.
-
-
-Reporting problems
-==================
-
-Report bugs and problems with XBoard and WinBoard to
-<bug-xboard@gnu.org>.  With XBoard, please use the "script" program
-to start a typescript, run XBoard with the -debug command line option,
-and include the typescript output in your message.  With WinBoard,
-please use the /debug command line option and include the contents of
-the file WinBoard.debug.  Also tell us what kind of machine and what
-operating system version you are using.  On Unix, the command "uname
--a" will tell you this.  On Windows, right-click on My Computer and
-select Properties.
-
-Here is a sample of approximately what you should type (on Unix):
-
-    script
-    uname -a
-    ./configure
-    make
-    ./xboard -debug
-    exit
-    mail bug-xboard@gnu.org
-    Subject: Your short description of the problem
-    Your detailed description of the problem
-    ~r typescript
-    .
-
-If you improve XBoard, please send a message about your changes, and
-we will get in touch with you about merging them in to the main line
-of development.
+\r
+What is XBoard?\r
+===============\r
+XBoard is a graphical chessboard for the X Window System.  It can\r
+serve as a user interface for chess engines such as GNU Chess, for the\r
+Internet Chess Server, or for electronic mail correspondence chess.\r
+XBoard can also be used by itself.  See the manual page xboard.txt for\r
+further details.\r
+\r
+XBoard is free software, copyrighted by the Free Software Foundation\r
+and released under the GNU General Public License (GPL).  See the file\r
+COPYING for details.\r
+\r
+You can build xboard on most systems with the following commands.\r
+\r
+       ./configure\r
+       make\r
+\r
+See the file INSTALL for more detailed instructions.\r
+\r
+See the file FAQ.html for answers to frequently asked questions.\r
+\r
+\r
+What is WinBoard?\r
+=================\r
+WinBoard is a port of XBoard to run natively on Windows.  It is part\r
+of the XBoard project and is released under the same terms as XBoard.\r
+\r
+You can build WinBoard using the free Cygwin toolchain from\r
+www.cygnus.com with the following commands.\r
+\r
+       cd winboard\r
+       make -f cygwin.mak\r
+\r
+You can build WinBoard using Microsoft Visual C with the following\r
+commands, or by opening the project in Visual Studio and clicking the\r
+build button.\r
+\r
+       cd winboard\r
+       nmake -f msvc.mak\r
+\r
+There is also a contributed .mak file for Borland C.  It's not\r
+maintained and thus may need updating if you want to use it.\r
+\r
+\r
+Reporting problems\r
+==================\r
+\r
+Report bugs and problems with XBoard and WinBoard to\r
+<bug-xboard@gnu.org>.  With XBoard, please use the "script" program\r
+to start a typescript, run XBoard with the -debug command line option,\r
+and include the typescript output in your message.  With WinBoard,\r
+please use the /debug command line option and include the contents of\r
+the file WinBoard.debug.  Also tell us what kind of machine and what\r
+operating system version you are using.  On Unix, the command "uname\r
+-a" will tell you this.  On Windows, right-click on My Computer and\r
+select Properties.\r
+\r
+Here is a sample of approximately what you should type (on Unix):\r
+\r
+    script\r
+    uname -a\r
+    ./configure\r
+    make\r
+    ./xboard -debug\r
+    exit\r
+    mail bug-xboard@gnu.org\r
+    Subject: Your short description of the problem\r
+    Your detailed description of the problem\r
+    ~r typescript\r
+    .\r
+\r
+If you improve XBoard, please send a message about your changes, and\r
+we will get in touch with you about merging them in to the main line\r
+of development.\r
+\r
+Version 4.3.14\r
+==============\r
+\r
+This relaese was not made by the GNU xboard team, but by H.G.Muller.\r
+It mainly contains developments on WinBoard. Nevertheless, an attempt\r
+has been started to back-port the enormous number of improvements that\r
+have been made to WinBoard since the Linux and Windows developments branched\r
+to xboard. This is reflected by the source tree now having the same format\r
+as that of xboard 4.2.7, including all the xboard sources. \r
+\r
+An enormous amount of work still has to be done to make the xboard version\r
+fully equivalent to WinBoard, especially on user-interface side. As a modest\r
+beginning, the xboard source files have been patched to allow their compilation\r
+with the newer back-end files from WinBoard. To this end, the number of piece\r
+types in xboard has been increased from 6 to 22, and the WinBoard bitmaps\r
+have been converted to xboard source format (.bm) and are included in the\r
+xboard bitmaps directory. Other quick patches include the coloring of the\r
+board squares (for xiangqi and holdings), and some code in the user-move\r
+handling to suppress all moves into or out of the area between board and\r
+holdings in crazyhouse, and the treatment of king-captures-own-piece\r
+as a possibly valid move (for FRC castling). This should make it possible \r
+to run xboard with the new back-end files without too much inconvenience.\r
+\r
+New xboard command-line options have been added to make the added back-end \r
+features available. The include the new variants (as argument of the old\r
+-variant option), -boardWidth, -boardHeight and -holdingsSize. Be sure\r
+to call xboard with "-boardSize middling" or "-boardSize bulky" if you\r
+want to play with fairy pieces, or xboard might crash due to unavailability\r
+of bitmaps. Other added xboard options are:\r
+\r
+ADJUDICATION OPTIONS:\r
+-checkMates\r
+-testClaims\r
+-materialDraws\r
+-trivialDraws\r
+-ruleMoves\r
+-repeatsToDraw\r
+-adjudicateLossThreshold\r
+-firstScoreAbsolute\r
+-secondScoreAbsolute\r
+\r
+TIME-CONTROL OPTIONS\r
+-firstTimeOdds\r
+-secondTimeOdds\r
+-timeOddsMode\r
+-firstNPS\r
+-secondNPS\r
+\r
+GENERAL OPTIONS\r
+-matchPause\r
+-engineDebugOutput\r
+-userName\r
+-pgnExtendedInfo\r
+-pgnEventHeader\r
+-hideThinkingFromHuman\r
+\r
+This is all completely untested, but as the options merely switch on well-tested\r
+code in the back-end, there should not be too many problems with them.\r
+Bugs can be reported in the WinBoard forum.
\ No newline at end of file
diff --git a/ToDo b/ToDo
index 62be85a..d3d6f1a 100644 (file)
--- a/ToDo
+++ b/ToDo
-Possible improvements   **=somewhat higher priority
----------------------------------------------------
-
-20. Some way to back up, explore variations, then return to the main
-line and restore moves we backed out.  Should also support exploring
-side branches while loading a game file.  Push/pop buttons?  Button to
-fork another xboard in same state as current one?
-
-20a. Allow side branches to be remembered in game files (and
-understood on LoadGame).  Use PGN variation notation.
-
-**62a. Support series of time controls as in later gnuchess 4.0.x
-versions (and real tournaments!).  Needs a protocol extension to
-"level"; this is now planned for protover 3.
-
-62b. Perhaps we could also support the kind of clock where you get K
-seconds per move, plus a reserve of J seconds per game that is used
-when a move takes more than K seconds.  The degenerate form of this
-with J=0 is desirable in itself.  Needs a protocol extension.
-
-68. WinBoard has some features not in xboard.  Among others:
-68a. LoadGameOptions dialog             (good to add)
-68b. SaveGameOptions dialog             (good to add)
-68c. TimeControl dialog                 (good to add)
-68g. Font dialog.                      (leave out)
-68h. Colors dialog.                    (leave out)
-68i. Board size on Options menu         (good to add)
-68j. Resize with mouse
-68k. Highlight dragging
-68m. Move typein from keyboard.         (good to add)
-
-69. xboard has some features not in WinBoard.  Among others:
-69c. Font size selection by pattern fill-in. (leave out)
-69d. Alternate bitmaps specified at runtime. (good to add, often requested)
-69e. Flashing.
-
-71. Allow restart after ICS logout instead of exiting?  Many requests
-for this.
-
-71a. Would be useful to drop into NCP mode after ICS logout and allow
-for reconnect later.  For instance, this would let you save your last
-partial game if you didn't have autosave on.
-
-72. Allow switching among ICS, NCP, GNU modes??
-
-74. Observe/play multiple games, each with its own window.  Hard.
-
-80. Clone command.  Saves current game to a file foo, then starts up
-another copy of xboard with -lgf foo.  Should probably note current
-state of some options and give command line flags to set them the same
-way in child.  What about -ncp mode, though?  Might want that to be
-different.  Would be nice to have a -moveNumber flag to position the
-child to the same move number in the current game.
-
-91. Would be nice to have an option to overwrite save file instead of
-appending.
-
-95. "Have the clock indicate how long the computer/player has been
-thinking for when the -st option is used. This should be how long for
-the current move only." (Dino Dini)
-
-97. "Have the ability to change the level of the gnuchess during a
-game. For analysis purposes, sometimes it is useful to have the
-computer think really hard about certain positions." (Dino Dini)
-
-98. Reorganize the source and split it into more files.
-
-107. Changing time control during a game could be made to work.
-Current (WinBoard only) way of changing at start is suboptimal.
-
-**108. Could add search depth and time per move to (WinBoard)
-TimeControl dialog.
-
-140. LoadPosition needs better checking for invalid data.
-
-142. xboard needs a real file chooser dialog.  Jeff Woolsey submitted
-code to merge in the one from Ghostview, but said it works only on
-X11R5 or later.  I have not yet tried his code or looked to see if it
-could be made to work on X11R4.
-
-147. Improve display of held pieces in bughouse mode, putting them
-closer to the player's side of the board, and perhaps using icons (and
-allowing dragging from the icons to drop a piece).  Actually, moving
-the clocks would be beneficial too, so that it's easier to visually
-associate the right clock with the right player when looking at two
-boards during a bughouse match (with two copies of xboard running).
-Maybe multiple window layouts should be user-selectable.
-
-150. Keep track of castling availability, en-passant availability, and
-FEN half-move clock (for 50-move rule), pass the availability
-information to the move generator through the existing interface, and
-load/save it in the FEN code.
-
-150a. Note that not keeping track of ep creates a bug in mate
-detection.  In certain positions, moving a pawn from the 3rd to 4th
-rank gives mate, but it is not detected because if the pawn had moved
-to the same position from the 2nd rank, ep capture would have been
-legal and there would be no mate.
-
-150b. Note that although we try to put in e.p. availability when
-writing FEN, this works only if we have the move that got us to this
-position in the moveList. If we load a position from FEN, the
-e.p. availability field of the FEN is lost.
-
-152. Generate the info file, man page, perhaps html, and perhaps even
-the WinBoard help file from the same sources.  Right now,
-substantially the same text is duplicated in three places.  This is
-a huge pain in the neck.
-
-157. Idea: if Zippy flags some number of times in a row and keeps
-getting told the opponent is not out of time (presumably due to
-timestamp/timeseal), he should issue an adjourn or abort.
-
-160. The xboard CTRL key flashback feature is bad in Analysis mode.
-Flashing back throws away the analysis.
-
-161. SIGINT doesn't work for local programs on Win32.  There is an
-equivalent, GenerateConsoleCtrlEvent(CTRL_C_EVENT), but I haven't
-gotten it to work thus far.  It seems that WinBoard and the chess
-engine don't "have the same console"; indeed, neither has a console.
-
-162. Supply a non-X Zippy for Unix.  Perhaps use the code from Klaus
-Knopper.
-
-167. Alternative bitmaps loaded at runtime for WinBoard.
-
-169. Upload Game on file menu?  This would upload the current game
-moves into a scratch examined game on ICS.  Could do Upload Position
-too.  Some code to do Upload Game was contributed, but it didn't
-handle setup positions, variants, checking for proper gameMode, etc.,
-so I couldn't use it.
-
-170. Auto step every k seconds should be a general feature you can
-turn on at any time, not just in LoadGame.  What should GUI be?
-
-171. Displaying thinking in a separate window should be an option
-available at all times when Show Thinking makes sense, not just in
-analysis mode.  It should perhaps be orthogonal to analysis mode.
-
-172. Should analysis window scroll instead of showing only the last
-line?  There could be an extra checkbox to show all chess engine
-output in it.
-
-178. Need reliable kill for chess engine on Win32.  See also 161.
-
-181. Some people want -sgf to save only played games, not observed and
-examined games.  Others like it to save them all.  Make this an option?
-
-183. Search feature in Game List dialog [Igor Eged].
-
-187. "Log session" feature for ICS window.
-
-193. Some users have reported xboard redraw bugs, but I have not
-been able to reproduce them on the Digital Unix, Linux, or eXcursion X
-servers (xboard).
-
-c. From Hawk:  
-Dragging in xboard does not work 100%.  
-* The dragged piece may disappear (try some fast e2-d3 movements - 
-  this is easy to reproduce).
-* The dragged piece may be placed on an illegal position (this 
-  happens less frequently, but it _can_ be reproduced by doing the same
-  as above).
-* In both of the above cases, the board is correct after forcing a 
-  redraw (ie. minimizing/restoring the window)
-I'm using eXodus - a win32 X server, perhaps it's buggy. [Seems that way,
-or just possibly, these could be bugs that are fixed in 3.6.11beta or
-3.6.12beta.]
-
-d. One user reports: "If you are 'holding' a piece over the square you
-want to go to and that move becomes illegal but you make it anyway,
-the display sometimes corrupts and a partial piece appears..sometimes
-a whole piece."  This was under RedHat 6.0.
-
-194. A few users have reported drawing problems with WinBoard.  There
-may be some color map problem on certain displays.  I might possibly
-have fixed this already; I cannot reproduce it.  The common thing
-seems to be black pieces changing to white.  This may depend on having
-customized the board colors.  I suspect many of these problems are
-buggy Windows drivers for particular display cards.  (May be worked
-around in 4.2.0 with reprocessed .bmp files.)
-
-a. From mulesmurf: if i log in and then move the board, it will happen
-that the black [pieces] change to white.
-
-c. People have sent pictures where the grid didn't get redrawn.  This
-produces random bits in the grid area from uninitialized memory.
-Could this be a resource leak?
-
-d. From James Van Buskirk: I did notice one problem tonight playing
-against Comet under FX!32 1.2 (Comet, not winboard ran under FX!32):
-for a couple of moves winboard didn't turn off the highlighting of the
-square I dropped the piece on until Comet had moved.  Later, the
-problem fixed itself.  Have other users noticed this?  [No.]
-
-e. One user reports: Lastly, there is some sort of slight bug in the
-piece dragging code, but it comes up only very occasionally (once in
-500 moves?)...basically, I'm dragging, change my mind, throw the piece
-of the side of the board, and instead it gets stuck not inside a
-square.  It's really disconcerting, this piece just sitting across
-square boundaries.  When you make another move, it gets cleared up and
-goes back where it's supposed to.  [Might be fixed in 4.0.6, but I
-couldn't reproduce this, so I can't be sure.]
-
-f. DAV says: "When I resized the board on win 95 and made it smaller
-some of the pieces turned into junk (I'm not able to give a screen
-shot)."  Later: "Seems to happen on the three sizes below small.
-Win98 and NT seem to be ok, trying to get more win95 users to test
-it."  Works fine for me on Win 95...  [Might have been fixed by the
-cleanup of the Windows .bmp's that happened sometime before version
-4.2.3]
-
-195. Flash Moves works at the end of every change to the board, using
-some rather gross code in DrawPosition.  This code should perhaps be
-ripped out and the flashing done from inside AnimateMove instead.
-
-197. More color distinctions.  Maybe allow several user-selected channels
-to have their own colors.
-
-198. More sounds.  Some possiblities: distinguish White vs. Black move
-or your move vs. opponents, distinguish different kinds of
-win/loss/draw/unfinished (checkmate, resignation, stalemate, other
-draws, opponent disconnected, etc.), game ends when you aren't playing
-and/or aren't in ICS mode, differentiate amongst requests (draw offer,
-etc.), **check, got new offboard piece (by piece type?), opponent got
-new offboard piece (ditto), arrival notification, "* who has an
-adjourned game with you," draw declined, moretime received.
-
-199. Maybe put user names instead of White and Black on clocks, or
-user names above or below clocks in a smaller font.
-
-200. I don't like these ideas, but some people do:
-a. Highlight all of the squares that the piece you are moving can go to.
-b. Clicking on the piece moves it immediately if it has only one legal move.
-c. Allow clicking on the destination, then the source.
-d. I guess highlight the pieces that can go to that destination.
-e. Clicking on a destination that only one piece can go to moves it there.
-
-201. mulesmurf: piece counter so we know exactly the score 
-
-202. mulesmurf: ziics pieces, board along with color intensity
-
-204. Hawk at Fri May 15, 12:58 CDT 1998: a minor thing with xboard:
-the coords disappear while dragging from a square with coords on it.
-[They come back when the drag is finished.]
-
-208. WinBoard sometimes comes up with one of the menu bar items grayed
-out (one that should not be).  I've seen this on different entries at
-different times.
-
-213. Maybe add Silence to sound menu -- parallel to Monochrome on
-color menus.
-
-214. Maybe easier startup dialog customize:
-a. Buttons to add/delete/move(?) current string to/from/within current list.
-b. Or maybe auto-add newly typed/edited strings up to some limit.
-c. Also a drop-down for Additional Options.
-
-216. Maybe shorten menu names in WinBoard to one char if and only if
-the menu bar would wrap with longer names.
-
-**217. Easier way to add engines to the WinBoard startup dialog.
-Ideally, an engine author should be able to supply a simple
-configuration file or script that installs his engine.  "*.wbe" idea.
-
-218. Some folks would like Highlight Last Move to apply only to
-opponent's moves.
-
-219. From Jorge Monasterio: Support automatic game starts when in
-tournament. In other words, do that "match bigolfish mann 5 0 black"
-automatically based on the info sent from mamer.  [I would need to
-play in some tournaments before I could evaluate this idea or fill in
-the details.]
-
-222. Could support time handicaps.
-
-223. Bug: very long comments cause buffer overflow.  Need to revamp
-the way comments are parsed and returned from parser.l to fix this.
-
-224. Larry Parrish requests: In an automated multi-games match I would
-like to load the n-th game from the file for the n-th game of the
-match.  [That is, when -mg and -lgf or -lpf are used together without
--lgi or -lpi.]
-
-225. From pulp: another bug (maybe with the Microsoft RichEdit
-control) I've observed is when you flood the edit control it loses the
-bottom.  Eg. "games" will scroll along then start slipping until by
-the end of the list you are really looking at the middle of the list
-and have to manually scroll back to the bottom.  [May be fixed?]
-
-225a. Resizing the WinBoard ICS interaction window can cause the cursor
-to be off the screen, which stops scrolling.
-
-226. From pulp: Clipboard persistence.  If I copy text, then the text
-disappears when Winboard is closed.  Eg.: Log in, highlight and copy a
-web page address, close, go to browser, paste *nothing*.  [How does
-one do this in Windows?]
-
-227a. In engine-engine matches, an engine that crashes should lose and
-perhaps get restarted for the next game.
-
-227b. Maybe when an engine playing in Zippy mode exhibits a bug, we
-should do a little more too.  Perhaps "say Sorry, the engine seems to
-have a bug", resign or abort, and maybe force an engine restart for the
-next game.
-
-**227c. We should also detect and stop the game on false mate or draw
-claims, rejecting a legal move, or (maybe) missed claims of mate or
-draw.  Note that draw claims require checking for repetition, 50 move
-rule, and insufficient material as well as stalemate, so this is
-nontrivial.
-
-228. RichEdit bug: sometimes a line gets indented as if it were
-wrapped when it should be flush left.
-
-**229. Support for sending moves from the partner's game to a bughouse
-engine.  Ben Dean-Kanemura submitted support that works without adding
-general multi-game support, by relaying the moves without processing
-them.  Should also send holding updates and clock times; not sure if
-Ben's code does that.  Needs to be a new "feature" command option, and
-to be documented in engine-intf.html, removing the note that this may
-be done in the future.
-
-231. See Ed Collins's WinBoard bug list on his pages:
-
-231b. If you save an ICS examined game to disk as a PGN file, it
-doesn't report the end-of-game result in both the header and at the
-end of the notation.  [It doesn't get this info from the server, but
-maybe there is a way it could.]
-
-232. From Ed Collins's WinBoard wish list on his pages:
-
-232b. Multiple winboard.ini files for different moods, loadable from
-inside the program.
-
-232c. Fix bug where fics% prompt is not suppressed when using
-timeseal.  This has something to do with a timeseal deficiency whose
-details I've forgotten, but there must be some way to fix it.
-
-232e. When using the server's "examine" mode to examine a previously
-played game, have the game clocks display the time that each player
-currently had after each move was made.
-
-232f. [Not from Ed] Deal with ICC game relays where an "examined" game
-is supposed to have running clocks.  Not sure if this is still an issue.
-
-232g. Customizable on-screen buttons [i.e., toolbar or toolbox].
-
-232h. Customizable function keys.  Currently xboard can bind a key to
-any built-in xboard function.  Should extend this to WinBoard, and
-also (in both programs) support sending an arbitrary ICS command when
-button is pressed.
-
-233. See if anything from LightningRulez should be added.  Premove is
-now included (from Winboard Plus), but maybe there are other useful
-things too.
-
-241. There might still be bugs in xboard and/or winboard when moves
-come in from ICS during drag animation, though I can't reproduce them.
-DAV saw the opponent's piece fail to be erased from the source square, if
-I understood his message right.  [DAV says this still exists in 4.2.5.
-I think bug 426 is a duplicate.  The description is clearer there.]
-
-242. User-defined "looking_at" patterns and actions.  This is hard to
-bombproof.
-
-**243. "Rematch" shortcut in /cp mode.
-
-246. Maybe auto-close comment window when user goes to the next move.
-Whether this is desirable really depends on the content of the
-comment, but maybe it is rare to have a long comment that discusses
-the plan several moves ahead and should be left up.
-
-248. Would be nice to support retract move after checkmate or draw (etc.).
-
-254. Different tray icons for interaction window vs. board (suggestion
-from FICS).
-
-256. One user asked for "delete" option in game lists.  This requires
-rewriting the file to close up the hole, so it's pretty heavyweight.
-Next people will be asking for move, sort, search, and other game
-database functionality; ugh.
-
-**257. Would be nice to find a way to safely implement "retract move"
-when the engine is still on move.  (using ping/pong)
-
-**260. General mechanism where engine can declare engine properties that
-the user can frob and xboard/winboard will put up a simple dialog to
-allow user to view and set them.  See email message "special engine
-commands" from Steffen Jakob:
-
-  From: "Steffen A. Jakob" <saj@xxx>
-  To: mann@xxx
-  Cc: chess-engines@xxx
-  Subject: special engine commands
-  Date: Fri, 26 Feb 1999 09:12:26 +0100
-
-  Hi Tim!
-
-  Here comes a summary of our ICC chat (I cc this mail to the
-  list... maybe other engine programmers can give some feedback if
-  they find this feature useful):
-
-  Please add a protocol command which enables the engine to tell
-  xboard its special commands. Maybe a set of (label, command string)
-  pairs would be useful. Then create a menu for these commands. It
-  could look like this (that's what I would like to see for Hossa):
-
-  engine->interface:
-  ------------------
-  command "Reset the log file" "reset log"
-  command "Save Diagram as PNG" "png dia.png"
-  command "Disable Book" "book off"
-  command "Show Evaluation details" "eval"
-  command "Show Search statistics" "stat"
-
-  etc.
-
-  While typing this list I realized that an additional parameter like
-  this would be needed/nice (of course you can think of many more
-  improvements):
-
-  command "Save Diagram as PNG" "png %s" 1
-
-  "1" tells xboard to ask for an additional parameter (here: filename)
-  which will replace the "%s" in the command string.
-
-261. Check that "quit" is sent to engine properly if ICS connection
-fails to open due to error from timestamp/timeseal.  "wzrdking" had a
-case where it didn't.  Timetamp had failed with "Host name not found
-by name server" (because in fact there was no internet connection, arrgh).
-
-273. Displaying the names of the players from a PGN file in the header
-of the window does not work if there is only one game in the file.
-The filename is shown instead.  (This was intentional, but maybe a
-poor idea.)
-
-274. Command to go to move number N, with entry box for N.
-
-276. Make grid optional in winboard?  Note that the highlight options
-don't work without it.
-
-276a. Make color of grid an option, instead of always black.
-
-277. Flooding xboard -zt + timestamp with tells hangs timestamp after
-a while.  xboard is blocked writing to the timestamp pipe.  timestamp
-is in an unknown state, not reading from the pipe nor responding to
-pings.  (Confirmed with the software running on milwaukee, Red Hat
-5.2)
-
-278. Flooding winboard -zt + timestamp with tells hangs winboard after
-a while.  timestamp still responds to pings.  This reported by
-nudnick; I haven't tried to reproduce it yet.  He also says that
-windows explorer then crashed when he tried to close winboard.
-
-279. Idea from an anonymous ICSer: piece drop menu could have images,
-not words.  [Or maybe both?]  Also might be easier to select
-accurately from it if horizontally arranged, or in a 3x2 grid.
-
-284. dxterm hangs when it receives the escape sequence that sets the
-title bar on xterm.  I think some other xterm substitutes do too.
-
-**287. WinBoard can look funny if you are using themes because it
-unconditionally uses white for certain colors instead of the default
-background.
-
-289. Merge WinBoard support for the Henter-Joyce JAWS screen reader.
-Source code (zip file containing modified WinBoard 4.0.2 source) is at
-ftp://ftp.henter-joyce.com/users/hj/winboard/WinboardSource.exe.  It
-would be interesting to make this work with festival (free Unix speech
-synth) or other speech synthesizers too.
-
-290. Could have limited voice output without a speech synthesizer by playing
-wav files for piece names and square numbers.  Idea suggested by Hannu
-Wegner.
-
-291. Would be great to support DGT, Novag Universal chessboard, etc.
-I'm not likely to fork out the cash to buy either for testing, however.
-Note users have done various things along these lines.
-
-292. When an engine is analyzing, it would be cool to have a way to
-automatically play out its current PV (or even older ones) on a board.
-These PVs could be saved as variations when we have variation support.
-
-297. Windows users expect all programs to have a Print function, even
-though there are other ways to print.  Useful items to make printable:
-PGN game scores (which are plain text, of course), maybe FEN position
-diagrams, maybe graphical position diagrams (i.e., same as pressing
-the "Print Screen" function key and printing the clipboard).
-
-298. One user suggests that automatic move stepping should not start
-until you press OK in the tags window.  This could be a good idea, but
-I think I'd rather have automatic stepping never start until you press
-a "play" button on the main window, and have that button always
-available, not just when loading a game from a file.
-
-299. One user suggested being able to jump to a specific move by
-typing its number (followed by ... if it's to be black's move).
-
-300. Can I put a hyperlink (that will invoke a browser) directly onto
-the WinBoard Help menu or in the Help file?  Useful to take users to
-my chess page.
-
-302. On NT, check if the board is redrawn properly when exiting from
-the screen saver.
-
-308. There is some tricky way to maximize the WinBoard board window,
-although there isn't supposed to be.  Maybe prevent this, or else
-legalize it and make sure something reasonable looking happens.
-Note: the trick is to select one of the "tile" options on the Windows
-task bar.  Not clear what should happen in this case.
-
-309. Avoid endlessly flagging every second when opponent is lagged out
-and autoflag is on.  Automatically courtesy-adjourn (or abort if
-unrated) instead, at least if in zippy mode.
-
-310. Weird bug: the last character of a FICS output can appear on the
-next line, *after* the fics% prompt, according to one user.  I might
-have seen something like this myself once too.
-
-314. One person wanted his engine to see tells when running in Zippy
-mode.  I doubt this is generally useful, so I haven't added the code I
-wrote for him.  (I can query for "tellfrom" in my mail file to find
-it.)
-
-314a. Another person wants his computer account to relay tells to his
-personal account.
-
-319. One user would like to be able to reload a PGN file and resume a
-game against an engine as if after an adjournment, with the clocks
-(and moves to next time control) restored as they were when the game
-was saved.
-
-320. Display ratings of ICS players in the title bar (if there is room,
-presumably), or somewhere, anyway.
-
-321. Maybe refresh the EditTags window if the gameInfo changes and the
-window is up.  (WinBoard now does this when entering MachineWhite,
-MachineBlack, or TwoMachines mode -- not very general.  From Winboard Plus.)
-
-322. One user requested that Zippy games use the engine name instead
-of the ICS handle in the PGN tags, as he uses multiple engines on his
-account.  (My response was "I'd say it should give both"; not sure just
-how to do that, though.)
-
-324. I'm told that Blitzin supports animated dragging without holding
-down the mouse button and that this is "much better" and I should try
-it too.  As yet I haven't.
-
-326. Full support for variants and variant-capable engines in all
-modes, not just ICS mode.  Here are some items still needed.  Some if
-not all should probably wait for a rewrite, not be added to the
-current code base.
-
-326a. Menu to let you see and change the current variant type, not
-just a command-line argument as at present.
-
-326b. crazyhouse: Keep track of holdings and display them, keep track
-of what onboard pieces are promoted so they will revert if captured,
-understand offboard interposition to stop mate.  
-
-326bb. One user asked for a Czech variant of crazyhouse where pawns are
-given to the opponent when they reach the 8th rank (after capturing, if
-it's a capture) instead of promoting.
-
-326c. bughouse: Features in 326a would be helpful for editing one board
-of a bughouse game, and getting mate indication right even in ICS mode.
-In the longer term, could understand BPGN, support editing two-board games.
-
-326d. wildcastle: Allow wildcastle castling only when playing this variant!
-Maybe support automatic shuffling for local play.
-
-326e. nocastle: Maybe support automatic shuffling for local play.
-Note that several types of ICS shuffle chess fall under this variant.
-Note that this isn't really a variant, since if we kept proper track
-of castling rights and used "setboard FEN" or the ChessBase extension
-of "edit" to set them, it could be treated as normal chess with a
-different starting position.
-
-326f. fischerandom: Maybe support automatic shuffling for local play.
-Support castling.  Currently, you can probably play Fischer Random
-successfully on ICS by typing castling moves into the ICS Interaction
-window, but they will not be animated correctly, and saved games will
-not be loaded correctly if castling occurs.  FR castling is
-problematic because the move cannot be specified by the starting and
-ending coordinates of the king; in some starting positions there is a
-legal non-castling move that moves the king the same way.  This
-violates a deeply ingrained assumption in the implementation.  It also
-breaks the GUI -- you need more than just dragging the king two
-squares to indicate castling.  (Note: In FR notation, O-O is h-side
-castling, O-O-O is a-side.  See "help fr_rules" and "help fr" on FICS
-for rules.)
-
-326g. kriegspiel: Could give some thought to how to support a
-kriegspiel engine.  I doubt anyone will ever write one, though.
-
-326h. losers: Know that captures are mandatory.  Understand the win
-condition.
-
-326i. suicide: Know that captures are mandatory.  Understand the win/draw
-condition.
-
-326j. giveaway: Know that captures are mandatory.  Understand the win
-condition.
-
-326k. atomic: Understand the win condition.
-
-326l. 3check: Understand the win condition -- ugh, have to keep a
-check counter!
-
-327. Option to set the coord font color (or something) to make sure
-there is always enough contrast with the square colors.
-
-329. Bernhard Maerz would like a command line option to choose the PGN
-player name for an engine, overriding the default of generating the
-name from the engine filename.  This is for his ChessCall program.
-
-331. Maybe the local autoflag menu option should *also* turn
-server-side autoflag on/off by sending an appropriate set command.
-
-**332. Bug: Autoflag for local engine/engine or engine/human matches
-does not recognize that having your flag fall when your opponent has
-insufficient mating material is a draw.  It counts the flag fall as a
-loss.
-
-336. Of course lots of people ask for a graphical seek window.
-
-339. There are probably some incompatibilities with chess.net, as they
-have made a few gratuitous changes to message formats from the FICS
-code base they started with, and perhaps they've added features since
-without duplicating the syntax closely enough.  In particular it's
-been reported that Zippy does not correctly send "partner" and
-"variant" commands to bughouse engines on chess.net.  Also, I doubt
-colorization works.  As a matter of personal choice I do not spend any
-of my time supporting chess.net, but if others want to donate patches
-that allow chess.net to be supported without breaking the support for
-ICC and FICS, I am willing to install them.
-
-342. Analysis mode automatically turns on the Show Thinking option;
-the user must then turn it off manually after leaving analysis mode if
-he doesn't want it.
-
-343. Would be nice to change xboard keyboard shortcuts to not be plain
-letters, make the new shortcuts work also in the ICS input box, and
-make typing plain letters to the board redirect to the ICS input box
-or the xterm.  Might want to change/remove the Ctrl binding at that time.
-
-344. One user suggested having a way to save a position as a character
-string that would produce a board diagram when rendered in MS Word in
-a chess font.  Perhaps there is already a nice standalone tool for
-this, though?
-
-346. Could use a better way to pick default size.  Now we choose the
-largest that fits on the screen, which is typically too big.  Not too
-bad for WinBoard, but painful for xboard since it can't be resized
-after starting.
-
-349. Check that "quit" definitely makes it to the engine before exit,
-if you exit via the File menu while a match is running.  Uli Tuerke
-reported that maybe it sometimes doesn't (in WinBoard 4.0.5).
-
-352. Perhaps recognize the ANSI escape sequence that FICS sends out
-for the cls command and clear the ICS interaction window.
-
-**353. WinBoard can crash when the engine outputs very long PV lines
-(or debug output that looks like a PV).  In particular, lines that
-start with 4 or more blanks following a "thinking" output line are
-treated as continuation lines, and get concatenated into a 512-byte
-buffer with no checking for overflow.  Generally we need a lot more
-care to avoid buffer overflows inside both xboard and WinBoard.
-[Note: changed the buffers to be 5120 bytes as a band-aid.]
-
-Guido Flohr expands on this bug:  
-
-  The problem is easy to reproduce, simply write a program/script that
-  spits out lines of more than 8192 bytes (INPUT_SOURCE_BUF_SIZE) and
-  connect it as a chess engine to xboard.  No surprise, xboard cannot
-  handle such long lines, but the resulting behavior is really weird:
-
-  The program enters DoInputCallback() in xboard.c, reads the first
-  8192 bytes, searches for a linefeed in vain, then closes its eyes,
-  sets the member "unused" of the InputSource to is->buf + 8192 and
-  waits for more input although the buffer is already full.
-
-  The next time it calls the same function, is->unused is exactly
-  these 8192 bytes away from is->buf, xboard computes the amount of
-  bytes to read in this round, which sums up to 0 nothing.  It then
-  calls read(2) with a bufsize argument of 0, and then assumes end
-  of file when the kernel call returns 0 (which is the documented
-  behavior).
-
-  For local engines, we now jump into backend.c, ReceiveFromProgram(),
-  and this function reports that the engine has exited unexpectedly.
-  In fact the engine is still very vivid, which is good, because in
-  spite of xboard's assumption that its child has died, it still
-  sends "force", "ping N", and "quit" to the false dead.  If the child
-  was really dead, the alert boxes "error writing to ... engine"
-  would hide the first alert box "... has exited unexpectedly".
-
-  From xboard's side, it is not exactly clean to call read(2) with
-  a zero bufsize argument.  In my opinion, a sane solution would be
-  to eat the INPUT_SOURCE_BUF_SIZE bytes, and when they contain no
-  linefeed, print the partial line to standard error (in debug mode)
-  and report something like »Maximum line size exceeded« (and then
-  kill the engine).
-
-**354. We currently let the user go directly from TwoMachines mode to
-various other modes like MachineWhite or MachineBlack.  This may
-confuse the engine that was on move, since we don't have a way to
-force it to stop before it makes the move it was thinking about.
-(use ping/pong to know when the engine has stopped)
-
-355. Idea from LiveAndLetDie: have Zippy specially log games where it
-loses to a substantially lower-rated player.  Such a game could
-indicate an xboard bug, engine bug, or perhaps a computer-using
-cheater.
-
-356. Colorization for FICS tourney tells?  They look like this (ugh):
-:DChessmaster [tourney #4]:
-:hi
-
-357. A few reports of WinBoard pieces being drawn incorrectly at
-certain sizes.  I haven't reproduced this.  [Maybe worked around in
-4.2.0.  Or is/was this the same as 194f?  I don't recall the details.]
-
-358. One report of WinBoard colorization not working, even after
-restart, until the computer was rebooted.  Weird.
-
-362. Running a very long automated match (/mg option) seems to crash
-WinBoard eventually, usually after 300 to 500 games, sometimes later.
-Reported by Josh Haglund.  Gets a "WINBOARD caused an invalid page
-fault in module KERNEL32.DLL" dialog box from Windows.  See messages
-from Josh for examples of the registers and stack dump.
-
-362a. A few people have reported WinBoard crashing upon exit.
-
-363. Maybe xboard should not set the window geometry for new popups,
-or at least not the position.  The default positions aren't very good,
-and setting them programmatically keeps knowledgeable X users from
-customizing the positions with X resources.
-
-366. Feature to let an engine observe an ICS game and run analysis
-mode on the moves, perhaps whispering or channel-telling the results.
-It's a little too easy to cheat with this feature or I might have
-added it long ago.
-
-369. Optionally send a periodic keepalive command to ICS.  Can be
-used to defeat autologout, so should probably not be on by default.
-Also should be useful to help Zippy notice more reliably when its
-connection has hung, so that it can exit and a shell script (batch
-file) can restart it.
-
-370. One user requested a local noplay list for his computer player
-because the FICS limit of 50 is too small.  He wants several hundred so
-that he can noplay everyone who disconnects in a lost position.
-
-374. Would be good to have a way to change engines without restarting
-the interface.
-
-376. WinBoard is said to crash or "lock up" when loading enormous PGN
-files, like a 98 MB file that comes with (??) Crafty.  Win32 (at least
-in the Win95 lineage) has a limit of 32,767 items in a list box
-widget.  That might explain this problem.
-
-376a. xboard exceeds limits in X and/or Xaw if a PGN file has too many
-games.  (The virtual window that the list box can scroll through
-becomes too many pixels high.)  This has odd effects; the window
-height of the game list seems to get reduced mod 2^16 or something.
-Maybe detect this and do something nicer about it, like stop loading
-when the window is full and pop up a warning.
-
-378. One Solaris user didn't have the "strip" program, so the
-install-sh script used by xboard "make install" failed.  Check for
-this?  Yuck.
-
-381. "Illegal move: post" is apparently not handled.  Should it be?
-
-382. The UI for entering Training mode is a bit obscure: you must
-first select Load Game, then Training becomes enabled in the upper (!)
-part of the Mode menu and you can select it.  You can then select it
-again to toggle it off.  This mode is something like Analyze File
-(which has a problematic UI too, but somewhat less so); both should
-probably use a similar UI style.  I consider disabling the
-step-forward button to be overkill, and I think you need to manually
-turn off auto-step when loading a game (?).  One user expected it to
-work with .epd files that give a position and a recommended move.
-That seems reasonable, but doing it would require quite different code
-from the current pgn-game training mode.
-
-383. Premove piece drop for bughouse/crazyhouse.
-
-384. Pre-first-move for xboard.  I don't much like the fill-in field
-method used in winboard.  Maybe allow a move to be made for white
-before the game starts (in both xboard and winboard).  If you get
-black, it's cancelled.  Black can already premove after the game
-starts, during white's first move think time, so I don't see that a
-black pre-first-move is needed.
-
-**387. Have winboard draw opaque details on black pieces too.
-Hmm, this should probably be optional, and the detail colors should
-be selectable instead of hardwired to the opposite piece color.
-
-**387a. Add "no piece border" option to WinBoard.  See code from
-Robert Jurjevic sent 4/9/2001.
-
-391. I have a bug report from Stefan Zipproth about engines sometimes
-failing to make their first move in an engine-engine match.  So far I
-can't reproduce it.  This might be fixed by the Sleep(500) voodoo in 4.2.4.
-
-394. See about tightening matching for the "request" event.  Right now
-it matches on help files a bit too often.  (e.g. FICS "help sr_info")
-**Also clarify documentation on what the request event is.
-
-396. xboard's -size defaulting code for bitmaps unfortunately always
-picks a size from the built-in list, even if you gave the
--bitmapDirectory option.  It would be more user-friendly to have some
-extra code that lists the directory and considers exactly the sizes
-that are found there, as the pixmap code does.
-
-397. It would be nice to be able to configure xboard with bitmap
-pieces as the default without having to disable xpm support entirely.
-This should be a pretty simple mod to configure.in (and xboard.c).
-
-397a. It would be very nice to be able to compile in both the bitmap
-and pixmap pieces.  This would allow us to automatically switch to bitmap
-pieces in -mono mode, including when -mono mode was automatically selected
-because too few colors were available.
-
-398. It would be nice to have the new .xpm pieces in .xim format too,
-since I restrained myself from ripping out the .xim support.
-
-399. It would be nice to have a configure option to change the
-directory where the default piece set is taken from.  Slightly nicer
-than having to rename the desired directory to "bitmaps" or "pixmaps"
-as at present.
-
-400. TypeinMove should be grayed in ICS mode, or should raise the
-console window, or something.
-
-402. Internationalization.  It probably isn't practical to retrofit
-this into the current code base.
-
-409. One user requested a way to put a time delay in the middle of
-sending zippyGameEnd commands.  This would (for example) let the
-computer do a seek only if its opponent doesn't accept a rematch
-within 10 seconds.  Nontrivial because Zippy has to continue to listen
-to input during the delay; it can't simply call sleep().  Maybe
-ScheduleDelayedEvent is OK, but I think it may already be in use in
-this situation, and it only supports one event at a time.
-
-411. Add zippyKibitzThinking and zippyWhisperThinking features?
-
-412. Maybe optimize setting the move list in the case where only the
-current move number changes; avoid slow XawListChange.
-
-**413. Add movelist window to WinBoard too.  Wilkin Ng submitted a
-patch that I believe includes this; need to integrate and test it.
-
-**415. It was suggested that a few common options that many chess
-engines need be promoted to xboard/WinBoard options so that the user
-can set them from the GUI in a uniform way.  In particular: hash size,
-directory name for endgame tables.
-
-**416. Can we avoid dying when xboard is in 8-bit mode, pixmap pieces
-are chosen (by default), and we can't get enough colors?  Ugh.
-
-**419. It was suggested that stat01 be generated/accepted during normal
-play with "post" on, not just during analysis mode.  This would need
-to be a "feature" command option.
-
-422. Track FICS change to details of how timeseal works; is this
-implemented at FICS yet?
-
-423. When locally stepping through an ICS game that is over, it would
-be nice to display the historical clock times at each move.
-
-424. DAV at Thu Nov 9, 01:20 CST 2000: any chance on winboard/xboard
-of a key press and a move executing draw <move>?  that way you at least
-have a chance of claiming a draw in 1 0.
-
-**426. DAV says, in xboard: If you are not on clock and you hover a
-piece over a square where your opponent then moves to and then move
-the piece away the piece the opp moved or part of it has not been
-drawn.  [Duplicate of bug 241?]
-
-429a. Check whether more support is needed for WinBoard to work with
-scroll wheel mice in the absence of special mouse drivers that generate
-scroll bar events directly.
-
-431. People find Analyze File confusing; they think it should do
-Crafty's relatively new Annotate function.  Also, it's somewhat
-superfluous now that you can enter Analysis mode and then load the
-file, or vice versa.
-
-**436. WinBoard is said to crash if started while WinBoard.debug is
-being tail -f'ed.
-
-**441. Can I prevent an undo after new in the odd case where it can
-happen now?  See mail from Bob Hyatt.
-
-450. Suggested: an option to let an engine keep pondering while an ICC
-game is adjourned.  This seems a bit difficult.
-
-451. Suggested: support SuperMamer messages on FICS, aka qtells.  See
-http://www.freechess.org/SuperMamer/parsing.html.
-
-452. Suggested: a way to say "prompt for the password" in a login.ini file.
-See 510 instead.
-
-**454. Add a way to claim a draw together with making a move, as can
-be needed for draw by repetition (creating the 3rd repetition with the
-move) and by the 50 move rule (the move is the 50th).  Add to
-protocol, and implement using the individual methods on FICS and ICC.
-Need to be sure it's really a FICS that has the feature (somehow).
-
-455. Suggested: Add the epdkit commands such as epdpfga to the
-protocol, since Crafty and "many" (which?) other engines include the
-epdkit.
-
-**456. Bob Hyatt suggests: "feature match=1" which says "send match
-requests to the engine and let it decide on who to play next".
-I.e., maybe send an abbreviated but fixed format message like this:
-match <opponent_name> time inc R/U.  The engine would use "tellics
-accept <opponent_name>" to accept.  Add as feature to protover 3.
-
-**457. Standardize on the meaning of scores (e.g. in stat01 responses).
-Is positive good for white or good for the engine?  Do certain scores
-mean forced (tablebase) draw, or forced mate in N?  This should align
-with the EPD spec.  Maybe a feature command should indicate that the
-engine matches this part of the spec, but then again, it's not clear
-what we can do about it if the engine doesn't give that command, so
-maybe there is no point.  See discussion on chess-engines list.
-
-458. Bug: xboard will try to use an engine to play normal chess even
-if the engine has given the feature variant command and did not
-include "normal" on the list.  Crafty 18.1 inadvertently relies on
-this bug, so it probably can't be fixed right away.
-
-**468. Need to look at Wilkin Ng's contributions!
-
-**469. Look at Zippy's behavior if the operator observes, follows,
-examines, etc.  Some bugs in this area have been fixed, but it's
-received very little testing, as Zippy was never meant to be used that
-way.  Noted later: Examining in -zp mode definitely has problems.  If
-you go forward one move at a time, moves are sent to the engine
-correctly.  If you go backward one move, "undo" is not sent to engine
-as it needs to be.  Going forward or back by more than one move at a
-time needs to be looked at too.
-
-**471. Look at 3/17/2001 message from Laszlo Vecsey about crashes when
-exiting on Win ME while data is coming in from the server.
-
-**473. Visual low-time indicator.  See patch in Brian Mays message of
-3/27/2001.
-
-**474. Crash reported when sending certain 8-bit characters through
-WinBoard (180, 167, others).  I'm almost certain this is a FICS
-timeseal issue and nothing to do with WinBoard itself.
-
-**475. Look at Laszlo Vecsey's mousewheel patch of 4/10/2001.
-
-476. For some reason (I guess some GUI supports them), most WinBoard
-engines now have a graphical logo, 100x50 pixels in Windows .bmp
-format.  It's been requested that WinBoard have a place to show the
-logo.
-
-477. Implement the "book engine" idea I proposed in the protover 3
-discussions.  Some folks have offered to write them (e.g., Bruce
-Morland).
-
-478. Recognize URLs in the WinBoard ics interaction window and make
-them work as hyperlinks (firing up your browser).
-
-**479. Possibly use Scott Gasch's 7 May 2001 patch to delay accepting
-challenges when ping > pong instead of declining them.  Bug: if you
-get more than one challenge, Scott's patch forgets about all but the
-last one.  If that guy then withdraws his challenge, the others are
-left in limbo, neither accepted nor declined.  I suppose we could
-decline challenges when there is one waiting.  However, if we make the
-change to optionally pass match requests through to the engine, Bruce
-Moreland would like us to queue up challenges and pass them all on.
-
-481. 8 May 2001, Bob Hyatt "matchscore" feature suggestion could go in
-protover 3: "matchscore A B C D E says we are in a match, this is game
-A of B games.  The current match score is I have won C, drawn D, and
-lost E games in this match.  This would give the engine a chance to
-adjust the draw score as needed to try to win the match rather than
-just trying to win a single game."
-
-**482. Suggestion from Bruce Moreland: if the user goes into ICS
-examine mode while -zp is active, and the engine supports analyze,
-then put it into analyze mode and let it work on the examined game.  I
-guess this could work for observed games too.  Should it be optional
-or always done?
-
-483.  It would be nice if the KingShine 3D board could be integrated
-as an alternative xboard GUI rendering.
-
-**484.  Add -feature1 and -feature2 options to pretend the engine sent
-us those feature commands.  Useful kludge for certain buggy engines.
-
-485. Add "reset" to protover 3.  (Clear the hash tables and other such
-info; used to put the engine into a known state before running a
-test/benchmark position.)
-
-486. Other protover 3 features listed in my 6/21/2001 message to
-chess-engines list.  Write a full protover 3 draft for comment.
-
-487. Adjudicate non-ICS games as a draw when there is insufficient
-mating material on both sides, especially engine/engine games.  Well,
-maybe.  I argued against this in a 6/26/2001 message to chess-engines.
-
-487a. Probably also adjudicate when we detect checkmate or stalemate,
-before bothering to notice whether the engine detected this.
-
-487b. Note: Do not adjudicate 50 move rule or 3x repetition since those
-must be claimed by a player -- at least not by default.  It would be
-OK to have a flag to do this someday when we are smart enough to
-notice it.  Would definitely be good to be smart enough to notice an
-incorrect draw claim by an engine.
-
-487c. Another request: allow the operator to adjudicate engine/engine games.
-
-488. Option to suppress tags popup on game load?  This has been
-requested a few times, and I received one partial implementation (not
-enough to be useful).  Needs to be on the options menu, etc.  Note
-conflict with 298 above.
-
-488a. Also option to suppress comment popups.
-
-489. Maybe have Zippy use xtell for tells to avoid redefining "." if
-the operator is also doing tells.  Do all ICSes support xtell, though?
-
-490. Bruce Moreland request: a way to turn Zippy auto-accept on and
-off dynamically.
-
-491. Bruce Moreland request: a defined way to turn on/off PV (etc.)
-kibitzing from the engine dynamically.  I had thought it would be
-better to make the GUI able to relay thinking output as kibitzing on
-its own (and be able to turn this on/off dynamically), but Bruce
-points out that what engine authors want to send as kibitzing output
-usually includes more than the PV thinking output.
-
-492.  One user reports that GNU Chess 5 crashes if you start a game,
-play far enough to get GNU Chess out of book, select Reset, and play
-e3 in the new game.  This is probably a GNU Chess 5.00 bug, unrelated
-to WinBoard.  Can't reproduce on Linux; didn't try yet on Windows.
-Need to see if 5.02 fixes it.
-
-493.  DAV suggests stripping off first arguments that are obviously
-not the name of the engine when trying to parse out the engine name
-from its command line -- things like nice, nohup, sh, csh, bash, etc.
-Ugh, but I suppose it would be helpful sometimes.
-
-494.  Internationalization.  A couple of people have done (or told me
-they were doing) partial conversions of WinBoard to German or Spanish
-by manually translating the messages.  I think it would be much better
-(but a big job) to use GNU gettext.  I haven't looked into the details
-of that at all.
-
-495. JamesBaud points out that FEN is not sufficient to correctly
-represent a crazyhouse position (or bughouse, for that matter),
-because it does not distinguish promoted pawns that will revert when
-captured from real pieces.  ICS style 12 also does not give us this
-information.  I really don't know what I could do about this -- take
-the lead in proposing an extension to FEN and to style 12 with new
-piece letters, I suppose.  I don't really have time or motivation for
-that.  If you always use PGN, not FEN, to save Crazyhouse, that works
-around the problem.
-
-**496. DAV sent some code to save a screen shot in xboard.  Look at
-merging this in.
-
-**497. Igor Eged reports: I make a move on opponents time using
-premove. Right in the time I am holding another piece in case of
-unexpected check that I can have other possibility. But then the piece
-hangs in the void and its invalid move, what means often loss in 1 0
-lightning.
-
-498. It would be nice for Zippy to be able to play ICC wild 20 and 21
-(the types where loadgame is allowed).  Presumably there would have to
-be an option to either send the loadgame command with a specified
-position, or to deal with an opponent sending it.  I'm not sure how
-this should work exactly, or how to prevent opponents from cheating in
-various ways.
-
-499. It would be nice for Zippy to be able to switch amongst several
-different engines depending on which variant type is being played.
-
-500. It would be nice if Zippy could have an option to accept
-takebacks.  Hmmm, also, the operator might want to manually offer a
-takeback; it would be good if that worked.
-
-501. People would like to be able to add more bot functionality to
-Zippy without C programming.  I don't have any ideas on how to do that.
-
-502. One user requests the ability to have a game list file open for
-more than one PGN file at a time.
-
-503. We don't do protover 2 feature negotiation properly when
-restarting an engine due to -xreuse mode.  The timeout and done=0/1
-features don't work on the restart; instead we basically assume that
-all the features will be the same as last time and that the engine
-will be ready to accept commands immediately.  This probably doesn't
-cause a lot of problems, but if you try to replace the engine with one
-that sets different features, the changes might not be noticed before
-the first move, and the defaults will be the values from the old
-engine, not the documented defaults.  Also, if the engine takes time
-to initialize and wants us to wait to send commands until it says
-done=1, we fail to wait.  However, we do send commands in the right
-order and use ping, so most engines should work fine.
-
-506. One user wants a board size even smaller than Tiny.
-
-507. Suggested: have the cursor change to a gripping hand while moving
-pieces.  Currently in WinBoard it's always an arrow, while in xboard
-it's always a hand with pointing finger while over the board and an
-arrow elsewhere.
-
-508. It would be nice to make -xclock work with -ics, just for
-orthogonality, though it's not terribly useful.
-
-509. It would be nice to make -clock work with -st.  Perhaps each
-player's clock should start with the specified time on each move and
-count down until he moves.
-
-**510. A FICS service rep tells me that many users expect an autologin
-feature in winboard (other than the non-user-friendly login.ini file).
-Seems easy enough to add such a thing.
-
-512. Some users dislike the clocks counting in tenths when below 10
-seconds, as it's distracting, and would like this to be configurable.
-(From the Debian bug tracking system.)
-
-513. Perhaps have Alt+P and Alt+C as synonyms for Pause in WinBoard,
-since the P or C on the button makes it look like that should be the
-shortcut.  I suppose Alt+< and Alt+>, and the same with Shift for <<
-and >>, would also be a good idea.  Oops, but Alt+C is already
-CopyGame, so maybe this is a bad idea.
-
-514. Gian-Carlo Pascutto reports: "when pasting a FEN/EPD position
-into WinBoard, and selecting analysis mode, the engine analyses the
-starting position instead of the pasted one. Re-pasting fixes this."
-
-515. Troy Edwards suggests: "It would be nice to have the option to
-'wrap text' in the comment window."
-
-516. DAV says: "FICS now supports the setting and the making clocks
-tick using unpause/pause in examine mode. It seems either the clocks
-don't tick or are not present when using xboard. Is it possible to
-change the policy and base things upon the clock is paused flag in
-style 12?"
-
-517. Clarify in engine-intf.html that "sd" is an extra dumbing-down
-feature, not a time control.  Some text:
-
-In the protocol, the "sd" command isn't a time control.  It doesn't
-say that your engine has unlimited time but must search to exactly the
-given depth.  It says that you should pay attention to the time
-control as normal, but cut off the search at the specified depth even
-if you have time to search deeper.  If you don't have time to search
-to the specified depth, given your normal time management algorithm,
-then you will want to stop sooner than the given depth.
-
-The "new" command should set the search depth back to unlimited.  This
-is already stated in the spec.  The "level" command should not affect
-the search depth.  As it happens, xboard/WinBoard currently always
-sends sd (if needed) right after level, but that isn't part of the
-spec.
-
-518. Warn in doc that -initString is a dangerous feature.  Also move
-doc of dalogs for sending commands directly to the engine out of the
-protocol spec and into the man page and help file, but warn they are
-dangerous too.
-
-519. In engine-intf.html, change "st" description to not use the word
-"exact", which is misleading.  Make sure it says this is the maximum
-time per move (and does not accumulate).
-
-520. Check whether Alt+C (CopyGame) works in XP.  One user says it
-gives an error message.
-
-522. engine-intf.html should really be rewritten to describe the
-protocol as a state machine (on each end), with every command
-precisely defined as to what it does in each state (including perhaps
-being illegal).
-
-523. Figure out what, if anything, to do with the FICS "iset singleboard".
-I lean toward not bothering to set it, as it only disables functionality,
-but maybe I'm confused.
-
-524. theblob at Mon Mar 4, 23:23 PST 2002: it'd be nice in the xboard
-interaction window if control-w and control-u respectively erased the
-line and word, even in a Windows environment.  At least, I think it'd
-be nice.
-
-525. Support a 64-bit node counter in analysis mode when compiled with
-something that has 64-bit integer support.  Both gcc and msvc++ have
-this, though under different names.
-
-526. "-initialMode analysis -lgf -" doesn't get the engine into
-analysis mode properly.  "-initialMode analyzeFile" is a workaround,
-but bug should be fixed.
-
-527. Clarify ICS.ini more in the doc, if possible.  Some sample words:
-> You should create this file in
-> WinBoard's directory (usually C:\Program Files\WinBoard) using a plain
-> text editor such as Notepad.  Make sure that Notepad doesn't decide to
-> call the file ICS.ini.txt for you -- you may have to select "All
-> Files" instead of "Text Files" in the Notepad save dialog.
->
-> The file is simply sent to the chess server, just as if you had typed it.
-> So if your username is foo and password is bar, the file would look
-> like what is between ==== below, without the ===='s:
->
-> ====
-> foo
-> bar
-> iset movecase 1
-> ====
-
-528. Check on updates/revisions to PGN from Steven Edwards and others.
-Any support needed?
-
-529. Protover 3 needs a prefix character that says "this is debug
-output" and prevents the GUI from parsing that line (say ";").
-
-530. The undocumented (?) checking for rsh error messages tripped up
-one engine author who had a "not found" in a message.  Tighten this
-up.
-
-531. Do we always wait for pongs to catch up with pings before
-starting the engine's clock?  I suppose we should.
-
-532. On FICS the clock does not start until after the first move has
-been made.  So perhaps we don't need the "not ready, try again soon"
-response from Zippy there.  What if Zippy is black, does black's clock
-also not start until he makes his first move?
-
-533. theblob at Mon Jun 24, 20:05 PDT 2002: here's a suggestion for
-xboard -- give priority to fitting in amounts of material in the title
-bar, and truncate names instead, e.g., use "tyrionsAp...(50) vs. woden
-(51)" rather than "TyrionsApprentice (50) vs. woden..." -- it's much
-more important to see the material than the full names, especially
-when you're playing.
-
-534. Steffen Jakob reports: "I use xboard 4.2.6. Yesterday I played
-some bullet games at ICC. In one game I lost on time. In the last move
-I already clicked on my queen and wanted it to move to its destination
-square when I forfeited on time.  After that my mouse pointer was the
-queen piece. I couldnt drop it to any square."
-
-535. For protover 3, the "st" command in the protocol could be
-extended to allow for smaller units, not just seconds.
-
-537. Clarify in the protocol that "force" while searching means you
-should stop the search as soon as you can.  (Isn't this clear
-already?)
-
-538. Need a way for the user to adjust the clocks.  This is important
-for WCCC and other computer competitions, where xboard/winboard's
-clock is not the master.  I was going to do it in time for the July
-2002 WCCC.  Oops.
-
-541. Related to #327, John Iverson says, "It would be nice to have the
-coordinates shown outside of the board along the edges, rather than in
-the squares where they are hard to see and give a cluttered
-appearance, especially on smaller board sizes.  (The coordinates can
-be handy in certain situations, such as posting a screenshot of xboard
-showing an email game in progress, with the view flipped.)"
-
-542. If you start xboard with the -geometry NxM option, it will
-dutifully make the window exactly that size, but it doesn't choose a
--size option that fits into such a window size, so the board is cut
-off or has a lot of whitespace around it.  In fact, the layout is
-generally messed up because the code doesn't expect the window to be
-the wrong size for the layout.  We should at least ignore the size
-part of the -geometry option if we aren't going to do something
-sensible with it.  How is that done with Xt?
-
-543. See the patches and extensions on
-http://www.tim-mann.org/extensions.html#patches and integrate those
-that are worthwhile into the main code base.  (Some are also mentioned
-elsewhere in this ToDo list.)  They are pretty much all over 15 lines,
-so copyright assignment from their authors is needed.  Unfortunately
-some of the authors may be hard to reach.
-
-544. Possibly rework looking_at pattern matching to have a "match at
-beginning of line" character (perhaps ^).  It looks like this may
-actually be useful after all.  The historical cases where you could
-get a board or other output that needs parsing on the same line as a
-prompt *may* have been fixed.  Confirming this would need testing on
-all the ICSes that are in use.
-
-546. Odd bug reported by travelGirl.  The last line of a multi-line
-macro from the ICS context menu sometimes "sticks" at the bottom of
-the ICS interaction window.  New text gets inserted before instead of
-after it.  This started when she upgraded to win2k.  See mail.
-
-548. Guido Flohr reports:
-
-Another "not really a bug" problem: When xboard forks in order to
-start a second chess engine, it is only concerned about duplicating
-the descriptors for the standard channels in the child.  This is
-very interesting for the second chess engine, since it inherits the
-pipes to its opponent, and can use them for sending commands like
-"sd 2", "easy", or even for feeding a bogus FEN string into the
-first engine (exchanging the opponent's queen with a bishop looks
-really attractive to me).  A very interesting feature, but not exactly
-what you intended? ;-)
-
-Closing the other descriptors after the fork will not completely
-avoid the problem, since - at least under Solaris and Linux - it
-is still possible to peek and write into xboard's open descriptors via the
-/proc pseudo file system (unless you make xboard setuid root), but
-leaving them open, makes this cheat very obvious.
-
-549. "Ron" (no last name given) reports that when compiling WinBoard
-under VC++ 6.0, there are many warnings.  These ought to be looked at.
-
-551. "Miguel" (no last name given) reports "When you make a premove in
-Winboard 4.2.6, and then opponent move and premove is illegal, then
-and you try to make a legal move but you cannot, because piece are
-erased and you have to replace your move again, move twice... in
-lightining this is annoying."  I'm not really sure what that means or
-if it is the same bug as 497.
-
-552. Get rid of the need for proprietary tools to build WinBoard.
-It's already possible to compile winboard.exe using the Cygwin
-toolchain.  You can even compile it with -mno-cygwin to avoid the need
-for cygwin1.dll.  However:
-
-552a. The Help file needs Microsoft Word to edit the source file
-winboard.rtf and the Microsoft Help Compiler to compile it into
-winboard.hlp.  I tried using OpenOffice.org on the RTF file, but the
-result was missing some formatting that the help compiler needs.  The
-help compiler itself is a free-as-in-beer download, but it's still
-proprietary software.  Perhaps the help could be converted to vanilla
-HTML, at the cost of losing the index and search capability.
-
-552b. The WinBoard installer package is built with InstallShield.
-  Possible replacements:
-  Inno Setup (http://www.jrsoftware.org/isinfo.php) - looks best
-  NSIS (http://nsis.sourceforge.net/site/index.php)
-  Cygwin setup (http://www.cygwin.com) - a long shot
-
-552c. Although the cygwin resource compiler works on winboard.rc, it's
-a pain to create new dialogs by editing the text file.  The original
-ones were all created using the graphical dialog editor in MSVC 5.
-
-* * *
-
-Before each release:
-- make sure both xboard and winboard build and are up to date with each other
-- run zippy with new version as a shakedown
-- be sure gnu5 binary is up to date in winboard, and gnu5 patch (if needed)
-  is included in both xboard and winboard kits 
-- recheck cygwin compiling winboard
-- make sure ChangeLog is complete
-- test changes
-
-*** up to date with mail received through 5 Nov 2003, except
-for the "protover 3" discussions on the chess-engines mailing list ***
+Possible improvements   **=somewhat higher priority\r
+---------------------------------------------------\r
+\r
+20. Some way to back up, explore variations, then return to the main\r
+line and restore moves we backed out.  Should also support exploring\r
+side branches while loading a game file.  Push/pop buttons?  Button to\r
+fork another xboard in same state as current one?\r
+\r
+20a. Allow side branches to be remembered in game files (and\r
+understood on LoadGame).  Use PGN variation notation.\r
+\r
+**62a. Support series of time controls as in later gnuchess 4.0.x\r
+versions (and real tournaments!).  Needs a protocol extension to\r
+"level"; this is now planned for protover 3.\r
+\r
+62b. Perhaps we could also support the kind of clock where you get K\r
+seconds per move, plus a reserve of J seconds per game that is used\r
+when a move takes more than K seconds.  The degenerate form of this\r
+with J=0 is desirable in itself.  Needs a protocol extension.\r
+\r
+68. WinBoard has some features not in xboard.  Among others:\r
+68a. LoadGameOptions dialog             (good to add)\r
+68b. SaveGameOptions dialog             (good to add)\r
+68c. TimeControl dialog                 (good to add)\r
+68g. Font dialog.                      (leave out)\r
+68h. Colors dialog.                    (leave out)\r
+68i. Board size on Options menu         (good to add)\r
+68j. Resize with mouse\r
+68k. Highlight dragging\r
+68m. Move typein from keyboard.         (good to add)\r
+\r
+69. xboard has some features not in WinBoard.  Among others:\r
+69c. Font size selection by pattern fill-in. (leave out)\r
+69d. Alternate bitmaps specified at runtime. (good to add, often requested)\r
+69e. Flashing.\r
+\r
+71. Allow restart after ICS logout instead of exiting?  Many requests\r
+for this.\r
+\r
+71a. Would be useful to drop into NCP mode after ICS logout and allow\r
+for reconnect later.  For instance, this would let you save your last\r
+partial game if you didn't have autosave on.\r
+\r
+72. Allow switching among ICS, NCP, GNU modes??\r
+\r
+74. Observe/play multiple games, each with its own window.  Hard.\r
+\r
+80. Clone command.  Saves current game to a file foo, then starts up\r
+another copy of xboard with -lgf foo.  Should probably note current\r
+state of some options and give command line flags to set them the same\r
+way in child.  What about -ncp mode, though?  Might want that to be\r
+different.  Would be nice to have a -moveNumber flag to position the\r
+child to the same move number in the current game.\r
+\r
+91. Would be nice to have an option to overwrite save file instead of\r
+appending.\r
+\r
+95. "Have the clock indicate how long the computer/player has been\r
+thinking for when the -st option is used. This should be how long for\r
+the current move only." (Dino Dini)\r
+\r
+97. "Have the ability to change the level of the gnuchess during a\r
+game. For analysis purposes, sometimes it is useful to have the\r
+computer think really hard about certain positions." (Dino Dini)\r
+\r
+98. Reorganize the source and split it into more files.\r
+\r
+107. Changing time control during a game could be made to work.\r
+Current (WinBoard only) way of changing at start is suboptimal.\r
+\r
+**108. Could add search depth and time per move to (WinBoard)\r
+TimeControl dialog.\r
+\r
+140. LoadPosition needs better checking for invalid data.\r
+\r
+142. xboard needs a real file chooser dialog.  Jeff Woolsey submitted\r
+code to merge in the one from Ghostview, but said it works only on\r
+X11R5 or later.  I have not yet tried his code or looked to see if it\r
+could be made to work on X11R4.\r
+\r
+147. Improve display of held pieces in bughouse mode, putting them\r
+closer to the player's side of the board, and perhaps using icons (and\r
+allowing dragging from the icons to drop a piece).  Actually, moving\r
+the clocks would be beneficial too, so that it's easier to visually\r
+associate the right clock with the right player when looking at two\r
+boards during a bughouse match (with two copies of xboard running).\r
+Maybe multiple window layouts should be user-selectable. [4.3 supports\r
+drag-drops from holdings]\r
+\r
+150. Keep track of castling availability, en-passant availability, and\r
+FEN half-move clock (for 50-move rule), pass the availability\r
+information to the move generator through the existing interface, and\r
+load/save it in the FEN code. [Fixed in 4.3]\r
+\r
+150a. Note that not keeping track of ep creates a bug in mate\r
+detection.  In certain positions, moving a pawn from the 3rd to 4th\r
+rank gives mate, but it is not detected because if the pawn had moved\r
+to the same position from the 2nd rank, ep capture would have been\r
+legal and there would be no mate. [problem disappeared in 4.3]\r
+\r
+150b. Note that although we try to put in e.p. availability when\r
+writing FEN, this works only if we have the move that got us to this\r
+position in the moveList. If we load a position from FEN, the\r
+e.p. availability field of the FEN is lost. [disappeared in 4.3]\r
+\r
+152. Generate the info file, man page, perhaps html, and perhaps even\r
+the WinBoard help file from the same sources.  Right now,\r
+substantially the same text is duplicated in three places.  This is\r
+a huge pain in the neck.\r
+\r
+157. Idea: if Zippy flags some number of times in a row and keeps\r
+getting told the opponent is not out of time (presumably due to\r
+timestamp/timeseal), he should issue an adjourn or abort.\r
+\r
+160. The xboard CTRL key flashback feature is bad in Analysis mode.\r
+Flashing back throws away the analysis.\r
+\r
+161. SIGINT doesn't work for local programs on Win32.  There is an\r
+equivalent, GenerateConsoleCtrlEvent(CTRL_C_EVENT), but I haven't\r
+gotten it to work thus far.  It seems that WinBoard and the chess\r
+engine don't "have the same console"; indeed, neither has a console.\r
+\r
+162. Supply a non-X Zippy for Unix.  Perhaps use the code from Klaus\r
+Knopper.\r
+\r
+167. Alternative bitmaps loaded at runtime for WinBoard. [font-based\r
+piece rendering provides this functionality since WinBoard_x]\r
+\r
+169. Upload Game on file menu?  This would upload the current game\r
+moves into a scratch examined game on ICS.  Could do Upload Position\r
+too.  Some code to do Upload Game was contributed, but it didn't\r
+handle setup positions, variants, checking for proper gameMode, etc.,\r
+so I couldn't use it.\r
+\r
+170. Auto step every k seconds should be a general feature you can\r
+turn on at any time, not just in LoadGame.  What should GUI be?\r
+\r
+171. Displaying thinking in a separate window should be an option\r
+available at all times when Show Thinking makes sense, not just in\r
+analysis mode.  It should perhaps be orthogonal to analysis mode.\r
+[added in WinBoard_x]\r
+\r
+172. Should analysis window scroll instead of showing only the last\r
+line?  There could be an extra checkbox to show all chess engine\r
+output in it. [fixed in WinBoard_x]\r
+\r
+178. Need reliable kill for chess engine on Win32.  See also 161.\r
+\r
+181. Some people want -sgf to save only played games, not observed and\r
+examined games.  Others like it to save them all.  Make this an option?\r
+\r
+183. Search feature in Game List dialog [Igor Eged].\r
+\r
+187. "Log session" feature for ICS window.\r
+\r
+193. Some users have reported xboard redraw bugs, but I have not\r
+been able to reproduce them on the Digital Unix, Linux, or eXcursion X\r
+servers (xboard).\r
+\r
+c. From Hawk:  \r
+Dragging in xboard does not work 100%.  \r
+* The dragged piece may disappear (try some fast e2-d3 movements - \r
+  this is easy to reproduce).\r
+* The dragged piece may be placed on an illegal position (this \r
+  happens less frequently, but it _can_ be reproduced by doing the same\r
+  as above).\r
+* In both of the above cases, the board is correct after forcing a \r
+  redraw (ie. minimizing/restoring the window)\r
+I'm using eXodus - a win32 X server, perhaps it's buggy. [Seems that way,\r
+or just possibly, these could be bugs that are fixed in 3.6.11beta or\r
+3.6.12beta.]\r
+\r
+d. One user reports: "If you are 'holding' a piece over the square you\r
+want to go to and that move becomes illegal but you make it anyway,\r
+the display sometimes corrupts and a partial piece appears..sometimes\r
+a whole piece."  This was under RedHat 6.0.\r
+\r
+194. A few users have reported drawing problems with WinBoard.  There\r
+may be some color map problem on certain displays.  I might possibly\r
+have fixed this already; I cannot reproduce it.  The common thing\r
+seems to be black pieces changing to white.  This may depend on having\r
+customized the board colors.  I suspect many of these problems are\r
+buggy Windows drivers for particular display cards.  (May be worked\r
+around in 4.2.0 with reprocessed .bmp files.)\r
+\r
+a. From mulesmurf: if i log in and then move the board, it will happen\r
+that the black [pieces] change to white.\r
+\r
+c. People have sent pictures where the grid didn't get redrawn.  This\r
+produces random bits in the grid area from uninitialized memory.\r
+Could this be a resource leak?\r
+\r
+d. From James Van Buskirk: I did notice one problem tonight playing\r
+against Comet under FX!32 1.2 (Comet, not winboard ran under FX!32):\r
+for a couple of moves winboard didn't turn off the highlighting of the\r
+square I dropped the piece on until Comet had moved.  Later, the\r
+problem fixed itself.  Have other users noticed this?  [No.]\r
+\r
+e. One user reports: Lastly, there is some sort of slight bug in the\r
+piece dragging code, but it comes up only very occasionally (once in\r
+500 moves?)...basically, I'm dragging, change my mind, throw the piece\r
+of the side of the board, and instead it gets stuck not inside a\r
+square.  It's really disconcerting, this piece just sitting across\r
+square boundaries.  When you make another move, it gets cleared up and\r
+goes back where it's supposed to.  [Might be fixed in 4.0.6, but I\r
+couldn't reproduce this, so I can't be sure.]\r
+\r
+f. DAV says: "When I resized the board on win 95 and made it smaller\r
+some of the pieces turned into junk (I'm not able to give a screen\r
+shot)."  Later: "Seems to happen on the three sizes below small.\r
+Win98 and NT seem to be ok, trying to get more win95 users to test\r
+it."  Works fine for me on Win 95...  [Might have been fixed by the\r
+cleanup of the Windows .bmp's that happened sometime before version\r
+4.2.3]\r
+\r
+195. Flash Moves works at the end of every change to the board, using\r
+some rather gross code in DrawPosition.  This code should perhaps be\r
+ripped out and the flashing done from inside AnimateMove instead.\r
+\r
+197. More color distinctions.  Maybe allow several user-selected channels\r
+to have their own colors.\r
+\r
+198. More sounds.  Some possiblities: distinguish White vs. Black move\r
+or your move vs. opponents, distinguish different kinds of\r
+win/loss/draw/unfinished (checkmate, resignation, stalemate, other\r
+draws, opponent disconnected, etc.), game ends when you aren't playing\r
+and/or aren't in ICS mode, differentiate amongst requests (draw offer,\r
+etc.), **check, got new offboard piece (by piece type?), opponent got\r
+new offboard piece (ditto), arrival notification, "* who has an\r
+adjourned game with you," draw declined, moretime received.\r
+\r
+199. Maybe put user names instead of White and Black on clocks, or\r
+user names above or below clocks in a smaller font.\r
+\r
+200. I don't like these ideas, but some people do:\r
+a. Highlight all of the squares that the piece you are moving can go to.\r
+b. Clicking on the piece moves it immediately if it has only one legal move.\r
+c. Allow clicking on the destination, then the source.\r
+d. I guess highlight the pieces that can go to that destination.\r
+e. Clicking on a destination that only one piece can go to moves it there.\r
+\r
+201. mulesmurf: piece counter so we know exactly the score \r
+\r
+202. mulesmurf: ziics pieces, board along with color intensity\r
+\r
+204. Hawk at Fri May 15, 12:58 CDT 1998: a minor thing with xboard:\r
+the coords disappear while dragging from a square with coords on it.\r
+[They come back when the drag is finished.]\r
+\r
+208. WinBoard sometimes comes up with one of the menu bar items grayed\r
+out (one that should not be).  I've seen this on different entries at\r
+different times.\r
+\r
+213. Maybe add Silence to sound menu -- parallel to Monochrome on\r
+color menus.\r
+\r
+214. Maybe easier startup dialog customize:\r
+a. Buttons to add/delete/move(?) current string to/from/within current list.\r
+b. Or maybe auto-add newly typed/edited strings up to some limit.\r
+c. Also a drop-down for Additional Options.\r
+\r
+216. Maybe shorten menu names in WinBoard to one char if and only if\r
+the menu bar would wrap with longer names.\r
+\r
+**217. Easier way to add engines to the WinBoard startup dialog.\r
+Ideally, an engine author should be able to supply a simple\r
+configuration file or script that installs his engine.  "*.wbe" idea.\r
+\r
+218. Some folks would like Highlight Last Move to apply only to\r
+opponent's moves.\r
+\r
+219. From Jorge Monasterio: Support automatic game starts when in\r
+tournament. In other words, do that "match bigolfish mann 5 0 black"\r
+automatically based on the info sent from mamer.  [I would need to\r
+play in some tournaments before I could evaluate this idea or fill in\r
+the details.]\r
+\r
+222. Could support time handicaps. [Added in 4.3]\r
+\r
+223. Bug: very long comments cause buffer overflow.  Need to revamp\r
+the way comments are parsed and returned from parser.l to fix this.\r
+\r
+224. Larry Parrish requests: In an automated multi-games match I would\r
+like to load the n-th game from the file for the n-th game of the\r
+match.  [That is, when -mg and -lgf or -lpf are used together without\r
+-lgi or -lpi.]\r
+\r
+225. From pulp: another bug (maybe with the Microsoft RichEdit\r
+control) I've observed is when you flood the edit control it loses the\r
+bottom.  Eg. "games" will scroll along then start slipping until by\r
+the end of the list you are really looking at the middle of the list\r
+and have to manually scroll back to the bottom.  [May be fixed?]\r
+\r
+225a. Resizing the WinBoard ICS interaction window can cause the cursor\r
+to be off the screen, which stops scrolling.\r
+\r
+226. From pulp: Clipboard persistence.  If I copy text, then the text\r
+disappears when Winboard is closed.  Eg.: Log in, highlight and copy a\r
+web page address, close, go to browser, paste *nothing*.  [How does\r
+one do this in Windows?]\r
+\r
+227a. In engine-engine matches, an engine that crashes should lose and\r
+perhaps get restarted for the next game. [Added in 4.3]\r
+\r
+227b. Maybe when an engine playing in Zippy mode exhibits a bug, we\r
+should do a little more too.  Perhaps "say Sorry, the engine seems to\r
+have a bug", resign or abort, and maybe force an engine restart for the\r
+next game.\r
+\r
+**227c. We should also detect and stop the game on false mate or draw\r
+claims, rejecting a legal move, or (maybe) missed claims of mate or\r
+draw.  Note that draw claims require checking for repetition, 50 move\r
+rule, and insufficient material as well as stalemate, so this is\r
+nontrivial. [Added in 4.3]\r
+\r
+228. RichEdit bug: sometimes a line gets indented as if it were\r
+wrapped when it should be flush left.\r
+\r
+**229. Support for sending moves from the partner's game to a bughouse\r
+engine.  Ben Dean-Kanemura submitted support that works without adding\r
+general multi-game support, by relaying the moves without processing\r
+them.  Should also send holding updates and clock times; not sure if\r
+Ben's code does that.  Needs to be a new "feature" command option, and\r
+to be documented in engine-intf.html, removing the note that this may\r
+be done in the future.\r
+\r
+231. See Ed Collins's WinBoard bug list on his pages:\r
+\r
+231b. If you save an ICS examined game to disk as a PGN file, it\r
+doesn't report the end-of-game result in both the header and at the\r
+end of the notation.  [It doesn't get this info from the server, but\r
+maybe there is a way it could.]\r
+\r
+232. From Ed Collins's WinBoard wish list on his pages:\r
+\r
+232b. Multiple winboard.ini files for different moods, loadable from\r
+inside the program.\r
+\r
+232c. Fix bug where fics% prompt is not suppressed when using\r
+timeseal.  This has something to do with a timeseal deficiency whose\r
+details I've forgotten, but there must be some way to fix it.\r
+\r
+232e. When using the server's "examine" mode to examine a previously\r
+played game, have the game clocks display the time that each player\r
+currently had after each move was made.\r
+\r
+232f. [Not from Ed] Deal with ICC game relays where an "examined" game\r
+is supposed to have running clocks.  Not sure if this is still an issue.\r
+\r
+232g. Customizable on-screen buttons [i.e., toolbar or toolbox].\r
+\r
+232h. Customizable function keys.  Currently xboard can bind a key to\r
+any built-in xboard function.  Should extend this to WinBoard, and\r
+also (in both programs) support sending an arbitrary ICS command when\r
+button is pressed.\r
+\r
+233. See if anything from LightningRulez should be added.  Premove is\r
+now included (from Winboard Plus), but maybe there are other useful\r
+things too.\r
+\r
+241. There might still be bugs in xboard and/or winboard when moves\r
+come in from ICS during drag animation, though I can't reproduce them.\r
+DAV saw the opponent's piece fail to be erased from the source square, if\r
+I understood his message right.  [DAV says this still exists in 4.2.5.\r
+I think bug 426 is a duplicate.  The description is clearer there.]\r
+\r
+242. User-defined "looking_at" patterns and actions.  This is hard to\r
+bombproof.\r
+\r
+**243. "Rematch" shortcut in /cp mode.\r
+\r
+246. Maybe auto-close comment window when user goes to the next move.\r
+Whether this is desirable really depends on the content of the\r
+comment, but maybe it is rare to have a long comment that discusses\r
+the plan several moves ahead and should be left up.\r
+\r
+248. Would be nice to support retract move after checkmate or draw (etc.).\r
+\r
+254. Different tray icons for interaction window vs. board (suggestion\r
+from FICS).\r
+\r
+256. One user asked for "delete" option in game lists.  This requires\r
+rewriting the file to close up the hole, so it's pretty heavyweight.\r
+Next people will be asking for move, sort, search, and other game\r
+database functionality; ugh.\r
+\r
+**257. Would be nice to find a way to safely implement "retract move"\r
+when the engine is still on move.  (using ping/pong)\r
+\r
+**260. General mechanism where engine can declare engine properties that\r
+the user can frob and xboard/winboard will put up a simple dialog to\r
+allow user to view and set them.  See email message "special engine\r
+commands" from Steffen Jakob:\r
+\r
+  From: "Steffen A. Jakob" <saj@xxx>\r
+  To: mann@xxx\r
+  Cc: chess-engines@xxx\r
+  Subject: special engine commands\r
+  Date: Fri, 26 Feb 1999 09:12:26 +0100\r
+\r
+  Hi Tim!\r
+\r
+  Here comes a summary of our ICC chat (I cc this mail to the\r
+  list... maybe other engine programmers can give some feedback if\r
+  they find this feature useful):\r
+\r
+  Please add a protocol command which enables the engine to tell\r
+  xboard its special commands. Maybe a set of (label, command string)\r
+  pairs would be useful. Then create a menu for these commands. It\r
+  could look like this (that's what I would like to see for Hossa):\r
+\r
+  engine->interface:\r
+  ------------------\r
+  command "Reset the log file" "reset log"\r
+  command "Save Diagram as PNG" "png dia.png"\r
+  command "Disable Book" "book off"\r
+  command "Show Evaluation details" "eval"\r
+  command "Show Search statistics" "stat"\r
+\r
+  etc.\r
+\r
+  While typing this list I realized that an additional parameter like\r
+  this would be needed/nice (of course you can think of many more\r
+  improvements):\r
+\r
+  command "Save Diagram as PNG" "png %s" 1\r
+\r
+  "1" tells xboard to ask for an additional parameter (here: filename)\r
+  which will replace the "%s" in the command string.\r
+\r
+261. Check that "quit" is sent to engine properly if ICS connection\r
+fails to open due to error from timestamp/timeseal.  "wzrdking" had a\r
+case where it didn't.  Timetamp had failed with "Host name not found\r
+by name server" (because in fact there was no internet connection, arrgh).\r
+\r
+273. Displaying the names of the players from a PGN file in the header\r
+of the window does not work if there is only one game in the file.\r
+The filename is shown instead.  (This was intentional, but maybe a\r
+poor idea.)\r
+\r
+274. Command to go to move number N, with entry box for N.\r
+\r
+276. Make grid optional in winboard?  Note that the highlight options\r
+don't work without it.\r
+\r
+276a. Make color of grid an option, instead of always black.\r
+\r
+277. Flooding xboard -zt + timestamp with tells hangs timestamp after\r
+a while.  xboard is blocked writing to the timestamp pipe.  timestamp\r
+is in an unknown state, not reading from the pipe nor responding to\r
+pings.  (Confirmed with the software running on milwaukee, Red Hat\r
+5.2)\r
+\r
+278. Flooding winboard -zt + timestamp with tells hangs winboard after\r
+a while.  timestamp still responds to pings.  This reported by\r
+nudnick; I haven't tried to reproduce it yet.  He also says that\r
+windows explorer then crashed when he tried to close winboard.\r
+\r
+279. Idea from an anonymous ICSer: piece drop menu could have images,\r
+not words.  [Or maybe both?]  Also might be easier to select\r
+accurately from it if horizontally arranged, or in a 3x2 grid.\r
+[Now 4.3 has drag & drop, piece-drop menu should be deprecated]\r
+\r
+284. dxterm hangs when it receives the escape sequence that sets the\r
+title bar on xterm.  I think some other xterm substitutes do too.\r
+\r
+**287. WinBoard can look funny if you are using themes because it\r
+unconditionally uses white for certain colors instead of the default\r
+background.\r
+\r
+289. Merge WinBoard support for the Henter-Joyce JAWS screen reader.\r
+Source code (zip file containing modified WinBoard 4.0.2 source) is at\r
+ftp://ftp.henter-joyce.com/users/hj/winboard/WinboardSource.exe.  It\r
+would be interesting to make this work with festival (free Unix speech\r
+synth) or other speech synthesizers too.\r
+\r
+290. Could have limited voice output without a speech synthesizer by playing\r
+wav files for piece names and square numbers.  Idea suggested by Hannu\r
+Wegner.\r
+\r
+291. Would be great to support DGT, Novag Universal chessboard, etc.\r
+I'm not likely to fork out the cash to buy either for testing, however.\r
+Note users have done various things along these lines.\r
+\r
+292. When an engine is analyzing, it would be cool to have a way to\r
+automatically play out its current PV (or even older ones) on a board.\r
+These PVs could be saved as variations when we have variation support.\r
+\r
+297. Windows users expect all programs to have a Print function, even\r
+though there are other ways to print.  Useful items to make printable:\r
+PGN game scores (which are plain text, of course), maybe FEN position\r
+diagrams, maybe graphical position diagrams (i.e., same as pressing\r
+the "Print Screen" function key and printing the clipboard).\r
+\r
+298. One user suggests that automatic move stepping should not start\r
+until you press OK in the tags window.  This could be a good idea, but\r
+I think I'd rather have automatic stepping never start until you press\r
+a "play" button on the main window, and have that button always\r
+available, not just when loading a game from a file.\r
+\r
+299. One user suggested being able to jump to a specific move by\r
+typing its number (followed by ... if it's to be black's move).\r
+\r
+300. Can I put a hyperlink (that will invoke a browser) directly onto\r
+the WinBoard Help menu or in the Help file?  Useful to take users to\r
+my chess page.\r
+\r
+302. On NT, check if the board is redrawn properly when exiting from\r
+the screen saver.\r
+\r
+308. There is some tricky way to maximize the WinBoard board window,\r
+although there isn't supposed to be.  Maybe prevent this, or else\r
+legalize it and make sure something reasonable looking happens.\r
+Note: the trick is to select one of the "tile" options on the Windows\r
+task bar.  Not clear what should happen in this case.\r
+\r
+309. Avoid endlessly flagging every second when opponent is lagged out\r
+and autoflag is on.  Automatically courtesy-adjourn (or abort if\r
+unrated) instead, at least if in zippy mode.\r
+\r
+310. Weird bug: the last character of a FICS output can appear on the\r
+next line, *after* the fics% prompt, according to one user.  I might\r
+have seen something like this myself once too.\r
+\r
+314. One person wanted his engine to see tells when running in Zippy\r
+mode.  I doubt this is generally useful, so I haven't added the code I\r
+wrote for him.  (I can query for "tellfrom" in my mail file to find\r
+it.)\r
+\r
+314a. Another person wants his computer account to relay tells to his\r
+personal account.\r
+\r
+319. One user would like to be able to reload a PGN file and resume a\r
+game against an engine as if after an adjournment, with the clocks\r
+(and moves to next time control) restored as they were when the game\r
+was saved.\r
+\r
+320. Display ratings of ICS players in the title bar (if there is room,\r
+presumably), or somewhere, anyway.\r
+\r
+321. Maybe refresh the EditTags window if the gameInfo changes and the\r
+window is up.  (WinBoard now does this when entering MachineWhite,\r
+MachineBlack, or TwoMachines mode -- not very general.  From Winboard Plus.)\r
+\r
+322. One user requested that Zippy games use the engine name instead\r
+of the ICS handle in the PGN tags, as he uses multiple engines on his\r
+account.  (My response was "I'd say it should give both"; not sure just\r
+how to do that, though.)\r
+\r
+324. I'm told that Blitzin supports animated dragging without holding\r
+down the mouse button and that this is "much better" and I should try\r
+it too.  As yet I haven't.\r
+\r
+326. Full support for variants and variant-capable engines in all\r
+modes, not just ICS mode.  Here are some items still needed.  Some if\r
+not all should probably wait for a rewrite, not be added to the\r
+current code base. [4.3 supports many variants, even those not supported\r
+by ICS. Not bughouse, though]\r
+\r
+326a. Menu to let you see and change the current variant type, not\r
+just a command-line argument as at present. [Added in 4.3 WinBoard]\r
+\r
+326b. crazyhouse: Keep track of holdings and display them, keep track\r
+of what onboard pieces are promoted so they will revert if captured,\r
+understand offboard interposition to stop mate.  [Added in 4.3, (not\r
+sure about the interposition)]\r
+\r
+326bb. One user asked for a Czech variant of crazyhouse where pawns are\r
+given to the opponent when they reach the 8th rank (after capturing, if\r
+it's a capture) instead of promoting.\r
+\r
+326c. bughouse: Features in 326a would be helpful for editing one board\r
+of a bughouse game, and getting mate indication right even in ICS mode.\r
+In the longer term, could understand BPGN, support editing two-board games.\r
+\r
+326d. wildcastle: Allow wildcastle castling only when playing this variant!\r
+Maybe support automatic shuffling for local play. [4.3 adds shuffling\r
+for any variant played locally]\r
+\r
+326e. nocastle: Maybe support automatic shuffling for local play.\r
+Note that several types of ICS shuffle chess fall under this variant.\r
+Note that this isn't really a variant, since if we kept proper track\r
+of castling rights and used "setboard FEN" or the ChessBase extension\r
+of "edit" to set them, it could be treated as normal chess with a\r
+different starting position.\r
+\r
+326f. fischerandom: Maybe support automatic shuffling for local play.\r
+Support castling.  Currently, you can probably play Fischer Random\r
+successfully on ICS by typing castling moves into the ICS Interaction\r
+window, but they will not be animated correctly, and saved games will\r
+not be loaded correctly if castling occurs.  FR castling is\r
+problematic because the move cannot be specified by the starting and\r
+ending coordinates of the king; in some starting positions there is a\r
+legal non-castling move that moves the king the same way.  This\r
+violates a deeply ingrained assumption in the implementation.  It also\r
+breaks the GUI -- you need more than just dragging the king two\r
+squares to indicate castling.  (Note: In FR notation, O-O is h-side\r
+castling, O-O-O is a-side.  See "help fr_rules" and "help fr" on FICS\r
+for rules.) [All fixed in 4.3]\r
+\r
+326g. kriegspiel: Could give some thought to how to support a\r
+kriegspiel engine.  I doubt anyone will ever write one, though.\r
+\r
+326h. losers: Know that captures are mandatory.  Understand the win\r
+condition.\r
+\r
+326i. suicide: Know that captures are mandatory.  Understand the win/draw\r
+condition.\r
+\r
+326j. giveaway: Know that captures are mandatory.  Understand the win\r
+condition.\r
+\r
+326k. atomic: Understand the win condition.\r
+\r
+326l. 3check: Understand the win condition -- ugh, have to keep a\r
+check counter!\r
+\r
+327. Option to set the coord font color (or something) to make sure\r
+there is always enough contrast with the square colors.\r
+\r
+329. Bernhard Maerz would like a command line option to choose the PGN\r
+player name for an engine, overriding the default of generating the\r
+name from the engine filename.  This is for his ChessCall program.\r
+\r
+331. Maybe the local autoflag menu option should *also* turn\r
+server-side autoflag on/off by sending an appropriate set command.\r
+\r
+**332. Bug: Autoflag for local engine/engine or engine/human matches\r
+does not recognize that having your flag fall when your opponent has\r
+insufficient mating material is a draw.  It counts the flag fall as a\r
+loss.\r
+\r
+336. Of course lots of people ask for a graphical seek window.\r
+\r
+339. There are probably some incompatibilities with chess.net, as they\r
+have made a few gratuitous changes to message formats from the FICS\r
+code base they started with, and perhaps they've added features since\r
+without duplicating the syntax closely enough.  In particular it's\r
+been reported that Zippy does not correctly send "partner" and\r
+"variant" commands to bughouse engines on chess.net.  Also, I doubt\r
+colorization works.  As a matter of personal choice I do not spend any\r
+of my time supporting chess.net, but if others want to donate patches\r
+that allow chess.net to be supported without breaking the support for\r
+ICC and FICS, I am willing to install them.\r
+\r
+342. Analysis mode automatically turns on the Show Thinking option;\r
+the user must then turn it off manually after leaving analysis mode if\r
+he doesn't want it.\r
+\r
+343. Would be nice to change xboard keyboard shortcuts to not be plain\r
+letters, make the new shortcuts work also in the ICS input box, and\r
+make typing plain letters to the board redirect to the ICS input box\r
+or the xterm.  Might want to change/remove the Ctrl binding at that time.\r
+\r
+344. One user suggested having a way to save a position as a character\r
+string that would produce a board diagram when rendered in MS Word in\r
+a chess font.  Perhaps there is already a nice standalone tool for\r
+this, though?\r
+\r
+346. Could use a better way to pick default size.  Now we choose the\r
+largest that fits on the screen, which is typically too big.  Not too\r
+bad for WinBoard, but painful for xboard since it can't be resized\r
+after starting.\r
+\r
+349. Check that "quit" definitely makes it to the engine before exit,\r
+if you exit via the File menu while a match is running.  Uli Tuerke\r
+reported that maybe it sometimes doesn't (in WinBoard 4.0.5).\r
+\r
+352. Perhaps recognize the ANSI escape sequence that FICS sends out\r
+for the cls command and clear the ICS interaction window.\r
+\r
+**353. WinBoard can crash when the engine outputs very long PV lines\r
+(or debug output that looks like a PV).  In particular, lines that\r
+start with 4 or more blanks following a "thinking" output line are\r
+treated as continuation lines, and get concatenated into a 512-byte\r
+buffer with no checking for overflow.  Generally we need a lot more\r
+care to avoid buffer overflows inside both xboard and WinBoard.\r
+[Note: changed the buffers to be 5120 bytes as a band-aid.]\r
+\r
+Guido Flohr expands on this bug:  \r
+\r
+  The problem is easy to reproduce, simply write a program/script that\r
+  spits out lines of more than 8192 bytes (INPUT_SOURCE_BUF_SIZE) and\r
+  connect it as a chess engine to xboard.  No surprise, xboard cannot\r
+  handle such long lines, but the resulting behavior is really weird:\r
+\r
+  The program enters DoInputCallback() in xboard.c, reads the first\r
+  8192 bytes, searches for a linefeed in vain, then closes its eyes,\r
+  sets the member "unused" of the InputSource to is->buf + 8192 and\r
+  waits for more input although the buffer is already full.\r
+\r
+  The next time it calls the same function, is->unused is exactly\r
+  these 8192 bytes away from is->buf, xboard computes the amount of\r
+  bytes to read in this round, which sums up to 0 nothing.  It then\r
+  calls read(2) with a bufsize argument of 0, and then assumes end\r
+  of file when the kernel call returns 0 (which is the documented\r
+  behavior).\r
+\r
+  For local engines, we now jump into backend.c, ReceiveFromProgram(),\r
+  and this function reports that the engine has exited unexpectedly.\r
+  In fact the engine is still very vivid, which is good, because in\r
+  spite of xboard's assumption that its child has died, it still\r
+  sends "force", "ping N", and "quit" to the false dead.  If the child\r
+  was really dead, the alert boxes "error writing to ... engine"\r
+  would hide the first alert box "... has exited unexpectedly".\r
+\r
+  From xboard's side, it is not exactly clean to call read(2) with\r
+  a zero bufsize argument.  In my opinion, a sane solution would be\r
+  to eat the INPUT_SOURCE_BUF_SIZE bytes, and when they contain no\r
+  linefeed, print the partial line to standard error (in debug mode)\r
+  and report something like »Maximum line size exceeded« (and then\r
+  kill the engine).\r
+\r
+**354. We currently let the user go directly from TwoMachines mode to\r
+various other modes like MachineWhite or MachineBlack.  This may\r
+confuse the engine that was on move, since we don't have a way to\r
+force it to stop before it makes the move it was thinking about.\r
+(use ping/pong to know when the engine has stopped)\r
+\r
+355. Idea from LiveAndLetDie: have Zippy specially log games where it\r
+loses to a substantially lower-rated player.  Such a game could\r
+indicate an xboard bug, engine bug, or perhaps a computer-using\r
+cheater.\r
+\r
+356. Colorization for FICS tourney tells?  They look like this (ugh):\r
+:DChessmaster [tourney #4]:\r
+:hi\r
+\r
+357. A few reports of WinBoard pieces being drawn incorrectly at\r
+certain sizes.  I haven't reproduced this.  [Maybe worked around in\r
+4.2.0.  Or is/was this the same as 194f?  I don't recall the details.]\r
+\r
+358. One report of WinBoard colorization not working, even after\r
+restart, until the computer was rebooted.  Weird.\r
+\r
+362. Running a very long automated match (/mg option) seems to crash\r
+WinBoard eventually, usually after 300 to 500 games, sometimes later.\r
+Reported by Josh Haglund.  Gets a "WINBOARD caused an invalid page\r
+fault in module KERNEL32.DLL" dialog box from Windows.  See messages\r
+from Josh for examples of the registers and stack dump.\r
+\r
+362a. A few people have reported WinBoard crashing upon exit.\r
+\r
+363. Maybe xboard should not set the window geometry for new popups,\r
+or at least not the position.  The default positions aren't very good,\r
+and setting them programmatically keeps knowledgeable X users from\r
+customizing the positions with X resources.\r
+\r
+366. Feature to let an engine observe an ICS game and run analysis\r
+mode on the moves, perhaps whispering or channel-telling the results.\r
+It's a little too easy to cheat with this feature or I might have\r
+added it long ago.\r
+\r
+369. Optionally send a periodic keepalive command to ICS.  Can be\r
+used to defeat autologout, so should probably not be on by default.\r
+Also should be useful to help Zippy notice more reliably when its\r
+connection has hung, so that it can exit and a shell script (batch\r
+file) can restart it.\r
+\r
+370. One user requested a local noplay list for his computer player\r
+because the FICS limit of 50 is too small.  He wants several hundred so\r
+that he can noplay everyone who disconnects in a lost position.\r
+\r
+374. Would be good to have a way to change engines without restarting\r
+the interface.\r
+\r
+376. WinBoard is said to crash or "lock up" when loading enormous PGN\r
+files, like a 98 MB file that comes with (??) Crafty.  Win32 (at least\r
+in the Win95 lineage) has a limit of 32,767 items in a list box\r
+widget.  That might explain this problem.\r
+\r
+376a. xboard exceeds limits in X and/or Xaw if a PGN file has too many\r
+games.  (The virtual window that the list box can scroll through\r
+becomes too many pixels high.)  This has odd effects; the window\r
+height of the game list seems to get reduced mod 2^16 or something.\r
+Maybe detect this and do something nicer about it, like stop loading\r
+when the window is full and pop up a warning.\r
+\r
+378. One Solaris user didn't have the "strip" program, so the\r
+install-sh script used by xboard "make install" failed.  Check for\r
+this?  Yuck.\r
+\r
+381. "Illegal move: post" is apparently not handled.  Should it be?\r
+\r
+382. The UI for entering Training mode is a bit obscure: you must\r
+first select Load Game, then Training becomes enabled in the upper (!)\r
+part of the Mode menu and you can select it.  You can then select it\r
+again to toggle it off.  This mode is something like Analyze File\r
+(which has a problematic UI too, but somewhat less so); both should\r
+probably use a similar UI style.  I consider disabling the\r
+step-forward button to be overkill, and I think you need to manually\r
+turn off auto-step when loading a game (?).  One user expected it to\r
+work with .epd files that give a position and a recommended move.\r
+That seems reasonable, but doing it would require quite different code\r
+from the current pgn-game training mode.\r
+\r
+383. Premove piece drop for bughouse/crazyhouse.\r
+\r
+384. Pre-first-move for xboard.  I don't much like the fill-in field\r
+method used in winboard.  Maybe allow a move to be made for white\r
+before the game starts (in both xboard and winboard).  If you get\r
+black, it's cancelled.  Black can already premove after the game\r
+starts, during white's first move think time, so I don't see that a\r
+black pre-first-move is needed.\r
+\r
+**387. Have winboard draw opaque details on black pieces too.\r
+Hmm, this should probably be optional, and the detail colors should\r
+be selectable instead of hardwired to the opposite piece color.\r
+\r
+**387a. Add "no piece border" option to WinBoard.  See code from\r
+Robert Jurjevic sent 4/9/2001.\r
+\r
+391. I have a bug report from Stefan Zipproth about engines sometimes\r
+failing to make their first move in an engine-engine match.  So far I\r
+can't reproduce it.  This might be fixed by the Sleep(500) voodoo in 4.2.4.\r
+\r
+394. See about tightening matching for the "request" event.  Right now\r
+it matches on help files a bit too often.  (e.g. FICS "help sr_info")\r
+**Also clarify documentation on what the request event is.\r
+\r
+396. xboard's -size defaulting code for bitmaps unfortunately always\r
+picks a size from the built-in list, even if you gave the\r
+-bitmapDirectory option.  It would be more user-friendly to have some\r
+extra code that lists the directory and considers exactly the sizes\r
+that are found there, as the pixmap code does.\r
+\r
+397. It would be nice to be able to configure xboard with bitmap\r
+pieces as the default without having to disable xpm support entirely.\r
+This should be a pretty simple mod to configure.in (and xboard.c).\r
+\r
+397a. It would be very nice to be able to compile in both the bitmap\r
+and pixmap pieces.  This would allow us to automatically switch to bitmap\r
+pieces in -mono mode, including when -mono mode was automatically selected\r
+because too few colors were available.\r
+\r
+398. It would be nice to have the new .xpm pieces in .xim format too,\r
+since I restrained myself from ripping out the .xim support.\r
+\r
+399. It would be nice to have a configure option to change the\r
+directory where the default piece set is taken from.  Slightly nicer\r
+than having to rename the desired directory to "bitmaps" or "pixmaps"\r
+as at present.\r
+\r
+400. TypeinMove should be grayed in ICS mode, or should raise the\r
+console window, or something.\r
+\r
+402. Internationalization.  It probably isn't practical to retrofit\r
+this into the current code base.\r
+\r
+409. One user requested a way to put a time delay in the middle of\r
+sending zippyGameEnd commands.  This would (for example) let the\r
+computer do a seek only if its opponent doesn't accept a rematch\r
+within 10 seconds.  Nontrivial because Zippy has to continue to listen\r
+to input during the delay; it can't simply call sleep().  Maybe\r
+ScheduleDelayedEvent is OK, but I think it may already be in use in\r
+this situation, and it only supports one event at a time.\r
+\r
+411. Add zippyKibitzThinking and zippyWhisperThinking features?\r
+[4.3 has an -autoKibitz option]\r
+\r
+412. Maybe optimize setting the move list in the case where only the\r
+current move number changes; avoid slow XawListChange.\r
+\r
+**413. Add movelist window to WinBoard too.  Wilkin Ng submitted a\r
+patch that I believe includes this; need to integrate and test it.\r
+\r
+**415. It was suggested that a few common options that many chess\r
+engines need be promoted to xboard/WinBoard options so that the user\r
+can set them from the GUI in a uniform way.  In particular: hash size,\r
+directory name for endgame tables.\r
+\r
+**416. Can we avoid dying when xboard is in 8-bit mode, pixmap pieces\r
+are chosen (by default), and we can't get enough colors?  Ugh.\r
+\r
+**419. It was suggested that stat01 be generated/accepted during normal\r
+play with "post" on, not just during analysis mode.  This would need\r
+to be a "feature" command option.\r
+\r
+422. Track FICS change to details of how timeseal works; is this\r
+implemented at FICS yet?\r
+\r
+423. When locally stepping through an ICS game that is over, it would\r
+be nice to display the historical clock times at each move.\r
+\r
+424. DAV at Thu Nov 9, 01:20 CST 2000: any chance on winboard/xboard\r
+of a key press and a move executing draw <move>?  that way you at least\r
+have a chance of claiming a draw in 1 0.\r
+\r
+**426. DAV says, in xboard: If you are not on clock and you hover a\r
+piece over a square where your opponent then moves to and then move\r
+the piece away the piece the opp moved or part of it has not been\r
+drawn.  [Duplicate of bug 241?]\r
+\r
+429a. Check whether more support is needed for WinBoard to work with\r
+scroll wheel mice in the absence of special mouse drivers that generate\r
+scroll bar events directly.\r
+\r
+431. People find Analyze File confusing; they think it should do\r
+Crafty's relatively new Annotate function.  Also, it's somewhat\r
+superfluous now that you can enter Analysis mode and then load the\r
+file, or vice versa.\r
+\r
+**436. WinBoard is said to crash if started while WinBoard.debug is\r
+being tail -f'ed.\r
+\r
+**441. Can I prevent an undo after new in the odd case where it can\r
+happen now?  See mail from Bob Hyatt.\r
+\r
+450. Suggested: an option to let an engine keep pondering while an ICC\r
+game is adjourned.  This seems a bit difficult.\r
+\r
+451. Suggested: support SuperMamer messages on FICS, aka qtells.  See\r
+http://www.freechess.org/SuperMamer/parsing.html.\r
+\r
+452. Suggested: a way to say "prompt for the password" in a login.ini file.\r
+See 510 instead.\r
+\r
+**454. Add a way to claim a draw together with making a move, as can\r
+be needed for draw by repetition (creating the 3rd repetition with the\r
+move) and by the 50 move rule (the move is the 50th).  Add to\r
+protocol, and implement using the individual methods on FICS and ICC.\r
+Need to be sure it's really a FICS that has the feature (somehow).\r
+[Fixed in 4.3 by usng 'offer draw' for this purpose]\r
+\r
+455. Suggested: Add the epdkit commands such as epdpfga to the\r
+protocol, since Crafty and "many" (which?) other engines include the\r
+epdkit.\r
+\r
+**456. Bob Hyatt suggests: "feature match=1" which says "send match\r
+requests to the engine and let it decide on who to play next".\r
+I.e., maybe send an abbreviated but fixed format message like this:\r
+match <opponent_name> time inc R/U.  The engine would use "tellics\r
+accept <opponent_name>" to accept.  Add as feature to protover 3.\r
+\r
+**457. Standardize on the meaning of scores (e.g. in stat01 responses).\r
+Is positive good for white or good for the engine?  Do certain scores\r
+mean forced (tablebase) draw, or forced mate in N?  This should align\r
+with the EPD spec.  Maybe a feature command should indicate that the\r
+engine matches this part of the spec, but then again, it's not clear\r
+what we can do about it if the engine doesn't give that command, so\r
+maybe there is no point.  See discussion on chess-engines list.\r
+[WinBoard_x adds an argument to tell WInBoard an egine uses absolute\r
+scores]\r
+\r
+458. Bug: xboard will try to use an engine to play normal chess even\r
+if the engine has given the feature variant command and did not\r
+include "normal" on the list.  Crafty 18.1 inadvertently relies on\r
+this bug, so it probably can't be fixed right away.\r
+\r
+**468. Need to look at Wilkin Ng's contributions!\r
+\r
+**469. Look at Zippy's behavior if the operator observes, follows,\r
+examines, etc.  Some bugs in this area have been fixed, but it's\r
+received very little testing, as Zippy was never meant to be used that\r
+way.  Noted later: Examining in -zp mode definitely has problems.  If\r
+you go forward one move at a time, moves are sent to the engine\r
+correctly.  If you go backward one move, "undo" is not sent to engine\r
+as it needs to be.  Going forward or back by more than one move at a\r
+time needs to be looked at too.\r
+\r
+**471. Look at 3/17/2001 message from Laszlo Vecsey about crashes when\r
+exiting on Win ME while data is coming in from the server.\r
+\r
+**473. Visual low-time indicator.  See patch in Brian Mays message of\r
+3/27/2001.\r
+\r
+**474. Crash reported when sending certain 8-bit characters through\r
+WinBoard (180, 167, others).  I'm almost certain this is a FICS\r
+timeseal issue and nothing to do with WinBoard itself.\r
+\r
+**475. Look at Laszlo Vecsey's mousewheel patch of 4/10/2001.\r
+\r
+476. For some reason (I guess some GUI supports them), most WinBoard\r
+engines now have a graphical logo, 100x50 pixels in Windows .bmp\r
+format.  It's been requested that WinBoard have a place to show the\r
+logo.\r
+\r
+477. Implement the "book engine" idea I proposed in the protover 3\r
+discussions.  Some folks have offered to write them (e.g., Bruce\r
+Morland).\r
+\r
+478. Recognize URLs in the WinBoard ics interaction window and make\r
+them work as hyperlinks (firing up your browser).\r
+\r
+**479. Possibly use Scott Gasch's 7 May 2001 patch to delay accepting\r
+challenges when ping > pong instead of declining them.  Bug: if you\r
+get more than one challenge, Scott's patch forgets about all but the\r
+last one.  If that guy then withdraws his challenge, the others are\r
+left in limbo, neither accepted nor declined.  I suppose we could\r
+decline challenges when there is one waiting.  However, if we make the\r
+change to optionally pass match requests through to the engine, Bruce\r
+Moreland would like us to queue up challenges and pass them all on.\r
+\r
+481. 8 May 2001, Bob Hyatt "matchscore" feature suggestion could go in\r
+protover 3: "matchscore A B C D E says we are in a match, this is game\r
+A of B games.  The current match score is I have won C, drawn D, and\r
+lost E games in this match.  This would give the engine a chance to\r
+adjust the draw score as needed to try to win the match rather than\r
+just trying to win a single game."\r
+\r
+**482. Suggestion from Bruce Moreland: if the user goes into ICS\r
+examine mode while -zp is active, and the engine supports analyze,\r
+then put it into analyze mode and let it work on the examined game.  I\r
+guess this could work for observed games too.  Should it be optional\r
+or always done?\r
+\r
+483.  It would be nice if the KingShine 3D board could be integrated\r
+as an alternative xboard GUI rendering.\r
+\r
+**484.  Add -feature1 and -feature2 options to pretend the engine sent\r
+us those feature commands.  Useful kludge for certain buggy engines.\r
+\r
+485. Add "reset" to protover 3.  (Clear the hash tables and other such\r
+info; used to put the engine into a known state before running a\r
+test/benchmark position.)\r
+\r
+486. Other protover 3 features listed in my 6/21/2001 message to\r
+chess-engines list.  Write a full protover 3 draft for comment.\r
+\r
+487. Adjudicate non-ICS games as a draw when there is insufficient\r
+mating material on both sides, especially engine/engine games.  Well,\r
+maybe.  I argued against this in a 6/26/2001 message to chess-engines.\r
+[Added in 4.3]\r
+\r
+487a. Probably also adjudicate when we detect checkmate or stalemate,\r
+before bothering to notice whether the engine detected this. [Added\r
+in 4.3]\r
+\r
+487b. Note: Do not adjudicate 50 move rule or 3x repetition since those\r
+must be claimed by a player -- at least not by default.  It would be\r
+OK to have a flag to do this someday when we are smart enough to\r
+notice it.  Would definitely be good to be smart enough to notice an\r
+incorrect draw claim by an engine. [In 4.3 you can set the number of \r
+moves or repeats after which draw is adjudicated]\r
+\r
+487c. Another request: allow the operator to adjudicate engine/engine games.\r
+\r
+488. Option to suppress tags popup on game load?  This has been\r
+requested a few times, and I received one partial implementation (not\r
+enough to be useful).  Needs to be on the options menu, etc.  Note\r
+conflict with 298 above.\r
+\r
+488a. Also option to suppress comment popups.\r
+\r
+489. Maybe have Zippy use xtell for tells to avoid redefining "." if\r
+the operator is also doing tells.  Do all ICSes support xtell, though?\r
+\r
+490. Bruce Moreland request: a way to turn Zippy auto-accept on and\r
+off dynamically.\r
+\r
+491. Bruce Moreland request: a defined way to turn on/off PV (etc.)\r
+kibitzing from the engine dynamically.  I had thought it would be\r
+better to make the GUI able to relay thinking output as kibitzing on\r
+its own (and be able to turn this on/off dynamically), but Bruce\r
+points out that what engine authors want to send as kibitzing output\r
+usually includes more than the PV thinking output.\r
+\r
+492.  One user reports that GNU Chess 5 crashes if you start a game,\r
+play far enough to get GNU Chess out of book, select Reset, and play\r
+e3 in the new game.  This is probably a GNU Chess 5.00 bug, unrelated\r
+to WinBoard.  Can't reproduce on Linux; didn't try yet on Windows.\r
+Need to see if 5.02 fixes it.\r
+\r
+493.  DAV suggests stripping off first arguments that are obviously\r
+not the name of the engine when trying to parse out the engine name\r
+from its command line -- things like nice, nohup, sh, csh, bash, etc.\r
+Ugh, but I suppose it would be helpful sometimes.\r
+\r
+494.  Internationalization.  A couple of people have done (or told me\r
+they were doing) partial conversions of WinBoard to German or Spanish\r
+by manually translating the messages.  I think it would be much better\r
+(but a big job) to use GNU gettext.  I haven't looked into the details\r
+of that at all.\r
+\r
+495. JamesBaud points out that FEN is not sufficient to correctly\r
+represent a crazyhouse position (or bughouse, for that matter),\r
+because it does not distinguish promoted pawns that will revert when\r
+captured from real pieces.  ICS style 12 also does not give us this\r
+information.  I really don't know what I could do about this -- take\r
+the lead in proposing an extension to FEN and to style 12 with new\r
+piece letters, I suppose.  I don't really have time or motivation for\r
+that.  If you always use PGN, not FEN, to save Crazyhouse, that works\r
+around the problem. [4.3 uses bFENs which fix this]\r
+\r
+**496. DAV sent some code to save a screen shot in xboard.  Look at\r
+merging this in.\r
+\r
+**497. Igor Eged reports: I make a move on opponents time using\r
+premove. Right in the time I am holding another piece in case of\r
+unexpected check that I can have other possibility. But then the piece\r
+hangs in the void and its invalid move, what means often loss in 1 0\r
+lightning.\r
+\r
+498. It would be nice for Zippy to be able to play ICC wild 20 and 21\r
+(the types where loadgame is allowed).  Presumably there would have to\r
+be an option to either send the loadgame command with a specified\r
+position, or to deal with an opponent sending it.  I'm not sure how\r
+this should work exactly, or how to prevent opponents from cheating in\r
+various ways.\r
+\r
+499. It would be nice for Zippy to be able to switch amongst several\r
+different engines depending on which variant type is being played.\r
+\r
+500. It would be nice if Zippy could have an option to accept\r
+takebacks.  Hmmm, also, the operator might want to manually offer a\r
+takeback; it would be good if that worked.\r
+\r
+501. People would like to be able to add more bot functionality to\r
+Zippy without C programming.  I don't have any ideas on how to do that.\r
+\r
+502. One user requests the ability to have a game list file open for\r
+more than one PGN file at a time.\r
+\r
+503. We don't do protover 2 feature negotiation properly when\r
+restarting an engine due to -xreuse mode.  The timeout and done=0/1\r
+features don't work on the restart; instead we basically assume that\r
+all the features will be the same as last time and that the engine\r
+will be ready to accept commands immediately.  This probably doesn't\r
+cause a lot of problems, but if you try to replace the engine with one\r
+that sets different features, the changes might not be noticed before\r
+the first move, and the defaults will be the values from the old\r
+engine, not the documented defaults.  Also, if the engine takes time\r
+to initialize and wants us to wait to send commands until it says\r
+done=1, we fail to wait.  However, we do send commands in the right\r
+order and use ping, so most engines should work fine.\r
+\r
+506. One user wants a board size even smaller than Tiny.\r
+\r
+507. Suggested: have the cursor change to a gripping hand while moving\r
+pieces.  Currently in WinBoard it's always an arrow, while in xboard\r
+it's always a hand with pointing finger while over the board and an\r
+arrow elsewhere.\r
+\r
+508. It would be nice to make -xclock work with -ics, just for\r
+orthogonality, though it's not terribly useful.\r
+\r
+509. It would be nice to make -clock work with -st.  Perhaps each\r
+player's clock should start with the specified time on each move and\r
+count down until he moves.\r
+\r
+**510. A FICS service rep tells me that many users expect an autologin\r
+feature in winboard (other than the non-user-friendly login.ini file).\r
+Seems easy enough to add such a thing.\r
+\r
+512. Some users dislike the clocks counting in tenths when below 10\r
+seconds, as it's distracting, and would like this to be configurable.\r
+(From the Debian bug tracking system.)\r
+\r
+513. Perhaps have Alt+P and Alt+C as synonyms for Pause in WinBoard,\r
+since the P or C on the button makes it look like that should be the\r
+shortcut.  I suppose Alt+< and Alt+>, and the same with Shift for <<\r
+and >>, would also be a good idea.  Oops, but Alt+C is already\r
+CopyGame, so maybe this is a bad idea.\r
+\r
+514. Gian-Carlo Pascutto reports: "when pasting a FEN/EPD position\r
+into WinBoard, and selecting analysis mode, the engine analyses the\r
+starting position instead of the pasted one. Re-pasting fixes this."\r
+\r
+515. Troy Edwards suggests: "It would be nice to have the option to\r
+'wrap text' in the comment window."\r
+\r
+516. DAV says: "FICS now supports the setting and the making clocks\r
+tick using unpause/pause in examine mode. It seems either the clocks\r
+don't tick or are not present when using xboard. Is it possible to\r
+change the policy and base things upon the clock is paused flag in\r
+style 12?"\r
+\r
+517. Clarify in engine-intf.html that "sd" is an extra dumbing-down\r
+feature, not a time control.  Some text:\r
+\r
+In the protocol, the "sd" command isn't a time control.  It doesn't\r
+say that your engine has unlimited time but must search to exactly the\r
+given depth.  It says that you should pay attention to the time\r
+control as normal, but cut off the search at the specified depth even\r
+if you have time to search deeper.  If you don't have time to search\r
+to the specified depth, given your normal time management algorithm,\r
+then you will want to stop sooner than the given depth.\r
+\r
+The "new" command should set the search depth back to unlimited.  This\r
+is already stated in the spec.  The "level" command should not affect\r
+the search depth.  As it happens, xboard/WinBoard currently always\r
+sends sd (if needed) right after level, but that isn't part of the\r
+spec.\r
+\r
+518. Warn in doc that -initString is a dangerous feature.  Also move\r
+doc of dalogs for sending commands directly to the engine out of the\r
+protocol spec and into the man page and help file, but warn they are\r
+dangerous too.\r
+\r
+519. In engine-intf.html, change "st" description to not use the word\r
+"exact", which is misleading.  Make sure it says this is the maximum\r
+time per move (and does not accumulate).\r
+\r
+520. Check whether Alt+C (CopyGame) works in XP.  One user says it\r
+gives an error message.\r
+\r
+522. engine-intf.html should really be rewritten to describe the\r
+protocol as a state machine (on each end), with every command\r
+precisely defined as to what it does in each state (including perhaps\r
+being illegal).\r
+\r
+523. Figure out what, if anything, to do with the FICS "iset singleboard".\r
+I lean toward not bothering to set it, as it only disables functionality,\r
+but maybe I'm confused.\r
+\r
+524. theblob at Mon Mar 4, 23:23 PST 2002: it'd be nice in the xboard\r
+interaction window if control-w and control-u respectively erased the\r
+line and word, even in a Windows environment.  At least, I think it'd\r
+be nice.\r
+\r
+525. Support a 64-bit node counter in analysis mode when compiled with\r
+something that has 64-bit integer support.  Both gcc and msvc++ have\r
+this, though under different names.\r
+\r
+526. "-initialMode analysis -lgf -" doesn't get the engine into\r
+analysis mode properly.  "-initialMode analyzeFile" is a workaround,\r
+but bug should be fixed.\r
+\r
+527. Clarify ICS.ini more in the doc, if possible.  Some sample words:\r
+> You should create this file in\r
+> WinBoard's directory (usually C:\Program Files\WinBoard) using a plain\r
+> text editor such as Notepad.  Make sure that Notepad doesn't decide to\r
+> call the file ICS.ini.txt for you -- you may have to select "All\r
+> Files" instead of "Text Files" in the Notepad save dialog.\r
+>\r
+> The file is simply sent to the chess server, just as if you had typed it.\r
+> So if your username is foo and password is bar, the file would look\r
+> like what is between ==== below, without the ===='s:\r
+>\r
+> ====\r
+> foo\r
+> bar\r
+> iset movecase 1\r
+> ====\r
+\r
+528. Check on updates/revisions to PGN from Steven Edwards and others.\r
+Any support needed?\r
+\r
+529. Protover 3 needs a prefix character that says "this is debug\r
+output" and prevents the GUI from parsing that line (say ";").\r
+\r
+530. The undocumented (?) checking for rsh error messages tripped up\r
+one engine author who had a "not found" in a message.  Tighten this\r
+up.\r
+\r
+531. Do we always wait for pongs to catch up with pings before\r
+starting the engine's clock?  I suppose we should.\r
+\r
+532. On FICS the clock does not start until after the first move has\r
+been made.  So perhaps we don't need the "not ready, try again soon"\r
+response from Zippy there.  What if Zippy is black, does black's clock\r
+also not start until he makes his first move?\r
+\r
+533. theblob at Mon Jun 24, 20:05 PDT 2002: here's a suggestion for\r
+xboard -- give priority to fitting in amounts of material in the title\r
+bar, and truncate names instead, e.g., use "tyrionsAp...(50) vs. woden\r
+(51)" rather than "TyrionsApprentice (50) vs. woden..." -- it's much\r
+more important to see the material than the full names, especially\r
+when you're playing.\r
+\r
+534. Steffen Jakob reports: "I use xboard 4.2.6. Yesterday I played\r
+some bullet games at ICC. In one game I lost on time. In the last move\r
+I already clicked on my queen and wanted it to move to its destination\r
+square when I forfeited on time.  After that my mouse pointer was the\r
+queen piece. I couldnt drop it to any square."\r
+\r
+535. For protover 3, the "st" command in the protocol could be\r
+extended to allow for smaller units, not just seconds.\r
+\r
+537. Clarify in the protocol that "force" while searching means you\r
+should stop the search as soon as you can.  (Isn't this clear\r
+already?)\r
+\r
+538. Need a way for the user to adjust the clocks.  This is important\r
+for WCCC and other computer competitions, where xboard/winboard's\r
+clock is not the master.  I was going to do it in time for the July\r
+2002 WCCC.  Oops.\r
+\r
+541. Related to #327, John Iverson says, "It would be nice to have the\r
+coordinates shown outside of the board along the edges, rather than in\r
+the squares where they are hard to see and give a cluttered\r
+appearance, especially on smaller board sizes.  (The coordinates can\r
+be handy in certain situations, such as posting a screenshot of xboard\r
+showing an email game in progress, with the view flipped.)"\r
+\r
+542. If you start xboard with the -geometry NxM option, it will\r
+dutifully make the window exactly that size, but it doesn't choose a\r
+-size option that fits into such a window size, so the board is cut\r
+off or has a lot of whitespace around it.  In fact, the layout is\r
+generally messed up because the code doesn't expect the window to be\r
+the wrong size for the layout.  We should at least ignore the size\r
+part of the -geometry option if we aren't going to do something\r
+sensible with it.  How is that done with Xt?\r
+\r
+543. See the patches and extensions on\r
+http://www.tim-mann.org/extensions.html#patches and integrate those\r
+that are worthwhile into the main code base.  (Some are also mentioned\r
+elsewhere in this ToDo list.)  They are pretty much all over 15 lines,\r
+so copyright assignment from their authors is needed.  Unfortunately\r
+some of the authors may be hard to reach.\r
+\r
+544. Possibly rework looking_at pattern matching to have a "match at\r
+beginning of line" character (perhaps ^).  It looks like this may\r
+actually be useful after all.  The historical cases where you could\r
+get a board or other output that needs parsing on the same line as a\r
+prompt *may* have been fixed.  Confirming this would need testing on\r
+all the ICSes that are in use.\r
+\r
+546. Odd bug reported by travelGirl.  The last line of a multi-line\r
+macro from the ICS context menu sometimes "sticks" at the bottom of\r
+the ICS interaction window.  New text gets inserted before instead of\r
+after it.  This started when she upgraded to win2k.  See mail.\r
+\r
+548. Guido Flohr reports:\r
+\r
+Another "not really a bug" problem: When xboard forks in order to\r
+start a second chess engine, it is only concerned about duplicating\r
+the descriptors for the standard channels in the child.  This is\r
+very interesting for the second chess engine, since it inherits the\r
+pipes to its opponent, and can use them for sending commands like\r
+"sd 2", "easy", or even for feeding a bogus FEN string into the\r
+first engine (exchanging the opponent's queen with a bishop looks\r
+really attractive to me).  A very interesting feature, but not exactly\r
+what you intended? ;-)\r
+\r
+Closing the other descriptors after the fork will not completely\r
+avoid the problem, since - at least under Solaris and Linux - it\r
+is still possible to peek and write into xboard's open descriptors via the\r
+/proc pseudo file system (unless you make xboard setuid root), but\r
+leaving them open, makes this cheat very obvious.\r
+\r
+549. "Ron" (no last name given) reports that when compiling WinBoard\r
+under VC++ 6.0, there are many warnings.  These ought to be looked at.\r
+\r
+551. "Miguel" (no last name given) reports "When you make a premove in\r
+Winboard 4.2.6, and then opponent move and premove is illegal, then\r
+and you try to make a legal move but you cannot, because piece are\r
+erased and you have to replace your move again, move twice... in\r
+lightining this is annoying."  I'm not really sure what that means or\r
+if it is the same bug as 497.\r
+\r
+552. Get rid of the need for proprietary tools to build WinBoard.\r
+It's already possible to compile winboard.exe using the Cygwin\r
+toolchain.  You can even compile it with -mno-cygwin to avoid the need\r
+for cygwin1.dll.  However:\r
+\r
+552a. The Help file needs Microsoft Word to edit the source file\r
+winboard.rtf and the Microsoft Help Compiler to compile it into\r
+winboard.hlp.  I tried using OpenOffice.org on the RTF file, but the\r
+result was missing some formatting that the help compiler needs.  The\r
+help compiler itself is a free-as-in-beer download, but it's still\r
+proprietary software.  Perhaps the help could be converted to vanilla\r
+HTML, at the cost of losing the index and search capability.\r
+\r
+552b. The WinBoard installer package is built with InstallShield.\r
+  Possible replacements:\r
+  Inno Setup (http://www.jrsoftware.org/isinfo.php) - looks best\r
+  NSIS (http://nsis.sourceforge.net/site/index.php)\r
+  Cygwin setup (http://www.cygwin.com) - a long shot\r
+\r
+552c. Although the cygwin resource compiler works on winboard.rc, it's\r
+a pain to create new dialogs by editing the text file.  The original\r
+ones were all created using the graphical dialog editor in MSVC 5.\r
+\r
+* * *\r
+\r
+Before each release:\r
+- make sure both xboard and winboard build and are up to date with each other\r
+- run zippy with new version as a shakedown\r
+- be sure gnu5 binary is up to date in winboard, and gnu5 patch (if needed)\r
+  is included in both xboard and winboard kits \r
+- recheck cygwin compiling winboard\r
+- make sure ChangeLog is complete\r
+- test changes\r
+\r
+*** up to date with mail received through 5 Nov 2003, except\r
+for the "protover 3" discussions on the chess-engines mailing list ***\r
index 1f0af61..859a47f 100644 (file)
--- a/backend.c
+++ b/backend.c
@@ -56,6 +56,7 @@
 #else\r
 \r
 #define DoSleep( n )\r
+typedef int BOOL;\r
 \r
 #endif\r
 \r
@@ -223,8 +224,10 @@ static ChessProgramStats programStats;
 static int exiting = 0; /* [HGM] moved to top */\r
 static int setboardSpoiledMachineBlack = 0, errorExitFlag = 0;\r
 extern int startedFromPositionFile;\r
-int startedFromPositionFile = FALSE; Board filePosition;    /* [HGM] loadPos */\r
-char endingGame = 0; /* [HGM] crash: flag to prevent recursion of GameEnds() */\r
+int startedFromPositionFile = FALSE; Board filePosition;       /* [HGM] loadPos */\r
+char endingGame = 0;    /* [HGM] crash: flag to prevent recursion of GameEnds() */\r
+int whiteNPS, blackNPS; /* [HGM] nps: for easily making clocks aware of NPS     */\r
+VariantClass currentlyInitializedVariant; /* [HGM] variantswitch */\r
 \r
 /* States for ics_getting_history */\r
 #define H_FALSE 0\r
@@ -320,10 +323,12 @@ PosFlags(index)
   case VariantKriegspiel:\r
     flags |= F_KRIEGSPIEL_CAPTURE;\r
     break;\r
-/*  case VariantCapaRandom: */\r
+  case VariantCapaRandom: \r
   case VariantFischeRandom:\r
     flags |= F_FRC_TYPE_CASTLING; /* [HGM] enable this through flag */\r
   case VariantNoCastle:\r
+  case VariantShatranj:\r
+  case VariantCourier:\r
     flags &= ~F_ALL_CASTLE_OK;\r
     break;\r
   default:\r
@@ -425,6 +430,7 @@ int   initialRulePlies, FENrulePlies;
 char  FENepStatus;\r
 FILE  *serverMoves = NULL; // next two for broadcasting (/serverMoves option)\r
 int loadFlag = 0; \r
+int shuffleOpenings;\r
 \r
 ChessSquare  FIDEArray[2][BOARD_SIZE] = {\r
     { WhiteRook, WhiteKnight, WhiteBishop, WhiteQueen,\r
@@ -484,6 +490,13 @@ ChessSquare CapablancaArray[2][BOARD_SIZE] = {
         BlackKing, BlackBishop, BlackMarshall, BlackKnight, BlackRook }\r
 };\r
 \r
+ChessSquare JanusArray[2][BOARD_SIZE] = {\r
+    { WhiteRook, WhiteAngel, WhiteKnight, WhiteBishop, WhiteKing, \r
+        WhiteQueen, WhiteBishop, WhiteKnight, WhiteAngel, WhiteRook },\r
+    { BlackRook, BlackAngel, BlackKnight, BlackBishop, BlackKing, \r
+        BlackQueen, BlackBishop, BlackKnight, BlackAngel, BlackRook }\r
+};\r
+\r
 #ifdef GOTHIC\r
 ChessSquare GothicArray[2][BOARD_SIZE] = {\r
     { WhiteRook, WhiteKnight, WhiteBishop, WhiteQueen, WhiteMarshall, \r
@@ -665,6 +678,8 @@ InitBackEnd1()
     first.useSigterm = second.useSigterm = TRUE;\r
     first.reuse = appData.reuseFirst;\r
     second.reuse = appData.reuseSecond;\r
+    first.nps = appData.firstNPS;   // [HGM] nps: copy nodes per second\r
+    second.nps = appData.secondNPS;\r
     first.useSetboard = second.useSetboard = FALSE;\r
     first.useSAN = second.useSAN = FALSE;\r
     first.usePing = second.usePing = FALSE;\r
@@ -710,6 +725,7 @@ InitBackEnd1()
 \r
     /* [HGM] debug */\r
     first.debug = second.debug = FALSE;\r
+    first.supportsNPS = second.supportsNPS = UNKNOWN;\r
 \r
     first.scoreIsAbsolute = appData.firstScoreIsAbsolute; /* [AS] */\r
     second.scoreIsAbsolute = appData.secondScoreIsAbsolute; /* [AS] */\r
@@ -815,7 +831,7 @@ InitBackEnd1()
       case VariantNormal:     /* definitely works! */\r
       case VariantWildCastle: /* pieces not automatically shuffled */\r
       case VariantNoCastle:   /* pieces not automatically shuffled */\r
-      case VariantFischeRandom: /* Fabien: pieces not automatically shuffled */\r
+      case VariantFischeRandom: /* [HGM] works and shuffles pieces */\r
       case VariantLosers:     /* should work except for win condition,\r
                                 and doesn't know captures are mandatory */\r
       case VariantSuicide:    /* should work except for win condition,\r
@@ -825,7 +841,9 @@ InitBackEnd1()
       case VariantTwoKings:   /* should work */\r
       case VariantAtomic:     /* should work except for win condition */\r
       case Variant3Check:     /* should work except for win condition */\r
-      case VariantShatranj:   /* might work if TestLegality is off */\r
+      case VariantShatranj:   /* should work except for all win conditions */\r
+      case VariantBerolina:   /* might work if TestLegality is off */\r
+      case VariantCapaRandom: /* should work */\r
        break;\r
       }\r
     }\r
@@ -1023,9 +1041,6 @@ InitBackEnd3 P((void))
     char buf[MSG_SIZ];\r
     int err;\r
 \r
-    if (appData.debugMode) {\r
-       fprintf(debugFP, "From InitBackend3\n");\r
-    }\r
     InitChessProgram(&first, startedFromSetupPosition);\r
 \r
     if (appData.icsActive) {\r
@@ -1616,7 +1631,15 @@ StringToVariant(e)
         case 45:\r
           v = VariantFalcon;\r
          break;\r
-\r
+        case 46:\r
+          v = VariantCapaRandom;\r
+         break;\r
+        case 47:\r
+          v = VariantBerolina;\r
+         break;\r
+        case 48:\r
+          v = VariantJanus;\r
+         break;\r
        case -1:\r
          /* Found "wild" or "w" in the string but no number;\r
             must assume it's normal chess. */\r
@@ -1840,12 +1863,12 @@ CopyHoldings(Board board, char *holdings, ChessSquare lowestPiece)
 \r
 }\r
 \r
-char startBoard[MSG_SIZ]; /* [HGM] variantswitch */\r
 \r
 void\r
 VariantSwitch(Board board, VariantClass newVariant)\r
 {\r
-   int newHoldingsWidth, newWidth = 8, newHeight = 8, i, j, oldCurrentMove = currentMove;\r
+   int newHoldingsWidth, newWidth = 8, newHeight = 8, i, j;\r
+   int oldCurrentMove = currentMove, oldForwardMostMove = forwardMostMove, oldBackwardMostMove = backwardMostMove;\r
    Board tempBoard; int saveCastling[BOARD_SIZE], saveEP;\r
 \r
    startedFromPositionFile = FALSE;\r
@@ -1869,8 +1892,9 @@ VariantSwitch(Board board, VariantClass newVariant)
                VariantName(gameInfo.variant), VariantName(newVariant));\r
     setbuf(debugFP, NULL);\r
   }\r
+    shuffleOpenings = 0;       /* [HGM] shuffle */\r
     gameInfo.holdingsSize = 5; /* [HGM] prepare holdings */\r
-         switch(newVariant) {\r
+    switch(newVariant) {\r
             case VariantShogi:\r
               newWidth = 9;  newHeight = 9;\r
               gameInfo.holdingsSize = 7;\r
@@ -1915,14 +1939,16 @@ VariantSwitch(Board board, VariantClass newVariant)
         saveEP = epStatus[0];\r
 #endif\r
         InitPosition(FALSE);          /* this sets up board[0], but also other stuff        */\r
-        forwardMostMove = backwardMostMove =\r
-        currentMove = oldCurrentMove; /* InitPos reset this, but we need still to redraw it */\r
 #if 0\r
         epStatus[0] = saveEP;\r
         for(i=0; i<BOARD_SIZE; i++) castlingRights[0][i] = saveCastling[i];\r
         CopyBoard(tempBoard, board); /* restore position received from ICS   */\r
 #endif\r
     } else { gameInfo.variant = newVariant; InitPosition(FALSE); }\r
+\r
+    forwardMostMove = oldForwardMostMove;\r
+    backwardMostMove = oldBackwardMostMove;\r
+    currentMove = oldCurrentMove; /* InitPos reset these, but we need still to redraw the position */\r
 }\r
 \r
 static int loggedOn = FALSE;\r
@@ -2904,6 +2930,7 @@ read_from_ics(isr, closure, data, count, error)
                    /* Send "new" early, in case this command takes\r
                       a long time to finish, so that we'll be ready\r
                       for the next challenge. */\r
+                   gameInfo.variant = VariantNormal; // [HGM] variantswitch: suppress sending of 'variant'\r
                    Reset(TRUE, TRUE);\r
                }\r
 #endif /*ZIPPY*/\r
@@ -3341,11 +3368,6 @@ ParseBoard12(string)
         if(startedFromSetupPosition)\r
             initialRulePlies = irrev_count; /* [HGM] 50-move counter offset */\r
     }\r
-    /* [HGM] variantswitch: remember the last initial position parsed, */\r
-    /* because it might have been parsed in the wrong variant, so that */\r
-    /* we can re-parse it once we know the proper variant (which might */\r
-    /* have different piece assignments for the same letters).         */\r
-    if(moveNum == 0) strcpy(startBoard, string);\r
 \r
     /* [HGM] Set castling rights. Take the outermost Rooks,\r
        to make it also work for FRC opening positions. Note that board12\r
@@ -3562,6 +3584,7 @@ ParseBoard12(string)
                sprintf(str, "Couldn't parse move \"%s\" from ICS", move_str);\r
                DisplayError(str, 0);\r
              } else {\r
+               if(gameInfo.variant == currentlyInitializedVariant) // [HGM] refrain sending moves engine can't understand!\r
                SendMoveToProgram(moveNum - 1, &first);\r
              }\r
            }\r
@@ -3601,15 +3624,28 @@ ParseBoard12(string)
     if (gameInfo.variant != VariantBughouse &&\r
        gameInfo.variant != VariantCrazyhouse) {\r
        if (tinyLayout || smallLayout) {\r
-           sprintf(str, "%s(%d) %s(%d) {%d %d}", \r
+           if(gameInfo.variant == VariantNormal)\r
+               sprintf(str, "%s(%d) %s(%d) {%d %d}", \r
                    gameInfo.white, white_stren, gameInfo.black, black_stren,\r
                    basetime, increment);\r
+           else\r
+               sprintf(str, "%s(%d) %s(%d) {%d %d w%d}", \r
+                   gameInfo.white, white_stren, gameInfo.black, black_stren,\r
+                   basetime, increment, (int) gameInfo.variant);\r
        } else {\r
-           sprintf(str, "%s (%d) vs. %s (%d) {%d %d}", \r
+           if(gameInfo.variant == VariantNormal)\r
+               sprintf(str, "%s (%d) vs. %s (%d) {%d %d}", \r
                    gameInfo.white, white_stren, gameInfo.black, black_stren,\r
                    basetime, increment);\r
+           else\r
+               sprintf(str, "%s (%d) vs. %s (%d) {%d %d %s}", \r
+                   gameInfo.white, white_stren, gameInfo.black, black_stren,\r
+                   basetime, increment, VariantName(gameInfo.variant));\r
        }\r
        DisplayTitle(str);\r
+  if (appData.debugMode) {\r
+    fprintf(debugFP, "Display title '%s, gameInfo.variant = %d'\n", str, gameInfo.variant);\r
+  }\r
     }\r
 \r
    \r
@@ -3685,7 +3721,8 @@ SendMoveToProgram(moveNum, cps)
       /* Added by Tord: Send castle moves in "O-O" in FRC games if required by\r
        * the engine. It would be nice to have a better way to identify castle \r
        * moves here. */\r
-      if(gameInfo.variant == VariantFischeRandom && cps->useOOCastle) {\r
+      if((gameInfo.variant == VariantFischeRandom || gameInfo.variant == VariantCapaRandom)\r
+                                                                        && cps->useOOCastle) {\r
   if (appData.debugMode) {\r
     fprintf(debugFP, "Tord's FRC castling code\n");\r
   }\r
@@ -3951,7 +3988,7 @@ ParseOneMove(move, moveNum, moveType, fromX, fromY, toX, toY, promoChar)
       case BlackDrop:\r
        *fromX = *moveType == WhiteDrop ?\r
          (int) CharToPiece(ToUpper(currentMoveString[0])) :\r
-       (int) CharToPiece(ToLower(currentMoveString[0]));\r
+         (int) CharToPiece(ToLower(currentMoveString[0]));\r
        *fromY = DROP_RANK;\r
         *toX = currentMoveString[2] - AAA;\r
         *toY = currentMoveString[3] - ONE;\r
@@ -3995,6 +4032,7 @@ static int FindEmptySquare( Board board, int n )
     return i;\r
 }\r
 \r
+#if 0\r
 static void ShuffleFRC( Board board )\r
 {\r
     int i;\r
@@ -4076,6 +4114,156 @@ static void SetupFRC( Board board, int pos_index )
         board[BOARD_HEIGHT-1][i] = board[0][i] + BlackPawn - WhitePawn;\r
     }\r
 }\r
+#else\r
+// [HGM] shuffle: a more general way to suffle opening setups, applicable to arbitrry variants.\r
+// All positions will have equal probability, but the current method will not provide a unique\r
+// numbering scheme for arrays that contain 3 or more pieces of the same kind.\r
+#define DARK 1\r
+#define LITE 2\r
+#define ANY 3\r
+\r
+int squaresLeft[4];\r
+int piecesLeft[(int)BlackPawn];\r
+long long int seed, nrOfShuffles;\r
+\r
+int put(Board board, int pieceType, int rank, int n, int shade)\r
+// put the piece on the (n-1)-th empty squares of the given shade\r
+{\r
+       int i;\r
+\r
+       for(i=BOARD_LEFT; i<BOARD_RGHT; i++) {\r
+               if( ((i-BOARD_LEFT)&1)+1 & shade && board[rank][i] == EmptySquare && n-- == 0) {\r
+                       board[rank][i] = (ChessSquare) pieceType;\r
+                       squaresLeft[(i-BOARD_LEFT&1) + 1]--;\r
+                       squaresLeft[ANY]--;\r
+                       piecesLeft[pieceType]--; \r
+                       return i;\r
+               }\r
+       }\r
+        return -1;\r
+}\r
+\r
+\r
+void AddOnePiece(Board board, int pieceType, int rank, int shade)\r
+// calculate where the next piece goes, (any empty square), and put it there\r
+{\r
+       int i;\r
+\r
+        i = seed % squaresLeft[shade];\r
+       nrOfShuffles *= squaresLeft[shade];\r
+       seed /= squaresLeft[shade];\r
+        put(board, pieceType, rank, i, shade);\r
+}\r
+\r
+void AddTwoPieces(Board board, int pieceType, int rank)\r
+// calculate where the next 2 identical pieces go, (any empty square), and put it there\r
+{\r
+       int i, n=squaresLeft[ANY], j=n-1, k;\r
+\r
+       k = n*(n-1)/2; // nr of possibilities, not counting permutations\r
+        i = seed % k;  // pick one\r
+       nrOfShuffles *= k;\r
+       seed /= k;\r
+       while(i >= j) i -= j--;\r
+        j = n - 1 - j; i += j;\r
+        put(board, pieceType, rank, j, ANY);\r
+        put(board, pieceType, rank, i, ANY);\r
+}\r
+\r
+void SetUpShuffle(Board board, int number)\r
+{\r
+       int i, p, first=1;\r
+\r
+       seed = number, nrOfShuffles = 1;\r
+       if(number < 0) { \r
+               srand(time(0)); \r
+               for(i=0; i<50; i++) seed += rand();\r
+               seed = rand() ^ rand()<<16; \r
+       }\r
+\r
+       squaresLeft[DARK] = (BOARD_RGHT - BOARD_LEFT + 1)/2;\r
+       squaresLeft[ANY]  = BOARD_RGHT - BOARD_LEFT;\r
+       squaresLeft[LITE] = squaresLeft[ANY] - squaresLeft[DARK];\r
+\r
+       for(p = 0; p<=(int)WhiteKing; p++) piecesLeft[p] = 0;\r
+\r
+       for(i=BOARD_LEFT; i<BOARD_RGHT; i++) { // count pieces and clear board\r
+           p = (int) board[0][i];\r
+           if(p < (int) BlackPawn) piecesLeft[p] ++;\r
+           board[0][i] = EmptySquare;\r
+       }\r
+\r
+       if(PosFlags(0) & F_ALL_CASTLE_OK) {\r
+           // shuffles restricted to allow normal castling put KRR first\r
+           if(piecesLeft[(int)WhiteKing]) // King goes rightish of middle\r
+               put(board, WhiteKing, 0, (gameInfo.boardWidth+1)/2, ANY);\r
+           else if(piecesLeft[(int)WhiteUnicorn]) // in Knightmate Unicorn castles\r
+               put(board, WhiteUnicorn, 0, (gameInfo.boardWidth+1)/2, ANY);\r
+           if(piecesLeft[(int)WhiteRook]) // First supply a Rook for K-side castling\r
+               put(board, WhiteRook, 0, gameInfo.boardWidth-2, ANY);\r
+           if(piecesLeft[(int)WhiteRook]) // Then supply a Rook for Q-side castling\r
+               put(board, WhiteRook, 0, 0, ANY);\r
+           // in variants with super-numerary Kings and Rooks, we leave these for the shuffle\r
+       }\r
+\r
+       if((BOARD_RGHT-BOARD_LEFT & 1) == 0)\r
+           // only for even boards make effort to put pairs of colorbound pieces on opposite colors\r
+           for(p = (int) WhiteKing; p > (int) WhitePawn; p--) {\r
+               if(p != (int) WhiteBishop && p != (int) WhiteFerz && p != (int) WhiteAlfil) continue;\r
+               while(piecesLeft[p] >= 2) {\r
+                   AddOnePiece(board, p, 0, LITE);\r
+                   AddOnePiece(board, p, 0, DARK);\r
+               }\r
+               // Odd color-bound pieces are shuffled with the rest (to not run out of paired squares)\r
+           }\r
+\r
+       for(p = (int) WhiteKing - 2; p > (int) WhitePawn; p--) {\r
+           // Remaining pieces (non-colorbound, or odd color bound) can be put anywhere\r
+           // but we leave King and Rooks for last, to possibly obey FRC restriction\r
+           if(p == (int)WhiteRook) continue;\r
+           while(piecesLeft[p] >= 2) AddTwoPieces(board, p, 0); // add in pairs, for not counting permutations\r
+           if(piecesLeft[p]) AddOnePiece(board, p, 0, ANY);     // add the odd piece\r
+       }\r
+\r
+       // now everything is placed, except perhaps King (Unicorn) and Rooks\r
+\r
+       if(PosFlags(0) & F_FRC_TYPE_CASTLING) {\r
+           // Last King gets castling rights\r
+           while(piecesLeft[(int)WhiteUnicorn]) {\r
+               i = put(board, WhiteUnicorn, 0, piecesLeft[(int)WhiteRook]/2, ANY);\r
+               initialRights[2]  = initialRights[5]  = castlingRights[0][2] = castlingRights[0][5] = i;\r
+           }\r
+\r
+           while(piecesLeft[(int)WhiteKing]) {\r
+               i = put(board, WhiteKing, 0, piecesLeft[(int)WhiteRook]/2, ANY);\r
+               initialRights[2]  = initialRights[5]  = castlingRights[0][2] = castlingRights[0][5] = i;\r
+           }\r
+\r
+\r
+       } else {\r
+           while(piecesLeft[(int)WhiteKing])    AddOnePiece(board, WhiteKing, 0, ANY);\r
+           while(piecesLeft[(int)WhiteUnicorn]) AddOnePiece(board, WhiteUnicorn, 0, ANY);\r
+       }\r
+\r
+       // Only Rooks can be left; simply place them all\r
+       while(piecesLeft[(int)WhiteRook]) {\r
+               i = put(board, WhiteRook, 0, 0, ANY);\r
+               if(PosFlags(0) & F_FRC_TYPE_CASTLING) { // first and last Rook get FRC castling rights\r
+                       if(first) {\r
+                               first=0;\r
+                               initialRights[1]  = initialRights[4]  = castlingRights[0][1] = castlingRights[0][4] = i;\r
+                       }\r
+                       initialRights[0]  = initialRights[3]  = castlingRights[0][0] = castlingRights[0][3] = i;\r
+               }\r
+       }\r
+       for(i=BOARD_LEFT; i<BOARD_RGHT; i++) { // copy black from white\r
+           board[BOARD_HEIGHT-1][i] =  (int) board[0][i] < BlackPawn ? WHITE_TO_BLACK board[0][i] : EmptySquare;\r
+       }\r
+\r
+       if(number >= 0) appData.defaultFrcPosition %= nrOfShuffles; // normalize\r
+}\r
+\r
+#endif\r
 \r
 BOOL SetCharTable( char *table, const char * map )\r
 /* [HGM] moved here from winboard.c because of its general usefulness */\r
@@ -4113,6 +4301,7 @@ InitPosition(redraw)
     oldv = gameInfo.variant;\r
 \r
     currentMove = forwardMostMove = backwardMostMove = 0;\r
+    if(appData.icsActive) shuffleOpenings = FALSE; // [HGM] shuffle: in ICS mode, only shuffle on ICS request\r
 \r
     /* [AS] Initialize pv info list [HGM] and game status */\r
     {\r
@@ -4145,6 +4334,8 @@ InitPosition(redraw)
     SetCharTable(pieceToChar, "PNBRQ...........Kpnbrq...........k"); \r
 \r
     switch (gameInfo.variant) {\r
+    case VariantFischeRandom:\r
+      shuffleOpenings = TRUE;\r
     default:\r
       pieces = FIDEArray;\r
       break;\r
@@ -4161,6 +4352,8 @@ InitPosition(redraw)
       castlingRank[6] = 0;\r
       castlingRank[7] = BOARD_HEIGHT-1;\r
       break;\r
+    case VariantCapaRandom:\r
+      shuffleOpenings = TRUE;\r
     case VariantCapablanca:\r
       pieces = CapablancaArray;\r
       gameInfo.boardWidth = 10;\r
@@ -4171,6 +4364,18 @@ InitPosition(redraw)
       gameInfo.boardWidth = 10;\r
       SetCharTable(pieceToChar, "PNBRQ..ACKpnbrq..ack"); \r
       break;\r
+    case VariantJanus:\r
+      pieces = JanusArray;\r
+      gameInfo.boardWidth = 10;\r
+      SetCharTable(pieceToChar, "PNBRQ..JKpnbrq..jk"); \r
+      nrCastlingRights = 6;\r
+        castlingRights[0][0] = initialRights[0] = BOARD_RGHT-1;\r
+        castlingRights[0][1] = initialRights[1] = BOARD_LEFT;\r
+        castlingRights[0][2] = initialRights[2] = BOARD_WIDTH-1>>1;\r
+        castlingRights[0][3] = initialRights[3] = BOARD_RGHT-1;\r
+        castlingRights[0][4] = initialRights[4] = BOARD_LEFT;\r
+        castlingRights[0][5] = initialRights[5] = BOARD_WIDTH-1>>1;\r
+      break;\r
     case VariantFalcon:\r
       pieces = FalconArray;\r
       gameInfo.boardWidth = 10;\r
@@ -4215,12 +4420,14 @@ InitPosition(redraw)
     case VariantWildCastle:\r
       pieces = FIDEArray;\r
       /* !!?shuffle with kings guaranteed to be on d or e file */\r
+      shuffleOpenings = 1;\r
       break;\r
     case VariantNoCastle:\r
       pieces = FIDEArray;\r
       nrCastlingRights = 0;\r
       for(i=0; i<BOARD_SIZE; i++) initialRights[i] = -1;\r
       /* !!?unconstrained back-rank shuffle */\r
+      shuffleOpenings = 1;\r
       break;\r
     }\r
 \r
@@ -4295,6 +4502,7 @@ InitPosition(redraw)
         castlingRights[0][5] = initialRights[5] = BOARD_WIDTH>>1;\r
      }\r
 \r
+#if 0\r
     if(gameInfo.variant == VariantFischeRandom) {\r
       if( appData.defaultFrcPosition < 0 ) {\r
         ShuffleFRC( initialPosition );\r
@@ -4303,7 +4511,17 @@ InitPosition(redraw)
         SetupFRC( initialPosition, appData.defaultFrcPosition );\r
       }\r
       startedFromSetupPosition = TRUE;\r
-    } else if(startedFromPositionFile) {\r
+    } else \r
+#else\r
+  if (appData.debugMode) {\r
+    fprintf(debugFP, "shuffleOpenings = %d\n", shuffleOpenings);\r
+  }\r
+    if(shuffleOpenings) {\r
+       SetUpShuffle(initialPosition, appData.defaultFrcPosition);\r
+       startedFromSetupPosition = TRUE;\r
+    }\r
+#endif\r
+    if(startedFromPositionFile) {\r
       /* [HGM] loadPos: use PositionFile for every new game */\r
       CopyBoard(initialPosition, filePosition);\r
       for(i=0; i<nrCastlingRights; i++)\r
@@ -4355,7 +4573,7 @@ SendBoard(cps, moveNum)
       SendToProgram("edit\n", cps);\r
       SendToProgram("#\n", cps);\r
       for (i = BOARD_HEIGHT - 1; i >= 0; i--) {\r
-       bp = &boards[moveNum][i][0];\r
+       bp = &boards[moveNum][i][BOARD_LEFT];\r
         for (j = BOARD_LEFT; j < BOARD_RGHT; j++, bp++) {\r
          if ((int) *bp < (int) BlackPawn) {\r
            sprintf(message, "%c%c%c\n", PieceToChar(*bp), \r
@@ -4376,7 +4594,7 @@ SendBoard(cps, moveNum)
     \r
       SendToProgram("c\n", cps);\r
       for (i = BOARD_HEIGHT - 1; i >= 0; i--) {\r
-       bp = &boards[moveNum][i][0];\r
+       bp = &boards[moveNum][i][BOARD_LEFT];\r
         for (j = BOARD_LEFT; j < BOARD_RGHT; j++, bp++) {\r
          if (((int) *bp != (int) EmptySquare)\r
              && ((int) *bp >= (int) BlackPawn)) {\r
@@ -4446,7 +4664,7 @@ PieceForSquare (x, y)
      int x;\r
      int y;\r
 {\r
-  if (x < BOARD_LEFT || x >= BOARD_RGHT || y < 0 || y >= BOARD_HEIGHT)\r
+  if (x < 0 || x >= BOARD_WIDTH || y < 0 || y >= BOARD_HEIGHT)\r
      return -1;\r
   else\r
      return boards[currentMove][y][x];\r
@@ -4589,7 +4807,7 @@ UserMoveTest(fromX, fromY, toX, toY, promoChar)
              WhitePawn <= pup && pup < BlackPawn  ||\r
              BlackPawn <= pdown && pdown < EmptySquare &&\r
              BlackPawn <= pup && pup < EmptySquare \r
-            ) && !(gameInfo.variant == VariantFischeRandom &&\r
+            ) && !((gameInfo.variant == VariantFischeRandom || gameInfo.variant == VariantCapaRandom) &&\r
                     (pup == WhiteRook && pdown == WhiteKing && fromY == 0 && toY == 0||\r
                      pup == BlackRook && pdown == BlackKing && fromY == BOARD_HEIGHT-1 && toY == BOARD_HEIGHT-1  ) \r
         )           )\r
@@ -4842,6 +5060,7 @@ FinishMove(moveType, fromX, fromY, toX, toY, promoChar)
        sprintf(buf, "name %s\n", gameInfo.white);\r
        SendToProgram(buf, &first);\r
       }\r
+      StartClocks();\r
     }\r
     ModeHighlight();\r
   }\r
@@ -5103,7 +5322,7 @@ HandleMachineMove(message, cps)
                         machineMove, fromX+AAA, fromY+ONE, toX+AAA, toY+ONE, 0);\r
                 GameEnds(machineWhite ? BlackWins : WhiteWins,\r
                            buf1, GE_XBOARD);\r
-           } else if(gameInfo.variant != VariantFischeRandom)\r
+           } else if(gameInfo.variant != VariantFischeRandom && gameInfo.variant != VariantCapaRandom)\r
            /* [HGM] Kludge to handle engines that send FRC-style castling\r
               when they shouldn't (like TSCP-Gothic) */\r
            switch(moveType) {\r
@@ -5132,6 +5351,18 @@ HandleMachineMove(message, cps)
            first.initDone) {\r
          SendMoveToICS(moveType, fromX, fromY, toX, toY);\r
          ics_user_moved = 1;\r
+         if(appData.autoKibitz) { /* [HGM] kibitz: send most-recent PV info to ICS */\r
+               char buf[3*MSG_SIZ];\r
+\r
+               sprintf(buf, "kibitz %d/%+.2f (%.2f sec, %.0f nodes, %1.0f knps) PV = %s\n",\r
+                       programStats.depth,\r
+                       programStats.score / 100.,\r
+                       programStats.time / 100.,\r
+                       (double) programStats.nodes,\r
+                       programStats.nodes / (10*abs(programStats.time) + 1.),\r
+                       programStats.movelist);\r
+               SendToICS(buf);\r
+         }\r
        }\r
 #endif\r
        /* currentMoveString is set as a side-effect of ParseOneMove */\r
@@ -5262,6 +5493,19 @@ HandleMachineMove(message, cps)
                      }\r
                 }\r
 \r
+               /* Shatranj baring rule */\r
+                if( gameInfo.variant == VariantShatranj && (NrW == 1 || NrPieces - NrW == 1) )\r
+                {    /* bare King */\r
+\r
+                     if(--bare < 0 && appData.checkMates) {\r
+                         /* but only adjudicate them if adjudication enabled */\r
+                         ShowMove(fromX, fromY, toX, toY); /*updates currentMove*/\r
+                         GameEnds( NrW > 1 ? WhiteWins : NrPiece - NrW > 1 ? BlackWins : GameIsDrawn, \r
+                                                       "Xboard adjudication: Bare king", GE_XBOARD );\r
+                         return;\r
+                     }\r
+                } else bare = 1;\r
+\r
                 /* Then some trivial draws (only adjudicate, cannot be claimed) */\r
                 if(NrPieces == 4 && \r
                    (   NrWR == 1 && NrBR == 1 /* KRKR */\r
@@ -5549,7 +5793,7 @@ HandleMachineMove(message, cps)
       ParseFeatures(message+8, cps);\r
     }\r
     if (sscanf(message, "pong %d", &cps->lastPong) == 1) {\r
-      return;\r
+       return;\r
     }\r
     /*\r
      * If the move is illegal, cancel it and redraw the board.\r
@@ -5942,6 +6186,16 @@ HandleMachineMove(message, cps)
                programStats.score = curscore;\r
                programStats.got_only_move = 0;\r
 \r
+               if(cps->nps >= 0) { /* [HGM] nps: use engine nodes or time to decrement clock */\r
+                       int ticklen;\r
+\r
+                       if(cps->nps == 0) ticklen = 10*time;       // use engine reported time\r
+                       else ticklen = (1000. * nodes) / cps->nps; // convert node count to time\r
+                       if(WhiteOnMove(forwardMostMove)) \r
+                            whiteTimeRemaining = timeRemaining[0][forwardMostMove] - ticklen;\r
+                       else blackTimeRemaining = timeRemaining[1][forwardMostMove] - ticklen;\r
+               }\r
+\r
                /* Buffer overflow protection */\r
                if (buf1[0] != NULLCHAR) {\r
                    if (strlen(buf1) >= sizeof(programStats.movelist)\r
@@ -6332,13 +6586,15 @@ ApplyMove(fromX, fromY, toX, toY, promoChar, board)
      int promoChar;\r
      Board board;\r
 {\r
-  ChessSquare captured = board[toY][toX], piece, king; int p;\r
+  ChessSquare captured = board[toY][toX], piece, king; int p, oldEP = EP_NONE, berolina = 0;\r
 \r
     /* [HGM] compute & store e.p. status and castling rights for new position */\r
     /* if we are updating a board for which those exist (i.e. in boards[])    */\r
     if((p = ((int)board - (int)boards[0])/((int)boards[1]-(int)boards[0])) < MAX_MOVES && p > 0)\r
     { int i, j;\r
 \r
+      if(gameInfo.variant == VariantBerolina) berolina = EP_BEROLIN_A;\r
+      oldEP = epStatus[p-1];\r
       epStatus[p] = EP_NONE;\r
 \r
       if( board[toY][toX] != EmptySquare ) \r
@@ -6346,17 +6602,23 @@ ApplyMove(fromX, fromY, toX, toY, promoChar, board)
 \r
       if( board[fromY][fromX] == WhitePawn ) {\r
            epStatus[p] = EP_PAWN_MOVE; \r
-           if( toY-fromY==2 &&\r
-               (toX>BOARD_LEFT   && board[toY][toX-1] == BlackPawn ||\r
-                toX<BOARD_RGHT-1 && board[toY][toX+1] == BlackPawn ) )\r
-              epStatus[p] = toX;\r
+           if( toY-fromY==2)\r
+               if(toX>BOARD_LEFT   && board[toY][toX-1] == BlackPawn &&\r
+                       gameInfo.variant != VariantBerolina || toX < fromX)\r
+                     epStatus[p] = toX | berolina;\r
+               if(toX<BOARD_RGHT-1 && board[toY][toX+1] == BlackPawn &&\r
+                       gameInfo.variant != VariantBerolina || toX > fromX) \r
+                     epStatus[p] = toX;\r
       } else \r
       if( board[fromY][fromX] == BlackPawn ) {\r
            epStatus[p] = EP_PAWN_MOVE; \r
-           if( toY-fromY== -2 &&\r
-               (toX>BOARD_LEFT   && board[toY][toX-1] == WhitePawn ||\r
-                toX<BOARD_RGHT-1 && board[toY][toX+1] == WhitePawn ) )\r
-              epStatus[p] = toX;\r
+           if( toY-fromY== -2)\r
+               if(toX>BOARD_LEFT   && board[toY][toX-1] == WhitePawn &&\r
+                       gameInfo.variant != VariantBerolina || toX < fromX)\r
+                     epStatus[p] = toX | berolina;\r
+               if(toX<BOARD_RGHT-1 && board[toY][toX+1] == WhitePawn &&\r
+                       gameInfo.variant != VariantBerolina || toX > fromX) \r
+                     epStatus[p] = toX;\r
        }\r
 \r
        for(i=0; i<nrCastlingRights; i++) {\r
@@ -6435,12 +6697,26 @@ ApplyMove(fromX, fromY, toX, toY, promoChar, board)
     } else if ((fromY == BOARD_HEIGHT-4)\r
               && (toX != fromX)\r
                && gameInfo.variant != VariantXiangqi\r
+               && gameInfo.variant != VariantBerolina\r
               && (board[fromY][fromX] == WhitePawn)\r
               && (board[toY][toX] == EmptySquare)) {\r
        board[fromY][fromX] = EmptySquare;\r
        board[toY][toX] = WhitePawn;\r
        captured = board[toY - 1][toX];\r
        board[toY - 1][toX] = EmptySquare;\r
+    } else if ((fromY == BOARD_HEIGHT-4)\r
+              && (toX == fromX)\r
+               && gameInfo.variant == VariantBerolina\r
+              && (board[fromY][fromX] == WhitePawn)\r
+              && (board[toY][toX] == EmptySquare)) {\r
+       board[fromY][fromX] = EmptySquare;\r
+       board[toY][toX] = WhitePawn;\r
+       if(oldEP & EP_BEROLIN_A) {\r
+               captured = board[fromY][fromX-1];\r
+               board[fromY][fromX-1] = EmptySquare;\r
+       }else{  captured = board[fromY][fromX+1];\r
+               board[fromY][fromX+1] = EmptySquare;\r
+       }\r
     } else if (board[fromY][fromX] == king\r
         && fromX != BOARD_LEFT && fromX != BOARD_RGHT-1 // [HGM] cylinder */\r
                && toY == fromY && toX > fromX+1) {\r
@@ -6485,12 +6761,26 @@ ApplyMove(fromX, fromY, toX, toY, promoChar, board)
     } else if ((fromY == 3)\r
               && (toX != fromX)\r
                && gameInfo.variant != VariantXiangqi\r
+               && gameInfo.variant != VariantBerolina\r
               && (board[fromY][fromX] == BlackPawn)\r
               && (board[toY][toX] == EmptySquare)) {\r
        board[fromY][fromX] = EmptySquare;\r
        board[toY][toX] = BlackPawn;\r
        captured = board[toY + 1][toX];\r
        board[toY + 1][toX] = EmptySquare;\r
+    } else if ((fromY == 3)\r
+              && (toX == fromX)\r
+               && gameInfo.variant == VariantBerolina\r
+              && (board[fromY][fromX] == BlackPawn)\r
+              && (board[toY][toX] == EmptySquare)) {\r
+       board[fromY][fromX] = EmptySquare;\r
+       board[toY][toX] = BlackPawn;\r
+       if(oldEP & EP_BEROLIN_A) {\r
+               captured = board[fromY][fromX-1];\r
+               board[fromY][fromX-1] = EmptySquare;\r
+       }else{  captured = board[fromY][fromX+1];\r
+               board[fromY][fromX+1] = EmptySquare;\r
+       }\r
     } else {\r
        board[toY][toX] = board[fromY][fromX];\r
        board[fromY][fromX] = EmptySquare;\r
@@ -6711,7 +7001,7 @@ InitChessProgram(cps, setup)
     if (gameInfo.variant != VariantNormal &&\r
        gameInfo.variant != VariantLoadable\r
         /* [HGM] also send variant if board size non-standard */\r
-        || gameInfo.boardWidth != 8 || gameInfo.boardHeight != 8\r
+        || gameInfo.boardWidth != 8 || gameInfo.boardHeight != 8 || gameInfo.holdingsSize != 0\r
                                             ) {\r
       char *v = VariantName(gameInfo.variant);\r
       if (cps->protocolVersion != 1 && StrStr(cps->variants, v) == NULL) {\r
@@ -6729,7 +7019,8 @@ InitChessProgram(cps, setup)
            overruled = gameInfo.boardWidth != 9 || gameInfo.boardHeight != 9 || gameInfo.holdingsSize != 7;\r
       if( gameInfo.variant == VariantBughouse || gameInfo.variant == VariantCrazyhouse )\r
            overruled = gameInfo.boardWidth != 8 || gameInfo.boardHeight != 8 || gameInfo.holdingsSize != 5;\r
-      if( gameInfo.variant == VariantCapablanca || gameInfo.variant == VariantGothic  || gameInfo.variant == VariantFalcon )\r
+      if( gameInfo.variant == VariantCapablanca || gameInfo.variant == VariantCapaRandom || \r
+                               gameInfo.variant == VariantGothic  || gameInfo.variant == VariantFalcon )\r
            overruled = gameInfo.boardWidth != 10 || gameInfo.boardHeight != 8 || gameInfo.holdingsSize != 0;\r
       if( gameInfo.variant == VariantCourier )\r
            overruled = gameInfo.boardWidth != 12 || gameInfo.boardHeight != 8 || gameInfo.holdingsSize != 0;\r
@@ -6753,14 +7044,17 @@ InitChessProgram(cps, setup)
       } else sprintf(b, "%s", VariantName(gameInfo.variant));\r
       sprintf(buf, "variant %s\n", b);\r
       SendToProgram(buf, cps);\r
-      /* [HGM] send opening position in FRC to first engine */\r
-      if(setup /* cps == &first && gameInfo.variant == VariantFischeRandom */) {\r
+    }\r
+    currentlyInitializedVariant = gameInfo.variant;\r
+\r
+    /* [HGM] send opening position in FRC to first engine */\r
+    if(setup) {\r
           SendToProgram("force\n", cps);\r
           SendBoard(cps, 0);\r
           /* engine is now in force mode! Set flag to wake it up after first move. */\r
           setboardSpoiledMachineBlack = 1;\r
-      }\r
     }\r
+\r
     if (cps->sendICS) {\r
       sprintf(buf, "ics %s\n", appData.icsActive ? appData.icsHost : "-");\r
       SendToProgram(buf, cps);\r
@@ -7217,6 +7511,14 @@ FeedMovesToProgram(cps, upto)
       fprintf(debugFP, "Feeding %smoves %d through %d to %s chess program\n",\r
              startedFromSetupPosition ? "position and " : "",\r
              backwardMostMove, upto, cps->which);\r
+    if(currentlyInitializedVariant != gameInfo.variant) { char buf[MSG_SIZ];\r
+        // [HGM] variantswitch: make engine aware of new variant\r
+       if(cps->protocolVersion > 1 && StrStr(cps->variants, VariantName(gameInfo.variant)) == NULL)\r
+               return; // [HGM] refrain from feeding moves altogether if variant is unsupported!\r
+       sprintf(buf, "variant %s\n", VariantName(gameInfo.variant));\r
+       SendToProgram(buf, cps);\r
+        currentlyInitializedVariant = gameInfo.variant;\r
+    }\r
     SendToProgram("force\n", cps);\r
     if (startedFromSetupPosition) {\r
        SendBoard(cps, backwardMostMove);\r
@@ -7239,9 +7541,6 @@ ResurrectChessProgram()
     if (appData.noChessProgram || first.pr != NoProc) return;\r
     \r
     StartChessProgram(&first);\r
-    if (appData.debugMode) {\r
-       fprintf(debugFP, "From ResurrectChessProgram\n");\r
-    }\r
     InitChessProgram(&first, FALSE);\r
     FeedMovesToProgram(&first, currentMove);\r
 \r
@@ -7315,6 +7614,7 @@ Reset(redraw, init)
     ExitAnalyzeMode();\r
     gameMode = BeginningOfGame;\r
     ModeHighlight();\r
+    if(appData.icsActive) gameInfo.variant = VariantNormal;\r
     InitPosition(redraw);\r
     for (i = 0; i < MAX_MOVES; i++) {\r
        if (commentList[i] != NULL) {\r
@@ -7329,10 +7629,8 @@ Reset(redraw, init)
        StartChessProgram(&first);\r
     }\r
     if (init) {\r
-    if (appData.debugMode) {\r
-       fprintf(debugFP, "From Reset\n");\r
+           InitChessProgram(&first, startedFromSetupPosition);\r
     }\r
-InitChessProgram(&first, startedFromSetupPosition);}\r
     DisplayTitle("");\r
     DisplayMessage("", "");\r
     HistorySet(parseList, backwardMostMove, forwardMostMove, currentMove-1);\r
@@ -8080,7 +8378,7 @@ LoadGame(f, gameNumber, title, useList)
               initialRulePlies = FENrulePlies;\r
               epStatus[0] = FENepStatus;\r
               for( i=0; i< nrCastlingRights; i++ )\r
-                  castlingRights[0][i] = FENcastlingRights[i];\r
+                  initialRights[i] = castlingRights[0][i] = FENcastlingRights[i];\r
           }\r
          if (blackPlaysFirst) {\r
            currentMove = forwardMostMove = backwardMostMove = 1;\r
@@ -8198,9 +8496,6 @@ LoadGame(f, gameNumber, title, useList)
     if (first.pr == NoProc) {\r
        StartChessProgram(&first);\r
     }\r
-    if (appData.debugMode) {\r
-       fprintf(debugFP, "From LoadGame\n");\r
-    }\r
     InitChessProgram(&first, FALSE);\r
     SendToProgram("force\n", &first);\r
     if (startedFromSetupPosition) {\r
@@ -8364,9 +8659,6 @@ LoadPosition(f, positionNumber, title)
     strcpy(lastLoadPositionTitle, title);\r
     if (first.pr == NoProc) {\r
       StartChessProgram(&first);\r
-    if (appData.debugMode) {\r
-       fprintf(debugFP, "From LoadPosition\n");\r
-    }\r
       InitChessProgram(&first, FALSE);\r
     }    \r
     pn = positionNumber;\r
@@ -8734,6 +9026,7 @@ SaveGamePGN(f)
             /* [HGM] add time */\r
             char buf[MSG_SIZ]; int seconds = 0;\r
 \r
+#if 0\r
             if(i >= backwardMostMove) {\r
                 /* take the time that changed */\r
                 seconds = timeRemaining[0][i] - timeRemaining[0][i+1];\r
@@ -8741,7 +9034,8 @@ SaveGamePGN(f)
                     seconds = timeRemaining[1][i] - timeRemaining[1][i+1];\r
             }\r
             seconds /= 1000;\r
-            seconds = pvInfoList[i].time/100;\r
+#endif\r
+            seconds = pvInfoList[i].time/100; // [HGM] PVtime: use engine time\r
     if (appData.debugMode) {\r
         fprintf(debugFP, "times = %d %d %d %d, seconds=%d\n",\r
                 timeRemaining[0][i+1], timeRemaining[0][i],\r
@@ -9689,9 +9983,6 @@ TwoMachinesEvent P((void))
        return;\r
     }\r
     DisplayMessage("", "");\r
-    if (appData.debugMode) {\r
-       fprintf(debugFP, "From TwoMachines\n");\r
-    }\r
     InitChessProgram(&second, FALSE);\r
     SendToProgram("force\n", &second);\r
     if (startedFromSetupPosition) {\r
@@ -9934,9 +10225,6 @@ void
 EditPositionDone()\r
 {\r
     startedFromSetupPosition = TRUE;\r
-    if (appData.debugMode) {\r
-       fprintf(debugFP, "From EditPosition\n");\r
-    }\r
     InitChessProgram(&first, FALSE);\r
     SendToProgram("force\n", &first);\r
     if (blackPlaysFirst) {\r
@@ -11201,11 +11489,29 @@ ReceiveFromProgram(isr, closure, message, count, error)
       *end_str = NULLCHAR;\r
     \r
     if (appData.debugMode) {\r
-       TimeMark now;\r
-       GetTimeMark(&now);\r
-       fprintf(debugFP, "%ld <%-6s: %s\n", \r
-               SubtractTimeMarks(&now, &programStartTime),\r
-               cps->which, message);\r
+       TimeMark now; int print = 1;\r
+       char *quote = ""; char c; int i;\r
+\r
+       if(appData.engineComments != 1) { /* [HGM] debug: decide if protocol-violating output is written */\r
+               char start = message[0];\r
+               if(start >='A' && start <= 'Z') start += 'a' - 'A'; // be tolerant to capitalizing\r
+               if(sscanf(message, "%d%c%d%d%d", &i, &c, &i, &i, &i) != 5 && \r
+                  sscanf(message, "move %c", &c)!=1  && sscanf(message, "offer%c", &c)!=1 &&\r
+                  sscanf(message, "resign%c", &c)!=1 && sscanf(message, "feature %c", &c)!=1 &&\r
+                  sscanf(message, "error %c", &c)!=1 && sscanf(message, "illegal %c", &c)!=1 &&\r
+                  sscanf(message, "tell%c", &c)!=1   && sscanf(message, "0-1 %c", &c)!=1 &&\r
+                  sscanf(message, "askuser%c", &c)!=1 && sscanf(message, "1-0 %c", &c)!=1 && \r
+                  sscanf(message, "1/2-1/2 %c", &c)!=1 && start != '#')\r
+                       { quote = "# "; print = (appData.engineComments == 2); }\r
+               message[0] = start; // restore original message\r
+       }\r
+       if(print) {\r
+               GetTimeMark(&now);\r
+               fprintf(debugFP, "%ld <%-6s: %s%s\n", \r
+                       SubtractTimeMarks(&now, &programStartTime), cps->which, \r
+                       quote,\r
+                       message);\r
+       }\r
     }\r
     HandleMachineMove(message, cps);\r
 }\r
@@ -11268,6 +11574,14 @@ SendTimeControl(cps, mps, tc, inc, sd, st)
       }\r
       SendToProgram(buf, cps);\r
     }\r
+\r
+    if(cps->nps > 0) { /* [HGM] nps */\r
+       if(cps->supportsNPS == FALSE) cps->nps = -1; // don't use if engine explicitly says not supported!\r
+       else {\r
+               sprintf(buf, "nps %d\n", cps->nps);\r
+             SendToProgram(buf, cps);\r
+       }\r
+    }\r
 }\r
 \r
 ChessProgramState *WhitePlayer()\r
@@ -11435,6 +11749,7 @@ ParseFeatures(args, cps)
     if (BoolFeature(&p, "name", &cps->sendName, cps)) continue;\r
     if (BoolFeature(&p, "pause", &val, cps)) continue; /* unused at present */\r
     if (BoolFeature(&p, "debug", &cps->debug, cps)) continue;\r
+    if (BoolFeature(&p, "nps", &cps->supportsNPS, cps)) continue;\r
     if (IntFeature(&p, "level", &cps->maxNrOfSessions, cps)) continue;\r
     if (IntFeature(&p, "done", &val, cps)) {\r
       FeatureDone(cps, val);\r
@@ -11948,10 +12263,12 @@ DecrementClocks()
     if (fudge < 0 || fudge > FUDGE) fudge = 0;\r
 \r
     if (WhiteOnMove(forwardMostMove)) {\r
+       if(whiteNPS >= 0) lastTickLength = 0;\r
        timeRemaining = whiteTimeRemaining -= lastTickLength;\r
        DisplayWhiteClock(whiteTimeRemaining - fudge,\r
                          WhiteOnMove(currentMove));\r
     } else {\r
+       if(blackNPS >= 0) lastTickLength = 0;\r
        timeRemaining = blackTimeRemaining -= lastTickLength;\r
        DisplayBlackClock(blackTimeRemaining - fudge,\r
                          !WhiteOnMove(currentMove));\r
@@ -12006,13 +12323,15 @@ SwitchClocks()
     if (StopClockTimer() && appData.clockMode) {\r
        lastTickLength = SubtractTimeMarks(&now, &tickStartTM);\r
        if (WhiteOnMove(forwardMostMove)) {\r
+           if(blackNPS >= 0) lastTickLength = 0;\r
            blackTimeRemaining -= lastTickLength;\r
            /* [HGM] PGNtime: save time for PGN file if engine did not give it */\r
             if(pvInfoList[forwardMostMove-1].time == -1)\r
                  pvInfoList[forwardMostMove-1].time = \r
                       (timeRemaining[1][forwardMostMove-1] - blackTimeRemaining)/10;\r
        } else {\r
-           whiteTimeRemaining -= lastTickLength;\r
+          if(whiteNPS >= 0) lastTickLength = 0;\r
+          whiteTimeRemaining -= lastTickLength;\r
            /* [HGM] PGNtime: save time for PGN file if engine did not give it */\r
             if(pvInfoList[forwardMostMove-1].time == -1)\r
                  pvInfoList[forwardMostMove-1].time = \r
@@ -12061,9 +12380,11 @@ StopClocks()
 \r
     lastTickLength = SubtractTimeMarks(&now, &tickStartTM);\r
     if (WhiteOnMove(forwardMostMove)) {\r
+       if(whiteNPS >= 0) lastTickLength = 0;\r
        whiteTimeRemaining -= lastTickLength;\r
        DisplayWhiteClock(whiteTimeRemaining, WhiteOnMove(currentMove));\r
     } else {\r
+       if(blackNPS >= 0) lastTickLength = 0;\r
        blackTimeRemaining -= lastTickLength;\r
        DisplayBlackClock(blackTimeRemaining, !WhiteOnMove(currentMove));\r
     }\r
@@ -12085,6 +12406,21 @@ StartClocks()
     GetTimeMark(&tickStartTM);\r
     intendedTickLength = NextTickLength(WhiteOnMove(forwardMostMove) ?\r
       whiteTimeRemaining : blackTimeRemaining);\r
+\r
+   /* [HGM] nps: figure out nps factors, by determining which engine plays white and/or black once and for all */\r
+    whiteNPS = blackNPS = -1; \r
+    if(gameMode == MachinePlaysWhite || gameMode == TwoMachinesPlay && first.twoMachinesColor[0] == 'w'\r
+       || appData.zippyPlay && gameMode == IcsPlayingBlack) // first (perhaps only) engine has white\r
+       whiteNPS = first.nps;\r
+    if(gameMode == MachinePlaysBlack || gameMode == TwoMachinesPlay && first.twoMachinesColor[0] == 'b'\r
+       || appData.zippyPlay && gameMode == IcsPlayingWhite) // first (perhaps only) engine has black\r
+       blackNPS = first.nps;\r
+    if(gameMode == TwoMachinesPlay && first.twoMachinesColor[0] == 'b') // second only used in Two-Machines mode\r
+       whiteNPS = second.nps;\r
+    if(gameMode == TwoMachinesPlay && first.twoMachinesColor[0] == 'w')\r
+       blackNPS = second.nps;\r
+    if(appData.debugMode) fprintf(debugFP, "nps: w=%d, b=%d\n", whiteNPS, blackNPS);\r
+\r
     StartClockTimer(intendedTickLength);\r
 }\r
 \r
@@ -12323,7 +12659,7 @@ PositionToFEN(move, useFEN960)
 \r
   if(nrCastlingRights) {\r
      q = p;\r
-     if(gameInfo.variant == VariantFischeRandom) {\r
+     if(gameInfo.variant == VariantFischeRandom || gameInfo.variant == VariantCapaRandom) {\r
        /* [HGM] write directly from rights */\r
            if(castlingRights[move][2] >= 0 &&\r
               castlingRights[move][0] >= 0   )\r
@@ -12516,7 +12852,7 @@ ParseFEN(board, blackPlaysFirst, fen)
     FENepStatus = EP_UNKNOWN;\r
     for(i=0; i<nrCastlingRights; i++ ) {\r
         FENcastlingRights[i] =\r
-            gameInfo.variant == VariantFischeRandom ? -1 : initialRights[i];\r
+            gameInfo.variant == VariantFischeRandom || gameInfo.variant == VariantCapaRandom ? -1 : initialRights[i];\r
     }   /* assume possible unless obviously impossible */\r
     if(initialRights[0]>=0 && board[castlingRank[0]][initialRights[0]] != WhiteRook) FENcastlingRights[0] = -1;\r
     if(initialRights[1]>=0 && board[castlingRank[1]][initialRights[1]] != WhiteRook) FENcastlingRights[1] = -1;\r
@@ -12535,7 +12871,7 @@ ParseFEN(board, blackPlaysFirst, fen)
           }\r
       }\r
       while(*p=='K' || *p=='Q' || *p=='k' || *p=='q' || *p=='-' ||\r
-             gameInfo.variant == VariantFischeRandom &&\r
+             (gameInfo.variant == VariantFischeRandom || gameInfo.variant == VariantCapaRandom) &&\r
              ( *p >= 'a' && *p < 'a' + gameInfo.boardWidth) ||\r
              ( *p >= 'A' && *p < 'A' + gameInfo.boardWidth)   ) {\r
         char c = *p++; int whiteKingFile=-1, blackKingFile=-1;\r
index 111a3af..217aa94 100644 (file)
--- a/backend.h
+++ b/backend.h
@@ -257,6 +257,8 @@ typedef struct _CPS {
     int debug;      /* [HGM] ignore engine debug lines starting with '#'    */\r
     int maxNrOfSessions; /* [HGM] secondary TC: max args in 'level' command */\r
     int accumulateTC; /* [HGM] secondary TC: how to handle extra sessions   */\r
+    int nps;          /* [HGM] nps: factor for node count to replace time   */\r
+    int supportsNPS;\r
 } ChessProgramState;\r
 \r
 extern ChessProgramState first, second;\r
@@ -269,5 +271,6 @@ typedef struct {
 } ChessProgramStats_Move;\r
 \r
 extern ChessProgramStats_Move pvInfoList[MAX_MOVES];\r
+extern shuffleOpenings;\r
 \r
 #endif /* _BACKEND */\r
index a7592e7..4014e3b 100644 (file)
@@ -1,72 +1,72 @@
-/*\r
- * backendz.h -- Internal interface exported by XBoard backend.c to zippy.c\r
- * $Id: backendz.h,v 2.1 2003/10/27 19:21:00 mann Exp $\r
- *\r
- * Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts.\r
- * Enhancements Copyright 1992-95 Free Software Foundation, Inc.\r
- *\r
- * The following terms apply to Digital Equipment Corporation's copyright\r
- * interest in XBoard:\r
- * ------------------------------------------------------------------------\r
- * All Rights Reserved\r
- *\r
- * Permission to use, copy, modify, and distribute this software and its\r
- * documentation for any purpose and without fee is hereby granted,\r
- * provided that the above copyright notice appear in all copies and that\r
- * both that copyright notice and this permission notice appear in\r
- * supporting documentation, and that the name of Digital not be\r
- * used in advertising or publicity pertaining to distribution of the\r
- * software without specific, written prior permission.\r
- *\r
- * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING\r
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL\r
- * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR\r
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,\r
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,\r
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS\r
- * SOFTWARE.\r
- * ------------------------------------------------------------------------\r
- *\r
- * The following terms apply to the enhanced version of XBoard distributed\r
- * by the Free Software Foundation:\r
- * ------------------------------------------------------------------------\r
- * This program is free software; you can redistribute it and/or modify\r
- * it under the terms of the GNU General Public License as published by\r
- * the Free Software Foundation; either version 2 of the License, or\r
- * (at your option) any later version.\r
- *\r
- * This program is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
- * GNU General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU General Public License\r
- * along with this program; if not, write to the Free Software\r
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\r
- * ------------------------------------------------------------------------\r
- */\r
-\r
-#ifndef _BACKENDZ\r
-#define _BACKENDZ\r
-\r
-#include "common.h"\r
-#include "frontend.h"\r
-\r
-extern long whiteTimeRemaining, blackTimeRemaining;\r
-extern int forwardMostMove;\r
-extern char star_match[STAR_MATCH_N][MSG_SIZ];\r
-extern ProcRef firstProgramPR;\r
-extern int startedFromSetupPosition;\r
-extern int firstMove;\r
-extern GameInfo gameInfo;\r
-extern void SendToICS P((char *s));\r
-extern int looking_at P((char *, int *, char *));\r
-extern void SendToProgram P((char *message, ChessProgramState *cps));\r
-extern void SendBoard P((ChessProgramState *cps, int moveNum));\r
-void SendTimeRemaining P((ChessProgramState *cps,\r
-                         int/*boolean*/ machineWhite));\r
-\r
-extern char ics_handle[];\r
-extern char *ics_prefix;\r
-\r
-#endif\r
+/*
+ * backendz.h -- Internal interface exported by XBoard backend.c to zippy.c
+ * $Id: backendz.h,v 2.1 2003/10/27 19:21:00 mann Exp $
+ *
+ * Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts.
+ * Enhancements Copyright 1992-95 Free Software Foundation, Inc.
+ *
+ * The following terms apply to Digital Equipment Corporation's copyright
+ * interest in XBoard:
+ * ------------------------------------------------------------------------
+ * All Rights Reserved
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted,
+ * provided that the above copyright notice appear in all copies and that
+ * both that copyright notice and this permission notice appear in
+ * supporting documentation, and that the name of Digital not be
+ * used in advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission.
+ *
+ * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+ * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+ * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ * ------------------------------------------------------------------------
+ *
+ * The following terms apply to the enhanced version of XBoard distributed
+ * by the Free Software Foundation:
+ * ------------------------------------------------------------------------
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * ------------------------------------------------------------------------
+ */
+
+#ifndef _BACKENDZ
+#define _BAC