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 >
Wrap
Internet Message Format
|
1991-05-20
|
51KB
From: ml@brumuc.muc.sub.org (Marc Laukien)
Newsgroups: alt.sources
Subject: UnixChess04/10
Message-ID: <1991May20.003140.6377@brumuc.muc.sub.org>
Date: 20 May 91 00:31:40 GMT
Submitted-by: ml@brumuc.muc.sub.org
Archive-name: UnixChess/part04
---- Cut Here and feed the following to sh ----
#!/bin/sh
# this is chess.04 (part 4 of UnixChess)
# do not concatenate these parts, unpack them in order with /bin/sh
# file ad/tour_comp.c continued
#
if test ! -r _shar_seq_.tmp; then
echo 'Please unpack part 1 first!'
exit 1
fi
(read Scheck
if test "$Scheck" != 4; then
echo Please unpack part "$Scheck" next!
exit 1
else
exit 0
fi
) < _shar_seq_.tmp || exit 1
if test ! -f _shar_wnt_.tmp; then
echo 'x - still skipping ad/tour_comp.c'
else
echo 'x - continuing file ad/tour_comp.c'
sed 's/^X//' << 'SHAR_EOF' >> 'ad/tour_comp.c' &&
X else if((farbe=='w' && W_IS_OPP())
X || (farbe=='s' && B_IS_OPP()))
X { /* Computerzug */
X int x;
X
X mvaddstr(2,MPOS,thinking);/* Status ausgeben */
X move(23,79);
X refresh();
X
X schach("comp",ptr); /* Zug holen */
X
X ad_brett(); /* Brett aufbauen */
X
X schach("info",ptr); /* Info holen */
X farbe=ptr[0][0]; /* Farbe am Zug */
X
X move(2,MPOS); /* Meldung loeschen */
X for(x=stdscr->_curx;x<79;x++) /* loeschen */
X mvaddch(stdscr->_cury,x,(int)' ');
X }
X else
X /*--- Spieler ------------------------------------------*/
X {
X ad_read(0,&ch,1); /* einlesen */
X
X if(isupper(ch)) /* gross ? */
X ch=tolower(ch);
X
X ad_flush(); /* restliche Zeichen wegwerfen */
X
X ret=ad_domenu(ch); /* auswerten */
X
X if(ret==0) /* Ende ? */
X {
X schach("info",ptr); /* Info holen */
X
X if(atoi(ptr[1]) != old_moves)
X { /* veraendert ? */
X ad_lock();
X sprintf(s,"save %s",stdname);
X schach(s,ptr); /* Speichern */
X ad_unlock();
X }
X break;
X }
X else if(ret==2) /* Aufgeben ? */
X if(ad_sure('a'))
X {
X move(3,MPOS);
X
X addstr(wei==0 ? w_up:b_up);
X ende = wei==0 ? W_AUFG:S_AUFG;
X }
X }
X
X /*--- alles ausgeben -----------------------------------*/
X
X move(23,79); /* Cursor weg */
X refresh(); /* ausgeben */
X }
X
X stdname[0]='\0'; /* Kein Standardname */
}
SHAR_EOF
echo 'File ad/tour_comp.c is complete' &&
chmod 0644 ad/tour_comp.c ||
echo 'restore of ad/tour_comp.c failed'
Wc_c="`wc -c < 'ad/tour_comp.c'`"
test 3534 -eq "$Wc_c" ||
echo 'ad/tour_comp.c: original size 3534, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= ad/expire.c ==============
if test -f 'ad/expire.c' -a X"$1" != X"-c"; then
echo 'x - skipping ad/expire.c (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting ad/expire.c (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'ad/expire.c' &&
/****************************************************************/
/* */
/* XChess V2.7 Adapter: Curses */
/* */
/* (c) 1991 by Marc Laukien */
/* */
/* Programmteil: Expire */
/* */
/****************************************************************/
X
#include <sys/types.h>
#include <sys/stat.h>
#include <dirent.h>
#include <string.h>
#include <stdio.h>
#include <curses.h>
X
#include "ad.h"
X
/****************************************************************/
/* Expire */
/****************************************************************/
X
void ad_expire()
X
{
X char c;
X int i,j;
X DIR *dir; /* Directory - Struktur */
X struct dirent *dp; /* Directorypointer */
X char str[STRLEN],str2[STRLEN*5]; /* String */
X char *s[3];
X char white[STRLEN],black[STRLEN]; /* Namen der Spieler */
X struct stat sbuf; /* Statusinfo. */
X
X lex(); /* Strings einlesen */
X
X if( (dir=opendir("save"))==(DIR *)0 ) /* oeffnen */
X {
X ad_error(""); /* Fehler */
X return;
X }
X
X while( (dp=readdir(dir)) != (struct dirent *)0 ) /* Ende ? */
X {
X strcpy(str,dp->d_name); /* kopieren */
X
X i=0;
X j=0;
X s[j++]=str;
X while(str[i]!='\0') /* String aufbereiten */
X {
X if(str[i]=='.')
X {
X str[i++]='\0'; /* beenden */
X s[j++]=str+i;
X }
X
X if(j>=3)
X break;
X
X i++;
X }
X
X if(j==3) /* Spiel gefunden ? */
X {
X double days;
X
X sprintf(str2,"save/%s.%s.%s",s[0],s[1],s[2]);
X
X strcpy(white,ad_revid(s[0])); /* Namen */
X strcpy(black,ad_revid(s[1]));
X
X if(stat(str2,&sbuf)== -1)
X {
X ad_error(""); /* Fehler */
X return;
X }
X
X days=(double) /* Anzahl der Tage */
X (time((long *)0)-(long)sbuf.st_mtime) /
X (24.0 * 60.0 * 60.0) ;
X
X if(days > (double)(EXPIRE)) /* ueberschritten ? */
X {
X sprintf(str2,"loadinfo save/%s.%s",s[0],s[1]);
X /* Kommandostring */
X schach(str2,ptr); /* Info anfordern */
X
X if(atoi(ptr[1]) > MOVES /* Mehr als MOVES Zuege ? */
X && !(ptr[0][0]=='w' && s[0][0]=='~')
X && !(ptr[0][0]=='s' && s[1][0]=='~'))
X /* Schwarz oder Weiss am Zug ? */
X {
X /* Highscoreeintrag */
X
X switch(ptr[0][0]) /* Farbe */
X {
X case 'w': /* Weiss */
X ad_addscore_expire('B',white,black);
X /* Score */
X
X if(s[0][0] != '~') /* Kein Comp. ? */
X {
X sprintf(str2,
"echo \"Chess game has timed out !\\nYou've lost the game \\\"%s vs. %s\\\".\" | %s %s",
X white,black,MAIL,white);
X system(str2);
X break;
X }
X
X if(s[1][0] != '~') /* Kein Comp. ? */
X {
X sprintf(str2,
"echo \"Chess game has timed out !\\nYou've won the game \\\"%s vs. %s\\\".\" | %s %s",
X white,black,MAIL,black);
X system(str2);
X break;
X }
X
X case 's': /* Schwarz */
X ad_addscore_expire('W',white,black);
X /* Score */
X
X if(s[1][0] != '~') /* Kein Comp. ? */
X {
X sprintf(str2,
"echo \"Chess game has timed out !\\nYou've lost the game \\\"%s vs. %s\\\".\" | %s %s",
X white,black,MAIL,black);
X system(str2);
X break;
X }
X
X if(s[0][0] != '~') /* Kein Comp. ? */
X {
X sprintf(str2,
"echo \"Chess game has timed out !\\nYou've won the game \\\"%s vs. %s\\\".\" | %s %s",
X white,black,MAIL,white);
X system(str2);
X break;
X }
X }
X }
X else /* Kein Verlierer */
X {
X if(s[0][0] != '~') /* Kein Comp. ? */
X {
X sprintf(str2,
"echo \"Chess game has timed out !\\nThe game \\\"%s vs. %s\\\" has been removed.\" | %s %s",
X white,black,MAIL,white);
X system(str2);
X }
X
X if(s[1][0] != '~') /* Kein Comp. ? */
X {
X sprintf(str2,
"echo \"Chess game has timed out !\\nThe game \\\"%s vs. %s\\\" has been removed.\" | %s %s",
X white,black,MAIL,black);
X system(str2);
X }
X }
X
X /* Spiel loeschen */
X sprintf(str2,"save/%s.%s.ch",s[0],s[1]);
X if(unlink(str2) == -1) /* loeschen */
X ad_error("");
X }
X else if(days > (double)(EXPIRE)-3.0)
X { /* Noch 3 Tage */
X if(s[0][0] != '~') /* Kein Comp. ? */
X {
X sprintf(str2,
"echo \"Attention !\\nThe game \\\"%s vs. %s\\\" will expire in %d days.\" | %s %s",
X white,black,
X (int)(EXPIRE) - (int)days,
X MAIL,white);
X system(str2);
X }
X
X if(s[1][0] != '~') /* Kein Comp. ? */
X {
X sprintf(str2,
"echo \"Attention !\\nThe game \\\"%s vs. %s\\\" will expire in %d days.\" | %s %s",
X white,black,
X (int)(EXPIRE) - (int)days,
X MAIL,black);
X system(str2);
X }
X }
X
X } /* Ende Spiel gefunden */
X
X } /* Ende Directory lesen */
X
X closedir(dir);
}
SHAR_EOF
chmod 0644 ad/expire.c ||
echo 'restore of ad/expire.c failed'
Wc_c="`wc -c < 'ad/expire.c'`"
test 4458 -eq "$Wc_c" ||
echo 'ad/expire.c: original size 4458, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= ad/setup.c ==============
if test -f 'ad/setup.c' -a X"$1" != X"-c"; then
echo 'x - skipping ad/setup.c (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting ad/setup.c (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'ad/setup.c' &&
/****************************************************************/
/* */
/* XChess V2.7 Adapter: Curses */
/* */
/* (c) 1991 by Marc Laukien */
/* */
/* Programmteil: Setup */
/* */
/****************************************************************/
X
#include <curses.h>
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include "ad.h"
X
static void ad_piece();
X
/****************************************************************/
/* Setupmenue */
/****************************************************************/
X
void ad_setup()
X
{
X int i; /* Zeile */
X char ch;
X
X if(TURNIER()) /* Turnierspiel ? */
X {
X ad_error(not_allowed);
X return;
X }
X
X setupwin=newwin(11,27,11,50); /* neues setupwindow */
X box(setupwin,0,0); /* mit Rahmen */
X
X for(i=0;i<5;i++)
X {
X wmove(setupwin,i+2,2); /* positionieren */
X waddstr(setupwin,smenu[i]+1); /* ausgeben */
X }
X
X wrefresh(setupwin); /* ausgeben */
X
X do
X {
X touchwin(stdscr);
X wnoutrefresh(stdscr);
X
X touchwin(setupwin);
X
X wmove(setupwin,5,1+strlen(smenu[3])); /* Farbe am Zug */
X for(i=1+strlen(smenu[3]);i<26;i++)
X waddstr(setupwin," "); /* loschen */
X
X wmove(setupwin,5,1+strlen(smenu[3]));
X
X if(farbe=='w')
X waddstr(setupwin,white);
X else
X waddstr(setupwin,black);
X
X wnoutrefresh(setupwin);
X doupdate();
X
X move(23,79);
X refresh();
X
X ad_read(0,&ch,1); /* einlesen */
X
X if(isupper(ch)) /* gross ? */
X ch=tolower(ch);
X
X ad_flush(); /* restliche Zeichen wegwerfen */
X
X if(ch<='h' && ch>='a')
X ad_piece(ch);
X else if(ch == smenu[0][0]) /*** Laden ***/
X ad_load();
X else if(ch == smenu[1][0]) /*** Save ***/
X ad_save();
X else if(ch == smenu[2][0]) /*** Loeschen ***/
X {
X schach("loeschen",ptr);
X ad_brett();
X }
X else if(ch == smenu[3][0]) /*** Farbe wechseln ***/
X {
X if(farbe == 'w') /* Weiss ? */
X {
X farbe = 's'; /* aendern */
X schach("schwarz",ptr);
X }
X else /* Schwarz */
X {
X farbe = 'w'; /* aendern */
X schach("weiss",ptr);
X }
X }
X else if(ch != smenu[4][0])
X beep();
X }
X while(ch != smenu[4][0]); /* Ende ? */
X
X delwin(setupwin); /* Fenster aus */
X setupwin=(WINDOW *)0;
X touchwin(stdscr);
}
X
static void ad_piece(ch)
X
char ch;
{
X char str[STRLEN],str2[STRLEN]; /* String */
X int i;
X static char *ofigtab="bsltdkBSLTDK.";
X
X wmove(setupwin,9,2); /* in Position */
X strcpy(str2,figtab); /* Space durch Punkt ersetzen */
X str2[strlen(str2)-1]='.';
X waddstr(setupwin,str2); /* Figurenliste */
X
X strcpy(str,"setze "); /* aufbereiten */
X
X wmove(setupwin,8,2); /* in Position */
X waddstr(setupwin,doset); /* Meldung */
X waddch(setupwin,ch|A_UNDERLINE); /* ausgeben */
X sprintf(str+strlen(str),"%%c%c",(char)ch); /* aufbereiten */
X wrefresh(setupwin);
X
l1: ad_read(0,&ch,1); /* einlesen */
X if(ch=='\b') /* zurueck ? */
X {
X waddstr(setupwin,"\b \b");
X str[strlen(str)-1]=0;
X wrefresh(setupwin);
X goto l5;
X }
X if(ch<(int)'1' || ch>(int)'8')
X {
X beep();
X goto l1;
X }
X waddch(setupwin,ch|A_UNDERLINE); /* ausgeben */
X sprintf(str+strlen(str),"%c",(char)ch); /* aufbereiten */
X waddch(setupwin,(int)'='|A_UNDERLINE);
X wrefresh(setupwin);
X
l2: ad_read(0,&ch,1); /* einlesen */
X if(ch=='\b') /* zurueck ? */
X {
X waddstr(setupwin,"\b \b");
X str[strlen(str)-1]=0;
X waddstr(setupwin,"\b \b");
X str[strlen(str)-1]=0;
X wrefresh(setupwin);
X goto l1;
X }
X
X for(i=0;str2[i]!='\0';i++)
X if(str2[i]==ch)
X break;
X
X if(figtab[i]=='\0') /* nicht gefunden */
X {
X beep();
X goto l2;
X }
X waddch(setupwin,ch|A_UNDERLINE); /* ausgeben */
X sprintf(str2,str,ofigtab[i]); /* aufbereiten */
X wrefresh(setupwin);
X
X schach(str2,ptr); /* ziehen */
X if(ptr[0][0]!='?') /* zug ok ? */
X ad_brett();
X else /* falscheingabe */
X beep();
X
l5: wmove(setupwin,8,2); /* in Position */
X for(i=0;i<16;i++) /* loschen */
X waddstr(setupwin," ");
X
X wmove(setupwin,9,2); /* in Position */
X for(i=0;i<16;i++) /* loschen */
X waddstr(setupwin," ");
X wrefresh(setupwin);
}
SHAR_EOF
chmod 0644 ad/setup.c ||
echo 'restore of ad/setup.c failed'
Wc_c="`wc -c < 'ad/setup.c'`"
test 3935 -eq "$Wc_c" ||
echo 'ad/setup.c: original size 3935, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= br/break.c ==============
if test ! -d 'br'; then
echo 'x - creating directory br'
mkdir 'br'
fi
if test -f 'br/break.c' -a X"$1" != X"-c"; then
echo 'x - skipping br/break.c (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting br/break.c (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'br/break.c' &&
/****************************************************************/
/* */
/* XChess V2.7 Adapter: Curses */
/* */
/* (c) 1991 by Marc Laukien */
/* */
/* Programmteil: Programmunterbrechung */
/* */
/****************************************************************/
X
#include <signal.h>
#include <fcntl.h>
#include <stdio.h>
X
/****************************************************************/
/* Hauptprogramm */
/****************************************************************/
X
main()
X
{
X int ppid; /* Parent Process ID */
X char c,c2;
X int flags; /* Flags fuer read() */
X
X ppid=getppid();
X
X flags=fcntl(0,F_GETFL,0); /* flags retten */
X
X while(1)
X {
X read(0,&c,1); /* Zeichen einlesen */
X
X /* Buffer leeren */
X fcntl(0,F_SETFL,flags | O_NDELAY); /* blockierung aus */
X while(read(0,&c2,1)); /* Zeichen lesen */
X fcntl(0,F_SETFL,flags & ~O_NDELAY); /* blockierung ein */
X
X switch(c)
X {
X case (char)27: /* Escape */
X kill(ppid,SIGUSR2);
X break;
X
X case (char)12: /* ^ L -> refresh */
X kill(ppid,SIGUSR1);
X break;
X
X default:
X write(1,&c,1);
X break;
X }
X }
}
SHAR_EOF
chmod 0644 br/break.c ||
echo 'restore of br/break.c failed'
Wc_c="`wc -c < 'br/break.c'`"
test 1141 -eq "$Wc_c" ||
echo 'br/break.c: original size 1141, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= ad/ad.h ==============
if test -f 'ad/ad.h' -a X"$1" != X"-c"; then
echo 'x - skipping ad/ad.h (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting ad/ad.h (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'ad/ad.h' &&
/****************************************************************/
/* Includefile fuer XChess V2.7 Curses Adapter */
/* (c) 1991 by M.Laukien */
/****************************************************************/
X
#define PTR 200 /* Anzahl der moeglichen Antworten */
#define STRLEN 81 /* Laenge von Strings */
#define ADM_RAND 12 /* Einruecken beim Administrationsmenue */
#define MPOS 47 /* Position des Spielmenues */
X
#define PATT 1 /* Status */
#define W_MATT 2
#define S_MATT 3
#define W_AUFG 4
#define S_AUFG 5
X
#ifndef WORKDIR
#define WORKDIR "."
#endif
X
#define UEBUNG() (gegner[0]=='\0') /* Uebungsspiel */
#define TURNIER() (gegner[0]!='\0') /* Turnierspiel */
#define TURNGEG() (gegner[0]!='\0' && gegner[0]!='~')
X /* Turnier gegen Gegner */
#define TURNCOM() (gegner[0]=='~') /* Turnier gegen Comp. */
X
#define W_IS_USER() (!wei) /* Weiss ist User */
#define B_IS_USER() (!sch) /* Schwarz ist User */
#define W_IS_OPP() (wei) /* Weiss ist Gegner */
#define B_IS_OPP() (sch) /* Schwarz ist Gegner */
X
extern int errno; /* Fehlernummer */
extern char *sys_errlist[]; /* Fehlertexte */
X
extern char *pname; /* Prgname: argv[0] */
extern char *cwd; /* Working Directory */
extern char stdname[]; /* Standardname fuers Speichern */
extern char def[]; /* Sprache */
extern int lock; /* Falls 1: Lock erworben */
extern int curses; /* Falls 1: Curses an */
extern int inter; /* Falls 1: Es war ein Interrupt*/
extern int break_pid; /* Prozessid des Unterbrechers */
extern WINDOW *win; /* Subwindow */
extern WINDOW *setupwin; /* Setup-Subwindow */
X
extern char *amenu[]; /* Adm.-Menuestrings */
extern char *menu[]; /* Menuestrings */
extern char *smenu[]; /* Setup-Menuestrings */
extern char *info[]; /* Infostrings */
extern char *tr_lv; /* Trainingslevel */
extern char *to_lv; /* Turnierlevel */
extern char *press_key; /* <Taste> */
extern char *tlist; /* Ueberschrift Turnier */
extern char *ulist; /* Ueberschrift Training*/
extern char *scorelist; /* Ueberschrift Score */
extern char *sure; /* Sicherheitsabfrage */
extern char *give_up; /* Aufg. Abfrage */
extern char *figtab; /* Figurentab. */
extern char *comp; /* Computername */
extern char *white,*black; /* Farben */
extern char *domove; /* Zug */
extern char *doset; /* Setup */
extern char *enter; /* Namen eing. */
extern char *opponent; /* Gegner eing. */
extern char *error; /* Fehler */
extern char *not_allowed; /* nicht erlaubt */
extern char *no_user; /* kein User */
extern char *figlist; /* geschl. Fig. */
extern char *ison,*isoff; /* Ein/Aus */
extern char *thinking; /* Comp. denkt */
extern char *is_thinking; /* Gegner denkt */
extern char *load_lib; /* Lade Eroeffnungen */
extern char *startcmd; /* Startkommando */
extern char *patt,*w_mate,*b_mate; /* Status */
extern char *w_chess,*b_chess;
extern char *w_up,*b_up;
extern char *remis_3;
X
extern char farbe; /* w=weiss,s=schwarz */
extern int wei; /* 0=Spieler */
extern int sch; /* 1=Computer oder Gegener */
extern char gegner[]; /* Spielgegner (leer:Computer) */
extern int level; /* Stufe */
extern int ende; /* 1:Matt oder Patt */
extern int modus; /* eingestellter Modus */
X
extern int old_moves; /* Anzahl der Zuege bei Spielbeginn */
X
extern char ant[PTR][81]; /* Antworten */
extern char *ptr[PTR]; /* Pointer auf Antw. */
X
extern char *getcwd(); /* externe Funktionen */
extern char *getenv();
extern char *getlogin();
extern int atoi();
extern int unlink();
X
extern void ad_admin(); /* Administrationsmenue */
extern void ad_game(); /* Spielmenue */
extern void ad_tr_game(); /* Trainingsspiel */
extern void ad_tc_game(); /* Turnierspiel gegen Computer */
extern void ad_tu_game(); /* Turnierspiel gegen Gegner */
extern void ad_game_screen(); /* Spielscreen */
extern void ad_admin_screen(); /* Hauptmenue */
extern void ad_menu(); /* Menue ausgeben */
extern void ad_amenu(); /* Administrationsmenue ausg. */
extern void ad_status(); /* Status ausgeben */
extern void ad_analyse(); /* Analyse ausgabe */
extern void ad_tliste(); /* Turnierliste ausgeben */
extern void ad_uliste(); /* Uebungsspielliste */
extern void ad_break(); /* Denken abbrechen */
extern void ad_brett(); /* Brett ausgeben */
extern void ad_deinit(); /* Deinitialisierungen */
extern void ad_error(); /* Fehlermeldung */
extern void ad_msg(); /* Meldung */
extern void ad_flush(); /* Eingabe leeren */
extern void ad_info(); /* Informationen ausg. */
extern void ad_init(); /* Initialisierungen */
extern void ad_interrupt(); /* Interrupt */
extern void ad_new(); /* Programm Neustart */
extern void ad_remove(); /* Spiel loeschen */
extern void ad_refresh(); /* Refresh-Interrupt */
extern void ad_startint(); /* Interrupt starten */
extern void ad_zug(); /* Zug ausfuehren */
extern void ad_extzug(); /* externen Zug ausfuehren */
extern void ad_load(); /* Spiel laden */
extern void ad_save(); /* Spiel speichern */
extern void ad_lock(); /* File locken */
extern void ad_unlock(); /* File unlocken */
extern void ad_locksc(); /* Score locken */
extern void ad_unlocksc(); /* Score unlocken */
extern void ad_zurueck(); /* Zug zuruecknehmen */
extern void ad_showscore(); /* Highscoreliste ausgeben */
extern void ad_addscore(); /* Score eintragen */
extern void ad_addscore_expire(); /* dito. fuer expire */
extern void ad_expire(); /* Expire */
extern void ad_setup(); /* Setup-Menue */
X
extern void lex(); /* lex-Analyse */
extern void insert(); /* String einfuegen */
X
extern char *ad_name(); /* Name einlesen */
extern char *ad_id(); /* ID-String liefern */
extern char *ad_revid(); /* Name zu ID liefern */
X
extern int ad_domenu(); /* Menueauswertung */
extern int ad_read(); /* Eigenes read() */
extern int ad_sure(); /* Sicherheitsabfrage */
extern int main(); /* Hauptprogramm */
SHAR_EOF
chmod 0644 ad/ad.h ||
echo 'restore of ad/ad.h failed'
Wc_c="`wc -c < 'ad/ad.h'`"
test 6012 -eq "$Wc_c" ||
echo 'ad/ad.h: original size 6012, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= ch/ch.h ==============
if test -f 'ch/ch.h' -a X"$1" != X"-c"; then
echo 'x - skipping ch/ch.h (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting ch/ch.h (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'ch/ch.h' &&
/****************************************************************/
/* */
/* Includefile fuer XChess V2.7 */
/* */
/* (c) 1991 by Marc Laukien */
/* */
/****************************************************************/
X
/* Diverse Definitionen */
X
#define MAXOP 5000 /* Max. Eroeffnungszahl */
#define OPTRYS 10 /* Zugriffsversuche */
#define MAXSP 200 /* Max. Zuganzahl */
#define MAXTIEFE 10 /* Max. Rechentiefe */
#define STRLEN 81 /* Laenge von Strings */
#define RAND 2 /* Offset vom Spielfeld */
#define ZLEN 12 /* Zeilenlaenge */
#define GROE 144 /* Spielfeldgroesse = */
X /* (8+2*RAND)^2 */
#define MAXZUG 200 /* Max. Zugmgl. in zlist*/
#define MATT 1000000L /* schlechteste Bew. */
#define TAB (char)9 /* Tabulator */
X
typedef unsigned char BYTE; /* sinnvolle Typen */
typedef unsigned short WORD;
typedef unsigned long LWORD;
X
typedef struct spieldaten /* Spieldatenstruktur */
{
X BYTE brett[GROE]; /* Spielfeld */
X BYTE wkpos,skpos; /* Koenigsposition */
X WORD zlist[MAXZUG]; /* Zugliste */
X long blist[MAXZUG]; /* Bewertungsliste */
X WORD bzug; /* beste Zugfolge */
X WORD lzug; /* letzter Zug */
X int zuege; /* Anz. der Zuege */
X BYTE farbe; /* Farbe am Zug */
X long wert; /* Wert der Stellung */
X int minstufe,maxstufe; /* Spielstufe */
X struct spieldaten *vorher; /* Ptr auf Zug davor */
} SPDAT;
X
typedef struct archivdaten /* Spieldatenstruktur */
{ /* zur Speicherung */
X BYTE brett[GROE]; /* Spielfeld */
X BYTE wkpos,skpos; /* Koenigsposition */
X WORD lzug; /* letzter Zug */
X BYTE farbe; /* Farbe am Zug */
X int wdh; /* Wiederholung */
} ARCHIV;
X
/* Figuren */
X
#define LEE 0 /* Leeres Feld */
#define BAU 1 /* Bauer */
#define XBAU 2 /* nicht bewegt */
#define SPR 3 /* Springer */
#define LAE 4 /* Laeufer */
#define TUR 5 /* Turm */
#define XTUR 6 /* nicht bewegt */
#define DAM 7 /* Dame */
#define KOE 8 /* Koenig */
#define XKOE 9 /* nicht bewegt */
X
/* Farben */
X
#define WEI 16 /* Weiss */
#define SCH 32 /* Schwarz */
X
#define SPZ WEI+SCH /* Spezialfigur fuer */
X /* die Raender */
/* Testmakros */
X
#define _istwei(x) ((x)&WEI) /* Test auf Weiss */
#define _istsch(x) ((x)&SCH) /* Test auf Schwarz */
#define _istnwei(x) (_istwei(x)&&!_istsch(x))/* Test auf nur Weiss */
#define _istnsch(x) (_istsch(x)&&!_istwei(x))/* Test auf nur Schwarz*/
#define _farbe(x) ((x)&(WEI|SCH)) /* Farbe einer Figur */
#define _figur(x) ((x)&0xf) /* Figur ohne Farbe */
X
#define _istlee(x) (!(x)) /* Test auf leeres Feld */
#define _istbau(x) (_figur(x)==BAU||_figur(x)==XBAU)
X /* Test auf Bauer */
#define _istxbau(x) (_figur(x)==XBAU) /* Test auf unb. Bauer */
#define _istplbau(x) (_figur(x)==PLBAU) /* Test auf pas. Bauer */
#define _istprbau(x) (_figur(x)==PRBAU) /* Test auf pas. Bauer */
#define _istspr(x) (_figur(x)==SPR) /* Test auf Springer */
#define _istlae(x) (_figur(x)==LAE) /* Test auf Laeufer */
#define _isttur(x) (_figur(x)==TUR||_figur(x)==XTUR)
X /* Test auf Turm */
#define _istxtur(x) (_figur(x)==XTUR) /* Test auf unb. Turm */
#define _istdam(x) (_figur(x)==DAM) /* Test auf Dame */
#define _istkoe(x) (_figur(x)==KOE||_figur(x)==XKOE)
X /* Test auf Koenig */
#define _istxkoe(x) (_figur(x)==XKOE) /* Test auf unb. Koenig */
#define _istspz(x) ((x)==SPZ) /* Test auf Spezialfig. */
X
/* Zug -> Positionen */
X
#define _apos(x) (BYTE)((x)&0xff) /* alte Position */
/*#define _npos(x) *((BYTE*)&(x)+1) /* neue Position */
#define _npos(x) (BYTE)((x)>>8) /* neue Position */
X
/* Positionen -> Koordianten */
X
#define _xpos(x) (BYTE)((x)%ZLEN-RAND) /* x-Koordinate */
#define _ypos(x) (BYTE)((x)/ZLEN-RAND) /* y-Koordinate */
X
/* Analysefunktion */
X
#define ANALYSE(x) ad_analyse(x)
X
/* externe Variable */
X
extern int opnr; /* Anzahl der Eroeff. */
extern int testopnr; /* Eroeffnungsnummer zum testen */
extern WORD *op[]; /* Eroeffnungen */
extern BYTE op_fa[MAXOP]; /* Farbe fuer die Eroeff. gilt */
extern int noop; /* 1:Keine Bibliothek */
extern SPDAT spdat; /* Spieldaten */
extern ARCHIV *archiv[]; /* Archivdaten */
extern int phase; /* Spielphase */
extern int zaehler; /* Antwortzaehler */
extern int compzuege; /* Computerzuege */
extern long varianten; /* Variantenzaehler */
extern long zeit; /* Dauer des letzten Zuges */
extern long varprosek; /* Varianten pro Sek. */
extern int mode; /* Modus */
extern int stufe; /* Spielstufe */
extern int beende; /* Falls 1 Denkvorgang beenden */
extern WORD best_so_far; /* Bester Zug bis jetzt */
extern int maxtiefe[],mintiefe[]; /* Rechentiefe */
X /* Status des letzten Zuges: */
extern int schlag; /* falls 1 wurde geschlagen */
X /* oder befoerdert */
extern int gabel; /* Bauernspiess oder */
X /* Springergabel falls 1 */
X
/* externe Funktionen */
X
extern char *wandle(); /* int. Format in String */
extern char *kombination(); /* Kombination in String */
extern WORD wandle_inv(); /* String in int. Form. */
extern BYTE wandle_fig(); /* Figur in int. Form. */
extern long bewerte(); /* Zug bewerten */
extern long comp_zug(); /* Computer Zug */
extern WORD bib_zug(); /* Zug aus Bibliothek */
extern int zugliste(); /* Zugliste */
extern int sortliste(); /* Zugliste sortiert */
extern int ziehe(); /* Zug ausfuehren */
extern int zug_test(); /* Zug testen */
extern int save_game(); /* Speichern */
extern int load_game(); /* Laden */
extern int bedrohung(); /* Bedrohung testen */
extern int hole_zurueck(); /* Zurueckholen */
extern int bib_test(); /* Bibliothek testen */
X
extern void brett_aus(); /* Brett ausgeben */
extern void info_aus(); /* Info ausgeben */
extern void zugliste_aus(); /* Zugliste ausgeben */
extern void status_aus(); /* Status ausgeben */
extern void archiviere(); /* Archivieren */
extern void eff_stufe(); /* Stufe einstellen */
extern void init(); /* Initialisieren */
extern void load_open(); /* Eroeffnungen laden */
SHAR_EOF
chmod 0644 ch/ch.h ||
echo 'restore of ch/ch.h failed'
Wc_c="`wc -c < 'ch/ch.h'`"
test 6139 -eq "$Wc_c" ||
echo 'ch/ch.h: original size 6139, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= ch/ph.h ==============
if test -f 'ch/ph.h' -a X"$1" != X"-c"; then
echo 'x - skipping ch/ph.h (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting ch/ph.h (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'ch/ph.h' &&
/* XChess V2.7 */
/* Beweglichkeit der Figuren bei optimalen Bedingungen */
/* ohne Schlagen */
X
#define BWLEE 0
#define BWBAU 1
#define BWXBAU 2
#define BWSPR 8
#define BWLAE 13
#define BWTUR 14
#define BWXTUR 9
#define BWDAM (BWTUR+BWLAE)
#define BWKOE 8
#define BWXKOE 6
X
/* Spielphasen */
X
#define EROEFF 0 /* Eroeffnung */
#define MITTEL 1 /* Mittelspiel */
#define ENDSPI 2 /* Endspiel */
#define WKOEOO 10 /* Weisser Koenig ohne Offiziere */
#define SKOEOO 11 /* Schwarzer Koenig ohne Offiziere */
#define REMIS 99 /* Remis */
X
SHAR_EOF
chmod 0644 ch/ph.h ||
echo 'restore of ch/ph.h failed'
Wc_c="`wc -c < 'ch/ph.h'`"
test 557 -eq "$Wc_c" ||
echo 'ch/ph.h: original size 557, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= ad/patchlevel.h ==============
if test -f 'ad/patchlevel.h' -a X"$1" != X"-c"; then
echo 'x - skipping ad/patchlevel.h (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting ad/patchlevel.h (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'ad/patchlevel.h' &&
/*----------------------------------------------------------------------*/
/* */
/* XChess V2.7: Current patch level */
/* (initial level is zero) */
/* */
/*----------------------------------------------------------------------*/
X
#define PATCHLEVEL 0
SHAR_EOF
chmod 0644 ad/patchlevel.h ||
echo 'restore of ad/patchlevel.h failed'
Wc_c="`wc -c < 'ad/patchlevel.h'`"
test 277 -eq "$Wc_c" ||
echo 'ad/patchlevel.h: original size 277, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= ad/lex.l ==============
if test -f 'ad/lex.l' -a X"$1" != X"-c"; then
echo 'x - skipping ad/lex.l (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting ad/lex.l (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'ad/lex.l' &&
/*----------------------------------------------------------------------*/
/* */
/* Name: Chess V2.7 */
/* */
/* Programmteil: externe Strings einlesen */
/* */
/* Library: UNIX V + lex */
/* */
/* Autor: Marc Laukien */
/* */
/*----------------------------------------------------------------------*/
X
%{
#include <string.h>
#include <ctype.h>
X
extern char *malloc();
extern void exit();
X
extern char *pname; /* Programmname */
extern char def[]; /* Definitionfile */
extern int errno; /* Fehlernummer */
extern char *sys_errlist[]; /* Fehlertexte */
X
extern int atoi();
X
void lex();
static void insert();
static int getnr();
X
static char str[100]; /* String */
X
char *amenu[10]; /* Adm.menuestrings */
char *menu[10]; /* Menuestrings */
char *smenu[5]; /* Setup-Menuestrings */
char *info[10]; /* Infostrings */
char *tr_lv; /* Trainingslevel */
char *to_lv; /* Turnierlevel */
char *press_key; /* <Taste> */
char *tlist; /* Ueberschrift Turnier */
char *ulist; /* Ueberschrift Training*/
char *scorelist; /* Ueberschrift Score */
char *sure; /* Sicherheitsabfrage */
char *give_up; /* Aufg. Abfrage */
char *figtab; /* Figurentab. */
char *comp; /* Computername */
char *white,*black; /* Farben */
char *domove; /* Zug */
char *doset; /* Setup */
char *enter; /* Namen eing. */
char *opponent; /* Gegner eing. */
char *error; /* Fehler */
char *not_allowed; /* nicht erlaubt */
char *no_user; /* kein User */
char *figlist; /* geschl. Fig. */
char *ison,*isoff; /* Ein/Aus */
char *thinking; /* Comp. denkt */
char *is_thinking; /* Gegner denkt */
char *load_lib; /* Lade Eroeffnungen */
char *startcmd; /* Startkommando */
char *patt,*w_mate,*b_mate; /* Status */
char *w_up,*b_up;
char *w_chess,*b_chess;
char *remis_3;
X
%}
X
T [ \t]
S \".*\"
N "["[0-9]*"]"
%%
#.*\n { ; /* Kommentar */ }
"amenu"{N}{T}*{S} { insert(&amenu[getnr()]);}
"menu"{N}{T}*{S} { insert(&menu[getnr()]); }
"smenu"{N}{T}*{S} { insert(&smenu[getnr()]);}
"info"{N}{T}*{S} { insert(&info[getnr()]); }
"tr_lv"{T}*{S} { insert(&tr_lv); }
"to_lv"{T}*{S} { insert(&to_lv); }
"press_key"{T}*{S} { insert(&press_key); }
"tlist"{T}*{S} { insert(&tlist); }
"ulist"{T}*{S} { insert(&ulist); }
"scorelist"{T}*{S} { insert(&scorelist); }
"sure"{T}*{S} { insert(&sure); }
"give_up"{T}*{S} { insert(&give_up); }
"comp"{T}*{S} { insert(&comp); }
"figtab"{T}*{S} { insert(&figtab); }
"white"{T}*{S} { insert(&white); }
"black"{T}*{S} { insert(&black); }
"domove"{T}*{S} { insert(&domove); }
"doset"{T}*{S} { insert(&doset); }
"enter"{T}*{S} { insert(&enter); }
"opponent"{T}*{S} { insert(&opponent); }
"error"{T}*{S} { insert(&error); }
"not_allowed"{T}*{S} { insert(¬_allowed); }
"no_user"{T}*{S} { insert(&no_user); }
"figlist"{T}*{S} { insert(&figlist); }
"ison"{T}*{S} { insert(&ison); }
"isoff"{T}*{S} { insert(&isoff); }
"thinking"{T}*{S} { insert(&thinking); }
"is_thinking"{T}*{S} { insert(&is_thinking); }
"load_lib"{T}*{S} { insert(&load_lib); }
"startcmd"{T}*{S} { insert(&startcmd); }
"patt"{T}*{S} { insert(&patt); }
"w_mate"{T}*{S} { insert(&w_mate); }
"b_mate"{T}*{S} { insert(&b_mate); }
"w_up"{T}*{S} { insert(&w_up); }
"b_up"{T}*{S} { insert(&b_up); }
"w_chess"{T}*{S} { insert(&w_chess); }
"b_chess"{T}*{S} { insert(&b_chess); }
"remis_3"{T}*{S} { insert(&remis_3); }
X
[ \t\n] { ; /* Leerstellen, Tabs und Newline ignorieren */ }
. { fprintf(stderr,
X "%s: syntax error in %s at line %d\n"
X ,pname,str,yylineno);
X ad_deinit();
X exit(1);
X } /* Fehler */
%%
X
void lex()
{
X FILE *fp; /* Filepointer */
X
X sprintf(str,"def.%s",def); /* aufbereiten */
X if((fp=fopen(str,"r"))==(FILE *)0) /* oeffnen */
X {
X fprintf(stderr,"%s: %s\n",pname,sys_errlist[errno]);
X ad_deinit();
X exit(1);
X }
X
X yyin = fp; /* Input setzen */
X
X yylex();
X
X fclose(fp); /* schliessen */
}
X
static void insert(pt) /* String einfuegen */
char **pt;
{
X char st[100];
X char *s;
X int i;
X
X s=st;
X
X strcpy(s,yytext);
X while(*s != '"')
X s++;
X s++;
X
X i=0;
X while(s[i] != '"')
X i++;
X s[i]=0;
X
X *pt=(char *)malloc((unsigned)(strlen(s)+1));
X strcpy(*pt,s);
}
X
static int getnr() /* Stringnummer holen */
{
X char st[100];
X char *s;
X int i;
X
X s=st;
X
X strcpy(s,yytext);
X while(!isdigit(*s))
X s++;
X
X i=0;
X while(isdigit(s[i]))
X i++;
X s[i]=0;
X
X return(atoi(s));
}
X
SHAR_EOF
chmod 0644 ad/lex.l ||
echo 'restore of ad/lex.l failed'
Wc_c="`wc -c < 'ad/lex.l'`"
test 4484 -eq "$Wc_c" ||
echo 'ad/lex.l: original size 4484, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= ad/patchlevel.h ==============
if test -f 'ad/patchlevel.h' -a X"$1" != X"-c"; then
echo 'x - skipping ad/patchlevel.h (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting ad/patchlevel.h (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'ad/patchlevel.h' &&
/*----------------------------------------------------------------------*/
/* */
/* XChess V2.7: Current patch level */
/* (initial level is zero) */
/* */
/*----------------------------------------------------------------------*/
X
#define PATCHLEVEL 0
SHAR_EOF
chmod 0644 ad/patchlevel.h ||
echo 'restore of ad/patchlevel.h failed'
Wc_c="`wc -c < 'ad/patchlevel.h'`"
test 277 -eq "$Wc_c" ||
echo 'ad/patchlevel.h: original size 277, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= op/op.albinsgegam ==============
if test ! -d 'op'; then
echo 'x - creating directory op'
mkdir 'op'
fi
if test -f 'op/op.albinsgegam' -a X"$1" != X"-c"; then
echo 'x - skipping op/op.albinsgegam (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting op/op.albinsgegam (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'op/op.albinsgegam' &&
# ---------------------------------------------------------------------
#
# Name: Chess V2.7
# Schachprogramm
#
# Programmteil: Opening-Library
# Albins Gegengambit
#
# Autor: Christoph Thommes
#
# ---------------------------------------------------------------------
#
# (unknown)
# 4. e2e3 (?)
# +++ Umwandlung 7. .... f2g1S nicht moeglich +++
# Bd2d4d7d5c2c4e7e5d4e5d5d4e2e3f8b4c1d2d4e3d2b4e3f2e1e2f2g1e2e1d8h4e1d2b8c6b4c3
# c8g4
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
#
SHAR_EOF
chmod 0644 op/op.albinsgegam ||
echo 'restore of op/op.albinsgegam failed'
Wc_c="`wc -c < 'op/op.albinsgegam'`"
test 636 -eq "$Wc_c" ||
echo 'op/op.albinsgegam: original size 636, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= op/op.aljechin ==============
if test -f 'op/op.aljechin' -a X"$1" != X"-c"; then
echo 'x - skipping op/op.aljechin (File already exists)'
rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting op/op.aljechin (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'op/op.aljechin' &&
# ---------------------------------------------------------------------
#
# Name: Chess V2.7
# Schachprogramm
#
# Programmteil: Opening-Library
# Aljechin-Verteidigung
#
# Autor: Christoph Thommes
#
# ---------------------------------------------------------------------
#
# (unknown)
WBe2e4g8f6e4e5f6d5c2c4d5b6d2d4d7d6f2f4d6e5f4e5b8c6c1e3c8f5b1c3e7e6g1f3f8e7
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (Mazukewitsch-Bodischko,1958)
# 8. .... c8e6 (?)
We2e4g8f6e4e5f6d5c2c4d5b6c4c5b6d5b1c3d5c3d2c3d7d6c1g5d6e5d1b3c8e6b3b7b8d7b2b4f7f6g5e3e8f7g1f3d8c8b7c6a7a6c6e6f7e6f1c4e6f5f3h4f5e4e1e2
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (Aronin-Mikenas,1951)
# 6. .... b8c6 (?!)
We2e4g8f6e4e5f6d5d2d4d7d6g1f3c8g4f1e2e7e6e1g1b8c6c2c4d5e7e5d6d8d6b1c3e7g6d4d5e6d5c4d5g4f3g2f3c6e5c3b5d6d7f3f4g6h4f4e5d7h3b5c7e8d8c7e6
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
#
# (Aljechin-Fine,1932)
WBe2e4g8f6e4e5f6d5c2c4d5b6c4c5b6d5b1c3d5c3d2c3d7d6f1c4d6d5d1d5d8d5c4d5e7e6d5e4f8c5
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (Poletajew-Rachno,1948)
We2e4g8f6e4e5f6d5c2c4d5b6c4c5b6d5b1c3d5c3d2c3d7d6c1g5d6e5d1b3d8d7a1d1d7f5f1c4b8c6c4d5h7h6b3b5f5g6g1f3a7a6b5a4c8d7g5e3e7e6d5e4g6f6a4b3
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (Krogius-Saizew,1971)
We2e4g8f6e4e5f6d5c2c4d5b6c4c5b6d5b1c3d5c3d2c3d7d6c5d6e7d6f1c4f8e7c1f4d6e5f4e5e8g8d1d8e7d8g1f3
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (Hennings-Semjkal,1970)
We2e4g8f6e4e5f6d5c2c4d5b6c4c5b6d5b1c3e7e6c3d5e6d5d2d4b7b6c1e3b6c5d4c5c7c6f1d3b8a6a1c1d8a5e3d2a5a2c1a1a2b2d3a6c8a6a1a6b2e5g1e2f8c5
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (Nicewski-Wasjukow,1969)
WBe2e4g8f6e4e5f6d5c2c4d5b6c4c5b6d5b1c3e7e6c3d5e6d5d2d4d7d6c5d6c7d6g1f3b8c6f1e2f8e7e1g1e8g8c1f4c8g4d1d2f8e8f1d1a8c8a1c1a7a6
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (Ozsvath-Csom,1967)
WBe2e4g8f6e4e5f6d5c2c4d5b6c4c5b6d5b1c3e7e6d2d4d7d6c5d6c7d6g1f3b8c6e5d6f8d6f1d3d5f4c1f4d6f4
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (Sweschnikow-Palatnik,1974)
WBe2e4g8f6e4e5f6d5c2c4d5b6c4c5b6d5b1c3c7c6f1c4d7d6d1b3d6e5c3d5c6d5c4d5e7e6d5b7c8b7b3b7d8d5
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (unknown)
We2e4g8f6e4e5f6d5c2c4d5b6c4c5b6d5f1c4e7e6b1c3f8c5d2d4c5b4c4d5e6d5d1g4e8f8g1f3d7d6g4g3b8c6e1g1
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (Wasjukow-Spasski,1959)
WBe2e4g8f6e4e5f6d5c2c4d5b6c4c5b6d5f1c4e7e6b1c3d7d6c3d5e6d5c4d5c7c6d5f7e8f7c5d6d8e8d1f3f7g8f3e3c8e6g1e2b8d7e1g1d7e5e3e5e6c4e5e8a8e8
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (Prachov-Slawow,1961)
WBe2e4g8f6e4e5f6d5c2c4d5b6c4c5b6d5f1c4e7e6b1c3d5c3d2c3f8c5d1g4e8f8
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (Markland-Ghizdavu,1973)
We2e4g8f6e4e5f6d5c2c4d5b6c4c5b6d5f1c4e7e6b1c3d5c3d2c3b8c6c1f4b7b6c5b6a7b6g1f3f8e7e1g1e8g8d1e2
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (Angelow-Orew,1971)
WBe2e4g8f6e4e5f6d5c2c4d5b6c4c5b6d5f1c4e7e6b1c3d5c3d2c3b8c6c1f4f8c5d1g4g7g5f4g5h8g8g1h3c5e7f2f4c6e5f4e5e7g5g4h5g8g7e1g1d8e7
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (Angelow-Suba,1975)
WBe2e4g8f6e4e5f6d5c2c4d5b6c4c5b6d5f1c4e7e6b1c3d5c3d2c3b8c6c1f4d8h4d1d2c6e5c4e2e5g6f4c7f8c5c7g3h4a4h2h4h7h5
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (Matschulski-Gurgenidse,1973)
WBe2e4g8f6e4e5f6d5c2c4d5b6c4c5b6d5f1c4e7e6d2d4b7b6c5b6a7b6g1f3c8a6c4a6b8a6e1g1f8e7
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (unknown)
WBe2e4g8f6e4e5f6d5c2c4d5b6c4c5b6d5f1c4e7e6d2d4d7d6c5d6c7d6g1f3d5b6c4d3b8c6e1g1c6b4
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (Dworezki-Taimanov,1975)
We2e4g8f6e4e5f6d5c2c4d5b6c4c5b6d5f1c4e7e6d2d4d7d6c5d6c7d6d1e2b8c6g1f3f8e7e1g1e8g8e2e4b7b6c4d3g7g6c1h6f8e8b1d2d5b4d3b1c8a6f1d1d6e5d4e5d8d5
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (unknown)
WBe2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4g7g6b1c3d6e5f4e5f8g7c1e3e8g8g1f3c7c5d4c5b6d7e5e6f7e6d1c2d8a5f1e2
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (Gasic-Michaltschischin,1970)
We2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4c8f5b1c3e7e6c1e3b8a6e5d6c7d6g1f3f8e7f1e2e8g8a1c1
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (unknown)
We2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4c8f5b1c3e7e6c1e3f8e7g1f3e8g8f1d3f5d3d1d3d6d5b2b3d5c4b3c4b8c6e1g1
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (Ljubojevic-Moses,1969)
We2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4d6e5f4e5c7c5d4d5e7e6b1c3e6d5c4d5d8h4g2g3h4d4f1b5c8d7d1e2b6d5e5e6f7e6e2e6d5e7g1f3
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (Gruenfeld-Ljubojevic,1979)
WBe2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4d6e5f4e5c7c5d4d5e7e6b1c3e6d5c4d5c5c4g1f3c8g4d1d4g4f3g2f3f8b4f1c4e8g8h1g1g7g6c1g5d8c7c4b3b4c5d4f4c5g1d5d6c7c5c3e4c5d4a1d1d4b2e5e6b8d7
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (Suetin-Mikenas,1961)
WBe2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4d6e5f4e5c8f5b1c3e7e6g1f3f8e7f1e2e8g8e1g1f7f6c1e3f6e5f3e5b8d7e5f3h7h6c4c5b6d5c3d5e6d5d1b3d7f6f3e5d8c8a1e1c7c6
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (Pithart-Williams,1972)
WBe2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4d6e5f4e5c8f5b1c3e7e6g1f3f8b4c1e3c7c5f1e2b8c6e1g1c5d4f3d4c6d4e3d4f5c2d1d2a8c8g1h1e8g8b2b3b4c5c3b5c5d4b5d4c2g6e2f3c8c7d2e3c7d7
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (Velimirovic-Martz,1973)
We2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4d6e5f4e5c8f5b1c3e7e6g1f3f8b4f1d3f5g4e1g1b8c6c4c5b4c3b2c3b6d5d1e1
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (unknown)
We2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4d6e5f4e5b8c6g1f3c8g4e5e6f7e6c4c5b6c8f1b5g4f3d1f3d8d5b1d2g7g6e1g1d5f3d2f3f8g7c1e3
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (unknown)
WBe2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4d6e5f4e5b8c6g1f3c8g4e5e6f7e6c4c5b6d7f1e2e6e5e1g1e5d4f3g5g4e2d1e2d7e5g5e6d8d7e2h5g7g6h5h7d7e6h7h8e5d7
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (unknown)
WBe2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4d6e5f4e5b8c6g1f3c8g4e5e6f7e6c4c5e6e5c5b6e5e4d4d5e4f3g2f3g4h5b6c7d8c7d5c6c7c6f1e2a8d8c1d2
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (unknown)
We2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4d6e5f4e5b8c6g1f3c8g4e5e6f7e6c4c5g4f3d1f3c6d4f3f2b6a4c1e3d8d5b1a3
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (Keeley-Hewitt,1962)
Be2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4d6e5f4e5b8c6g1f3c8g4e5e6f7e6c4c5b6d5f1b5d8d7b1d2g7g6d1a4f8g7f3e5g7e5d4e5d5e3a4e4e8g8e4e3c6b4
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (Zuidema-Hecht,1971)
WBe2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4d6e5f4e5b8c6c1e3c8f5b1c3e7e6g1f3f8b4f1e2e8g8e1g1b4c3b2c3c6a5f3d2d8d7f1f4f5g6d1f1c7c5
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (unknown)
We2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4d6e5f4e5b8c6c1e3c8f5b1c3e7e6g1f3f8b4a1c1e8g8a2a3b4c3c1c3d8d7f1e2a8d8e1g1f5g4g1h1g4f3e2f3c6d4e3g5
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (Hora-Pribly,1972)
WBe2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4d6e5f4e5b8c6c1e3c8f5b1c3e7e6g1f3f5g4d1d2f8e7e1c1a7a5h2h3g4h5g2g4h5g6h3h4c6b4
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (Kadrew-Bogdanow,1963)
We2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4d6e5f4e5b8c6c1e3c8f5b1c3e7e6g1f3c6b4a1c1c7c5f1e2f5g4e1g1g4f3e2f3b6c4
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (Negyesy-Tartakower,1925)
# 11. .... c5d4 (?)
We2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4d6e5f4e5b8c6c1e3c8f5b1c3e7e6g1f3c6b4a1c1c7c5f1e2c5d4f3d4f5g6a2a3b4c6d4c6b7c6d1d8e8d8e3b6a7b6e2f3a8c8c3e4
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (Keres-Saitar,1943)
WBe2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4d6e5f4e5b8c6c1e3c8f5b1c3e7e6g1f3c6b4a1c1c7c5f1e2f8e7e1g1e8g8a2a3c5d4f3d4b4c6d4f5e6f5f1f5g7g6f5f1e7g5e3c5f8e8d1d8a8d8c1d1c6e5c3e4d8d1
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (Honfi-Ghizdavu,1973)
WBe2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4d6e5f4e5b8c6c1e3c8f5b1c3e7e6g1f3d8d7f1e2e8c8e1g1f5g4c4c5b6d5c3d5d7d5f3g5g4e2d1e2c6d4e3d4d5d4g1h1d4d2e2d2d8d2f1f7f8c5g5e6
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (unknown)
WBe2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4d6e5f4e5b8c6c1e3c8f5b1c3e7e6g1f3d8d7f1e2e8c8e1g1f7f6d4d5c6e5f3e5f6e5a2a4a7a5c3b5f8b4d5d6c7c5e3d2
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (Hecht-Timman,1971)
WBe2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4d6e5f4e5b8c6c1e3c8f5b1c3e7e6g1f3f8e7f1e2e8g8e1g1f7f6e5f6e7f6d1d2d8e7a1d1a8d8d2c1h7h6g1h1g8h8h2h3f5h7e3g1f8e8f1e1e7f7
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (unknown)
We2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4d6e5f4e5b8c6c1e3c8f5b1c3e7e6g1f3f8e7f1e2e8g8e1g1f7f6e5f6e7f6d1d2d8e8e3g5a8d8g5f6f8f6a1d1f5g4c3e4f6f5d2e3
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (Lutikow-Bagirow,1960)
We2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4d6e5f4e5b8c6c1e3c8f5b1c3e7e6g1f3f8e7f1e2e8g8e1g1f7f6e5f6e7f6d1d2f8f7a1d1f7d7c4c5b6d5c3d5e6d5f3e5f6e5f1f5e5f6e2g4
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (Marjanovic-Roguli,1975)
We2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4d6e5f4e5b8c6c1e3c8f5b1c3e7e6g1f3f8e7d4d5e6d5c4d5c6b4f3d4f5d7e5e6f7e6d5e6d7c6d1g4e7h4g2g3c6h1e1c1d8f6g3h4e8g8
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (unknown)
WBe2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4d6e5f4e5b8c6c1e3c8f5b1c3e7e6g1f3f8e7d4d5c6b4f3d4f5g6a2a3c7c5d4e6f7e6a3b4c5b4c3a4e8g8a4b6a7b6a1a8d8a8d5d6e7d8f1e2b4b3
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (unknown)
We2e4g8f6e4e5f6d5d2d4d7d6c2c4d5b6f2f4d6e5f4e5b8c6c1e3c8f5b1c3e7e6g1f3f8e7d4d5c6b4a1c1e6d5a2a3c7c5a3b4d5d4e3d4c5d4f3d4d8b8d4f5b8e5f1e2e5f5c4c5b6d7e2g4f5e5d1e2e5e2e1e2d7e5
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (Panow-Mikenas,1943)
Be2e4g8f6e4e5f6d5d2d4d7d6g1f3c8g4h2h3g4f3d1f3d6e5d4e5e7e6a2a3b8d7f3g3h7h5b1d2h5h4g3b3h8h5d2f3d7e5
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (Kupreitschik-Bagirow,1970)
Be2e4g8f6e4e5f6d5d2d4d7d6g1f3c8g4h2h3g4f3d1f3d6e5d4e5e7e6f3e4b8d7f1c4d7c5e4e2d5b6c4b3a7a5a2a3c5b3c2b3f8e7
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (Shurawljow-Alburt,1974)
Be2e4g8f6e4e5f6d5d2d4d7d6g1f3c8g4h2h3g4f3d1f3d6e5d4e5e7e6f1c4b8c6f3e4d5e7c1e3e7f5e1g1d8h4e4h4f5h4c4b5h4f5b5c6b7c6b1d2f5e3f2e3a8d8
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (unknown)
WBe2e4g8f6e4e5f6d5d2d4d7d6g1f3c8g4c2c4d5b6f1e2d6e5c4c5e5e4c5b6e4f3e2f3g4f3d1f3b8c6e1g1c6d4f3b7a7b6c1e3a8b8b7e4d4b5
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (Bschniew-Sergejew,1982)
WBe2e4g8f6e4e5f6d5d2d4d7d6g1f3c8g4f1e2c7c6e1g1g4f3e2f3d6e5d4e5e7e6d1e2b8d7f1e1d8c7c1d2f8c5c2c4d5e7d2c3a7a5
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (Unzicker-Schmid,1959)
We2e4g8f6e4e5f6d5d2d4d7d6g1f3c8g4f1e2c7c6f3g5g4e2d1e2d6e5d4e5e7e6e1g1b8d7c2c4d5e7b1c3e7f5g5f3d8c7f1e1f8b4c1d2
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (unknown)
WBe2e4g8f6e4e5f6d5d2d4d7d6g1f3c8g4f1e2c7c6f3g5g4f5e5e6f7e6g2g4f5g6e2d3g6d3d1d3g7g6e1g1f8h6g5e6d8d7d3e2h6c1f1c1b8a6
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (Estrin-Gik,1968)
WBe2e4g8f6e4e5f6d5d2d4d7d6g1f3c8g4f1e2b8c6c2c4d5b6e5d6e7d6e1g1f8e7b1c3e8g8b2b3e7f6c1e3d6d5c4c5b6c8h2h3g4e6b3b4a7a6a1b1c8e7
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (unknown)
We2e4g8f6e4e5f6d5d2d4d7d6g1f3c8g4f1e2b8c6e1g1d5b6h2h3g4f3e2f3d6e5d4e5d8d1f1d1e7e6b2b3f8e7
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (unknown)
We2e4g8f6e4e5f6d5d2d4d7d6g1f3c8g4f1e2e7e6e1g1b8c6c2c4d5b6e5d6c7d6d4d5e6d5c4d5g4f3g2f3c6e5e2b5e5d7d1d4d8f6f1e1f8e7d4f6g7f6b1c3e8d8f3f4
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (Minic-Hort,1969)
WBe2e4g8f6e4e5f6d5d2d4d7d6g1f3c8g4f1e2e7e6e1g1f8e7c2c4d5b6e5d6c7d6b2b3b8c6b1c3e8g8c1e3d6d5c4c5b6c8b3b4a7a6a1b1e7f6a2a4c8e7b4b5c6a5e3f4e7f5f3e5g4e2c3e2a6b5a4b5
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (Makarytschew-Palatnik,1974)
WBe2e4g8f6e4e5f6d5d2d4d7d6g1f3c8g4f1e2e7e6e1g1f8e7c2c4d5b6e5d6c7d6b2b3b8c6c1b2e8g8b1d2d6d5c4c5b6d7a2a3a7a6b3b4d8c7
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (Timman-Bagirow,1971)
We2e4g8f6e4e5f6d5d2d4d7d6g1f3c8g4f1e2e7e6e1g1f8e7c2c4d5b6e5d6c7d6b1c3e8g8c1e3b8c6d4d5g4f3e2f3c6e5d5e6f7e6f3g4e5c4g4e6g8h8e3b6c4b6d1b3e7f6
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (unknown)
WBe2e4g8f6e4e5f6d5d2d4d7d6g1f3c8g4f1e2e7e6e1g1f8e7c2c4d5b6e5d6c7d6b1c3e8g8c1e3d6d5c4c5g4f3e2f3b6c4e3f4b8c6b2b3c4a5a1c1b7b6c3a4e7f6f4e3b6b5a4c3b5b4
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (Medina-Hecht,1972)
WBe2e4g8f6e4e5f6d5d2d4d7d6g1f3c8g4f1e2e7e6e1g1f8e7c2c4d5b6h2h3g4h5e5d6c7d6b1d2b8c6b2b3e8g8c1b2d6d5c4c5b6d7a2a3f7f6b3b4a7a6f1e1h5f7d2f1b7b6f1e3d8c7d1d2f8d8
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (Kavalek-Schmidt,1974)
WBe2e4g8f6e4e5f6d5d2d4d7d6g1f3c8g4f1e2e7e6e1g1f8e7c2c4d5b6h2h3g4h5b1c3e8g8c1e3d6d5c4c5h5f3e2f3b6c4e3f4b7b6b2b3c4a5a1c1b6c5d4c5a5c6f1e1e7g5c3d5e6d5f4g5d8g5f3d5
# . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 .
# (Matanovic-Vukic,1975)
WBe2e4g8f6e4e5f6d5d2d4d7d6g1f3c8g4f1e2e7e6e1g1f8e7c2c4d5b6h2h3g4h5b1c3e8g8c1e3d6d5c4c5h5f3g2f3b6c8b2b4f7f6f3f4f6e5f4e5d8e8e2d3e7d8
SHAR_EOF
true || echo 'restore of op/op.aljechin failed'
fi
echo 'End of UnixChess part 4'
echo 'File op/op.aljechin is continued in part 5'
echo 5 > _shar_seq_.tmp
exit 0
--
/ | -: Marc Laukien :- |
/__ | | _ _ __
/ \ /_ / / | ml@brumuc.muc.sub.org | / \/ | / / /
/____/ / /__/ | sigma@salyko.doit.sub.org | / | /__/ /__