🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

1 total messages Started by Tom Vijlbrief Fri, 08 Dec 1989 13:14
Changes to gnuchess1.52
#64
Author: Tom Vijlbrief
Date: Fri, 08 Dec 1989 13:14
601 lines
16741 bytes
I made some changes to gnuchess 1.52:

a) report illegal moves, to avoid hang of sun's chesstool
   e2-e5 did not result in: Illegal move

b) add a -a flag (think ahead) which switches easy off, so chesstool can
   play with gnuchess thinking in the opponents time:

   e.g.: chesstool gnuchessr -a 60 5

   The user need no longer hit ^C when easy is off, select(2) is used
   to terminate the search.

c) Diagnostics concerning the search are written on stderr. This does not
   bother chesstool.

I assume these changes also work for xchess.
===============================================================================
Tom Vijlbrief
TNO Institute for Perception
P.O. Box 23				Phone: +31 34 63 562 11
3769 ZG  Soesterberg			E-mail: tnosoes!tom@mcvax.cwi.nl
The Netherlands				    or:	uunet!mcvax!tnosoes!tom
===============================================================================



Here are the diffs:

*** gnuchess.c	Fri Dec  8 09:43:51 1989
--- org/gnuchess.c	Sun Apr 30 17:21:05 1989
***************
*** 291,298 ****
  main(argc,argv)
  int argc; char *argv[];
  {
-   int i;
-   int ahead= 0;
  #ifdef MSDOS
    ttable = (struct hashentry huge *)farmalloc(ttblsz *
             (unsigned long)sizeof(struct hashentry));
--- 291,296 ----
***************
*** 300,313 ****
    ttable = (struct hashentry *)malloc(ttblsz *
             (unsigned long)sizeof(struct hashentry));
  #endif
-   while (argc > 1 && argv[1][0] == '-') {
- 	switch (argv[1][1]) {
- 	case 'a': ahead= 1; break;
- 	default: fprintf(stderr, "Unknown flag\n");
- 	}
- 	argv++;
- 	argc--;
-   }
    Level = 0; TCflag = false; OperatorTime = 0;
    if (argc == 2) Level = atoi(argv[1]);
    if (argc == 3)
--- 298,303 ----
***************
*** 316,323 ****
      }
    Initialize();
    NewGame();
-   if (ahead)
- 	seteasy();
    while (!(quit))
      {
        if (bothsides && !mate) SelectMove(opponent,1); else InputCommand();
--- 306,311 ----
***************
*** 349,355 ****
    if (iop == 2)
      {
        UnmakeMove(opponent,&xnode,&tempb,&tempc,&tempsf,&tempst);
-       /* ShowMessage("Illegal Move!!"); */
        return(false);
      }
    cnt = 0;
--- 337,342 ----
***************
*** 393,399 ****
          } 
      }
    if (cnt > 1) ShowMessage("Ambiguous Move!");
-   else ShowMessage("Illegal Move!!");
    return(false);
  }
  
--- 380,385 ----
No differences encountered
*** nondsp.c	Fri Dec  8 11:38:03 1989
--- org/nondsp.c	Sun Apr 30 17:24:04 1989
***************
*** 39,45 ****
  #include <sys/file.h>
  struct tms tmbuf1,tmbuf2;
  int TerminateSearch(),Die();
- #include <signal.h>
  #endif MSDOS
  
  #include "gnuchess.h"
