home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1992 March / Source_Code_CD-ROM_Walnut_Creek_March_1992.iso / usenet / altsrcs / 3 / 3383 < prev    next >
Internet Message Format  |  1991-05-20  |  51KB

  1. From: ml@brumuc.muc.sub.org (Marc Laukien)
  2. Newsgroups: alt.sources
  3. Subject: UnixChess04/10
  4. Message-ID: <1991May20.003140.6377@brumuc.muc.sub.org>
  5. Date: 20 May 91 00:31:40 GMT
  6.  
  7. Submitted-by: ml@brumuc.muc.sub.org
  8. Archive-name: UnixChess/part04
  9.  
  10. ---- Cut Here and feed the following to sh ----
  11. #!/bin/sh
  12. # this is chess.04 (part 4 of UnixChess)
  13. # do not concatenate these parts, unpack them in order with /bin/sh
  14. # file ad/tour_comp.c continued
  15. #
  16. if test ! -r _shar_seq_.tmp; then
  17.     echo 'Please unpack part 1 first!'
  18.     exit 1
  19. fi
  20. (read Scheck
  21.  if test "$Scheck" != 4; then
  22.     echo Please unpack part "$Scheck" next!
  23.     exit 1
  24.  else
  25.     exit 0
  26.  fi
  27. ) < _shar_seq_.tmp || exit 1
  28. if test ! -f _shar_wnt_.tmp; then
  29.     echo 'x - still skipping ad/tour_comp.c'
  30. else
  31. echo 'x - continuing file ad/tour_comp.c'
  32. sed 's/^X//' << 'SHAR_EOF' >> 'ad/tour_comp.c' &&
  33. X        else if((farbe=='w' && W_IS_OPP())
  34. X             || (farbe=='s' && B_IS_OPP()))
  35. X        {    /* Computerzug    */
  36. X            int    x;
  37. X
  38. X            mvaddstr(2,MPOS,thinking);/* Status ausgeben    */
  39. X            move(23,79);
  40. X            refresh();
  41. X
  42. X            schach("comp",ptr);    /* Zug holen    */
  43. X
  44. X            ad_brett();        /* Brett aufbauen    */
  45. X
  46. X            schach("info",ptr);    /* Info holen    */
  47. X            farbe=ptr[0][0];    /* Farbe am Zug    */
  48. X
  49. X            move(2,MPOS);        /* Meldung loeschen    */
  50. X            for(x=stdscr->_curx;x<79;x++)    /* loeschen    */
  51. X                mvaddch(stdscr->_cury,x,(int)' ');
  52. X        }
  53. X        else
  54. X        /*--- Spieler ------------------------------------------*/
  55. X        {
  56. X            ad_read(0,&ch,1);    /* einlesen    */
  57. X
  58. X            if(isupper(ch))        /* gross ?    */
  59. X                ch=tolower(ch);
  60. X
  61. X            ad_flush();    /* restliche Zeichen wegwerfen    */
  62. X
  63. X            ret=ad_domenu(ch);    /* auswerten        */
  64. X
  65. X            if(ret==0)        /* Ende ?        */
  66. X            {
  67. X                schach("info",ptr);    /* Info holen    */
  68. X
  69. X                if(atoi(ptr[1]) != old_moves)
  70. X                {        /* veraendert ?        */
  71. X                    ad_lock();
  72. X                    sprintf(s,"save %s",stdname);
  73. X                    schach(s,ptr);    /* Speichern    */
  74. X                    ad_unlock();
  75. X                }
  76. X                break;
  77. X            }
  78. X            else if(ret==2)        /* Aufgeben ?        */
  79. X                if(ad_sure('a'))
  80. X                {
  81. X                    move(3,MPOS);
  82. X
  83. X                    addstr(wei==0 ? w_up:b_up);
  84. X                    ende = wei==0 ? W_AUFG:S_AUFG;
  85. X                }
  86. X        }
  87. X
  88. X        /*--- alles ausgeben -----------------------------------*/
  89. X
  90. X        move(23,79);        /* Cursor weg        */
  91. X        refresh();        /* ausgeben        */
  92. X    }
  93. X
  94. X    stdname[0]='\0';    /* Kein Standardname    */
  95. }
  96. SHAR_EOF
  97. echo 'File ad/tour_comp.c is complete' &&
  98. chmod 0644 ad/tour_comp.c ||
  99. echo 'restore of ad/tour_comp.c failed'
  100. Wc_c="`wc -c < 'ad/tour_comp.c'`"
  101. test 3534 -eq "$Wc_c" ||
  102.     echo 'ad/tour_comp.c: original size 3534, current size' "$Wc_c"
  103. rm -f _shar_wnt_.tmp
  104. fi
  105. # ============= ad/expire.c ==============
  106. if test -f 'ad/expire.c' -a X"$1" != X"-c"; then
  107.     echo 'x - skipping ad/expire.c (File already exists)'
  108.     rm -f _shar_wnt_.tmp
  109. else
  110. > _shar_wnt_.tmp
  111. echo 'x - extracting ad/expire.c (Text)'
  112. sed 's/^X//' << 'SHAR_EOF' > 'ad/expire.c' &&
  113. /****************************************************************/
  114. /*                                */
  115. /*    XChess V2.7 Adapter: Curses                */
  116. /*                                */
  117. /*    (c) 1991 by Marc Laukien                */
  118. /*                                */
  119. /*    Programmteil:    Expire                    */
  120. /*                                */
  121. /****************************************************************/
  122. X
  123. #include <sys/types.h>
  124. #include <sys/stat.h>
  125. #include <dirent.h>
  126. #include <string.h>
  127. #include <stdio.h>
  128. #include <curses.h>
  129. X
  130. #include "ad.h"
  131. X
  132. /****************************************************************/
  133. /*    Expire                            */
  134. /****************************************************************/
  135. X
  136. void    ad_expire()
  137. X
  138. {
  139. X    char    c;
  140. X    int    i,j;
  141. X    DIR    *dir;    /* Directory - Struktur        */
  142. X    struct    dirent    *dp;    /* Directorypointer    */
  143. X    char    str[STRLEN],str2[STRLEN*5];    /* String    */
  144. X    char    *s[3];
  145. X    char    white[STRLEN],black[STRLEN];    /* Namen der Spieler    */
  146. X    struct    stat    sbuf;    /* Statusinfo.    */
  147. X
  148. X    lex();                /* Strings einlesen     */
  149. X
  150. X    if( (dir=opendir("save"))==(DIR *)0 )    /* oeffnen    */
  151. X    {
  152. X        ad_error("");        /* Fehler        */
  153. X        return;
  154. X    }
  155. X
  156. X    while( (dp=readdir(dir)) != (struct dirent *)0 )  /* Ende ?    */
  157. X    {
  158. X        strcpy(str,dp->d_name);    /* kopieren        */
  159. X
  160. X        i=0;
  161. X        j=0;
  162. X        s[j++]=str;
  163. X        while(str[i]!='\0')        /* String aufbereiten    */
  164. X        {
  165. X            if(str[i]=='.')
  166. X            {
  167. X                str[i++]='\0';    /* beenden    */
  168. X                s[j++]=str+i;
  169. X            }
  170. X
  171. X            if(j>=3)
  172. X                break;
  173. X
  174. X            i++;
  175. X        }
  176. X
  177. X        if(j==3)            /* Spiel gefunden ?    */
  178. X        {
  179. X            double    days;
  180. X
  181. X            sprintf(str2,"save/%s.%s.%s",s[0],s[1],s[2]);
  182. X
  183. X            strcpy(white,ad_revid(s[0]));    /* Namen    */
  184. X            strcpy(black,ad_revid(s[1]));
  185. X
  186. X            if(stat(str2,&sbuf)== -1)
  187. X            {
  188. X                ad_error("");    /* Fehler        */
  189. X                return;
  190. X            }
  191. X
  192. X            days=(double)    /* Anzahl der Tage        */
  193. X            (time((long *)0)-(long)sbuf.st_mtime) /
  194. X            (24.0 * 60.0 * 60.0) ;
  195. X
  196. X            if(days > (double)(EXPIRE))    /* ueberschritten ? */
  197. X            {
  198. X            sprintf(str2,"loadinfo save/%s.%s",s[0],s[1]);
  199. X                        /* Kommandostring   */
  200. X            schach(str2,ptr);    /* Info anfordern   */
  201. X
  202. X            if(atoi(ptr[1]) > MOVES /* Mehr als MOVES Zuege ? */
  203. X            && !(ptr[0][0]=='w' && s[0][0]=='~')
  204. X            && !(ptr[0][0]=='s' && s[1][0]=='~'))
  205. X            /* Schwarz oder Weiss am Zug ?    */
  206. X            {
  207. X                /* Highscoreeintrag    */
  208. X
  209. X                switch(ptr[0][0])    /* Farbe    */
  210. X                {
  211. X                case 'w':        /* Weiss    */
  212. X                    ad_addscore_expire('B',white,black);
  213. X                            /* Score     */
  214. X
  215. X                    if(s[0][0] != '~') /* Kein Comp. ? */
  216. X                    {
  217. X                    sprintf(str2,
  218. "echo \"Chess game has timed out !\\nYou've lost the game \\\"%s vs. %s\\\".\" | %s %s",
  219. X                    white,black,MAIL,white);
  220. X                    system(str2);
  221. X                    break;
  222. X                    }
  223. X
  224. X                    if(s[1][0] != '~') /* Kein Comp. ? */
  225. X                    {
  226. X                    sprintf(str2,
  227. "echo \"Chess game has timed out !\\nYou've won the game \\\"%s vs. %s\\\".\" | %s %s",
  228. X                    white,black,MAIL,black);
  229. X                    system(str2);
  230. X                    break;
  231. X                    }
  232. X
  233. X                case 's':        /* Schwarz    */
  234. X                    ad_addscore_expire('W',white,black);
  235. X                            /* Score     */
  236. X
  237. X                     if(s[1][0] != '~') /* Kein Comp. ? */
  238. X                    {
  239. X                    sprintf(str2,
  240. "echo \"Chess game has timed out !\\nYou've lost the game \\\"%s vs. %s\\\".\" | %s %s",
  241. X                    white,black,MAIL,black);
  242. X                    system(str2);
  243. X                    break;
  244. X                    }
  245. X
  246. X                    if(s[0][0] != '~') /* Kein Comp. ? */
  247. X                    {
  248. X                    sprintf(str2,
  249. "echo \"Chess game has timed out !\\nYou've won the game \\\"%s vs. %s\\\".\" | %s %s",
  250. X                    white,black,MAIL,white);
  251. X                    system(str2);
  252. X                    break;
  253. X                    }
  254. X                }
  255. X            }
  256. X            else        /* Kein Verlierer    */
  257. X            {
  258. X                if(s[0][0] != '~')     /* Kein Comp. ? */
  259. X                {
  260. X                sprintf(str2,
  261. "echo \"Chess game has timed out !\\nThe game \\\"%s vs. %s\\\" has been removed.\" | %s %s",
  262. X                white,black,MAIL,white);
  263. X                system(str2);
  264. X                }
  265. X
  266. X                if(s[1][0] != '~')     /* Kein Comp. ? */
  267. X                {
  268. X                sprintf(str2,
  269. "echo \"Chess game has timed out !\\nThe game \\\"%s vs. %s\\\" has been removed.\" | %s %s",
  270. X                white,black,MAIL,black);
  271. X                system(str2);
  272. X                }
  273. X            }
  274. X
  275. X            /* Spiel loeschen  */
  276. X            sprintf(str2,"save/%s.%s.ch",s[0],s[1]);
  277. X            if(unlink(str2) == -1)    /* loeschen        */
  278. X                ad_error("");
  279. X            }
  280. X            else if(days > (double)(EXPIRE)-3.0) 
  281. X            {                /* Noch 3 Tage     */
  282. X                if(s[0][0] != '~')     /* Kein Comp. ? */
  283. X                {
  284. X                sprintf(str2,
  285. "echo \"Attention !\\nThe game \\\"%s vs. %s\\\" will expire in %d days.\" | %s %s",
  286. X                white,black,
  287. X                (int)(EXPIRE) - (int)days,
  288. X                MAIL,white);
  289. X                system(str2);
  290. X                }
  291. X
  292. X                if(s[1][0] != '~')     /* Kein Comp. ? */
  293. X                {
  294. X                sprintf(str2,
  295. "echo \"Attention !\\nThe game \\\"%s vs. %s\\\" will expire in %d days.\" | %s %s",
  296. X                white,black,
  297. X                (int)(EXPIRE) - (int)days,
  298. X                MAIL,black);
  299. X                system(str2);
  300. X                }
  301. X            }
  302. X
  303. X        }    /* Ende Spiel gefunden    */
  304. X
  305. X    }    /* Ende Directory lesen    */
  306. X
  307. X    closedir(dir);
  308. }
  309. SHAR_EOF
  310. chmod 0644 ad/expire.c ||
  311. echo 'restore of ad/expire.c failed'
  312. Wc_c="`wc -c < 'ad/expire.c'`"
  313. test 4458 -eq "$Wc_c" ||
  314.     echo 'ad/expire.c: original size 4458, current size' "$Wc_c"
  315. rm -f _shar_wnt_.tmp
  316. fi
  317. # ============= ad/setup.c ==============
  318. if test -f 'ad/setup.c' -a X"$1" != X"-c"; then
  319.     echo 'x - skipping ad/setup.c (File already exists)'
  320.     rm -f _shar_wnt_.tmp
  321. else
  322. > _shar_wnt_.tmp
  323. echo 'x - extracting ad/setup.c (Text)'
  324. sed 's/^X//' << 'SHAR_EOF' > 'ad/setup.c' &&
  325. /****************************************************************/
  326. /*                                */
  327. /*    XChess V2.7 Adapter: Curses                */
  328. /*                                */
  329. /*    (c) 1991 by Marc Laukien                */
  330. /*                                */
  331. /*    Programmteil:    Setup                    */
  332. /*                                */
  333. /****************************************************************/
  334. X
  335. #include <curses.h>
  336. #include <stdio.h>
  337. #include <ctype.h>
  338. #include <string.h>
  339. #include "ad.h"
  340. X
  341. static    void    ad_piece();
  342. X
  343. /****************************************************************/
  344. /*    Setupmenue                        */
  345. /****************************************************************/
  346. X
  347. void    ad_setup()
  348. X
  349. {
  350. X    int     i;            /* Zeile        */
  351. X    char    ch;
  352. X
  353. X    if(TURNIER())    /* Turnierspiel ?    */
  354. X    {
  355. X        ad_error(not_allowed);
  356. X        return;
  357. X    }
  358. X
  359. X    setupwin=newwin(11,27,11,50);        /* neues setupwindow    */
  360. X    box(setupwin,0,0);            /* mit Rahmen        */
  361. X
  362. X    for(i=0;i<5;i++)
  363. X    {
  364. X        wmove(setupwin,i+2,2);        /* positionieren    */
  365. X        waddstr(setupwin,smenu[i]+1);    /* ausgeben        */
  366. X    }
  367. X
  368. X    wrefresh(setupwin);            /* ausgeben        */
  369. X
  370. X    do
  371. X    {
  372. X        touchwin(stdscr);
  373. X        wnoutrefresh(stdscr);
  374. X
  375. X        touchwin(setupwin);
  376. X
  377. X        wmove(setupwin,5,1+strlen(smenu[3]));    /* Farbe am Zug    */
  378. X        for(i=1+strlen(smenu[3]);i<26;i++)
  379. X            waddstr(setupwin," ");        /* loschen    */
  380. X
  381. X        wmove(setupwin,5,1+strlen(smenu[3]));
  382. X
  383. X        if(farbe=='w')
  384. X            waddstr(setupwin,white);
  385. X        else
  386. X            waddstr(setupwin,black);
  387. X
  388. X        wnoutrefresh(setupwin);
  389. X        doupdate();
  390. X
  391. X        move(23,79);
  392. X        refresh();
  393. X
  394. X        ad_read(0,&ch,1);    /* einlesen    */
  395. X
  396. X        if(isupper(ch))        /* gross ?    */
  397. X            ch=tolower(ch);
  398. X
  399. X        ad_flush();    /* restliche Zeichen wegwerfen    */
  400. X
  401. X        if(ch<='h' && ch>='a')
  402. X            ad_piece(ch);
  403. X        else if(ch == smenu[0][0])    /*** Laden    ***/
  404. X            ad_load();
  405. X        else if(ch == smenu[1][0])    /*** Save    ***/
  406. X            ad_save();
  407. X        else if(ch == smenu[2][0])    /*** Loeschen    ***/
  408. X        {
  409. X            schach("loeschen",ptr);
  410. X            ad_brett();
  411. X        }
  412. X        else if(ch == smenu[3][0])    /*** Farbe wechseln ***/
  413. X        {
  414. X            if(farbe == 'w')    /* Weiss ?    */
  415. X            {
  416. X                farbe = 's';    /* aendern    */
  417. X                schach("schwarz",ptr);
  418. X            }
  419. X            else            /* Schwarz    */
  420. X            {
  421. X                farbe = 'w';    /* aendern    */
  422. X                schach("weiss",ptr);
  423. X            }
  424. X        }
  425. X        else if(ch != smenu[4][0])
  426. X            beep();
  427. X    }
  428. X    while(ch != smenu[4][0]);    /* Ende ?        */
  429. X
  430. X    delwin(setupwin);        /* Fenster aus        */
  431. X    setupwin=(WINDOW *)0;
  432. X    touchwin(stdscr);
  433. }
  434. X
  435. static    void    ad_piece(ch)
  436. X
  437. char    ch;
  438. {
  439. X    char    str[STRLEN],str2[STRLEN];    /* String    */
  440. X    int    i;
  441. X    static    char    *ofigtab="bsltdkBSLTDK.";
  442. X
  443. X    wmove(setupwin,9,2);        /* in Position            */
  444. X    strcpy(str2,figtab);        /* Space durch Punkt ersetzen    */
  445. X    str2[strlen(str2)-1]='.';
  446. X    waddstr(setupwin,str2);        /* Figurenliste    */
  447. X
  448. X    strcpy(str,"setze ");        /* aufbereiten    */
  449. X
  450. X    wmove(setupwin,8,2);        /* in Position    */
  451. X    waddstr(setupwin,doset);    /* Meldung    */
  452. X    waddch(setupwin,ch|A_UNDERLINE);        /* ausgeben    */
  453. X    sprintf(str+strlen(str),"%%c%c",(char)ch);    /* aufbereiten    */
  454. X    wrefresh(setupwin);
  455. X
  456. l1:    ad_read(0,&ch,1);    /* einlesen    */
  457. X    if(ch=='\b')        /* zurueck ?    */
  458. X    {
  459. X        waddstr(setupwin,"\b \b");
  460. X        str[strlen(str)-1]=0;
  461. X        wrefresh(setupwin);
  462. X        goto l5;
  463. X    }
  464. X    if(ch<(int)'1' || ch>(int)'8')
  465. X    {
  466. X        beep();
  467. X        goto l1;
  468. X    }
  469. X    waddch(setupwin,ch|A_UNDERLINE);    /* ausgeben    */
  470. X    sprintf(str+strlen(str),"%c",(char)ch);    /* aufbereiten    */
  471. X    waddch(setupwin,(int)'='|A_UNDERLINE);
  472. X    wrefresh(setupwin);
  473. X    
  474. l2:    ad_read(0,&ch,1);        /* einlesen    */
  475. X    if(ch=='\b')        /* zurueck ?    */
  476. X    {
  477. X        waddstr(setupwin,"\b \b");
  478. X        str[strlen(str)-1]=0;
  479. X        waddstr(setupwin,"\b \b");
  480. X        str[strlen(str)-1]=0;
  481. X        wrefresh(setupwin);
  482. X        goto l1;
  483. X    }
  484. X
  485. X    for(i=0;str2[i]!='\0';i++)
  486. X        if(str2[i]==ch)
  487. X            break;
  488. X
  489. X    if(figtab[i]=='\0')    /* nicht gefunden    */
  490. X    {
  491. X        beep();
  492. X        goto l2;
  493. X    }
  494. X    waddch(setupwin,ch|A_UNDERLINE);    /* ausgeben    */
  495. X    sprintf(str2,str,ofigtab[i]);        /* aufbereiten    */
  496. X    wrefresh(setupwin);
  497. X
  498. X    schach(str2,ptr);    /* ziehen    */
  499. X    if(ptr[0][0]!='?')    /* zug ok ?    */
  500. X        ad_brett();
  501. X    else            /* falscheingabe    */
  502. X        beep();
  503. X
  504. l5:    wmove(setupwin,8,2);        /* in Position    */
  505. X    for(i=0;i<16;i++)        /* loschen    */
  506. X        waddstr(setupwin," ");
  507. X
  508. X    wmove(setupwin,9,2);        /* in Position    */
  509. X    for(i=0;i<16;i++)        /* loschen    */
  510. X        waddstr(setupwin," ");
  511. X    wrefresh(setupwin);
  512. }
  513. SHAR_EOF
  514. chmod 0644 ad/setup.c ||
  515. echo 'restore of ad/setup.c failed'
  516. Wc_c="`wc -c < 'ad/setup.c'`"
  517. test 3935 -eq "$Wc_c" ||
  518.     echo 'ad/setup.c: original size 3935, current size' "$Wc_c"
  519. rm -f _shar_wnt_.tmp
  520. fi
  521. # ============= br/break.c ==============
  522. if test ! -d 'br'; then
  523.     echo 'x - creating directory br'
  524.     mkdir 'br'
  525. fi
  526. if test -f 'br/break.c' -a X"$1" != X"-c"; then
  527.     echo 'x - skipping br/break.c (File already exists)'
  528.     rm -f _shar_wnt_.tmp
  529. else
  530. > _shar_wnt_.tmp
  531. echo 'x - extracting br/break.c (Text)'
  532. sed 's/^X//' << 'SHAR_EOF' > 'br/break.c' &&
  533. /****************************************************************/
  534. /*                                */
  535. /*    XChess V2.7 Adapter: Curses                */
  536. /*                                */
  537. /*    (c) 1991 by Marc Laukien                */
  538. /*                                */
  539. /*    Programmteil:    Programmunterbrechung            */
  540. /*                                */
  541. /****************************************************************/
  542. X
  543. #include <signal.h>
  544. #include <fcntl.h>
  545. #include <stdio.h>
  546. X
  547. /****************************************************************/
  548. /*    Hauptprogramm                        */
  549. /****************************************************************/
  550. X
  551. main()
  552. X
  553. {
  554. X    int    ppid;                /* Parent Process ID    */
  555. X    char    c,c2;
  556. X    int     flags;                /* Flags fuer read()     */
  557. X
  558. X    ppid=getppid();
  559. X
  560. X    flags=fcntl(0,F_GETFL,0);        /* flags retten     */
  561. X
  562. X    while(1)
  563. X    {
  564. X        read(0,&c,1);            /* Zeichen einlesen    */
  565. X
  566. X        /* Buffer leeren    */
  567. X        fcntl(0,F_SETFL,flags | O_NDELAY);    /* blockierung aus */
  568. X        while(read(0,&c2,1));            /* Zeichen lesen   */
  569. X        fcntl(0,F_SETFL,flags & ~O_NDELAY);    /* blockierung ein */
  570. X
  571. X        switch(c)
  572. X        {
  573. X        case (char)27:            /* Escape        */
  574. X            kill(ppid,SIGUSR2);
  575. X            break;
  576. X
  577. X        case (char)12:            /* ^ L -> refresh    */
  578. X            kill(ppid,SIGUSR1);
  579. X            break;
  580. X
  581. X        default:
  582. X            write(1,&c,1);
  583. X            break;
  584. X        }
  585. X    }    
  586. }
  587. SHAR_EOF
  588. chmod 0644 br/break.c ||
  589. echo 'restore of br/break.c failed'
  590. Wc_c="`wc -c < 'br/break.c'`"
  591. test 1141 -eq "$Wc_c" ||
  592.     echo 'br/break.c: original size 1141, current size' "$Wc_c"
  593. rm -f _shar_wnt_.tmp
  594. fi
  595. # ============= ad/ad.h ==============
  596. if test -f 'ad/ad.h' -a X"$1" != X"-c"; then
  597.     echo 'x - skipping ad/ad.h (File already exists)'
  598.     rm -f _shar_wnt_.tmp
  599. else
  600. > _shar_wnt_.tmp
  601. echo 'x - extracting ad/ad.h (Text)'
  602. sed 's/^X//' << 'SHAR_EOF' > 'ad/ad.h' &&
  603. /****************************************************************/
  604. /* Includefile fuer XChess V2.7 Curses Adapter            */
  605. /* (c) 1991 by M.Laukien                    */
  606. /****************************************************************/
  607. X
  608. #define PTR        200    /* Anzahl der moeglichen Antworten    */
  609. #define STRLEN        81    /* Laenge von Strings            */
  610. #define ADM_RAND    12    /* Einruecken beim Administrationsmenue    */
  611. #define    MPOS        47    /* Position des Spielmenues        */
  612. X
  613. #define PATT        1    /* Status    */
  614. #define W_MATT        2
  615. #define S_MATT        3
  616. #define W_AUFG        4
  617. #define S_AUFG        5
  618. X
  619. #ifndef    WORKDIR
  620. #define    WORKDIR    "."
  621. #endif
  622. X
  623. #define    UEBUNG()    (gegner[0]=='\0')    /* Uebungsspiel        */
  624. #define    TURNIER()    (gegner[0]!='\0')    /* Turnierspiel        */
  625. #define    TURNGEG()    (gegner[0]!='\0' && gegner[0]!='~')
  626. X                        /* Turnier gegen Gegner    */
  627. #define    TURNCOM()    (gegner[0]=='~')    /* Turnier gegen Comp.    */
  628. X
  629. #define W_IS_USER()    (!wei)        /* Weiss ist User        */
  630. #define B_IS_USER()    (!sch)        /* Schwarz ist User        */
  631. #define W_IS_OPP()    (wei)        /* Weiss ist Gegner        */
  632. #define B_IS_OPP()    (sch)        /* Schwarz ist Gegner        */
  633. X
  634. extern     int    errno;            /* Fehlernummer         */
  635. extern     char    *sys_errlist[];        /* Fehlertexte             */
  636. X
  637. extern    char    *pname;            /* Prgname: argv[0]         */
  638. extern    char    *cwd;            /* Working Directory         */
  639. extern    char    stdname[];        /* Standardname fuers Speichern    */
  640. extern    char    def[];            /* Sprache             */
  641. extern    int    lock;            /* Falls 1: Lock erworben    */
  642. extern    int    curses;            /* Falls 1: Curses an        */
  643. extern    int    inter;            /* Falls 1: Es war ein Interrupt*/
  644. extern    int    break_pid;        /* Prozessid des Unterbrechers    */
  645. extern    WINDOW    *win;            /* Subwindow            */
  646. extern    WINDOW    *setupwin;        /* Setup-Subwindow        */
  647. X
  648. extern    char    *amenu[];            /* Adm.-Menuestrings    */
  649. extern    char    *menu[];            /* Menuestrings        */
  650. extern    char    *smenu[];            /* Setup-Menuestrings    */
  651. extern    char    *info[];            /* Infostrings        */
  652. extern    char    *tr_lv;                /* Trainingslevel    */
  653. extern    char    *to_lv;                /* Turnierlevel        */
  654. extern    char    *press_key;            /* <Taste>        */
  655. extern    char    *tlist;                /* Ueberschrift Turnier    */
  656. extern    char    *ulist;                /* Ueberschrift Training*/
  657. extern    char    *scorelist;            /* Ueberschrift Score    */
  658. extern    char    *sure;                /* Sicherheitsabfrage    */
  659. extern    char    *give_up;            /* Aufg. Abfrage    */
  660. extern    char    *figtab;            /* Figurentab.        */
  661. extern    char    *comp;                /* Computername        */
  662. extern    char    *white,*black;            /* Farben        */
  663. extern    char    *domove;            /* Zug            */
  664. extern    char    *doset;                /* Setup        */
  665. extern    char    *enter;                /* Namen eing.        */
  666. extern    char    *opponent;            /* Gegner eing.        */
  667. extern    char    *error;                /* Fehler        */
  668. extern    char    *not_allowed;            /* nicht erlaubt    */
  669. extern    char    *no_user;            /* kein User        */
  670. extern    char    *figlist;            /* geschl. Fig.        */
  671. extern    char    *ison,*isoff;            /* Ein/Aus        */
  672. extern    char    *thinking;            /* Comp. denkt        */
  673. extern    char    *is_thinking;            /* Gegner denkt        */
  674. extern    char    *load_lib;            /* Lade Eroeffnungen    */
  675. extern    char    *startcmd;            /* Startkommando    */
  676. extern    char    *patt,*w_mate,*b_mate;        /* Status        */
  677. extern    char    *w_chess,*b_chess;
  678. extern    char    *w_up,*b_up;
  679. extern    char    *remis_3;
  680. X
  681. extern    char    farbe;            /* w=weiss,s=schwarz        */
  682. extern    int    wei;            /* 0=Spieler            */
  683. extern    int    sch;            /* 1=Computer oder Gegener    */
  684. extern    char    gegner[];        /* Spielgegner (leer:Computer)    */
  685. extern    int    level;            /* Stufe            */
  686. extern    int    ende;            /* 1:Matt oder Patt        */
  687. extern    int    modus;            /* eingestellter Modus        */
  688. X
  689. extern    int    old_moves;    /* Anzahl der Zuege bei Spielbeginn    */
  690. X
  691. extern    char    ant[PTR][81];        /* Antworten            */
  692. extern    char    *ptr[PTR];        /* Pointer auf Antw.        */
  693. X
  694. extern     char     *getcwd();        /* externe Funktionen        */
  695. extern     char     *getenv();
  696. extern    char    *getlogin();
  697. extern    int    atoi();
  698. extern    int    unlink();
  699. X
  700. extern    void    ad_admin();        /* Administrationsmenue        */
  701. extern    void    ad_game();        /* Spielmenue            */
  702. extern    void    ad_tr_game();        /* Trainingsspiel        */
  703. extern    void    ad_tc_game();        /* Turnierspiel gegen Computer    */
  704. extern    void    ad_tu_game();        /* Turnierspiel gegen Gegner    */
  705. extern    void    ad_game_screen();    /* Spielscreen            */
  706. extern    void    ad_admin_screen();    /* Hauptmenue            */
  707. extern    void    ad_menu();        /* Menue ausgeben        */
  708. extern    void    ad_amenu();        /* Administrationsmenue ausg.    */
  709. extern    void    ad_status();        /* Status ausgeben        */
  710. extern    void    ad_analyse();        /* Analyse ausgabe        */
  711. extern    void    ad_tliste();        /* Turnierliste ausgeben    */
  712. extern    void    ad_uliste();        /* Uebungsspielliste        */
  713. extern    void    ad_break();        /* Denken abbrechen        */
  714. extern    void    ad_brett();        /* Brett ausgeben        */
  715. extern    void    ad_deinit();        /* Deinitialisierungen        */
  716. extern    void    ad_error();        /* Fehlermeldung        */
  717. extern    void    ad_msg();        /* Meldung            */
  718. extern    void    ad_flush();        /* Eingabe leeren        */
  719. extern    void    ad_info();        /* Informationen ausg.        */
  720. extern    void    ad_init();        /* Initialisierungen        */
  721. extern    void    ad_interrupt();        /* Interrupt            */
  722. extern    void    ad_new();        /* Programm Neustart        */
  723. extern    void    ad_remove();        /* Spiel loeschen        */
  724. extern    void    ad_refresh();        /* Refresh-Interrupt        */
  725. extern    void    ad_startint();        /* Interrupt starten        */
  726. extern    void    ad_zug();        /* Zug ausfuehren        */
  727. extern    void    ad_extzug();        /* externen Zug ausfuehren    */
  728. extern    void    ad_load();        /* Spiel laden            */
  729. extern    void    ad_save();        /* Spiel speichern        */
  730. extern    void    ad_lock();        /* File locken            */
  731. extern    void    ad_unlock();        /* File unlocken        */
  732. extern    void    ad_locksc();        /* Score locken            */
  733. extern    void    ad_unlocksc();        /* Score unlocken        */
  734. extern    void    ad_zurueck();        /* Zug zuruecknehmen        */
  735. extern    void    ad_showscore();        /* Highscoreliste ausgeben    */
  736. extern    void    ad_addscore();        /* Score eintragen        */
  737. extern    void    ad_addscore_expire();    /* dito. fuer expire        */
  738. extern    void    ad_expire();        /* Expire            */
  739. extern    void    ad_setup();        /* Setup-Menue            */
  740. X
  741. extern    void    lex();            /* lex-Analyse            */
  742. extern    void    insert();        /* String einfuegen        */
  743. X
  744. extern    char    *ad_name();        /* Name einlesen        */
  745. extern    char    *ad_id();        /* ID-String liefern        */
  746. extern    char    *ad_revid();        /* Name zu ID liefern        */
  747. X
  748. extern    int    ad_domenu();        /* Menueauswertung        */
  749. extern    int    ad_read();        /* Eigenes read()        */
  750. extern    int    ad_sure();        /* Sicherheitsabfrage        */
  751. extern    int    main();            /* Hauptprogramm        */
  752. SHAR_EOF
  753. chmod 0644 ad/ad.h ||
  754. echo 'restore of ad/ad.h failed'
  755. Wc_c="`wc -c < 'ad/ad.h'`"
  756. test 6012 -eq "$Wc_c" ||
  757.     echo 'ad/ad.h: original size 6012, current size' "$Wc_c"
  758. rm -f _shar_wnt_.tmp
  759. fi
  760. # ============= ch/ch.h ==============
  761. if test -f 'ch/ch.h' -a X"$1" != X"-c"; then
  762.     echo 'x - skipping ch/ch.h (File already exists)'
  763.     rm -f _shar_wnt_.tmp
  764. else
  765. > _shar_wnt_.tmp
  766. echo 'x - extracting ch/ch.h (Text)'
  767. sed 's/^X//' << 'SHAR_EOF' > 'ch/ch.h' &&
  768. /****************************************************************/
  769. /*                                */
  770. /*    Includefile fuer XChess    V2.7                */
  771. /*                                */
  772. /*    (c) 1991 by Marc Laukien                */
  773. /*                                */
  774. /****************************************************************/
  775. X
  776. /* Diverse Definitionen    */
  777. X
  778. #define MAXOP        5000            /* Max. Eroeffnungszahl    */
  779. #define    OPTRYS        10            /* Zugriffsversuche    */
  780. #define    MAXSP        200            /* Max. Zuganzahl    */
  781. #define MAXTIEFE    10            /* Max. Rechentiefe    */
  782. #define STRLEN        81            /* Laenge von Strings    */
  783. #define    RAND        2            /* Offset vom Spielfeld */
  784. #define ZLEN        12            /* Zeilenlaenge        */
  785. #define GROE        144            /* Spielfeldgroesse =    */
  786. X                        /* (8+2*RAND)^2        */
  787. #define MAXZUG        200            /* Max. Zugmgl. in zlist*/
  788. #define MATT        1000000L        /* schlechteste Bew.    */
  789. #define TAB        (char)9            /* Tabulator        */
  790. X
  791. typedef    unsigned char    BYTE;            /* sinnvolle Typen     */
  792. typedef unsigned short    WORD;
  793. typedef unsigned long    LWORD;
  794. X
  795. typedef struct spieldaten            /* Spieldatenstruktur     */
  796. {
  797. X    BYTE    brett[GROE];            /* Spielfeld         */
  798. X    BYTE    wkpos,skpos;            /* Koenigsposition    */
  799. X    WORD    zlist[MAXZUG];            /* Zugliste        */
  800. X    long    blist[MAXZUG];            /* Bewertungsliste    */
  801. X    WORD    bzug;                /* beste Zugfolge    */
  802. X    WORD    lzug;                /* letzter Zug        */
  803. X    int    zuege;                /* Anz. der Zuege    */
  804. X    BYTE    farbe;                /* Farbe am Zug        */
  805. X    long    wert;                /* Wert der Stellung    */
  806. X    int    minstufe,maxstufe;        /* Spielstufe        */
  807. X    struct    spieldaten *vorher;        /* Ptr auf Zug davor     */
  808. } SPDAT;
  809. X
  810. typedef struct archivdaten            /* Spieldatenstruktur     */
  811. {                                               /* zur Speicherung    */
  812. X    BYTE    brett[GROE];            /* Spielfeld         */
  813. X    BYTE    wkpos,skpos;            /* Koenigsposition    */
  814. X    WORD    lzug;                /* letzter Zug        */
  815. X    BYTE    farbe;                /* Farbe am Zug        */
  816. X    int    wdh;                /* Wiederholung        */
  817. } ARCHIV;
  818. X
  819. /* Figuren    */
  820. X
  821. #define LEE    0                /* Leeres Feld    */
  822. #define BAU    1                /* Bauer    */
  823. #define XBAU    2                /* nicht bewegt    */
  824. #define SPR    3                /* Springer    */
  825. #define LAE    4                /* Laeufer    */
  826. #define TUR    5                /* Turm        */
  827. #define XTUR    6                /* nicht bewegt    */
  828. #define DAM    7                /* Dame        */
  829. #define KOE    8                /* Koenig    */
  830. #define XKOE    9                /* nicht bewegt    */
  831. X
  832. /* Farben    */
  833. X
  834. #define WEI    16                /* Weiss    */
  835. #define SCH    32                /* Schwarz    */
  836. X
  837. #define SPZ    WEI+SCH                /* Spezialfigur fuer    */
  838. X                        /* die Raender        */
  839. /* Testmakros    */
  840. X
  841. #define _istwei(x)    ((x)&WEI)        /* Test auf Weiss    */
  842. #define _istsch(x)    ((x)&SCH)                /* Test auf Schwarz    */
  843. #define _istnwei(x)    (_istwei(x)&&!_istsch(x))/* Test auf nur Weiss    */
  844. #define _istnsch(x)    (_istsch(x)&&!_istwei(x))/* Test auf nur Schwarz*/
  845. #define _farbe(x)    ((x)&(WEI|SCH))        /* Farbe einer Figur    */
  846. #define _figur(x)    ((x)&0xf)        /* Figur ohne Farbe    */
  847. X
  848. #define _istlee(x)    (!(x))            /* Test auf leeres Feld    */
  849. #define _istbau(x)    (_figur(x)==BAU||_figur(x)==XBAU)
  850. X                        /* Test auf Bauer    */
  851. #define _istxbau(x)    (_figur(x)==XBAU)    /* Test auf unb. Bauer    */
  852. #define _istplbau(x)    (_figur(x)==PLBAU)    /* Test auf pas. Bauer    */
  853. #define _istprbau(x)    (_figur(x)==PRBAU)    /* Test auf pas. Bauer    */
  854. #define _istspr(x)    (_figur(x)==SPR)    /* Test auf Springer    */
  855. #define _istlae(x)    (_figur(x)==LAE)    /* Test auf Laeufer    */
  856. #define _isttur(x)    (_figur(x)==TUR||_figur(x)==XTUR)
  857. X                        /* Test auf Turm    */
  858. #define _istxtur(x)    (_figur(x)==XTUR)    /* Test auf unb. Turm    */
  859. #define _istdam(x)    (_figur(x)==DAM)    /* Test auf Dame    */
  860. #define _istkoe(x)    (_figur(x)==KOE||_figur(x)==XKOE)
  861. X                        /* Test auf Koenig    */
  862. #define _istxkoe(x)    (_figur(x)==XKOE)    /* Test auf unb. Koenig    */
  863. #define _istspz(x)    ((x)==SPZ)        /* Test auf Spezialfig. */
  864. X
  865. /* Zug -> Positionen    */
  866. X
  867. #define _apos(x)    (BYTE)((x)&0xff)    /* alte Position    */
  868. /*#define _npos(x)    *((BYTE*)&(x)+1)    /* neue Position    */
  869. #define    _npos(x)    (BYTE)((x)>>8)        /* neue Position    */
  870. X
  871. /* Positionen -> Koordianten    */
  872. X
  873. #define _xpos(x)    (BYTE)((x)%ZLEN-RAND)    /* x-Koordinate    */
  874. #define _ypos(x)    (BYTE)((x)/ZLEN-RAND)    /* y-Koordinate    */
  875. X
  876. /* Analysefunktion    */
  877. X
  878. #define ANALYSE(x)    ad_analyse(x)
  879. X
  880. /* externe Variable    */
  881. X
  882. extern     int    opnr;            /* Anzahl der Eroeff.        */
  883. extern    int    testopnr;        /* Eroeffnungsnummer zum testen */
  884. extern    WORD    *op[];            /* Eroeffnungen            */
  885. extern    BYTE    op_fa[MAXOP];        /* Farbe fuer die Eroeff. gilt    */
  886. extern    int    noop;            /* 1:Keine Bibliothek        */
  887. extern    SPDAT    spdat;            /* Spieldaten            */
  888. extern    ARCHIV    *archiv[];        /* Archivdaten            */
  889. extern    int    phase;            /* Spielphase            */
  890. extern    int    zaehler;        /* Antwortzaehler        */
  891. extern    int    compzuege;        /* Computerzuege        */
  892. extern    long    varianten;        /* Variantenzaehler        */
  893. extern    long    zeit;            /* Dauer des letzten Zuges    */
  894. extern    long    varprosek;        /* Varianten pro Sek.        */
  895. extern    int    mode;            /* Modus            */
  896. extern    int    stufe;            /* Spielstufe            */
  897. extern    int    beende;            /* Falls 1 Denkvorgang beenden    */
  898. extern    WORD    best_so_far;        /* Bester Zug bis jetzt        */
  899. extern    int    maxtiefe[],mintiefe[];    /* Rechentiefe            */
  900. X                    /* Status des letzten Zuges:    */
  901. extern    int    schlag;            /* falls 1 wurde geschlagen    */
  902. X                    /* oder befoerdert        */
  903. extern    int    gabel;            /* Bauernspiess oder        */
  904. X                    /* Springergabel falls 1    */
  905. X
  906. /* externe Funktionen    */
  907. X
  908. extern  char    *wandle();            /* int. Format in String */
  909. extern    char    *kombination();            /* Kombination in String */
  910. extern    WORD    wandle_inv();            /* String in int. Form.  */
  911. extern    BYTE    wandle_fig();            /* Figur in int. Form.   */
  912. extern    long    bewerte();            /* Zug bewerten         */
  913. extern    long    comp_zug();            /* Computer Zug         */
  914. extern    WORD    bib_zug();            /* Zug aus Bibliothek     */
  915. extern    int    zugliste();            /* Zugliste         */
  916. extern    int    sortliste();            /* Zugliste sortiert     */
  917. extern    int    ziehe();            /* Zug ausfuehren     */
  918. extern    int    zug_test();            /* Zug testen         */
  919. extern    int    save_game();            /* Speichern         */
  920. extern    int    load_game();            /* Laden         */
  921. extern    int    bedrohung();            /* Bedrohung testen     */
  922. extern    int    hole_zurueck();            /* Zurueckholen         */
  923. extern    int     bib_test();            /* Bibliothek testen     */
  924. X
  925. extern    void    brett_aus();            /* Brett ausgeben     */
  926. extern    void    info_aus();            /* Info ausgeben     */
  927. extern    void    zugliste_aus();            /* Zugliste ausgeben     */
  928. extern    void    status_aus();            /* Status ausgeben     */
  929. extern    void    archiviere();            /* Archivieren         */
  930. extern    void    eff_stufe();            /* Stufe einstellen     */
  931. extern    void    init();                /* Initialisieren     */
  932. extern    void    load_open();            /* Eroeffnungen laden     */
  933. SHAR_EOF
  934. chmod 0644 ch/ch.h ||
  935. echo 'restore of ch/ch.h failed'
  936. Wc_c="`wc -c < 'ch/ch.h'`"
  937. test 6139 -eq "$Wc_c" ||
  938.     echo 'ch/ch.h: original size 6139, current size' "$Wc_c"
  939. rm -f _shar_wnt_.tmp
  940. fi
  941. # ============= ch/ph.h ==============
  942. if test -f 'ch/ph.h' -a X"$1" != X"-c"; then
  943.     echo 'x - skipping ch/ph.h (File already exists)'
  944.     rm -f _shar_wnt_.tmp
  945. else
  946. > _shar_wnt_.tmp
  947. echo 'x - extracting ch/ph.h (Text)'
  948. sed 's/^X//' << 'SHAR_EOF' > 'ch/ph.h' &&
  949. /* XChess V2.7                        */
  950. /* Beweglichkeit der Figuren bei optimalen Bedingungen    */
  951. /* ohne Schlagen                    */
  952. X
  953. #define    BWLEE    0
  954. #define    BWBAU    1
  955. #define    BWXBAU    2
  956. #define BWSPR    8
  957. #define    BWLAE    13
  958. #define    BWTUR    14
  959. #define    BWXTUR    9
  960. #define    BWDAM    (BWTUR+BWLAE)
  961. #define    BWKOE    8
  962. #define    BWXKOE    6
  963. X
  964. /* Spielphasen    */
  965. X
  966. #define    EROEFF    0    /* Eroeffnung                */
  967. #define    MITTEL    1    /* Mittelspiel                */
  968. #define    ENDSPI    2    /* Endspiel                */
  969. #define    WKOEOO    10    /* Weisser Koenig ohne Offiziere    */
  970. #define    SKOEOO    11    /* Schwarzer Koenig ohne Offiziere    */    
  971. #define    REMIS    99    /* Remis                */
  972. X
  973. SHAR_EOF
  974. chmod 0644 ch/ph.h ||
  975. echo 'restore of ch/ph.h failed'
  976. Wc_c="`wc -c < 'ch/ph.h'`"
  977. test 557 -eq "$Wc_c" ||
  978.     echo 'ch/ph.h: original size 557, current size' "$Wc_c"
  979. rm -f _shar_wnt_.tmp
  980. fi
  981. # ============= ad/patchlevel.h ==============
  982. if test -f 'ad/patchlevel.h' -a X"$1" != X"-c"; then
  983.     echo 'x - skipping ad/patchlevel.h (File already exists)'
  984.     rm -f _shar_wnt_.tmp
  985. else
  986. > _shar_wnt_.tmp
  987. echo 'x - extracting ad/patchlevel.h (Text)'
  988. sed 's/^X//' << 'SHAR_EOF' > 'ad/patchlevel.h' &&
  989. /*----------------------------------------------------------------------*/
  990. /*                                    */
  991. /*    XChess V2.7:        Current patch level            */
  992. /*                (initial level is zero)            */
  993. /*                                    */
  994. /*----------------------------------------------------------------------*/
  995. X
  996. #define PATCHLEVEL 0
  997. SHAR_EOF
  998. chmod 0644 ad/patchlevel.h ||
  999. echo 'restore of ad/patchlevel.h failed'
  1000. Wc_c="`wc -c < 'ad/patchlevel.h'`"
  1001. test 277 -eq "$Wc_c" ||
  1002.     echo 'ad/patchlevel.h: original size 277, current size' "$Wc_c"
  1003. rm -f _shar_wnt_.tmp
  1004. fi
  1005. # ============= ad/lex.l ==============
  1006. if test -f 'ad/lex.l' -a X"$1" != X"-c"; then
  1007.     echo 'x - skipping ad/lex.l (File already exists)'
  1008.     rm -f _shar_wnt_.tmp
  1009. else
  1010. > _shar_wnt_.tmp
  1011. echo 'x - extracting ad/lex.l (Text)'
  1012. sed 's/^X//' << 'SHAR_EOF' > 'ad/lex.l' &&
  1013. /*----------------------------------------------------------------------*/
  1014. /*                                    */
  1015. /*    Name:            Chess V2.7                */
  1016. /*                                                                    */
  1017. /*    Programmteil:        externe Strings einlesen        */
  1018. /*                                    */
  1019. /*    Library:        UNIX V    + lex                */
  1020. /*                                    */
  1021. /*    Autor:            Marc Laukien                */
  1022. /*                                    */
  1023. /*----------------------------------------------------------------------*/
  1024. X
  1025. %{
  1026. #include    <string.h>
  1027. #include    <ctype.h>
  1028. X
  1029. extern    char    *malloc();
  1030. extern    void    exit();
  1031. X
  1032. extern    char    *pname;            /* Programmname        */
  1033. extern    char    def[];            /* Definitionfile    */
  1034. extern     int    errno;            /* Fehlernummer     */
  1035. extern     char    *sys_errlist[];        /* Fehlertexte         */
  1036. X
  1037. extern    int    atoi();
  1038. X
  1039. void    lex();
  1040. static    void    insert();
  1041. static    int    getnr();
  1042. X
  1043. static    char     str[100];        /* String         */
  1044. X
  1045. char    *amenu[10];            /* Adm.menuestrings    */
  1046. char    *menu[10];            /* Menuestrings        */
  1047. char    *smenu[5];            /* Setup-Menuestrings    */
  1048. char    *info[10];            /* Infostrings        */
  1049. char    *tr_lv;                /* Trainingslevel    */
  1050. char    *to_lv;                /* Turnierlevel        */
  1051. char    *press_key;            /* <Taste>        */
  1052. char    *tlist;                /* Ueberschrift Turnier    */
  1053. char    *ulist;                /* Ueberschrift Training*/
  1054. char    *scorelist;            /* Ueberschrift Score    */
  1055. char    *sure;                /* Sicherheitsabfrage    */
  1056. char    *give_up;            /* Aufg. Abfrage    */
  1057. char    *figtab;            /* Figurentab.        */
  1058. char    *comp;                /* Computername        */
  1059. char    *white,*black;            /* Farben        */
  1060. char    *domove;            /* Zug            */
  1061. char    *doset;                /* Setup        */
  1062. char    *enter;                /* Namen eing.        */
  1063. char    *opponent;            /* Gegner eing.        */
  1064. char    *error;                /* Fehler        */
  1065. char    *not_allowed;            /* nicht erlaubt    */
  1066. char    *no_user;            /* kein User        */
  1067. char    *figlist;            /* geschl. Fig.        */
  1068. char    *ison,*isoff;            /* Ein/Aus        */
  1069. char    *thinking;            /* Comp. denkt        */
  1070. char    *is_thinking;            /* Gegner denkt        */
  1071. char    *load_lib;            /* Lade Eroeffnungen    */
  1072. char    *startcmd;            /* Startkommando    */
  1073. char    *patt,*w_mate,*b_mate;        /* Status        */
  1074. char    *w_up,*b_up;
  1075. char    *w_chess,*b_chess;
  1076. char    *remis_3;
  1077. X
  1078. %}
  1079. X
  1080. T    [ \t]
  1081. S    \".*\"
  1082. N    "["[0-9]*"]"
  1083. %%
  1084. #.*\n            { ;    /* Kommentar */        }
  1085. "amenu"{N}{T}*{S}    {    insert(&amenu[getnr()]);}
  1086. "menu"{N}{T}*{S}    {    insert(&menu[getnr()]);    }
  1087. "smenu"{N}{T}*{S}    {    insert(&smenu[getnr()]);}
  1088. "info"{N}{T}*{S}    {    insert(&info[getnr()]);    }
  1089. "tr_lv"{T}*{S}        {    insert(&tr_lv);        }
  1090. "to_lv"{T}*{S}        {    insert(&to_lv);        }
  1091. "press_key"{T}*{S}    {    insert(&press_key);    }
  1092. "tlist"{T}*{S}        {    insert(&tlist);        }
  1093. "ulist"{T}*{S}        {    insert(&ulist);        }
  1094. "scorelist"{T}*{S}    {    insert(&scorelist);    }
  1095. "sure"{T}*{S}        {    insert(&sure);        }
  1096. "give_up"{T}*{S}    {    insert(&give_up);    }
  1097. "comp"{T}*{S}        {    insert(&comp);        }
  1098. "figtab"{T}*{S}        {    insert(&figtab);    }
  1099. "white"{T}*{S}        {    insert(&white);        }
  1100. "black"{T}*{S}        {    insert(&black);        }
  1101. "domove"{T}*{S}        {    insert(&domove);    }
  1102. "doset"{T}*{S}        {    insert(&doset);        }
  1103. "enter"{T}*{S}        {    insert(&enter);        }
  1104. "opponent"{T}*{S}    {    insert(&opponent);    }
  1105. "error"{T}*{S}        {    insert(&error);        }
  1106. "not_allowed"{T}*{S}    {    insert(¬_allowed);    }
  1107. "no_user"{T}*{S}    {    insert(&no_user);    }
  1108. "figlist"{T}*{S}    {    insert(&figlist);    }
  1109. "ison"{T}*{S}        {    insert(&ison);        }
  1110. "isoff"{T}*{S}        {    insert(&isoff);        }
  1111. "thinking"{T}*{S}    {    insert(&thinking);    }
  1112. "is_thinking"{T}*{S}    {    insert(&is_thinking);    }
  1113. "load_lib"{T}*{S}    {    insert(&load_lib);    }
  1114. "startcmd"{T}*{S}    {    insert(&startcmd);    }
  1115. "patt"{T}*{S}        {    insert(&patt);        }
  1116. "w_mate"{T}*{S}        {    insert(&w_mate);    }
  1117. "b_mate"{T}*{S}        {    insert(&b_mate);    }
  1118. "w_up"{T}*{S}        {    insert(&w_up);        }
  1119. "b_up"{T}*{S}        {    insert(&b_up);        }
  1120. "w_chess"{T}*{S}    {    insert(&w_chess);    }
  1121. "b_chess"{T}*{S}    {    insert(&b_chess);    }
  1122. "remis_3"{T}*{S}    {    insert(&remis_3);    }
  1123. X
  1124. [ \t\n]            { ;    /* Leerstellen, Tabs und Newline ignorieren */    }
  1125. .            {     fprintf(stderr,
  1126. X                "%s: syntax error in %s at line %d\n"
  1127. X                ,pname,str,yylineno);
  1128. X                ad_deinit();
  1129. X                exit(1);
  1130. X            }    /* Fehler */
  1131. %%
  1132. X
  1133. void    lex()
  1134. {
  1135. X    FILE *fp;                /* Filepointer         */
  1136. X
  1137. X    sprintf(str,"def.%s",def);        /* aufbereiten */
  1138. X    if((fp=fopen(str,"r"))==(FILE *)0)    /* oeffnen */
  1139. X    {
  1140. X        fprintf(stderr,"%s: %s\n",pname,sys_errlist[errno]);
  1141. X        ad_deinit();
  1142. X        exit(1);
  1143. X    }
  1144. X
  1145. X    yyin = fp;        /* Input setzen */
  1146. X
  1147. X    yylex();
  1148. X
  1149. X    fclose(fp);        /* schliessen */
  1150. }
  1151. X
  1152. static    void    insert(pt)    /* String einfuegen */
  1153. char     **pt;
  1154. {
  1155. X    char st[100];
  1156. X    char *s;
  1157. X    int i;
  1158. X
  1159. X    s=st;
  1160. X
  1161. X    strcpy(s,yytext);
  1162. X    while(*s != '"')
  1163. X        s++;
  1164. X    s++;
  1165. X
  1166. X    i=0;
  1167. X    while(s[i] != '"')
  1168. X        i++;
  1169. X    s[i]=0;
  1170. X
  1171. X    *pt=(char *)malloc((unsigned)(strlen(s)+1));
  1172. X    strcpy(*pt,s);
  1173. }
  1174. X
  1175. static    int    getnr()        /* Stringnummer holen */
  1176. {
  1177. X    char st[100];
  1178. X    char *s;
  1179. X    int i;
  1180. X
  1181. X    s=st;
  1182. X
  1183. X    strcpy(s,yytext);
  1184. X    while(!isdigit(*s))
  1185. X        s++;
  1186. X
  1187. X    i=0;
  1188. X    while(isdigit(s[i]))
  1189. X        i++;
  1190. X    s[i]=0;
  1191. X
  1192. X    return(atoi(s));
  1193. }
  1194. X
  1195. SHAR_EOF
  1196. chmod 0644 ad/lex.l ||
  1197. echo 'restore of ad/lex.l failed'
  1198. Wc_c="`wc -c < 'ad/lex.l'`"
  1199. test 4484 -eq "$Wc_c" ||
  1200.     echo 'ad/lex.l: original size 4484, current size' "$Wc_c"
  1201. rm -f _shar_wnt_.tmp
  1202. fi
  1203. # ============= ad/patchlevel.h ==============
  1204. if test -f 'ad/patchlevel.h' -a X"$1" != X"-c"; then
  1205.     echo 'x - skipping ad/patchlevel.h (File already exists)'
  1206.     rm -f _shar_wnt_.tmp
  1207. else
  1208. > _shar_wnt_.tmp
  1209. echo 'x - extracting ad/patchlevel.h (Text)'
  1210. sed 's/^X//' << 'SHAR_EOF' > 'ad/patchlevel.h' &&
  1211. /*----------------------------------------------------------------------*/
  1212. /*                                    */
  1213. /*    XChess V2.7:        Current patch level            */
  1214. /*                (initial level is zero)            */
  1215. /*                                    */
  1216. /*----------------------------------------------------------------------*/
  1217. X
  1218. #define PATCHLEVEL 0
  1219. SHAR_EOF
  1220. chmod 0644 ad/patchlevel.h ||
  1221. echo 'restore of ad/patchlevel.h failed'
  1222. Wc_c="`wc -c < 'ad/patchlevel.h'`"
  1223. test 277 -eq "$Wc_c" ||
  1224.     echo 'ad/patchlevel.h: original size 277, current size' "$Wc_c"
  1225. rm -f _shar_wnt_.tmp
  1226. fi
  1227. # ============= op/op.albinsgegam ==============
  1228. if test ! -d 'op'; then
  1229.     echo 'x - creating directory op'
  1230.     mkdir 'op'
  1231. fi
  1232. if test -f 'op/op.albinsgegam' -a X"$1" != X"-c"; then
  1233.     echo 'x - skipping op/op.albinsgegam (File already exists)'
  1234.     rm -f _shar_wnt_.tmp
  1235. else
  1236. > _shar_wnt_.tmp
  1237. echo 'x - extracting op/op.albinsgegam (Text)'
  1238. sed 's/^X//' << 'SHAR_EOF' > 'op/op.albinsgegam' &&
  1239. # ---------------------------------------------------------------------
  1240. #
  1241. #       Name:                   Chess V2.7
  1242. #                               Schachprogramm
  1243. #
  1244. #       Programmteil:           Opening-Library
  1245. #                               Albins Gegengambit
  1246. #
  1247. #       Autor:                  Christoph Thommes
  1248. #
  1249. # ---------------------------------------------------------------------
  1250. #
  1251. # (unknown)
  1252. # 4. e2e3 (?)
  1253. # +++ Umwandlung 7. .... f2g1S nicht moeglich +++
  1254. # Bd2d4d7d5c2c4e7e5d4e5d5d4e2e3f8b4c1d2d4e3d2b4e3f2e1e2f2g1e2e1d8h4e1d2b8c6b4c3
  1255. # c8g4
  1256. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1257. #
  1258. SHAR_EOF
  1259. chmod 0644 op/op.albinsgegam ||
  1260. echo 'restore of op/op.albinsgegam failed'
  1261. Wc_c="`wc -c < 'op/op.albinsgegam'`"
  1262. test 636 -eq "$Wc_c" ||
  1263.     echo 'op/op.albinsgegam: original size 636, current size' "$Wc_c"
  1264. rm -f _shar_wnt_.tmp
  1265. fi
  1266. # ============= op/op.aljechin ==============
  1267. if test -f 'op/op.aljechin' -a X"$1" != X"-c"; then
  1268.     echo 'x - skipping op/op.aljechin (File already exists)'
  1269.     rm -f _shar_wnt_.tmp
  1270. else
  1271. > _shar_wnt_.tmp
  1272. echo 'x - extracting op/op.aljechin (Text)'
  1273. sed 's/^X//' << 'SHAR_EOF' > 'op/op.aljechin' &&
  1274. # ---------------------------------------------------------------------
  1275. #
  1276. #       Name:                   Chess V2.7
  1277. #                               Schachprogramm
  1278. #
  1279. #       Programmteil:           Opening-Library
  1280. #                               Aljechin-Verteidigung
  1281. #
  1282. #       Autor:                  Christoph Thommes
  1283. #
  1284. # ---------------------------------------------------------------------
  1285. #
  1286. # (unknown)
  1287. WBe2e4g8f6e4e5f6d5c2c4d5b6d2d4d7d6f2f4d6e5f4e5b8c6c1e3c8f5b1c3e7e6g1f3f8e7
  1288. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1289. # (Mazukewitsch-Bodischko,1958)
  1290. #  8. .... c8e6 (?)
  1291. We2e4g8f6e4e5f6d5c2c4d5b6c4c5b6d5b1c3d5c3d2c3d7d6c1g5d6e5d1b3c8e6b3b7b8d7b2b4f7f6g5e3e8f7g1f3d8c8b7c6a7a6c6e6f7e6f1c4e6f5f3h4f5e4e1e2
  1292. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1293. # (Aronin-Mikenas,1951)
  1294. #  6. .... b8c6 (?!)
  1295. We2e4g8f6e4e5f6d5d2d4d7d6g1f3c8g4f1e2e7e6e1g1b8c6c2c4d5e7e5d6d8d6b1c3e7g6d4d5e6d5c4d5g4f3g2f3c6e5c3b5d6d7f3f4g6h4f4e5d7h3b5c7e8d8c7e6
  1296. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1297. #
  1298. # (Aljechin-Fine,1932)
  1299. WBe2e4g8f6e4e5f6d5c2c4d5b6c4c5b6d5b1c3d5c3d2c3d7d6f1c4d6d5d1d5d8d5c4d5e7e6d5e4f8c5
  1300. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1301. # (Poletajew-Rachno,1948)
  1302. We2e4g8f6e4e5f6d5c2c4d5b6c4c5b6d5b1c3d5c3d2c3d7d6c1g5d6e5d1b3d8d7a1d1d7f5f1c4b8c6c4d5h7h6b3b5f5g6g1f3a7a6b5a4c8d7g5e3e7e6d5e4g6f6a4b3
  1303. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1304. # (Krogius-Saizew,1971)
  1305. We2e4g8f6e4e5f6d5c2c4d5b6c4c5b6d5b1c3d5c3d2c3d7d6c5d6e7d6f1c4f8e7c1f4d6e5f4e5e8g8d1d8e7d8g1f3
  1306. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1307. # (Hennings-Semjkal,1970)
  1308. We2e4g8f6e4e5f6d5c2c4d5b6c4c5b6d5b1c3e7e6c3d5e6d5d2d4b7b6c1e3b6c5d4c5c7c6f1d3b8a6a1c1d8a5e3d2a5a2c1a1a2b2d3a6c8a6a1a6b2e5g1e2f8c5
  1309. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1310. # (Nicewski-Wasjukow,1969)
  1311. WBe2e4g8f6e4e5f6d5c2c4d5b6c4c5b6d5b1c3e7e6c3d5e6d5d2d4d7d6c5d6c7d6g1f3b8c6f1e2f8e7e1g1e8g8c1f4c8g4d1d2f8e8f1d1a8c8a1c1a7a6
  1312. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1313. # (Ozsvath-Csom,1967)
  1314. WBe2e4g8f6e4e5f6d5c2c4d5b6c4c5b6d5b1c3e7e6d2d4d7d6c5d6c7d6g1f3b8c6e5d6f8d6f1d3d5f4c1f4d6f4
  1315. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1316. # (Sweschnikow-Palatnik,1974)
  1317. WBe2e4g8f6e4e5f6d5c2c4d5b6c4c5b6d5b1c3c7c6f1c4d7d6d1b3d6e5c3d5c6d5c4d5e7e6d5b7c8b7b3b7d8d5
  1318. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1319. # (unknown)
  1320. We2e4g8f6e4e5f6d5c2c4d5b6c4c5b6d5f1c4e7e6b1c3f8c5d2d4c5b4c4d5e6d5d1g4e8f8g1f3d7d6g4g3b8c6e1g1
  1321. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1322. # (Wasjukow-Spasski,1959)
  1323. WBe2e4g8f6e4e5f6d5c2c4d5b6c4c5b6d5f1c4e7e6b1c3d7d6c3d5e6d5c4d5c7c6d5f7e8f7c5d6d8e8d1f3f7g8f3e3c8e6g1e2b8d7e1g1d7e5e3e5e6c4e5e8a8e8
  1324. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1325. # (Prachov-Slawow,1961)
  1326. WBe2e4g8f6e4e5f6d5c2c4d5b6c4c5b6d5f1c4e7e6b1c3d5c3d2c3f8c5d1g4e8f8
  1327. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1328. # (Markland-Ghizdavu,1973)
  1329. We2e4g8f6e4e5f6d5c2c4d5b6c4c5b6d5f1c4e7e6b1c3d5c3d2c3b8c6c1f4b7b6c5b6a7b6g1f3f8e7e1g1e8g8d1e2
  1330. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1331. # (Angelow-Orew,1971)
  1332. WBe2e4g8f6e4e5f6d5c2c4d5b6c4c5b6d5f1c4e7e6b1c3d5c3d2c3b8c6c1f4f8c5d1g4g7g5f4g5h8g8g1h3c5e7f2f4c6e5f4e5e7g5g4h5g8g7e1g1d8e7
  1333. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1334. # (Angelow-Suba,1975)
  1335. WBe2e4g8f6e4e5f6d5c2c4d5b6c4c5b6d5f1c4e7e6b1c3d5c3d2c3b8c6c1f4d8h4d1d2c6e5c4e2e5g6f4c7f8c5c7g3h4a4h2h4h7h5
  1336. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1337. # (Matschulski-Gurgenidse,1973)
  1338. WBe2e4g8f6e4e5f6d5c2c4d5b6c4c5b6d5f1c4e7e6d2d4b7b6c5b6a7b6g1f3c8a6c4a6b8a6e1g1f8e7
  1339. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1340. # (unknown)
  1341. WBe2e4g8f6e4e5f6d5c2c4d5b6c4c5b6d5f1c4e7e6d2d4d7d6c5d6c7d6g1f3d5b6c4d3b8c6e1g1c6b4
  1342. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1343. # (Dworezki-Taimanov,1975)
  1344. We2e4g8f6e4e5f6d5c2c4d5b6c4c5b6d5f1c4e7e6d2d4d7d6c5d6c7d6d1e2b8c6g1f3f8e7e1g1e8g8e2e4b7b6c4d3g7g6c1h6f8e8b1d2d5b4d3b1c8a6f1d1d6e5d4e5d8d5
  1345. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1346. # (unknown)
  1347. WBe2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4g7g6b1c3d6e5f4e5f8g7c1e3e8g8g1f3c7c5d4c5b6d7e5e6f7e6d1c2d8a5f1e2
  1348. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1349. # (Gasic-Michaltschischin,1970)
  1350. We2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4c8f5b1c3e7e6c1e3b8a6e5d6c7d6g1f3f8e7f1e2e8g8a1c1
  1351. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1352. # (unknown)
  1353. We2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4c8f5b1c3e7e6c1e3f8e7g1f3e8g8f1d3f5d3d1d3d6d5b2b3d5c4b3c4b8c6e1g1
  1354. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1355. # (Ljubojevic-Moses,1969)
  1356. We2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4d6e5f4e5c7c5d4d5e7e6b1c3e6d5c4d5d8h4g2g3h4d4f1b5c8d7d1e2b6d5e5e6f7e6e2e6d5e7g1f3
  1357. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1358. # (Gruenfeld-Ljubojevic,1979)
  1359. WBe2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4d6e5f4e5c7c5d4d5e7e6b1c3e6d5c4d5c5c4g1f3c8g4d1d4g4f3g2f3f8b4f1c4e8g8h1g1g7g6c1g5d8c7c4b3b4c5d4f4c5g1d5d6c7c5c3e4c5d4a1d1d4b2e5e6b8d7
  1360. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1361. # (Suetin-Mikenas,1961)
  1362. WBe2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4d6e5f4e5c8f5b1c3e7e6g1f3f8e7f1e2e8g8e1g1f7f6c1e3f6e5f3e5b8d7e5f3h7h6c4c5b6d5c3d5e6d5d1b3d7f6f3e5d8c8a1e1c7c6
  1363. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1364. # (Pithart-Williams,1972)
  1365. WBe2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4d6e5f4e5c8f5b1c3e7e6g1f3f8b4c1e3c7c5f1e2b8c6e1g1c5d4f3d4c6d4e3d4f5c2d1d2a8c8g1h1e8g8b2b3b4c5c3b5c5d4b5d4c2g6e2f3c8c7d2e3c7d7
  1366. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1367. # (Velimirovic-Martz,1973)
  1368. We2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4d6e5f4e5c8f5b1c3e7e6g1f3f8b4f1d3f5g4e1g1b8c6c4c5b4c3b2c3b6d5d1e1
  1369. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1370. # (unknown)
  1371. We2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4d6e5f4e5b8c6g1f3c8g4e5e6f7e6c4c5b6c8f1b5g4f3d1f3d8d5b1d2g7g6e1g1d5f3d2f3f8g7c1e3
  1372. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1373. # (unknown)
  1374. WBe2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4d6e5f4e5b8c6g1f3c8g4e5e6f7e6c4c5b6d7f1e2e6e5e1g1e5d4f3g5g4e2d1e2d7e5g5e6d8d7e2h5g7g6h5h7d7e6h7h8e5d7
  1375. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1376. # (unknown)
  1377. WBe2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4d6e5f4e5b8c6g1f3c8g4e5e6f7e6c4c5e6e5c5b6e5e4d4d5e4f3g2f3g4h5b6c7d8c7d5c6c7c6f1e2a8d8c1d2
  1378. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1379. # (unknown)
  1380. We2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4d6e5f4e5b8c6g1f3c8g4e5e6f7e6c4c5g4f3d1f3c6d4f3f2b6a4c1e3d8d5b1a3
  1381. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1382. # (Keeley-Hewitt,1962)
  1383. Be2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4d6e5f4e5b8c6g1f3c8g4e5e6f7e6c4c5b6d5f1b5d8d7b1d2g7g6d1a4f8g7f3e5g7e5d4e5d5e3a4e4e8g8e4e3c6b4
  1384. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1385. # (Zuidema-Hecht,1971)
  1386. WBe2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4d6e5f4e5b8c6c1e3c8f5b1c3e7e6g1f3f8b4f1e2e8g8e1g1b4c3b2c3c6a5f3d2d8d7f1f4f5g6d1f1c7c5
  1387. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1388. # (unknown)
  1389. We2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4d6e5f4e5b8c6c1e3c8f5b1c3e7e6g1f3f8b4a1c1e8g8a2a3b4c3c1c3d8d7f1e2a8d8e1g1f5g4g1h1g4f3e2f3c6d4e3g5
  1390. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1391. # (Hora-Pribly,1972)
  1392. WBe2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4d6e5f4e5b8c6c1e3c8f5b1c3e7e6g1f3f5g4d1d2f8e7e1c1a7a5h2h3g4h5g2g4h5g6h3h4c6b4
  1393. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1394. # (Kadrew-Bogdanow,1963)
  1395. We2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4d6e5f4e5b8c6c1e3c8f5b1c3e7e6g1f3c6b4a1c1c7c5f1e2f5g4e1g1g4f3e2f3b6c4
  1396. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1397. # (Negyesy-Tartakower,1925)
  1398. # 11. .... c5d4 (?)
  1399. We2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4d6e5f4e5b8c6c1e3c8f5b1c3e7e6g1f3c6b4a1c1c7c5f1e2c5d4f3d4f5g6a2a3b4c6d4c6b7c6d1d8e8d8e3b6a7b6e2f3a8c8c3e4
  1400. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1401. # (Keres-Saitar,1943)
  1402. WBe2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4d6e5f4e5b8c6c1e3c8f5b1c3e7e6g1f3c6b4a1c1c7c5f1e2f8e7e1g1e8g8a2a3c5d4f3d4b4c6d4f5e6f5f1f5g7g6f5f1e7g5e3c5f8e8d1d8a8d8c1d1c6e5c3e4d8d1
  1403. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1404. # (Honfi-Ghizdavu,1973)
  1405. WBe2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4d6e5f4e5b8c6c1e3c8f5b1c3e7e6g1f3d8d7f1e2e8c8e1g1f5g4c4c5b6d5c3d5d7d5f3g5g4e2d1e2c6d4e3d4d5d4g1h1d4d2e2d2d8d2f1f7f8c5g5e6
  1406. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1407. # (unknown)
  1408. WBe2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4d6e5f4e5b8c6c1e3c8f5b1c3e7e6g1f3d8d7f1e2e8c8e1g1f7f6d4d5c6e5f3e5f6e5a2a4a7a5c3b5f8b4d5d6c7c5e3d2
  1409. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1410. # (Hecht-Timman,1971)
  1411. WBe2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4d6e5f4e5b8c6c1e3c8f5b1c3e7e6g1f3f8e7f1e2e8g8e1g1f7f6e5f6e7f6d1d2d8e7a1d1a8d8d2c1h7h6g1h1g8h8h2h3f5h7e3g1f8e8f1e1e7f7
  1412. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1413. # (unknown)
  1414. We2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4d6e5f4e5b8c6c1e3c8f5b1c3e7e6g1f3f8e7f1e2e8g8e1g1f7f6e5f6e7f6d1d2d8e8e3g5a8d8g5f6f8f6a1d1f5g4c3e4f6f5d2e3
  1415. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1416. # (Lutikow-Bagirow,1960)
  1417. We2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4d6e5f4e5b8c6c1e3c8f5b1c3e7e6g1f3f8e7f1e2e8g8e1g1f7f6e5f6e7f6d1d2f8f7a1d1f7d7c4c5b6d5c3d5e6d5f3e5f6e5f1f5e5f6e2g4
  1418. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1419. # (Marjanovic-Roguli,1975)
  1420. We2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4d6e5f4e5b8c6c1e3c8f5b1c3e7e6g1f3f8e7d4d5e6d5c4d5c6b4f3d4f5d7e5e6f7e6d5e6d7c6d1g4e7h4g2g3c6h1e1c1d8f6g3h4e8g8
  1421. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1422. # (unknown)
  1423. WBe2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4d6e5f4e5b8c6c1e3c8f5b1c3e7e6g1f3f8e7d4d5c6b4f3d4f5g6a2a3c7c5d4e6f7e6a3b4c5b4c3a4e8g8a4b6a7b6a1a8d8a8d5d6e7d8f1e2b4b3
  1424. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1425. # (unknown)
  1426. We2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4d6e5f4e5b8c6c1e3c8f5b1c3e7e6g1f3f8e7d4d5c6b4a1c1e6d5a2a3c7c5a3b4d5d4e3d4c5d4f3d4d8b8d4f5b8e5f1e2e5f5c4c5b6d7e2g4f5e5d1e2e5e2e1e2d7e5
  1427. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1428. # (Panow-Mikenas,1943)
  1429. Be2e4g8f6e4e5f6d5d2d4d7d6g1f3c8g4h2h3g4f3d1f3d6e5d4e5e7e6a2a3b8d7f3g3h7h5b1d2h5h4g3b3h8h5d2f3d7e5
  1430. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1431. # (Kupreitschik-Bagirow,1970)
  1432. Be2e4g8f6e4e5f6d5d2d4d7d6g1f3c8g4h2h3g4f3d1f3d6e5d4e5e7e6f3e4b8d7f1c4d7c5e4e2d5b6c4b3a7a5a2a3c5b3c2b3f8e7
  1433. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1434. # (Shurawljow-Alburt,1974)
  1435. Be2e4g8f6e4e5f6d5d2d4d7d6g1f3c8g4h2h3g4f3d1f3d6e5d4e5e7e6f1c4b8c6f3e4d5e7c1e3e7f5e1g1d8h4e4h4f5h4c4b5h4f5b5c6b7c6b1d2f5e3f2e3a8d8
  1436. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1437. # (unknown)
  1438. WBe2e4g8f6e4e5f6d5d2d4d7d6g1f3c8g4c2c4d5b6f1e2d6e5c4c5e5e4c5b6e4f3e2f3g4f3d1f3b8c6e1g1c6d4f3b7a7b6c1e3a8b8b7e4d4b5
  1439. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1440. # (Bschniew-Sergejew,1982)
  1441. WBe2e4g8f6e4e5f6d5d2d4d7d6g1f3c8g4f1e2c7c6e1g1g4f3e2f3d6e5d4e5e7e6d1e2b8d7f1e1d8c7c1d2f8c5c2c4d5e7d2c3a7a5
  1442. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1443. # (Unzicker-Schmid,1959)
  1444. We2e4g8f6e4e5f6d5d2d4d7d6g1f3c8g4f1e2c7c6f3g5g4e2d1e2d6e5d4e5e7e6e1g1b8d7c2c4d5e7b1c3e7f5g5f3d8c7f1e1f8b4c1d2
  1445. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1446. # (unknown)
  1447. WBe2e4g8f6e4e5f6d5d2d4d7d6g1f3c8g4f1e2c7c6f3g5g4f5e5e6f7e6g2g4f5g6e2d3g6d3d1d3g7g6e1g1f8h6g5e6d8d7d3e2h6c1f1c1b8a6
  1448. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1449. # (Estrin-Gik,1968)
  1450. WBe2e4g8f6e4e5f6d5d2d4d7d6g1f3c8g4f1e2b8c6c2c4d5b6e5d6e7d6e1g1f8e7b1c3e8g8b2b3e7f6c1e3d6d5c4c5b6c8h2h3g4e6b3b4a7a6a1b1c8e7
  1451. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1452. # (unknown)
  1453. We2e4g8f6e4e5f6d5d2d4d7d6g1f3c8g4f1e2b8c6e1g1d5b6h2h3g4f3e2f3d6e5d4e5d8d1f1d1e7e6b2b3f8e7
  1454. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1455. # (unknown)
  1456. We2e4g8f6e4e5f6d5d2d4d7d6g1f3c8g4f1e2e7e6e1g1b8c6c2c4d5b6e5d6c7d6d4d5e6d5c4d5g4f3g2f3c6e5e2b5e5d7d1d4d8f6f1e1f8e7d4f6g7f6b1c3e8d8f3f4
  1457. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1458. # (Minic-Hort,1969)
  1459. WBe2e4g8f6e4e5f6d5d2d4d7d6g1f3c8g4f1e2e7e6e1g1f8e7c2c4d5b6e5d6c7d6b2b3b8c6b1c3e8g8c1e3d6d5c4c5b6c8b3b4a7a6a1b1e7f6a2a4c8e7b4b5c6a5e3f4e7f5f3e5g4e2c3e2a6b5a4b5
  1460. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1461. # (Makarytschew-Palatnik,1974)
  1462. WBe2e4g8f6e4e5f6d5d2d4d7d6g1f3c8g4f1e2e7e6e1g1f8e7c2c4d5b6e5d6c7d6b2b3b8c6c1b2e8g8b1d2d6d5c4c5b6d7a2a3a7a6b3b4d8c7
  1463. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1464. # (Timman-Bagirow,1971)
  1465. We2e4g8f6e4e5f6d5d2d4d7d6g1f3c8g4f1e2e7e6e1g1f8e7c2c4d5b6e5d6c7d6b1c3e8g8c1e3b8c6d4d5g4f3e2f3c6e5d5e6f7e6f3g4e5c4g4e6g8h8e3b6c4b6d1b3e7f6
  1466. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1467. # (unknown)
  1468. WBe2e4g8f6e4e5f6d5d2d4d7d6g1f3c8g4f1e2e7e6e1g1f8e7c2c4d5b6e5d6c7d6b1c3e8g8c1e3d6d5c4c5g4f3e2f3b6c4e3f4b8c6b2b3c4a5a1c1b7b6c3a4e7f6f4e3b6b5a4c3b5b4
  1469. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1470. # (Medina-Hecht,1972)
  1471. WBe2e4g8f6e4e5f6d5d2d4d7d6g1f3c8g4f1e2e7e6e1g1f8e7c2c4d5b6h2h3g4h5e5d6c7d6b1d2b8c6b2b3e8g8c1b2d6d5c4c5b6d7a2a3f7f6b3b4a7a6f1e1h5f7d2f1b7b6f1e3d8c7d1d2f8d8
  1472. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1473. # (Kavalek-Schmidt,1974)
  1474. WBe2e4g8f6e4e5f6d5d2d4d7d6g1f3c8g4f1e2e7e6e1g1f8e7c2c4d5b6h2h3g4h5b1c3e8g8c1e3d6d5c4c5h5f3e2f3b6c4e3f4b7b6b2b3c4a5a1c1b6c5d4c5a5c6f1e1e7g5c3d5e6d5f4g5d8g5f3d5
  1475. #   .   2   .   3   .   4   .   5   .   6   .   7   .   8   .   9   .   0   .
  1476. # (Matanovic-Vukic,1975)
  1477. WBe2e4g8f6e4e5f6d5d2d4d7d6g1f3c8g4f1e2e7e6e1g1f8e7c2c4d5b6h2h3g4h5b1c3e8g8c1e3d6d5c4c5h5f3g2f3b6c8b2b4f7f6f3f4f6e5f4e5d8e8e2d3e7d8
  1478. SHAR_EOF
  1479. true || echo 'restore of op/op.aljechin failed'
  1480. fi
  1481. echo 'End of UnixChess part 4'
  1482. echo 'File op/op.aljechin is continued in part 5'
  1483. echo 5 > _shar_seq_.tmp
  1484. exit 0
  1485. -- 
  1486.    /              |    -: Marc Laukien :-     |
  1487.   /__             |                           |   _  _           __
  1488.  /   \  /_  /  /  |   ml@brumuc.muc.sub.org   |  / \/ |   /  /  /
  1489. /____/ /   /__/   | sigma@salyko.doit.sub.org | /     |  /__/  /__
  1490.