X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=gnushogi%2Fcommondsp.c;h=addec646ecd51015dd8586dfbb1dcaaa5a70e895;hb=30506a3dc5336fb56fc3c1984af32eaf127bd748;hp=90a3ca0d72f42c1dc02a4676630864b42ca97250;hpb=6ec68dbedbcb4225cfe8e29e32675cb0fa486b34;p=gnushogi.git diff --git a/gnushogi/commondsp.c b/gnushogi/commondsp.c index 90a3ca0..addec64 100644 --- a/gnushogi/commondsp.c +++ b/gnushogi/commondsp.c @@ -54,6 +54,7 @@ int mycnt1, mycnt2; static char *InPtr; struct display *dsp = &raw_display; +short xboard = false; #if defined(BOOKTEST) @@ -181,7 +182,7 @@ algbr(short f, short t, short flag) short piece = flag & pmask; mvstr[0][0] = pxx[piece]; - mvstr[0][1] = '*'; + mvstr[0][1] = xboard ? '@' : '*'; mvstr[0][2] = COL_NAME(column(t)); mvstr[0][3] = ROW_NAME(row(t)); mvstr[0][4] = '\0'; @@ -310,7 +311,7 @@ VerifyMove(char *s, VerifyMove_mode iop, unsigned short *mv) if (SqAttacked(PieceList[opponent][0], computer, &blocked)) { UnmakeMove(opponent, &xnode, &tempb, &tempc, &tempsf, &tempst); - dsp->AlwaysShowMessage("Illegal move (in check) %s", s); + dsp->AlwaysShowMessage("Illegal move (in check): %s", s); return false; } else @@ -352,7 +353,7 @@ VerifyMove(char *s, VerifyMove_mode iop, unsigned short *mv) } } - dsp->AlwaysShowMessage("Illegal move (no match) %s", s); + dsp->AlwaysShowMessage("Illegal move (no match): %s", s); if (!XSHOGI && (cnt > 1)) { @@ -384,17 +385,17 @@ parser(char *f, short *fpiece) if (f[1] == '*' || f[1] == '\'') { - c2 = COL_NAME(f[2]); - r2 = ROW_NAME(f[3]); + c2 = COL_NUM(f[2]); + r2 = ROW_NUM(f[3]); return ((NO_SQUARES + *fpiece) << 8) | locn(r2, c2); } else { - c1 = COL_NAME(f[1]); - r1 = ROW_NAME(f[2]); - c2 = COL_NAME(f[3]); - r2 = ROW_NAME(f[4]); + c1 = COL_NUM(f[1]); + r1 = ROW_NUM(f[2]); + c2 = COL_NUM(f[3]); + r2 = ROW_NUM(f[4]); p = (f[5] == '+') ? 0x80 : 0; return (locn(r1, c1) << 8) | locn(r2, c2) | p; @@ -1614,9 +1615,15 @@ InputCommand(char *command) } else if (strcmp(s, "post") == 0) { - flag.post = !flag.post; + flag.post = (xboard ? 1 : !flag.post); } - else if (strcmp(s, "alg") == 0) + else if (strcmp(s, "nopost") == 0) + { + flag.post = 0; + } + else if (strcmp(s, "alg") == 0 || + strcmp(s, "accepted") == 0 || strcmp(s, "rejected") == 0 || + strcmp(s, "variant") == 0 || strcmp(s, "computer") == 0) { /* noop */ ; } @@ -1625,6 +1632,16 @@ InputCommand(char *command) { flag.quit = true; } + else if (strcmp(s, "protover") == 0) + { + printf("feature myname=\"GNU %sShogi %s\" variants=\"%sshogi\" debug=1 setboard=0 sigint=0 done=1\n", +#ifdef MINISHOGI + "mini", PACKAGE_VERSION, "5x5+5_" +#else + "", PACKAGE_VERSION, "" +#endif + ); + } else if ((strcmp(s, "set") == 0) || (strcmp(s, "edit") == 0)) { @@ -1712,7 +1729,8 @@ InputCommand(char *command) { SetMachineTime(sx + strlen("time")); } - else if (strcmp(s, "otime") == 0) + else if (strcmp(s, "otime") == 0 || + (xboard && strcmp(s, "otim")) == 0) { SetOppTime(sx + strlen("otime")); } @@ -1755,6 +1773,7 @@ InputCommand(char *command) flag.force = false; Sdepth = 0; ok = true; + dsp->UpdateDisplay(0, 0, 1, 0); } else if (strcmp(s, "black") == 0) {