--- 39,44 ----
***************
*** 51,57 ****
  
  Initialize()
  {
-   signal(SIGINT,Die); signal(SIGQUIT,Die);
    mycnt1 = mycnt2 = 0;
  #ifndef MSDOS
  #endif
--- 50,55 ----
***************
*** 75,105 ****
  Die()
  {
  char s[80];
-   signal(SIGINT,SIG_IGN);
-   signal(SIGQUIT,SIG_IGN);
    printz("Abort? ");
    scanz("%s",s);
    if (strcmp(s,"yes") == 0) ExitChess();
-   signal(SIGINT,Die); signal(SIGQUIT,Die);
  }
  
  TerminateSearch()
  {
-   signal(SIGINT,SIG_IGN);
-   signal(SIGQUIT,SIG_IGN);
    timeout = true;
    bothsides = false;
-   signal(SIGINT,Die); signal(SIGQUIT,Die);
  }
  #endif MSDOS
  
- seteasy()
- {
-   easy = !easy;
- }
  
- static int ahead;
- 
  InputCommand()
  
  /*
--- 73,91 ----
***************
*** 128,137 ****
        algbr(hint>>8,hint & 0xFF,false);
        strcpy(s,mvstr1);
        tmp = epsquare;
-       fprintf(stderr, "Hint: %s\n", s);
        if (VerifyMove(s,1,&mv))
          {
- 	  ahead= 1;
            SelectMove(computer,2);
            VerifyMove(mvstr1,2,&mv);
            if (Sdepth > 0) Sdepth--;
--- 114,121 ----
***************
*** 139,148 ****
        ft = time((long *)0) - time0;
        epsquare = tmp;
      }
-     ahead= 0;
    
  #ifndef MSDOS
-   signal(SIGINT,Die); signal(SIGQUIT,Die);
  #endif
    while (!(ok || quit))
      {
--- 123,130 ----
***************
*** 150,155 ****
--- 132,143 ----
        i = scanz("%s",s);
        if (i == EOF || s[0] == 0) ExitChess();
        player = opponent;
+       ok = VerifyMove(s,0,&mv);
+       if (ok && mv != hint)
+         {
+           Sdepth = 0;
+           ft = 0;
+         }
          
        if (strcmp(s,"bd") == 0)
          {
***************
*** 156,180 ****
            ClrScreen();
            UpdateDisplay(0,0,1,0);
          }
!       else if (strcmp(s,"alg") == 0) ;
!       else if (strcmp(s,"quit") == 0) quit = true;
!       else if (strcmp(s,"post") == 0) post = !post;
!       else if (strcmp(s,"set") == 0) EditBoard();
!       else if (strcmp(s,"go") == 0) ok = true;
!       else if (strcmp(s,"help") == 0) help();
!       else if (strcmp(s,"force") == 0) force = !force;
!       else if (strcmp(s,"book") == 0) Book = NULL;
!       else if (strcmp(s,"new") == 0) NewGame();
!       else if (strcmp(s,"list") == 0) ListGame();
!       else if (strcmp(s,"level") == 0) SelectLevel();
!       else if (strcmp(s,"hash") == 0) hashflag = !hashflag;
!       else if (strcmp(s,"beep") == 0) beep = !beep;
!       else if (strcmp(s,"Awindow") == 0) ChangeAlphaWindow();
!       else if (strcmp(s,"Bwindow") == 0) ChangeBetaWindow();
!       else if (strcmp(s,"rcptr") == 0) rcptr = !rcptr;
!       else if (strcmp(s,"hint") == 0) GiveHint();
!       else if (strcmp(s,"zero") == 0) ZeroTTable();
!       else if (strcmp(s,"both") == 0)
          {
            bothsides = !bothsides;
            Sdepth = 0;
--- 144,167 ----
            ClrScreen();
            UpdateDisplay(0,0,1,0);
          }
!       if (strcmp(s,"quit") == 0) quit = true;
!       if (strcmp(s,"post") == 0) post = !post;
!       if (strcmp(s,"set") == 0) EditBoard();
!       if (strcmp(s,"go") == 0) ok = true;
!       if (strcmp(s,"help") == 0) help();
!       if (strcmp(s,"force") == 0) force = !force;
!       if (strcmp(s,"book") == 0) Book = NULL;
!       if (strcmp(s,"new") == 0) NewGame();
!       if (strcmp(s,"list") == 0) ListGame();
!       if (strcmp(s,"level") == 0) SelectLevel();
!       if (strcmp(s,"hash") == 0) hashflag = !hashflag;
!       if (strcmp(s,"beep") == 0) beep = !beep;
!       if (strcmp(s,"Awindow") == 0) ChangeAlphaWindow();
!       if (strcmp(s,"Bwindow") == 0) ChangeBetaWindow();
!       if (strcmp(s,"rcptr") == 0) rcptr = !rcptr;
!       if (strcmp(s,"hint") == 0) GiveHint();
!       if (strcmp(s,"zero") == 0) ZeroTTable();
!       if (strcmp(s,"both") == 0)
          {
            bothsides = !bothsides;
            Sdepth = 0;
***************
*** 181,193 ****
            SelectMove(opponent,1);
            ok = true;
          }
!       else if (strcmp(s,"reverse") == 0)
          {
            reverse = !reverse;
            ClrScreen();
            UpdateDisplay(0,0,1,0);
          }
!       else if (strcmp(s,"switch") == 0)
          {
            computer = otherside[computer];
            opponent = otherside[opponent];
--- 168,180 ----
            SelectMove(opponent,1);
            ok = true;
          }
!       if (strcmp(s,"reverse") == 0)
          {
            reverse = !reverse;
            ClrScreen();
            UpdateDisplay(0,0,1,0);
          }
!       if (strcmp(s,"switch") == 0)
          {
            computer = otherside[computer];
            opponent = otherside[opponent];
***************
*** 195,225 ****
            Sdepth = 0;
            ok = true;
          }
!       else if (strcmp(s,"white") == 0 || strcmp(s, "first") == 0)  
          {
            computer = white; opponent = black;
            ok = true; force = false;
            Sdepth = 0;
          }
!       else if (strcmp(s,"black") == 0)
          {
            computer = black; opponent = white;
            ok = true; force = false;
            Sdepth = 0;
          }
!       else if (strcmp(s,"undo") == 0 && GameCnt >= 0) Undo();
!       else if (strcmp(s,"remove") == 0 && GameCnt >= 1) 
          {
            Undo(); Undo();
          }
!       else if (strcmp(s,"get") == 0) GetGame();
!       else if (strcmp(s,"save") == 0) SaveGame();
!       else if (strcmp(s,"depth") == 0) ChangeSearchDepth();
!       else if (strcmp(s,"random") == 0) dither = 6;
!       else if (strcmp(s,"easy") == 0) seteasy();
!       else if (strcmp(s,"contempt") == 0) SetContempt();
!       else if (strcmp(s,"xwndw") == 0) ChangeXwindow();
!       else if (strcmp(s,"test") == 0)
          {
            t1 = time(0);
            cnt = 0;
--- 182,212 ----
            Sdepth = 0;
            ok = true;
          }
!       if (strcmp(s,"white") == 0)  
          {
            computer = white; opponent = black;
            ok = true; force = false;
            Sdepth = 0;
          }
!       if (strcmp(s,"black") == 0)
          {
            computer = black; opponent = white;
            ok = true; force = false;
            Sdepth = 0;
          }
!       if (strcmp(s,"undo") == 0 && GameCnt >= 0) Undo();
!       if (strcmp(s,"remove") == 0 && GameCnt >= 1) 
          {
            Undo(); Undo();
          }
!       if (strcmp(s,"get") == 0) GetGame();
!       if (strcmp(s,"save") == 0) SaveGame();
!       if (strcmp(s,"depth") == 0) ChangeSearchDepth();
!       if (strcmp(s,"random") == 0) dither = 6;
!       if (strcmp(s,"easy") == 0) easy = !easy;
!       if (strcmp(s,"contempt") == 0) SetContempt();
!       if (strcmp(s,"xwndw") == 0) ChangeXwindow();
!       if (strcmp(s,"test") == 0)
          {
            t1 = time(0);
            cnt = 0;
***************
*** 232,246 ****
            rate = cnt / (t2-t1);
            printz("cnt= %ld  rate= %ld\n",cnt,rate);
          }
-       else {
-        ok = VerifyMove(s,0,&mv);
-        if (ok && mv != hint)
-         {
-           Sdepth = 0;
-           ft = 0;
          }
-       }
-     }
      
    ElapsedTime(1);
    if (force)
--- 219,225 ----
***************
*** 252,258 ****
  #ifdef CHESSTOOL
    printf("%d. %s\n",++mycnt2,s);
  #endif CHESSTOOL
-   signal(SIGINT,TerminateSearch); signal(SIGQUIT,TerminateSearch);
  #endif MSDOS
  }
  
--- 231,236 ----
***************
*** 376,391 ****
        printz("%5s ",mvstr1);
      }
    printz("\n");
- #else
- register int i;
-   fprintf(stderr,"%2d%c  %5d %4ld %7ld   ",Sdepth,ch,score,et,NodeCnt);
-   for (i = 1; bstline[i] > 0; i++)
-     {
-       algbr((short)(bstline[i] >> 8),(short)(bstline[i] & 0xFF),false);
-       if (i == 9 || i == 17) fprintf(stderr,"\n                          ");
-       fprintf(stderr,"%5s ",mvstr1);
-     }
-   fprintf(stderr,"\n");
  #endif
  }
  
--- 354,359 ----
***************
*** 394,409 ****
  short side;
  {
  #ifndef MSDOS
-   signal(SIGINT,TerminateSearch); signal(SIGQUIT,TerminateSearch);
  #endif
  #ifndef CHESSTOOL
    printz("\nMove# %d    Target= %ld    Clock: %ld\n",
            TCmoves-TimeControl.moves[side]+1,
            ResponseTime,TimeControl.clock[side]);
- #else
-   fprintf(stderr,"\nMove# %d    Target= %ld    Clock: %ld\n",
-           TCmoves-TimeControl.moves[side]+1,
-           ResponseTime,TimeControl.clock[side]);
  #endif
  }
  
--- 362,372 ----
***************
*** 430,451 ****
        ListGame();
        exit(0);
      }
- 
-   fprintf(stderr,"Nodes= %ld  Eval= %ld  Hash= %ld  Rate= %ld  ",
-           NodeCnt,EvalNodes,HashCnt,evrate);
-   fprintf(stderr,"CPU= %.2ld:%.2ld.%.2ld\n\n",
-           cputimer/6000,(cputimer % 6000)/100,cputimer % 100);
-           
-   if (root->flags & epmask) UpdateDisplay(0,0,1,0);
-   else UpdateDisplay(root->f,root->t,0,root->flags & cstlmask);
-   fprintf(stderr,"My move is: %s\n\n",mvstr1);
-   /* if (beep) fprintf(stderr,"%c",7); */
-   
-   if (root->flags & draw) fprintf(stderr,"Draw game!\n");
-   else if (root->score == -9999) fprintf(stderr,"opponent mates!\n");
-   else if (root->score == 9998) fprintf(stderr,"computer mates!\n");
-   else if (root->score < -9000) fprintf(stderr,"opponent will soon mate!\n");
-   else if (root->score > 9000)  fprintf(stderr,"computer will soon mate!\n");
  #else
    printz("Nodes= %ld  Eval= %ld  Hash= %ld  Rate= %ld  ",
            NodeCnt,EvalNodes,HashCnt,evrate);
--- 393,398 ----
***************
*** 465,474 ****
  #endif CHESSTOOL
  }
  
