[comp.sources.games] v12i007: reve - an othello game, Patch3g

billr@saab.CNA.TEK.COM (Bill Randle) (12/22/90)

Submitted-by: Rich Burridge <rburridge@sun.COM>
Posting-number: Volume 12, Issue 7
Archive-name: reve/Patch3g
Patch-To: reve: Volume 11, Issue 52-58
Environment: SunView, XView, X11R4, termcap



#! /bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of archive 7 (of 9)."
# Contents:  patches03d
# Wrapped by billr@saab on Fri Dec 21 11:27:44 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'patches03d' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'patches03d'\"
else
echo shar: Extracting \"'patches03d'\" \(45079 characters\)
sed "s/^X//" >'patches03d' <<'END_OF_FILE'
X
X------- rev_eval.c -------
X*** /tmp/da07623	Sun Dec  9 15:17:12 1990
X--- rev_eval.c	Wed Dec  5 10:37:09 1990
X***************
X*** 47,65 ****
X  int niv ;
X  {
X    register int *d, *p ;
X!   register int i, x, y ;
X    register long note ;
X    register int vp, vo ;
X    register long tnote, cx ;
X  
X    d = damier[niv] ;
X  
X    if (mnb > 60 - profmax)
X      {
X        note = 0 ;
X        for (p = &d[0]; p < &d[64]; p++)
X!              if (*p == macouleur) note++ ;
X!         else if (*p == tacouleur) note-- ;
X        return(note) ;
X      }
X    else
X--- 47,67 ----
X  int niv ;
X  {
X    register int *d, *p ;
X!   register int i, x, y, tc, mc ;
X    register long note ;
X    register int vp, vo ;
X    register long tnote, cx ;
X  
X    d = damier[niv] ;
X+   tc = tacouleur ;
X+   mc = macouleur ;
X  
X    if (mnb > 60 - profmax)
X      {
X        note = 0 ;
X        for (p = &d[0]; p < &d[64]; p++)
X! 	     if (*p == mc) note++ ;
X! 	else if (*p == tc) note-- ;
X        return(note) ;
X      }
X    else
X***************
X*** 66,73 ****
X      {
X        x = y = 0 ;
X        for (p = &d[0]; p < &d[64]; p++)
X!              if (*p == macouleur) x++ ;
X!         else if (*p == tacouleur) y++ ;
X        if (x == 0) return(-100000000) ;
X        if (y == 0) return( 100000000) ;
X  
X--- 68,75 ----
X      {
X        x = y = 0 ;
X        for (p = &d[0]; p < &d[64]; p++)
X! 	     if (*p == mc) x++ ;
X! 	else if (*p == tc) y++ ;
X        if (x == 0) return(-100000000) ;
X        if (y == 0) return( 100000000) ;
X  
X***************
X*** 78,163 ****
X        for (p = &d[0]; p < &d[8]; p++)
X          {
X            i += i + i ;
X!                if (*p == FREE)      i++ ;
X!           else if (*p == macouleur) i += 2 ;
X          }
X        note = edges[i] ;
X  
X-       if (((i == 2191) && (d[13] == macouleur)) ||
X-           ((i == 2917) && (d[10] == macouleur)) ||
X-           ((i == 3643) && (d[10] == tacouleur)) ||
X-           ((i == 4369) && (d[13] == tacouleur)))
X-         note -= edges[i] ;
X- 
X        i = 0 ;
X        for (p = &d[56]; p < &d[64]; p++)
X          {
X            i += i + i ;
X!                if (*p == FREE)      i++ ;
X!           else if (*p == macouleur) i += 2 ;
X          }
X        note += edges[i] ;
X  
X-       if (((i == 2191) && (d[53] == macouleur)) ||
X-           ((i == 2917) && (d[50] == macouleur)) ||
X-           ((i == 3643) && (d[50] == tacouleur)) ||
X-           ((i == 4369) && (d[53] == tacouleur)))
X-         note -= edges[i] ;
X- 
X        i = 0 ;
X        for (p = &d[0]; p < &d[64]; p += 8)
X          {
X            i += i + i ;
X!                if (*p == FREE)      i++ ;
X!           else if (*p == macouleur) i += 2 ;
X          }
X        note += edges[i] ;
X  
X-       if (((i == 2191) && (d[41] == macouleur)) ||
X-           ((i == 2917) && (d[17] == macouleur)) ||
X-           ((i == 3643) && (d[17] == tacouleur)) ||
X-           ((i == 4369) && (d[41] == tacouleur)))
X-         note -= edges[i] ;
X- 
X        i = 0 ;
X        for (p = &d[7]; p < &d[64]; p += 8)
X          {
X            i += i + i ;
X!                if (*p == FREE)      i++ ;
X!           else if (*p == macouleur) i += 2 ;
X          }
X        note += edges[i] ;
X  
X-       if (((i == 2191) && (d[46] == macouleur)) ||
X-           ((i == 2917) && (d[22] == macouleur)) ||
X-           ((i == 3643) && (d[22] == tacouleur)) ||
X-           ((i == 4369) && (d[46] == tacouleur)))
X-         note -= edges[i] ;
X- 
X        cx = 8 * (50 - mnb - profmax) ;
X  
X        if (d[0] == FREE)
X          {
X!                if (d[9] == macouleur) note -= cx ;
X!           else if (d[9] == tacouleur) note += cx ;
X          }
X  
X        if (d[7] == FREE)
X          {
X!                if (d[14] == macouleur) note -= cx ;
X!           else if (d[14] == tacouleur) note += cx ;
X          }
X  
X        if (d[56] == FREE)
X          {
X!                if (d[49] == macouleur) note -= cx ;
X!           else if (d[49] == tacouleur) note += cx ;
X          }
X  
X        if (d[63] == FREE)
X          {
X!                if (d[54] == macouleur) note -= cx ;
X!           else if (d[54] == tacouleur) note += cx ;
X          }
X  
X        tnote = c1 * note + c2 * (long) 1000 * (vp0 - vo0) / (vp0 + vo0 + 2) ;
X--- 80,141 ----
X        for (p = &d[0]; p < &d[8]; p++)
X          {
X            i += i + i ;
X! 	       if (*p == FREE) i++ ;
X! 	  else if (*p == mc)   i += 2 ;
X          }
X        note = edges[i] ;
X  
X        i = 0 ;
X        for (p = &d[56]; p < &d[64]; p++)
X          {
X            i += i + i ;
X! 	       if (*p == FREE) i++ ;
X! 	  else if (*p == mc)   i += 2 ;
X          }
X        note += edges[i] ;
X  
X        i = 0 ;
X        for (p = &d[0]; p < &d[64]; p += 8)
X          {
X            i += i + i ;
X! 	       if (*p == FREE) i++ ;
X! 	  else if (*p == mc)   i += 2 ;
X          }
X        note += edges[i] ;
X  
X        i = 0 ;
X        for (p = &d[7]; p < &d[64]; p += 8)
X          {
X            i += i + i ;
X! 	       if (*p == FREE) i++ ;
X! 	  else if (*p == mc)   i += 2 ;
X          }
X        note += edges[i] ;
X  
X        cx = 8 * (50 - mnb - profmax) ;
X  
X        if (d[0] == FREE)
X          {
X! 	       if (d[9] == mc) note -= cx ;
X! 	  else if (d[9] == tc) note += cx ;
X          }
X  
X        if (d[7] == FREE)
X          {
X! 	       if (d[14] == mc) note -= cx ;
X! 	  else if (d[14] == tc) note += cx ;
X          }
X  
X        if (d[56] == FREE)
X          {
X! 	       if (d[49] == mc) note -= cx ;
X! 	  else if (d[49] == tc) note += cx ;
X          }
X  
X        if (d[63] == FREE)
X          {
X! 	       if (d[54] == mc) note -= cx ;
X! 	  else if (d[54] == tc) note += cx ;
X          }
X  
X        tnote = c1 * note + c2 * (long) 1000 * (vp0 - vo0) / (vp0 + vo0 + 2) ;
X***************
X*** 167,173 ****
X          for (y = 0; y < 8; y++)
X            {
X              i = (x << 3) + y ;
X!             if (d[i] == tacouleur)
X                {
X                       if ((x > 0) && (d[i - 8] == FREE))            vp++ ;
X                  else if ((x < 7) && (d[i + 8] == FREE))            vp++ ;
X--- 145,151 ----
X          for (y = 0; y < 8; y++)
X            {
X              i = (x << 3) + y ;
X! 	    if (d[i] == tc)
X                {
X                       if ((x > 0) && (d[i - 8] == FREE))            vp++ ;
X                  else if ((x < 7) && (d[i + 8] == FREE))            vp++ ;
X***************
X*** 178,184 ****
X                  else if ((x > 0) && (y < 7) && (d[i - 7] == FREE)) vp++ ;
X                  else if ((x < 7) && (y < 7) && (d[i + 9] == FREE)) vp++ ;
X                }
X!             if (d[i] == macouleur)
X                {
X                       if ((x > 0) && (d[i - 8] == FREE))             vo++ ;
X                  else if ((x < 7) && (d[i + 8] == FREE))             vo++ ;
X--- 156,162 ----
X                  else if ((x > 0) && (y < 7) && (d[i - 7] == FREE)) vp++ ;
X                  else if ((x < 7) && (y < 7) && (d[i + 9] == FREE)) vp++ ;
X                }
X! 	    if (d[i] == mc)
X                {
X                       if ((x > 0) && (d[i - 8] == FREE))             vo++ ;
X                  else if ((x < 7) && (d[i + 8] == FREE))             vo++ ;
X***************
X*** 200,222 ****
X              i = (x << 3) + y ;
X              if (d[i] == FREE)
X                {
X!                      if ((x > 0) && (d[i - 8] == tacouleur))            vp++ ;
X!                 else if ((x < 7) && (d[i + 8] == tacouleur))            vp++ ;
X!                 else if ((y > 0) && (d[i - 1] == tacouleur))            vp++ ;
X!                 else if ((y < 7) && (d[i + 1] == tacouleur))            vp++ ;
X!                 else if ((x > 0) && (y > 0) && (d[i - 9] == tacouleur)) vp++ ;
X!                 else if ((x < 7) && (y > 0) && (d[i + 7] == tacouleur)) vp++ ;
X!                 else if ((x > 0) && (y < 7) && (d[i - 7] == tacouleur)) vp++ ;
X!                 else if ((x < 7) && (y < 7) && (d[i + 9] == tacouleur)) vp++ ;
X  
X!                      if ((x > 0) && (d[i - 8] == macouleur))            vo++ ;
X!                 else if ((x < 7) && (d[i + 8] == macouleur))            vo++ ;
X!                 else if ((y > 0) && (d[i - 1] == macouleur))            vo++ ;
X!                 else if ((y < 7) && (d[i + 1] == macouleur))            vo++ ;
X!                 else if ((x > 0) && (y > 0) && (d[i - 9] == macouleur)) vo++ ;
X!                 else if ((x < 7) && (y > 0) && (d[i + 7] == macouleur)) vo++ ;
X!                 else if ((x > 0) && (y < 7) && (d[i - 7] == macouleur)) vo++ ;
X!                 else if ((x < 7) && (y < 7) && (d[i + 9] == macouleur)) vo++ ;
X                }
X            }
X  
X--- 178,200 ----
X              i = (x << 3) + y ;
X              if (d[i] == FREE)
X                {
X! 		     if ((x > 0) && (d[i - 8] == tc))            vp++ ;
X! 		else if ((x < 7) && (d[i + 8] == tc))            vp++ ;
X! 		else if ((y > 0) && (d[i - 1] == tc))            vp++ ;
X! 		else if ((y < 7) && (d[i + 1] == tc))            vp++ ;
X! 		else if ((x > 0) && (y > 0) && (d[i - 9] == tc)) vp++ ;
X! 		else if ((x < 7) && (y > 0) && (d[i + 7] == tc)) vp++ ;
X! 		else if ((x > 0) && (y < 7) && (d[i - 7] == tc)) vp++ ;
X! 		else if ((x < 7) && (y < 7) && (d[i + 9] == tc)) vp++ ;
X  
X! 		     if ((x > 0) && (d[i - 8] == mc))            vo++ ;
X! 		else if ((x < 7) && (d[i + 8] == mc))            vo++ ;
X! 		else if ((y > 0) && (d[i - 1] == mc))            vo++ ;
X! 		else if ((y < 7) && (d[i + 1] == mc))            vo++ ;
X! 		else if ((x > 0) && (y > 0) && (d[i - 9] == mc)) vo++ ;
X! 		else if ((x < 7) && (y > 0) && (d[i + 7] == mc)) vo++ ;
X! 		else if ((x > 0) && (y < 7) && (d[i - 7] == mc)) vo++ ;
X! 		else if ((x < 7) && (y < 7) && (d[i + 9] == mc)) vo++ ;
X                }
X            }
X  
X***************
X*** 229,251 ****
X              i = (x << 3) + y ;
X              if (d[i] == FREE)
X                {
X!                 if ((x > 0) && (d[i - 8] == tacouleur))            vp++ ;
X!                 if ((x < 7) && (d[i + 8] == tacouleur))            vp++ ;
X!                 if ((y > 0) && (d[i - 1] == tacouleur))            vp++ ;
X!                 if ((y < 7) && (d[i + 1] == tacouleur))            vp++ ;
X!                 if ((x > 0) && (y > 0) && (d[i - 9] == tacouleur)) vp++ ;
X!                 if ((x < 7) && (y > 0) && (d[i + 7] == tacouleur)) vp++ ;
X!                 if ((x > 0) && (y < 7) && (d[i - 7] == tacouleur)) vp++ ;
X!                 if ((x < 7) && (y < 7) && (d[i + 9] == tacouleur)) vp++ ;
X  
X!                 if ((x > 0) && (d[i - 8] == macouleur))            vo++ ;
X!                 if ((x < 7) && (d[i + 8] == macouleur))            vo++ ;
X!                 if ((y > 0) && (d[i - 1] == macouleur))            vo++ ;
X!                 if ((y < 7) && (d[i + 1] == macouleur))            vo++ ;
X!                 if ((x > 0) && (y > 0) && (d[i - 9] == macouleur)) vo++ ;
X!                 if ((x < 7) && (y > 0) && (d[i + 7] == macouleur)) vo++ ;
X!                 if ((x > 0) && (y < 7) && (d[i - 7] == macouleur)) vo++ ;
X!                 if ((x < 7) && (y < 7) && (d[i + 9] == macouleur)) vo++ ;
X                }
X            }
X  
X--- 207,229 ----
X              i = (x << 3) + y ;
X              if (d[i] == FREE)
X                {
X! 		if ((x > 0) && (d[i - 8] == tc))            vp++ ;
X! 		if ((x < 7) && (d[i + 8] == tc))            vp++ ;
X! 		if ((y > 0) && (d[i - 1] == tc))            vp++ ;
X! 		if ((y < 7) && (d[i + 1] == tc))            vp++ ;
X! 		if ((x > 0) && (y > 0) && (d[i - 9] == tc)) vp++ ;
X! 		if ((x < 7) && (y > 0) && (d[i + 7] == tc)) vp++ ;
X! 		if ((x > 0) && (y < 7) && (d[i - 7] == tc)) vp++ ;
X! 		if ((x < 7) && (y < 7) && (d[i + 9] == tc)) vp++ ;
X  
X! 		if ((x > 0) && (d[i - 8] == mc))            vo++ ;
X! 		if ((x < 7) && (d[i + 8] == mc))            vo++ ;
X! 		if ((y > 0) && (d[i - 1] == mc))            vo++ ;
X! 		if ((y < 7) && (d[i + 1] == mc))            vo++ ;
X! 		if ((x > 0) && (y > 0) && (d[i - 9] == mc)) vo++ ;
X! 		if ((x < 7) && (y > 0) && (d[i + 7] == mc)) vo++ ;
X! 		if ((x > 0) && (y < 7) && (d[i - 7] == mc)) vo++ ;
X! 		if ((x < 7) && (y < 7) && (d[i + 9] == mc)) vo++ ;
X                }
X            }
X  
X***************
X*** 254,256 ****
X--- 232,235 ----
X        return(tnote / 1000) ;
X      }
X  }
X+ 
X
X------- rev_ip.c -------
X*** /tmp/da07626	Sun Dec  9 15:17:13 1990
X--- rev_ip.c	Sat Dec  8 18:12:25 1990
X***************
X*** 23,34 ****
X  #include <signal.h>
X  #include <setjmp.h>
X  #include <sys/types.h>
X- #ifdef SYSV
X- #include <sys/times.h>
X- #else
X- #include <sys/time.h>
X- #endif /*SYSV*/
X- 
X  #include "reve.h"
X  
X  extern int saveres ;
X--- 23,28 ----
X***************
X*** 35,41 ****
X  extern time_t timeleft, time() ;
X  extern int damier[NIVEAUMAX][64] ;
X  extern int tacouleur, macouleur ;
X! extern int mnb, profmax ;
X  extern long c1, c2, c3 ;
X  
X  /*  Reve structure. Play_Reve evaluates a board and returns a move and a note
X--- 29,35 ----
X  extern time_t timeleft, time() ;
X  extern int damier[NIVEAUMAX][64] ;
X  extern int tacouleur, macouleur ;
X! extern int mnb, profmax, max_depth ;
X  extern long c1, c2, c3 ;
X  
X  /*  Reve structure. Play_Reve evaluates a board and returns a move and a note
X***************
X*** 167,173 ****
X      if (d0[cpk[cp]] == JPJ) k++ ;
X  
X    count = note = cpmax = 0 ;
X!   timeused = profmax = 1 ;
X  
X    if (((k == 1) && (mnb < 52)) || (mnb == 1))
X      {
X--- 161,168 ----
X      if (d0[cpk[cp]] == JPJ) k++ ;
X  
X    count = note = cpmax = 0 ;
X!   timeused = 1 ;
X!   profmax = max_depth - 1 ;
X  
X    if (((k == 1) && (mnb < 52)) || (mnb == 1))
X      {
X***************
X*** 221,227 ****
X      }
X    else
X      {
X!       allotime = timeleft * 3 / (61 - mnb) ;
X        firsttime = time((time_t *) NULL) ;
X  
X        cpmaxi[0] = cpmaxi[1] = cpmaxi[2] = cpmaxi[3] = 0 ;
X--- 216,222 ----
X      }
X    else
X      {
X!       allotime = timeleft * 4 / (61 - mnb) ;
X        firsttime = time((time_t *) NULL) ;
X  
X        cpmaxi[0] = cpmaxi[1] = cpmaxi[2] = cpmaxi[3] = 0 ;
X***************
X*** 378,384 ****
X--- 373,383 ----
X      {
X        if (d0[cpk[cp]] == TPJ)
X          {
X+ #ifdef hp9000s300                
X+           for (k = 0; k < 64; k++) damier[niv + 1][k] = damier[niv][k] ;
X+ #else                            
X            for (k = 0; k < 64; k++) d1[k] = d0[k] ;
X+ #endif                           
X            tujouesen(cpi[cp], cpj[cp], niv + 1) ;
X                 if (niv == profmax) lnote = evalue(niv + 1) ;
X            else if (jepeuxjouer(niv + 1) == TRUE)
X***************
X*** 427,433 ****
X--- 426,436 ----
X      {
X        if (d0[cpk[cp]] == JPJ)
X          {
X+ #ifdef hp9000s300                
X+           for (k = 0; k < 64; k++) damier[niv + 1][k] = damier[niv][k] ;
X+ #else
X            for (k = 0; k < 64; k++) d1[k] = d0[k] ;
X+ #endif
X            jejoueen(cpi[cp], cpj[cp], niv + 1) ;
X            if (niv == profmax) lnote = evalue(niv + 1) ;
X            else if (tupeuxjouer(niv + 1) == TRUE)
X
X------- reve.man -------
X*** /tmp/da07629	Sun Dec  9 15:17:14 1990
X--- reve.man	Sun Dec  9 14:35:12 1990
X***************
X*** 1,5 ****
X  .\" %Z%%M% %I% %E%
X! .TH REVE 6 "18 October 1990"
X  .SH NAME
X  reve \- an othello game.
X  .SH SYNOPSIS
X--- 1,5 ----
X  .\" %Z%%M% %I% %E%
X! .TH REVE 6 "29 November 1990"
X  .SH NAME
X  reve \- an othello game.
X  .SH SYNOPSIS
X***************
X*** 7,12 ****
X--- 7,14 ----
X  [
X  .B \-animate
X  ] [
X+ .B \-bestmove
X+ ] [
X  .B \-black
X  .I [ display ]
X  ] [
X***************
X*** 28,33 ****
X--- 30,37 ----
X  .B \-load
X  .I gamefile
X  ] [
X+ .B \-log
X+ ] [
X  .B \-m
X  ] [
X  .B \-notes
X***************
X*** 36,43 ****
X  ] [
X  .B \-quick
X  ] [
X- .B \-r
X- ] [
X  .B \-v
X  ] [
X  .B \-white
X--- 40,45 ----
X***************
X*** 82,93 ****
X  down as you move around the board, the square you are currently over will
X  be highlighted.
X  .LP
X! There are various buttons and cyclic selections available. Their meanings
X! are given below, plus an indication of their keyboard equivalents. With the
X! cyclic selections, clicking over the left half of the cycle item increments
X! the selection, and clicking over the right half of the cycle item decrements
X! the selection. With the SunView and XView versions, it is also possible to
X! make a selection from a popup menu using the right mouse button.
X  .LP
X  By default, a human will play black, and the computer will play white. If
X  you want a human vs human startup or some other combination, then you should
X--- 84,94 ----
X  down as you move around the board, the square you are currently over will
X  be highlighted.
X  .LP
X! There are various buttons, choice, toggles and cyclic selections available.
X! Their meanings are given below, plus an indication of their keyboard
X! equivalents. With the cyclic selections, clicking over the left half of the
X! cycle item increments the selection, and clicking over the right half of the
X! cycle item decrements the selection.
X  .LP
X  By default, a human will play black, and the computer will play white. If
X  you want a human vs human startup or some other combination, then you should
X***************
X*** 95,102 ****
X  .SH REVE BUTTONS
X  .LP
X  With the graphics versions, there are eight buttons that are normally
X! displayed at the top of the Reve window. Each of these buttons, except
X! the "done" button has a keyboard equivalent which is given in brackets below.
X  .LP
X  .IP "\fBload [ L ]\fP" 18
X  Load a game file. The format of this game file is given below. With the
X--- 96,103 ----
X  .SH REVE BUTTONS
X  .LP
X  With the graphics versions, there are eight buttons that are normally
X! displayed at the top of the Reve window. Each of these buttons, has a
X! keyboard equivalent which is given in brackets below.
X  .LP
X  .IP "\fBload [ L ]\fP" 18
X  Load a game file. The format of this game file is given below. With the
X***************
X*** 124,158 ****
X  Undo the last "move". If the opponent is the computer, the two "moves" are
X  undone. A "move" is considered to be all previous consecutive moves by
X  the opponent.
X! .IP "\fBdone [ No keyboard equivalent]\fP" 18
X! Change \fIreve\fP to an icon.
X  .IP "\fBquit [ q ]\fP" 18
X  Exit the
X  .I reve
X  program.
X! .SH REVE CYCLIC SELECTIONS
X! With the graphical versions, just below the eight buttons are four cycle items.
X! These can either be selected with the left mouse button, to increment or
X! decrement the current selection (depending upon which half on the item
X! you click over), or a selection can be made from a popup menu when you
X! click with the right mouse button (SunView and XView versions only).
X! Each cycle value has a keyboard equivalent which is given in brackets below.
X! This must be followed by the value of the new selection you wish to make.
X! The dumb tty version has the equivalent of these items displayed to the
X  right of the reve board display.
X  .LP
X! .IP "\fBBlack: [ B ]\fP" 18
X! Select whether the black player should be a human or the computer. The
X! keyboard equivalents are 'h' for human, and 'c' for computer.
X! .IP "\fBWhite: [ W ]\fP" 18
X! Select whether the white player should be a human or the computer. The
X! keyboard equivalents are the same as for the \fBBlack:\fP item.
X  .IP "\fBDifficulty: [ D ]\fP" 18
X! Sets the degree of difficulty for the computers moves. Keyboard selection
X! values are in the range '1' to '9'. The computer move is determined on a
X! time basis. The degree of difficulty determines the total amount of time
X! that the computer will take to make all its moves. Here are the time periods
X! for each level of difficulty:
X  .LP
X  	Difficulty	Time
X  .LP
X--- 125,160 ----
X  Undo the last "move". If the opponent is the computer, the two "moves" are
X  undone. A "move" is considered to be all previous consecutive moves by
X  the opponent.
X! .IP "\fBprops [ p ]\fP" 18
X! Display a property sheet containing choices and toggles which will
X! alter various \fIreve\fP properties.
X  .IP "\fBquit [ q ]\fP" 18
X  Exit the
X  .I reve
X  program.
X! .SH REVE PROPERTY SHEET SELECTIONS
X! With the graphical versions, there is a property sheet window which can be
X! displayed. The property sheet has two choice items, one cyclic item, and six
X! toggle items. Click with the left mouse button over the option you want from
X! the choice items. With the cyclic items, click with the left mouse button over
X! the appropriate half, to either increment or decrement the current value.
X! Clicking left over the toggle item boxes, will toggle the value of that item
X! on or off.
X! The choice items also have keyboard equivalents which are given in brackets
X! below. They must be followed by the value of the new selection you wish to
X! make. The dumb tty version has the equivalent of these items displayed to the
X  right of the reve board display.
X  .LP
X! .IP "\fBComputer plays: [ C ]\fP" 18
X! A choice item which selects what color[s] the computer should play. The
X! keyboard equivalents are 'b' for black, 'w' for white, 'n' for neither,
X! and 'a' for all (both).
X  .IP "\fBDifficulty: [ D ]\fP" 18
X! A choice item which sets the degree of difficulty for the computers moves.
X! Keyboard selection values are in the range '1' to '9'. The computer move is
X! determined on a time basis. The degree of difficulty determines the total
X! amount of time that the computer will take to make all its moves. Here are the
X! time periods for each level of difficulty:
X  .LP
X  	Difficulty	Time
X  .LP
X***************
X*** 175,184 ****
X  	9		60 minutes.
X  .LP
X  Level eight is tournament level.
X! .IP "\fBNotes: [ N ]\fP" 18
X! Select whether computer notes are displayed. When you are playing against
X! the computer, the note gives the position of the last computer move, and
X! an indication of whether it was a good or bad move.
X  .SH OPTIONS
X  .TP
X  .B \-animate
X--- 177,198 ----
X  	9		60 minutes.
X  .LP
X  Level eight is tournament level.
X! .IP "\fBSet search depth: [ No keyboard equivalent ]\fP" 18
X! A cyclic item which sets the maximum search depth for a computer move.
X! .IP "\fBAnimate move option. [ No keyboard equivalent ]\fP" 18
X! A toggle item for animating the computer move and the dragging of human pieces.
X! .IP "\fBShow current best move option. [ No keyboard equivalent ]\fP" 18
X! A toggle item for showing the current best move as the computer makes it's
X! move.
X! .IP "\fBShow last move option. [ No keyboard equivalent ]\fP" 18
X! A toggle item for outlining the square containing the last move.
X! .IP "\fBShow evaluation information option. [ No keyboard equivalent ]\fP" 18
X! A toggle information for displaying evaluation information for each computer
X! move.
X! .IP "\fBNumber last move option. [ No keyboard equivalent ]\fP" 18
X! A toggle item for number the last move stone.
X! .IP "\fBDon't show flip option. [ No keyboard equivalent ]\fP" 18
X! A toggle item to prevent the flip of the stones as a turn is completed.
X  .SH OPTIONS
X  .TP
X  .B \-animate
X***************
X*** 186,191 ****
X--- 200,209 ----
X  corner of the board, and when you hold the left mouse button down, your
X  stone is dragged around.
X  .TP
X+ .B \-bestmove
X+ As the computer is making it's move, continually show the position of the
X+ best move found so far.
X+ .TP
X  .BI \-black " [ display ]"
X  Black will be played by a human. With the X11 variant of
X  .I reve
X***************
X*** 225,230 ****
X--- 243,254 ----
X  Load a game file. The format of this game file is given below. The board
X  will be setup with these stones.
X  .TP
X+ .B \-log
X+ Save a log of computer move information to the file
X+ .I reve.res
X+ as the game progresses. This information is probably only useful to
X+ people trying to improve the computer algorithm.
X+ .TP
X  .B \-m
X  Always display in monochrome, even on a color screen.
X  .TP
X***************
X*** 237,248 ****
X  .B \-quick
X  Play a quick game. Don't flash the stones as they are being turned.
X  .TP
X- .B \-r
X- Save a log of computer move information to the file
X- .I reve.res
X- as the game progresses. This information is probably only useful to
X- people trying to improve the computer algorithm.
X- .TP
X  .B \-?
X  Print the version number and usage message for this release of the
X  .I reve
X--- 261,266 ----
X***************
X*** 272,277 ****
X--- 290,383 ----
X  .BI \-WP " x y"
X  Start the icon position at
X  .I x y
X+ .SH RESOURCES
X+ On startup, the X11 and XView version of
X+ .I reve
X+ will use the following X resources:
X+ .TP 15
X+ .PD 0
X+ .B Resource:
X+ reve.animate
X+ .TP
X+ .B Values:
X+ True, False (False)
X+ .TP
X+ .B Description
X+ Indicates whether various animation effects are shown.
X+ .sp
X+ .TP
X+ .B Resource:
X+ reve.bestmove
X+ .TP
X+ .B Values:
X+ True, False (False)
X+ .TP
X+ .B Description
X+ Indicates whether to continually show the best move so far, as the computer
X+ is making it's move.
X+ .sp
X+ .TP
X+ .B Resource:
X+ reve.difficulty
X+ .TP
X+ .B Values:
X+ Difficulty value (numeric)
X+ .TP
X+ .B Description
X+ The computer difficulty level.
X+ .sp
X+ .TP
X+ .B Resource:
X+ reve.last
X+ .TP
X+ .B Values:
X+ True, False (False)
X+ .TP
X+ .B Description
X+ Indicates whether the position of the last stone placed is shown by a square.
X+ .sp
X+ .TP
X+ .B Resource:
X+ reve.log
X+ .TP
X+ .B Values:
X+ True, False (False)
X+ .TP
X+ .B Description
X+ Indicates whether to save a log of computer information to the file
X+ .I reve.res/
X+ .sp
X+ .TP
X+ .B Resource:
X+ reve.notes
X+ .TP
X+ .B Values:
X+ True, False (False)
X+ .TP
X+ .B Description
X+ Indicates whether todisplay computer notes.
X+ .sp
X+ .TP
X+ .B Resource:
X+ reve.number
X+ .TP
X+ .B Values:
X+ True, False (False)
X+ .TP
X+ .B Description
X+ Indicates whether the last stone placed in numbered.
X+ .sp
X+ .TP
X+ .B Resource:
X+ reve.quick
X+ .TP
X+ .B Values:
X+ True, False (False)
X+ .TP
X+ .B Description
X+ Indicates whether a quick game should be played. Stones are not flashed as
X+ they are placed, if this resource is set true.
X+ .sp
X  .SH REVE GAMES FILE FORMAT
X  .I Reve
X  has the ability to load or save games. The format of the games files are:
X
X------- reve.man.text -------
X*** /tmp/da07632	Sun Dec  9 15:17:15 1990
X--- reve.man.text	Sun Dec  9 14:35:19 1990
X***************
X*** 9,19 ****
X       reve - an othello game.
X  
X  SYNOPSIS
X!      reve [ -animate ] [ -b [ display ] ] [ -c ] [ -d  difficulty
X!      ]  [  -e edgefile ] [ -g geometry ] [ -i ] [ -last ] [ -load
X!      gamefile ] [ -m ] [ -notes ] [ -number ] [ -quick ] [ -r ] [
X!      -v ] [ -w [ display ] ] [ -? ] [ -Wi ] [ -Wp x y ] [ -WP x y
X!      ]
X  
X  DESCRIPTION
X       Reve is a version of the popular Othello game.  It  contains
X--- 9,19 ----
X       reve - an othello game.
X  
X  SYNOPSIS
X!      reve [ -animate ] [ -bestmove ] [ -black [ display ] ] [  -c
X!      ] [ -d difficulty ] [ -e edgefile ] [ -g geometry ] [ -i ] [
X!      -last ] [ -load gamefile ] [ -log ] [ -m  ]  [  -notes  ]  [
X!      -number  ] [ -quick ] [ -v ] [ -white [ display ] ] [ -? ] [
X!      -Wi ] [ -Wp x y ] [ -WP x y ]
X  
X  DESCRIPTION
X       Reve is a version of the popular Othello game.  It  contains
X***************
X*** 46,66 ****
X       the board,  the  square  you  are  currently  over  will  be
X       highlighted.
X  
X!      There are various buttons and cyclic  selections  available.
X!      Their  meanings are given below, plus an indication of their
X!      keyboard equivalents. With the cyclic  selections,  clicking
X!      over  the  left half of the cycle item increments the selec-
X!      tion, and clicking over the right half  of  the  cycle  item
X!      decrements  the  selection.  With the SunView and XView ver-
X!      sions, it is also possible to make a selection from a  popup
X!      menu using the right mouse button.
X  
X       By default, a human will play black, and the  computer  will
X       play  white.  If  you  want a human vs human startup or some
X  
X  
X  
X! Sun Release 4.1   Last change: 18 October 1990                  1
X  
X  
X  
X--- 46,66 ----
X       the board,  the  square  you  are  currently  over  will  be
X       highlighted.
X  
X!      There are various buttons, choice, toggles and cyclic selec-
X!      tions  available.   Their  meanings are given below, plus an
X!      indication of their keyboard equivalents.  With  the  cyclic
X!      selections,  clicking  over  the left half of the cycle item
X!      increments the selection, and clicking over the  right  half
X!      of the cycle item decrements the selection.
X  
X       By default, a human will play black, and the  computer  will
X       play  white.  If  you  want a human vs human startup or some
X+      other combination, then you should use the appropriate  com-
X+      mand line options (see below).
X  
X  
X  
X! Sun Release 4.1   Last change: 29 November 1990                 1
X  
X  
X  
X***************
X*** 71,84 ****
X  
X  
X  
X-      other combination, then you should use the appropriate  com-
X-      mand line options (see below).
X- 
X  REVE BUTTONS
X       With the graphics versions, there are eight buttons that are
X       normally  displayed  at  the top of the Reve window. Each of
X!      these buttons, except  the  "done"  button  has  a  keyboard
X!      equivalent which is given in brackets below.
X  
X       load [ L ]        Load a game file. The format of this  game
X                         file  is  given  below. With the graphical
X--- 71,81 ----
X  
X  
X  
X  REVE BUTTONS
X       With the graphics versions, there are eight buttons that are
X       normally  displayed  at  the top of the Reve window. Each of
X!      these buttons, has a keyboard equivalent which is  given  in
X!      brackets below.
X  
X       load [ L ]        Load a game file. The format of this  game
X                         file  is  given  below. With the graphical
X***************
X*** 115,132 ****
X                         A "move" is considered to be all  previous
X                         consecutive moves by the opponent.
X  
X!      done [ No keyboard equivalent]
X!                        Change reve to an icon.
X  
X       quit [ q ]        Exit the reve program.
X  
X! REVE CYCLIC SELECTIONS
X!      With the graphical versions, just below  the  eight  buttons
X!      are four cycle items.  These can either be selected with the
X  
X  
X  
X! Sun Release 4.1   Last change: 18 October 1990                  2
X  
X  
X  
X--- 112,132 ----
X                         A "move" is considered to be all  previous
X                         consecutive moves by the opponent.
X  
X!      props [ p ]       Display  a   property   sheet   containing
X!                        choices and toggles which will alter vari-
X!                        ous reve properties.
X  
X       quit [ q ]        Exit the reve program.
X  
X! REVE PROPERTY SHEET SELECTIONS
X!      With the graphical versions, there is a property sheet  win-
X!      dow  which  can  be  displayed.  The  property sheet has two
X!      choice items, one cyclic item, and six toggle  items.  Click
X!      with the left mouse button over the option you want from the
X  
X  
X  
X! Sun Release 4.1   Last change: 29 November 1990                 2
X  
X  
X  
X***************
X*** 137,171 ****
X  
X  
X  
X!      left mouse button, to increment  or  decrement  the  current
X!      selection  (depending  upon which half on the item you click
X!      over), or a selection can be made from a popup menu when you
X!      click  with  the  right mouse button (SunView and XView ver-
X!      sions only).  Each cycle value  has  a  keyboard  equivalent
X!      which  is given in brackets below.  This must be followed by
X!      the value of the new selection you wish to make.   The  dumb
X!      tty  version  has the equivalent of these items displayed to
X!      the right of the reve board display.
X  
X!      Black: [ B ]      Select whether the black player should  be
X!                        a  human  or  the  computer.  The keyboard
X!                        equivalents are 'h' for human, and 'c' for
X!                        computer.
X  
X!      White: [ W ]      Select whether the white player should  be
X!                        a  human  or  the  computer.  The keyboard
X!                        equivalents are the same as for the Black:
X!                        item.
X  
X-      Difficulty: [ D ] Sets the degree of difficulty for the com-
X-                        puters  moves.  Keyboard  selection values
X-                        are in the range '1' to '9'. The  computer
X-                        move  is  determined  on a time basis. The
X-                        degree of difficulty determines the  total
X-                        amount of time that the computer will take
X-                        to make all its moves. Here are  the  time
X-                        periods for each level of difficulty:
X- 
X            Difficulty     Time
X  
X            1         Time allocation disabled (fast simple move).
X--- 137,169 ----
X  
X  
X  
X!      choice items. With the cyclic items,  click  with  the  left
X!      mouse  button over the appropriate half, to either increment
X!      or decrement the current value.  Clicking left over the tog-
X!      gle  item  boxes,  will  toggle the value of that item on or
X!      off.  The choice items also have keyboard equivalents  which
X!      are  given  in  brackets below. They must be followed by the
X!      value of the new selection you wish to make.  The  dumb  tty
X!      version  has  the equivalent of these items displayed to the
X!      right of the reve board display.
X  
X!      Computer plays: [ C ]
X!                        A choice item which selects what  color[s]
X!                        the  computer  should  play.  The keyboard
X!                        equivalents are 'b'  for  black,  'w'  for
X!                        white,  'n'  for  neither, and 'a' for all
X!                        (both).
X  
X!      Difficulty: [ D ] A choice item which  sets  the  degree  of
X!                        difficulty  for the computers moves.  Key-
X!                        board selection values are  in  the  range
X!                        '1'  to  '9'.  The computer move is deter-
X!                        mined on a time basis. The degree of  dif-
X!                        ficulty  determines  the  total  amount of
X!                        time that the computer will take  to  make
X!                        all  its  moves. Here are the time periods
X!                        for each level of difficulty:
X  
X            Difficulty     Time
X  
X            1         Time allocation disabled (fast simple move).
X***************
X*** 180,212 ****
X  
X       Level eight is tournament level.
X  
X!      Notes: [ N ]      Select   whether   computer   notes    are
X!                        displayed.  When  you  are playing against
X!                        the computer, the note gives the  position
X!                        of  the last computer move, and an indica-
X!                        tion of whether it was a good or bad move.
X  
X! OPTIONS
X!      -animate
X!           Show animation. The computer's stone will glide in from
X  
X  
X  
X- Sun Release 4.1   Last change: 18 October 1990                  3
X  
X  
X  
X  
X  
X  
X  REVE(6)                  GAMES AND DEMOS                  REVE(6)
X  
X  
X  
X            the top left corner of the board, and when you hold the
X            left mouse button down, your stone is dragged around.
X  
X!      -b [ display ]
X            Black will be played by a human. With the  X11  variant
X            of  reve  it  is  possible  to give an optional display
X            value.
X--- 178,236 ----
X  
X       Level eight is tournament level.
X  
X!      Set search depth: [ No keyboard equivalent ]
X!                        A  cyclic  item  which  sets  the  maximum
X!                        search depth for a computer move.
X  
X!      Animate move option. [ No keyboard equivalent ]
X!                        A toggle item for animating  the  computer
X!                        move and the dragging of human pieces.
X  
X+      Show current best move option. [ No keyboard equivalent ]
X+                        A toggle item for showing the current best
X+                        move as the computer makes it's move.
X  
X  
X  
X+ Sun Release 4.1   Last change: 29 November 1990                 3
X  
X  
X  
X  
X  
X+ 
X  REVE(6)                  GAMES AND DEMOS                  REVE(6)
X  
X  
X  
X+      Show last move option. [ No keyboard equivalent ]
X+                        A toggle item  for  outlining  the  square
X+                        containing the last move.
X+ 
X+      Show evaluation information option. [ No keyboard equivalent ]
X+                        A   toggle   information   for  displaying
X+                        evaluation information for  each  computer
X+                        move.
X+ 
X+      Number last move option. [ No keyboard equivalent ]
X+                        A toggle item for  number  the  last  move
X+                        stone.
X+ 
X+      Don't show flip option. [ No keyboard equivalent ]
X+                        A toggle item to prevent the flip  of  the
X+                        stones as a turn is completed.
X+ 
X+ OPTIONS
X+      -animate
X+           Show animation. The computer's stone will glide in from
X            the top left corner of the board, and when you hold the
X            left mouse button down, your stone is dragged around.
X  
X!      -bestmove
X!           As the computer is making it's move,  continually  show
X!           the position of the best move found so far.
X! 
X!      -black [ display ]
X            Black will be played by a human. With the  X11  variant
X            of  reve  it  is  possible  to give an optional display
X            value.
X***************
X*** 231,236 ****
X--- 255,274 ----
X            information.
X  
X       -i   Invert the reve window before displaying it. For use by
X+ 
X+ 
X+ 
X+ Sun Release 4.1   Last change: 29 November 1990                 4
X+ 
X+ 
X+ 
X+ 
X+ 
X+ 
X+ REVE(6)                  GAMES AND DEMOS                  REVE(6)
X+ 
X+ 
X+ 
X            people   who  started  their  graphics  environment  in
X            inverse mode. This option is currently only implemented
X            for the SunView version.
X***************
X*** 243,248 ****
X--- 281,291 ----
X            Load a game file. The format of this game file is given
X            below. The board will be setup with these stones.
X  
X+      -log Save a log of computer move  information  to  the  file
X+           reve.res  as  the  game progresses. This information is
X+           probably only useful to people trying  to  improve  the
X+           computer algorithm.
X+ 
X       -m   Always display in monochrome, even on a color screen.
X  
X       -notes
X***************
X*** 255,279 ****
X            Play a quick game. Don't flash the stones as  they  are
X            being turned.
X  
X- 
X- 
X- 
X- Sun Release 4.1   Last change: 18 October 1990                  4
X- 
X- 
X- 
X- 
X- 
X- 
X- REVE(6)                  GAMES AND DEMOS                  REVE(6)
X- 
X- 
X- 
X-      -r   Save a log of computer move  information  to  the  file
X-           reve.res  as  the  game progresses. This information is
X-           probably only useful to people trying  to  improve  the
X-           computer algorithm.
X- 
X       -?   Print the version number and  usage  message  for  this
X            release of the reve program.
X  
X--- 298,303 ----
X***************
X*** 280,286 ****
X       -v   Print the version number and  usage  message  for  this
X            release of the reve program.
X  
X!      -w [ display ]
X            White will be played by a human. With the  X11  variant
X            of  reve  it  is  possible  to give an optional display
X            value.
X--- 304,310 ----
X       -v   Print the version number and  usage  message  for  this
X            release of the reve program.
X  
X!      -white [ display ]
X            White will be played by a human. With the  X11  variant
X            of  reve  it  is  possible  to give an optional display
X            value.
X***************
X*** 295,346 ****
X       -WP x y
X            Start the icon position at x y
X  
X  REVE GAMES FILE FORMAT
X       Reve has the ability to load or save games.  The  format  of
X       the games files are:
X- 
X            1,   <C-4>     -    [ remarks field ]
X            2,   -    <E-3>     [ remarks field ]
X- 
X       There is one move per line. Lines starting with  a  '#'  and
X       blank lines are ignored. The first field of each line is the
X       move number. This will be present before the  comma.  It  is
X       used  as  a  consistency check. Next are the black and white
X       fields. If the '<' character is present  before  the  white.
X-      The  three  characters between the '<' and '>' are the move,
X-      and give the column and row. The column  letter  can  be  in
X-      either lower or upper case.
X  
X-      It is possible for one player to have two or more consequen-
X-      tive  moves,  hence  the need for the above scheme.  Reve is
X-      flexible about white space (except between the '<'  and  '>'
X-      characters).  The remarks field is ignored. The program will
X-      stop on the first line it thinks is in  error,  and  display
X-      the  reason  for  this.  As valid lines are read from a game
X-      file, the board is updated.
X  
X- FILES
X-      /usr/local/lib/reve.edgetable
X  
X  
X  
X- Sun Release 4.1   Last change: 18 October 1990                  5
X  
X  
X  
X  
X- 
X- 
X  REVE(6)                  GAMES AND DEMOS                  REVE(6)
X  
X  
X  
X            edge stability table for  all  possible  edge  combina-
X            tions.
X- 
X  BUGS
X       See the TODO file for the list of known problems.
X- 
X  AUTHORS
X       Computer strategy:  Yves Gallot    galloty@cernvax.cern.ch
X       Graphics interface: Rich Burridge  richb@Aus.Sun.COM
X--- 319,422 ----
X       -WP x y
X            Start the icon position at x y
X  
X+ RESOURCES
X+      On startup, the X11 and XView version of reve will  use  the
X+ 
X+ 
X+ 
X+ Sun Release 4.1   Last change: 29 November 1990                 5
X+ 
X+ 
X+ 
X+ 
X+ 
X+ 
X+ REVE(6)                  GAMES AND DEMOS                  REVE(6)
X+ 
X+ 
X+ 
X+      following X resources:
X+ 
X+      Resource:      reve.animate
X+      Values:        True, False (False)
X+      Description    Indicates whether various  animation  effects
X+                     are shown.
X+ 
X+      Resource:      reve.bestmove
X+      Values:        True, False (False)
X+      Description    Indicates whether  to  continually  show  the
X+                     best  move  so far, as the computer is making
X+                     it's move.
X+ 
X+      Resource:      reve.difficulty
X+      Values:        Difficulty value (numeric)
X+      Description    The computer difficulty level.
X+ 
X+      Resource:      reve.last
X+      Values:        True, False (False)
X+      Description    Indicates whether the position  of  the  last
X+                     stone placed is shown by a square.
X+ 
X+      Resource:      reve.log
X+      Values:        True, False (False)
X+      Description    Indicates whether to save a log  of  computer
X+                     information to the file reve.res/
X+ 
X+      Resource:      reve.notes
X+      Values:        True, False (False)
X+      Description    Indicates whether todisplay computer notes.
X+ 
X+      Resource:      reve.number
X+      Values:        True, False (False)
X+      Description    Indicates whether the last  stone  placed  in
X+                     numbered.
X+ 
X+      Resource:      reve.quick
X+      Values:        True, False (False)
X+      Description    Indicates whether  a  quick  game  should  be
X+                     played.  Stones  are  not flashed as they are
X+                     placed, if this resource is set true.
X+ 
X  REVE GAMES FILE FORMAT
X       Reve has the ability to load or save games.  The  format  of
X       the games files are:
X            1,   <C-4>     -    [ remarks field ]
X            2,   -    <E-3>     [ remarks field ]
X       There is one move per line. Lines starting with  a  '#'  and
X       blank lines are ignored. The first field of each line is the
X       move number. This will be present before the  comma.  It  is
X       used  as  a  consistency check. Next are the black and white
X       fields. If the '<' character is present  before  the  white.
X  
X  
X  
X+ Sun Release 4.1   Last change: 29 November 1990                 6
X  
X  
X  
X  
X  
X  
X  REVE(6)                  GAMES AND DEMOS                  REVE(6)
X  
X  
X  
X+      The  three  characters between the '<' and '>' are the move,
X+      and give the column and row. The column  letter  can  be  in
X+      either lower or upper case.
X+      It is possible for one player to have two or more consequen-
X+      tive  moves,  hence  the need for the above scheme.  Reve is
X+      flexible about white space (except between the '<'  and  '>'
X+      characters).  The remarks field is ignored. The program will
X+      stop on the first line it thinks is in  error,  and  display
X+      the  reason  for  this.  As valid lines are read from a game
X+      file, the board is updated.
X+ FILES
X+      /usr/local/lib/reve.edgetable
X            edge stability table for  all  possible  edge  combina-
X            tions.
X  BUGS
X       See the TODO file for the list of known problems.
X  AUTHORS
X       Computer strategy:  Yves Gallot    galloty@cernvax.cern.ch
X       Graphics interface: Rich Burridge  richb@Aus.Sun.COM
X***************
X*** 380,396 ****
X  
X  
X  
X! 
X! 
X! 
X! 
X! 
X! 
X! 
X! 
X! 
X! 
X! Sun Release 4.1   Last change: 18 October 1990                  6
X  
X  
X  
X--- 456,462 ----
X  
X  
X  
X! Sun Release 4.1   Last change: 29 November 1990                 7
X  
X  
X  
X
END_OF_FILE
if test 45079 -ne `wc -c <'patches03d'`; then
    echo shar: \"'patches03d'\" unpacked with wrong size!
fi
# end of 'patches03d'
fi
echo shar: End of archive 7 \(of 9\).
cp /dev/null ark7isdone
MISSING=""
for I in 1 2 3 4 5 6 7 8 9 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 9 archives.
    rm -f ark[1-9]isdone ark[1-9][0-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0