- #include <sys/time.h>
  
- static struct timeval poll;
- 
  ElapsedTime(iop)
  short iop;
  
--- 412,418 ----
***************
*** 479,489 ****
  */
  
  {
-   if (ahead) {
- 	int in= 1;
- 	if (select(32, &in, 0, 0, &poll))
- 		timeout= true;
-   }
    et = time((long *)0) - time0;
    if (et < 0) et = 0;
    ETnodes += 50;
--- 423,428 ----
***************
*** 583,589 ****
  struct BookEntry *entry;
  unsigned short mv,*mp,tmp[100];
  
!   if ((fd = fopen("/usr/local/lib/gnuchess.book","r")) != NULL)
      {
  /*
        setvbuf(fd,buffr,_IOFBF,2048);
--- 522,528 ----
  struct BookEntry *entry;
  unsigned short mv,*mp,tmp[100];
  
!   if ((fd = fopen("/usr/games/lib/gnuchess.book","r")) != NULL)
      {
  /*
        setvbuf(fd,buffr,_IOFBF,2048);
***************
*** 608,616 ****
              i = 0; side = white;
            }
        fclose(fd);
-     } else {
- 	fprintf(stderr, "No Book!\n");
- 	exit(1);
      }
  }
  
--- 547,552 ----
***************
*** 784,791 ****
  {
  #ifndef CHESSTOOL
    printz("%s\n");
- #else
-   printz("%s\n",s);
  #endif CHESSTOOL
  }
  
--- 720,725 ----
*** uxdsp.c	Fri Dec  8 09:37:23 1989
--- org/uxdsp.c	Sun May  7 21:12:53 1989
***************
*** 41,49 ****
  #define scanz fflush(stdout),scanw
  #define printz printw
  
- seteasy()
- {
- }
  
  Initialize()
  {
--- 41,46 ----
***************
*** 325,331 ****
    gotoXY(40,23); printz("Transposition table: ");
    if (hashflag) printz("ON"); else printz("OFF");
    refresh();
!   getchar(); /*  while (getchar() != 27); */
    ClrScreen();
    UpdateDisplay(0,0,1,0);
  }
--- 322,328 ----
    gotoXY(40,23); printz("Transposition table: ");
    if (hashflag) printz("ON"); else printz("OFF");
    refresh();
!   while (getchar() != 27);
    ClrScreen();
    UpdateDisplay(0,0,1,0);
  }
***************
*** 569,575 ****
  struct BookEntry *entry;
  unsigned short mv,*mp,tmp[100];
  
!   if ((fd = fopen("/usr/local/lib/gnuchess.book","r")) != NULL)
      {
        Book = NULL;
        i = 0; side = white;
--- 566,572 ----
  struct BookEntry *entry;
  unsigned short mv,*mp,tmp[100];
  
!   if ((fd = fopen("gnuchess.book","r")) != NULL)
      {
        Book = NULL;
        i = 0; side = white;
***************
*** 591,599 ****
              i = 0; side = white;
            }
        fclose(fd);
-     } else {
- 	fprintf(stderr, "No Book!\n");
- 	exit(1);
      }
  }
  
--- 588,593 ----
No differences encountered
*** Makefile	Fri Dec  8 08:47:20 1989
--- org/Makefile	Thu Apr 27 04:59:51 1989
***************
*** 37,51 ****
  	cc -o gnuchessr gnuchess.o nondsp.o
  
  gnuchess.o: gnuchess.c
! 	cc -O -c gnuchess.c
! 	#cc -DCHESSTOOL -O -c gnuchess.c
  
  uxdsp.o: uxdsp.c
  	cc -O -c uxdsp.c
  
  nondsp.o: nondsp.c
! 	cc -O -c nondsp.c
! 	#cc -DCHESSTOOL -O -c nondsp.c
  
  distribution:
  	tar cf - version.h gnuchess.h gnuchess.c uxdsp.c nondsp.c Xchess gnuchess.book DOCUMENTATION Makefile > gnuchess.tar
--- 37,49 ----
  	cc -o gnuchessr gnuchess.o nondsp.o
  
  gnuchess.o: gnuchess.c
! 	cc -DCHESSTOOL -O -c gnuchess.c
  
  uxdsp.o: uxdsp.c
  	cc -O -c uxdsp.c
  
  nondsp.o: nondsp.c
! 	cc -DCHESSTOOL -O -c nondsp.c
  
  distribution:
  	tar cf - version.h gnuchess.h gnuchess.c uxdsp.c nondsp.c Xchess gnuchess.book DOCUMENTATION Makefile > gnuchess.tar
***************
*** 52,57 ****
  	compress gnuchess.tar
  
  install:
! 	cp gnuchessr /usr/local/gnuchessr
! 	cp gnuchess /usr/local/gnuchess
! 	cp gnuchess.book /usr/local/lib/gnuchess.book
--- 50,55 ----
  	compress gnuchess.tar
  
  install:
! 	cp gnuchessr /usr/games/gnuchess.chesstool
! 	cp gnuchess /usr/games/gnuchess
! 	cp gnuchess.book /usr/games/lib/gnuchess.book
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads