billr@saab.CNA.TEK.COM (Bill Randle) (11/17/90)
Submitted-by: Rich Burridge <rburridge@sun.COM>
Posting-number: Volume 11, Issue 63
Archive-name: reve/Patch1c
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 3 (of 4)."
# Contents: patches01c
# Wrapped by billr@saab on Fri Nov 16 10:46:44 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'patches01c' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'patches01c'\"
else
echo shar: Extracting \"'patches01c'\" \(48717 characters\)
sed "s/^X//" >'patches01c' <<'END_OF_FILE'
X
X------- rev_eval.c -------
X*** /tmp/da28908 Fri Nov 9 10:39:56 1990
X--- rev_eval.c Mon Nov 5 09:06:42 1990
X***************
X*** 3,13 ****
X *
X * Copyright (C) 1990 - Yves Gallot - all rights reserved.
X *
X! * Permission is given to distribute these sources, as long as the
X! * introductory messages are not removed, and no monies are exchanged.
X *
X! * You are forbidden from using Reve as is, or in a modified state, in
X! * any tournaments, without the permission of the authors.
X *
X * No responsibility is taken for any errors on inaccuracies inherent
X * either to the comments or the code of this program, but if reported
X--- 3,18 ----
X *
X * Copyright (C) 1990 - Yves Gallot - all rights reserved.
X *
X! * Permission is granted to copy this source, for redistribution
X! * in source form only, provided the news headers in "substantially
X! * unaltered format" are retained, the introductory messages are not
X! * removed, and no monies are exchanged.
X *
X! * Permission is also granted to copy this source, without the
X! * news headers, for the purposes of making an executable copy by
X! * means of compilation, provided that such copy will not be used
X! * for the purposes of competition in any othello tournaments, without
X! * prior permission from the authors.
X *
X * No responsibility is taken for any errors on inaccuracies inherent
X * either to the comments or the code of this program, but if reported
X***************
X*** 23,36 ****
X extern long c1, c2, c3 ;
X extern long edges[6561] ;
X
X! /* Evaluation function : give a note to a board = damier[ niv ].
X * It computes 4 components :
X * - Edge Stability, using Edge Stability Table pre-computed before
X * - Current Mobility, in fact computed during alpha-beta pruning
X * - X squares Values
X * - Potential Mobility, looking at squares contacts
X! * And then Eval = c1 * ES + c2 * CM + c3 * XV + c4 * PM
X! * Eval is replaced by - Eval if Black is replaced by White. Eval is positif
X * if macouleur ( my color ) has a good position and negatif if tacouleur
X * position is good.
X * If we are "near" the end of the game, then Eval is equal to final disc
X--- 28,41 ----
X extern long c1, c2, c3 ;
X extern long edges[6561] ;
X
X! /* Evaluation function : gives a note to a board = damier[ niv ].
X * It computes 4 components :
X * - Edge Stability, using Edge Stability Table pre-computed before
X * - Current Mobility, in fact computed during alpha-beta pruning
X * - X squares Values
X * - Potential Mobility, looking at squares contacts
X! * And then Eval = c1 * ES + c2 * ( CM + cx * XV ) + c3 * PM
X! * Eval is replaced by - Eval if Black is replaced by White. Eval is positive
X * if macouleur ( my color ) has a good position and negatif if tacouleur
X * position is good.
X * If we are "near" the end of the game, then Eval is equal to final disc
X***************
X*** 45,51 ****
X register int i, x, y ;
X register long note ;
X register int vp, vo ;
X! register long tnote ;
X
X d = damier[niv] ;
X
X--- 50,56 ----
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***************
X*** 105,135 ****
X }
X note += edges[i] ;
X
X if (d[0] == FREE)
X {
X! if (d[9] == macouleur) note -= c3 ;
X! else if (d[9] == tacouleur) note += c3 ;
X }
X
X if (d[7] == FREE)
X {
X! if (d[14] == macouleur) note -= c3 ;
X! else if (d[14] == tacouleur) note += c3 ;
X }
X
X if (d[56] == FREE)
X {
X! if (d[49] == macouleur) note -= c3 ;
X! else if (d[49] == tacouleur) note += c3 ;
X }
X
X if (d[63] == FREE)
X {
X! if (d[54] == macouleur) note -= c3 ;
X! else if (d[54] == tacouleur) note += c3 ;
X }
X
X! tnote = c1 * note + c2 * (vp0 - vo0) / (vp0 + vo0 + 2) ;
X
X vp = vo = 0 ;
X for (x = 0; x < 8; x++)
X--- 110,142 ----
X }
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
X vp = vo = 0 ;
X for (x = 0; x < 8; x++)
X***************
X*** 219,225 ****
X }
X
X note += ((long) 1000 * (vp - vo)) / (vp + vo + 2) ;
X! tnote += 99 * note ;
X! return(tnote) ;
X }
X }
X--- 226,232 ----
X }
X
X note += ((long) 1000 * (vp - vo)) / (vp + vo + 2) ;
X! tnote += c3 * note ;
X! return(tnote / 1000) ;
X }
X }
X
X------- rev_ip.c -------
X*** /tmp/da28911 Fri Nov 9 10:39:56 1990
X--- rev_ip.c Mon Nov 5 09:07:12 1990
X***************
X*** 3,11 ****
X *
X * Copyright (C) 1990 - Yves Gallot - all rights reserved.
X *
X! * Permission is given to distribute these sources, as long as the
X! * introductory messages are not removed, and no monies are exchanged.
X *
X * No responsibility is taken for any errors on inaccuracies inherent
X * either to the comments or the code of this program, but if reported
X * (see README file), then an attempt will be made to fix them.
X--- 3,19 ----
X *
X * Copyright (C) 1990 - Yves Gallot - all rights reserved.
X *
X! * Permission is granted to copy this source, for redistribution
X! * in source form only, provided the news headers in "substantially
X! * unaltered format" are retained, the introductory messages are not
X! * removed, and no monies are exchanged.
X *
X+ * Permission is also granted to copy this source, without the
X+ * news headers, for the purposes of making an executable copy by
X+ * means of compilation, provided that such copy will not be used
X+ * for the purposes of competition in any othello tournaments, without
X+ * prior permission from the authors.
X+ *
X * No responsibility is taken for any errors on inaccuracies inherent
X * either to the comments or the code of this program, but if reported
X * (see README file), then an attempt will be made to fix them.
X***************
X*** 12,22 ****
X */
X
X #include <stdio.h>
X #include <sys/types.h>
X #include <sys/time.h>
X #include "reve.h"
X
X! extern time_t time() ;
X extern int damier[NIVEAUMAX][64] ;
X extern int tacouleur, macouleur ;
X extern int mnb, profmax ;
X--- 20,33 ----
X */
X
X #include <stdio.h>
X+ #include <signal.h>
X+ #include <setjmp.h>
X #include <sys/types.h>
X #include <sys/time.h>
X #include "reve.h"
X
X! extern int saveres ;
X! extern time_t timeleft, time() ;
X extern int damier[NIVEAUMAX][64] ;
X extern int tacouleur, macouleur ;
X extern int mnb, profmax ;
X***************
X*** 58,81 ****
X
X static int timevals[MAXDIFF] = { 0, 1, 3, 5, 10, 15, 20, 30, 60 } ;
X
X! static int cpi[60], cpj[60], cpk[60] ;
X
X static int locallevel = -1 ;
X! static time_t timeleft ;
X
X static long jeplonge() ;
X static long tuplonges() ;
X long evalue() ;
X
X play_reve(board, color, level, rtnmv, rtnnote)
X int *board, color, level, *rtnmv ;
X long *rtnnote ;
X {
X register int *d0, *d1 ;
X! register int k, cp, cpmax ;
X! register long lnote, note ;
X! register int count, fact ;
X! time_t firsttime, timeused, allotime ;
X
X for (k = 0; k < 60; k++)
X {
X--- 69,105 ----
X
X static int timevals[MAXDIFF] = { 0, 1, 3, 5, 10, 15, 20, 30, 60 } ;
X
X! static int cpi[60], cpj[60], cpk[60], cpf[60] ;
X! static int cpi2[60], cpj2[60], cpk2[60] ;
X! static int cpmaxi[4] ;
X
X static int locallevel = -1 ;
X! static firsttime, timeused, allotime ;
X
X+ jmp_buf jumper ;
X+
X static long jeplonge() ;
X static long tuplonges() ;
X long evalue() ;
X
X+
X+ static void
X+ catcher()
X+ {
X+ longjmp(jumper, 1) ;
X+ }
X+
X+
X play_reve(board, color, level, rtnmv, rtnnote)
X int *board, color, level, *rtnmv ;
X long *rtnnote ;
X {
X register int *d0, *d1 ;
X! register int k, cp ;
X! register long lnote ;
X! register int count ;
X! static int cpmax, note, oldnote ;
X! FILE *fp ;
X
X for (k = 0; k < 60; k++)
X {
X***************
X*** 119,125 ****
X mnb++ ;
X cp = 0 ;
X while (cpk[cp] != k) cp++ ;
X! for ( ; cp < 60; cp++)
X {
X cpi[cp] = cpi[cp + 1] ;
X cpj[cp] = cpj[cp + 1] ;
X--- 143,149 ----
X mnb++ ;
X cp = 0 ;
X while (cpk[cp] != k) cp++ ;
X! for ( ; cp < 59; cp++)
X {
X cpi[cp] = cpi[cp + 1] ;
X cpj[cp] = cpj[cp + 1] ;
X***************
X*** 129,135 ****
X
X if ((locallevel != level) || (mnb == 1) || (mnb == 2))
X {
X! timeleft = timevals[level] * 60 ;
X locallevel = level ;
X }
X
X--- 153,159 ----
X
X if ((locallevel != level) || (mnb == 1) || (mnb == 2))
X {
X! timeleft = timevals[level-1] * 60 ;
X locallevel = level ;
X }
X
X***************
X*** 137,171 ****
X for (cp = 0; cp <= 60 - mnb; cp++)
X if (d0[cpk[cp]] == JPJ) k++ ;
X
X! if ((k == 1) || (mnb == 1))
X {
X- note = 0 ;
X- timeused = profmax = 1 ;
X for (cp = 0; d0[cpk[cp]] != JPJ; cp++) ;
X cpi[0] = cpi[cp] ;
X cpj[0] = cpj[cp] ;
X cpk[0] = cpk[cp] ;
X }
X else
X! {
X! count = 0 ;
X! profmax = 1 ;
X! allotime = timeleft * 2 / (60 - mnb) ;
X firsttime = time((time_t *) NULL) ;
X do
X {
X note = -1000000000 ;
X
X c1 = 312 + 6 * (mnb + profmax) ;
X if (mnb + profmax < 25)
X! c2 = 1000 * (long) (50 + 2 * (mnb + profmax)) ;
X else
X! c2 = 1000 * (long) (75 + mnb + profmax) ;
X! c3 = 4 * (50 - mnb - profmax) ;
X
X profmax++ ;
X- if (profmax > 55 - mnb) profmax = 61 - mnb ;
X
X for (cp = 0; cp <= 60 - mnb; cp++)
X {
X if (d0[cpk[cp]] == JPJ)
X--- 161,256 ----
X for (cp = 0; cp <= 60 - mnb; cp++)
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 for (cp = 0; d0[cpk[cp]] != JPJ; cp++) ;
X cpi[0] = cpi[cp] ;
X cpj[0] = cpj[cp] ;
X cpk[0] = cpk[cp] ;
X }
X+ else if (mnb == 2)
X+ {
X+ if (d0[2 * 8 + 3] == BLACK)
X+ {
X+ cpi[0] = 4 ;
X+ cpj[0] = 2 ;
X+ }
X+ else if (d0[3 * 8 + 2] == BLACK)
X+ {
X+ cpi[0] = 2 ;
X+ cpj[0] = 4 ;
X+ }
X+ else if (d0[4 * 8 + 5] == BLACK)
X+ {
X+ cpi[0] = 5 ;
X+ cpj[0] = 3 ;
X+ }
X+ else if (d0[5 * 8 + 4] == BLACK)
X+ {
X+ cpi[0] = 3 ;
X+ cpj[0] = 5 ;
X+ }
X+ cpk[0] = cpi[0] * 8 + cpj[0] ;
X+ }
X+ else if (mnb == 3)
X+ {
X+ if (d0[4 * 8 + 2] == WHITE)
X+ {
X+ cpi[0] = 5 ;
X+ cpj[0] = 3 ;
X+ }
X+ else if (d0[2 * 8 + 2] == WHITE)
X+ {
X+ cpi[0] = 3 ;
X+ cpj[0] = 2 ;
X+ }
X+ else if (d0[2 * 8 + 4] == WHITE)
X+ {
X+ cpi[0] = 3 ;
X+ cpj[0] = 5 ;
X+ }
X+ cpk[0] = cpi[0] * 8 + cpj[0] ;
X+ }
X else
X! {
X! allotime = timeleft * 3 / (61 - mnb) ;
X firsttime = time((time_t *) NULL) ;
X+
X+ signal(SIGALRM, catcher) ;
X+
X+ if (setjmp(jumper) != 0)
X+ {
X+ if (cpmax == 0) note = oldnote ;
X+ profmax = -profmax ;
X+ goto trap ;
X+ }
X+
X do
X {
X+ oldnote = note ;
X note = -1000000000 ;
X
X+ if ((int) (allotime - timeused) > 2) alarm(allotime - timeused) ;
X+
X c1 = 312 + 6 * (mnb + profmax) ;
X if (mnb + profmax < 25)
X! c2 = 50 + 2 * (mnb + profmax) ;
X else
X! c2 = 75 + mnb + profmax ;
X! c3 = 99 ;
X
X profmax++ ;
X
X+ if (profmax > 53 - mnb)
X+ {
X+ profmax = 61 - mnb ;
X+ allotime = timeleft * 3 / 5 ;
X+ if ((int) (allotime - timeused) > 2) alarm(allotime - timeused) ;
X+ }
X+
X for (cp = 0; cp <= 60 - mnb; cp++)
X {
X if (d0[cpk[cp]] == JPJ)
X***************
X*** 185,215 ****
X }
X }
X }
X! if (cpmax == 0) count++ ;
X else
X {
X! count = 1 ;
X! k = cpi[0] ;
X! cpi[0] = cpi[cpmax] ;
X! cpi[cpmax] = k ;
X! k = cpj[0] ;
X! cpj[0] = cpj[cpmax] ;
X! cpj[cpmax] = k ;
X! k = cpk[0] ;
X! cpk[0] = cpk[cpmax] ;
X! cpk[cpmax] = k ;
X }
X timeused = time((time_t *) NULL) - firsttime ;
X! if (count < 3) fact = 1 ;
X! else fact = 3 ;
X }
X! while ((timeused * fact < allotime) && (profmax <= 60 - mnb)) ;
X if (timeused == 0) timeused = 1 ;
X }
X
X! timeleft -= timeused ;
X
X! *rtnmv = cpk[0] ;
X *rtnnote = note ;
X }
X
X--- 270,349 ----
X }
X }
X }
X!
X! alarm(0) ;
X! cpmaxi[0] = cpmax ;
X!
X! if ((mnb < 57) && (cpmaxi[0] != cpmaxi[1])
X! && (cpmaxi[1] != cpmaxi[2]) && (cpmaxi[0] != cpmaxi[2]))
X! {
X! if (cpmax == 0) count++ ; else count = 1 ;
X! for (cp = 0; cp <= 60 - mnb; cp++) cpf[cp] = TRUE ;
X! for (k = 0; k < 3; k++)
X! {
X! cpi2[k] = cpi[cpmaxi[k]] ;
X! cpj2[k] = cpj[cpmaxi[k]] ;
X! cpk2[k] = cpk[cpmaxi[k]] ;
X! cpf[cpmaxi[k]] = FALSE ;
X! }
X! k = 3 ;
X! for (cp = 0; cp <= 60 - mnb; cp++)
X! if (cpf[cp] == TRUE)
X! {
X! cpi2[k] = cpi[cp] ;
X! cpj2[k] = cpj[cp] ;
X! cpk2[k] = cpk[cp] ;
X! k++ ;
X! }
X! for (cp = 0; cp <= 60 - mnb; cp++)
X! {
X! cpi[cp] = cpi2[cp] ;
X! cpj[cp] = cpj2[cp] ;
X! cpk[cp] = cpk2[cp] ;
X! }
X! }
X else
X {
X! cpi2[0] = cpi[cpmax] ;
X! cpj2[0] = cpj[cpmax] ;
X! cpk2[0] = cpk[cpmax] ;
X! cpi[cpmax] = cpi[0] ;
X! cpj[cpmax] = cpj[0] ;
X! cpk[cpmax] = cpk[0] ;
X! cpi[0] = cpi2[0] ;
X! cpj[0] = cpj2[0] ;
X! cpk[0] = cpk2[0] ;
X }
X+ cpmax = 0 ;
X timeused = time((time_t *) NULL) - firsttime ;
X! if ((mnb == 4) && (profmax == 3)) break ;
X }
X! while ((timeused * count < allotime * 5 / 4) && (profmax != 61 - mnb)) ;
X! trap:
X! timeused = time((time_t *) NULL) - firsttime ;
X if (timeused == 0) timeused = 1 ;
X }
X
X! if (*rtnmv == TRUE) timeleft -= timeused ;
X! if ((int) timeleft < 0) timeleft = 0 ;
X
X! if (saveres)
X! {
X! if ((mnb == 1) || (mnb == 2))
X! {
X! fp = fopen("reve.res", "w") ;
X! FPRINTF(fp, "\n") ;
X! FCLOSE(fp) ;
X! }
X! fp = fopen("reve.res", "a") ;
X! FPRINTF(fp, "%2d, <%c-%c>, ", mnb, 'A' + cpj[cpmax], '1' + cpi[cpmax]) ;
X! FPRINTF(fp, "nt : %5d, pmax : %3d, tmleft : %d, level : %d, ",
X! note, profmax, timeleft, level) ;
X! FPRINTF(fp, "exp : <%c-%c>\n", 'A' + cpj[1], '1' + cpi[1]) ;
X! FCLOSE(fp) ;
X! }
X!
X! *rtnmv = cpk[cpmax] ;
X *rtnnote = note ;
X }
X
X***************
X*** 220,226 ****
X long alpha, beta ;
X {
X register int *d0, *d1 ;
X! register int k, cp ;
X register long lnote, note ;
X
X d0 = damier[niv] ;
X--- 354,360 ----
X long alpha, beta ;
X {
X register int *d0, *d1 ;
X! register int k, cp, cpmax ;
X register long lnote, note ;
X
X d0 = damier[niv] ;
X***************
X*** 241,250 ****
X lnote = tuplonges(niv + 1, alpha, note) ;
X else
X lnote = evalue(niv + 1) ;
X! if (lnote < note) note = lnote ;
X if (note <= alpha) return note ;
X }
X }
X return note ;
X }
X
X--- 375,397 ----
X lnote = tuplonges(niv + 1, alpha, note) ;
X else
X lnote = evalue(niv + 1) ;
X! if (lnote < note)
X! {
X! note = lnote ;
X! cpmax = cp ;
X! }
X if (note <= alpha) return note ;
X }
X }
X+
X+ if (niv == 1)
X+ {
X+ cpmaxi[1] = cpmax ;
X+ cpmaxi[2] = cpmaxi[3] ;
X+ }
X+ else if (niv == 2)
X+ cpmaxi[3] = cpmax ;
X+
X return note ;
X }
X
X***************
X*** 255,261 ****
X long alpha, beta ;
X {
X register int *d0, *d1 ;
X! register int k, cp ;
X register long lnote, note ;
X
X d0 = damier[niv] ;
X--- 402,408 ----
X long alpha, beta ;
X {
X register int *d0, *d1 ;
X! register int k, cp, cpmax ;
X register long lnote, note ;
X
X d0 = damier[niv] ;
X***************
X*** 276,284 ****
X lnote = jeplonge(niv + 1, note, beta) ;
X else
X lnote = evalue(niv + 1) ;
X! if (lnote > note) note = lnote ;
X if (note >= beta) return note ;
X }
X }
X return note ;
X }
X--- 423,444 ----
X lnote = jeplonge(niv + 1, note, beta) ;
X else
X lnote = evalue(niv + 1) ;
X! if (lnote > note)
X! {
X! note = lnote ;
X! cpmax = cp ;
X! }
X if (note >= beta) return note ;
X }
X }
X+
X+ if (niv == 1)
X+ {
X+ cpmaxi[1] = cpmax ;
X+ cpmaxi[2] = cpmaxi[3] ;
X+ }
X+ else if (niv == 2)
X+ cpmaxi[3] = cpmax ;
X+
X return note ;
X }
X
X------- rev_iycp.c -------
X*** /tmp/da28914 Fri Nov 9 10:39:57 1990
X--- rev_iycp.c Mon Nov 5 09:10:39 1990
X***************
X*** 3,13 ****
X *
X * Copyright (C) 1990 - Yves Gallot - all rights reserved.
X *
X! * Permission is given to distribute these sources, as long as the
X! * introductory messages are not removed, and no monies are exchanged.
X *
X! * You are forbidden from using Reve as is, or in a modified state, in
X! * any tournaments, without the permission of the authors.
X *
X * No responsibility is taken for any errors on inaccuracies inherent
X * either to the comments or the code of this program, but if reported
X--- 3,18 ----
X *
X * Copyright (C) 1990 - Yves Gallot - all rights reserved.
X *
X! * Permission is granted to copy this source, for redistribution
X! * in source form only, provided the news headers in "substantially
X! * unaltered format" are retained, the introductory messages are not
X! * removed, and no monies are exchanged.
X *
X! * Permission is also granted to copy this source, without the
X! * news headers, for the purposes of making an executable copy by
X! * means of compilation, provided that such copy will not be used
X! * for the purposes of competition in any othello tournaments, without
X! * prior permission from the authors.
X *
X * No responsibility is taken for any errors on inaccuracies inherent
X * either to the comments or the code of this program, but if reported
X
X------- reve.h -------
X*** /tmp/da28917 Fri Nov 9 10:39:58 1990
X--- reve.h Mon Nov 5 09:07:58 1990
X***************
X*** 6,16 ****
X * Copyright (C) 1990 - Rich Burridge & Yves Gallot.
X * All rights reserved.
X *
X! * Permission is given to distribute these sources, as long as the
X! * introductory messages are not removed, and no monies are exchanged.
X *
X! * You are forbidden from using Reve as is, or in a modified state, in
X! * any tournaments, without the permission of the authors.
X *
X * No responsibility is taken for any errors on inaccuracies inherent
X * either to the comments or the code of this program, but if reported
X--- 6,21 ----
X * Copyright (C) 1990 - Rich Burridge & Yves Gallot.
X * All rights reserved.
X *
X! * Permission is granted to copy this source, for redistribution
X! * in source form only, provided the news headers in "substantially
X! * unaltered format" are retained, the introductory messages are not
X! * removed, and no monies are exchanged.
X *
X! * Permission is also granted to copy this source, without the
X! * news headers, for the purposes of making an executable copy by
X! * means of compilation, provided that such copy will not be used
X! * for the purposes of competition in any othello tournaments, without
X! * prior permission from the authors.
X *
X * No responsibility is taken for any errors on inaccuracies inherent
X * either to the comments or the code of this program, but if reported
X***************
X*** 17,26 ****
X * (see README file), then an attempt will be made to fix them.
X */
X
X #define FCLOSE (void) fclose /* To make lint happy. */
X #define FFLUSH (void) fflush
X #define FGETS (void) fgets
X- #define FREAD (void) fread
X #define FSEEK (void) fseek
X #define FPRINTF (void) fprintf
X #define GETTIMEOFDAY (void) gettimeofday
X--- 22,33 ----
X * (see README file), then an attempt will be made to fix them.
X */
X
X+ #include <stdio.h>
X+ #include <sys/types.h>
X+
X #define FCLOSE (void) fclose /* To make lint happy. */
X #define FFLUSH (void) fflush
X #define FGETS (void) fgets
X #define FSEEK (void) fseek
X #define FPRINTF (void) fprintf
X #define GETTIMEOFDAY (void) gettimeofday
X***************
X*** 42,57 ****
X #define BGAP 10 /* Width of the gap between buttons. */
X #define BHEIGHT 32 /* Height of a reve button item. */
X #define BWIDTH 64 /* Width of a reve button item. */
X- #define CELL_SIZE (int) ((TOTAL_WIDTH-(2*BBORDER)) / BOARD_SIZE)
X #define CHEIGHT 20 /* Height of a reve cycle item. */
X #define CWIDTH 32 /* Width of a reve cycle item. */
X- #define CY ((NOROWS*BHEIGHT) + ((NOROWS-1)*BGAP) + (2*BBORDER))
X #define NOBUTS 6 /* Number of reve buttons. */
X- #define NOROWS 6 /* Number of rows of reve items. */
X #define PIECE_MARGIN 8
X #define PIECE_RAD (CELL_SIZE / 2 - PIECE_MARGIN)
X #define TOTAL_HEIGHT CY + (8 * CELL_SIZE) + (2 * BBORDER)
X #define TOTAL_WIDTH ((NOBUTS*BWIDTH) + ((NOBUTS-1)*BGAP) + (2*BBORDER))
X
X /* States that the the Reve squares can be in. */
X #define BLACK (-1) /* Piece definitions. */
X--- 49,73 ----
X #define BGAP 10 /* Width of the gap between buttons. */
X #define BHEIGHT 32 /* Height of a reve button item. */
X #define BWIDTH 64 /* Width of a reve button item. */
X #define CHEIGHT 20 /* Height of a reve cycle item. */
X #define CWIDTH 32 /* Width of a reve cycle item. */
X #define NOBUTS 6 /* Number of reve buttons. */
X #define PIECE_MARGIN 8
X #define PIECE_RAD (CELL_SIZE / 2 - PIECE_MARGIN)
X+
X+ #ifdef XVIEW
X+ #define CELL_SIZE 54
X+ #define CY 0
X+ #define NOROWS 0
X+ #define TOTAL_HEIGHT (8 * CELL_SIZE) + (2 * BBORDER)
X+ #define TOTAL_WIDTH (8 * CELL_SIZE) + (2 * BBORDER)
X+ #else
X+ #define CELL_SIZE (int) ((TOTAL_WIDTH-(2*BBORDER)) / BOARD_SIZE)
X+ #define CY ((NOROWS*BHEIGHT) + ((NOROWS-1)*BGAP) + (2*BBORDER))
X+ #define NOROWS 6 /* Number of rows of reve items. */
X #define TOTAL_HEIGHT CY + (8 * CELL_SIZE) + (2 * BBORDER)
X #define TOTAL_WIDTH ((NOBUTS*BWIDTH) + ((NOBUTS-1)*BGAP) + (2*BBORDER))
X+ #endif /*XVIEW*/
X
X /* States that the the Reve squares can be in. */
X #define BLACK (-1) /* Piece definitions. */
X***************
X*** 91,104 ****
X
X #ifndef MAXLINE
X #define MAXLINE 80 /* Length of character strings. */
X! #endif /*MAXLINE*/
X
X #define MAXMENUS 4 /* Maximum number of popup menus. */
X #define NIVEAUMAX 25 /* Maximum possible depth. */
X
X #ifdef NOINDEX
X #define index strchr
X #endif /*NOINDEX*/
X
X #define NOMOVE -1
X #define OPPONENT(p) p * -1
X--- 107,122 ----
X
X #ifndef MAXLINE
X #define MAXLINE 80 /* Length of character strings. */
X! #endif /*!MAXLINE*/
X
X #define MAXMENUS 4 /* Maximum number of popup menus. */
X #define NIVEAUMAX 25 /* Maximum possible depth. */
X
X+ #ifndef X11
X #ifdef NOINDEX
X #define index strchr
X #endif /*NOINDEX*/
X+ #endif /*!X11*/
X
X #define NOMOVE -1
X #define OPPONENT(p) p * -1
X***************
X*** 116,128 ****
X
X #ifndef EDGENAME
X #define EDGENAME "reve.edgetable"
X! #endif /*EDGENAME*/
X
X! #ifndef NO_4_3SIGNAL
X #define SIGRET void
X #else
X #define SIGRET int
X! #endif /*NO_4_3SIGNAL*/
X
X #define VINVUL 50
X
X--- 134,146 ----
X
X #ifndef EDGENAME
X #define EDGENAME "reve.edgetable"
X! #endif /*!EDGENAME*/
X
X! #ifndef INT_SIGNAL
X #define SIGRET void
X #else
X #define SIGRET int
X! #endif /*!INT_SIGNAL*/
X
X #define VINVUL 50
X
X***************
X*** 140,146 ****
X #define MOUSE_MOVING 110 /* Mouse is moving. */
X #define IGNORE_EVENT 111 /* No interest in this event. */
X
X! /* Batch or locking direction (ON or OFF). */
X enum bltype { IS_OFF, IS_ON } ;
X
X /* Reve move status. */
X--- 158,164 ----
X #define MOUSE_MOVING 110 /* Mouse is moving. */
X #define IGNORE_EVENT 111 /* No interest in this event. */
X
X! /* Batch, last move, locking or show all direction (ON or OFF). */
X enum bltype { IS_OFF, IS_ON } ;
X
X /* Reve move status. */
X***************
X*** 167,176 ****
X enum item_type { P_BUTTON, P_CYCLE, P_MESSAGE } ;
X
X /* Different panel items. */
X! enum panel_type { LAST_BUT, LOAD_BUT, NEW_GAME_BUT, SAVE_BUT,
X SUGGEST_BUT, UNDO_BUT, DONE_BUT, CANCEL_BUT, QUIT_BUT,
X BLACK_PLAYS, WHITE_PLAYS, DIFFICULTY, NOTES,
X! PANEL_MES, NOTES_MES, SCORE_MES, TURN_MES } ;
X
X enum set_type { INCREMENT, DECREMENT, NONE } ; /* Cycle directions. */
X
X--- 185,194 ----
X enum item_type { P_BUTTON, P_CYCLE, P_MESSAGE } ;
X
X /* Different panel items. */
X! enum panel_type { LOAD_BUT, NEW_GAME_BUT, SAVE_BUT, SHOW_ALL_BUT,
X SUGGEST_BUT, UNDO_BUT, DONE_BUT, CANCEL_BUT, QUIT_BUT,
X BLACK_PLAYS, WHITE_PLAYS, DIFFICULTY, NOTES,
X! PANEL_MES, EVAL_MES, SCORE_MES, TURN_MES } ;
X
X enum set_type { INCREMENT, DECREMENT, NONE } ; /* Cycle directions. */
X
X***************
X*** 187,192 ****
X--- 205,211 ----
X int move ;
X int moves_left ;
X long note ;
X+ time_t timeleft ;
X } BOARD ;
X
X struct iteminfo /* Item information record. */
X***************
X*** 213,233 ****
X void done(), draw_button(), draw_cycle() ;
X void draw_cycle_item(), draw_image(), draw_line() ;
X void draw_piece(), draw_rect(), draw_stencil() ;
X! void draw_text(), draw_textfield(), get_filename() ;
X void get_options(), get_xy(), getparam() ;
X void handle_board_event(), handle_event(), handle_item() ;
X void handle_key(), init_canvas(), init_edge_table() ;
X void init_fonts(), init_notes(), init_player() ;
X void initboard(), initialise() ;
X! void last(), load_colors(), load_game() ;
X! void lock_screen() ;
X void make_canvas(), make_frame(), make_icon() ;
X void make_message(), make_move(), make_panel() ;
X! void message(), nap_upto() ;
X! void new_game(), process_event(), quit() ;
X void remove_textfield(), save_game(), set_cursor() ;
X void set_cycle(), set_display_types() ;
X void set_timer(), set_score(), set_turn() ;
X void show_suggestion(), start_tool() ;
X void suggest(), think(), undo() ;
X void update_board_image(), usage(), who_wins() ;
X--- 232,253 ----
X void done(), draw_button(), draw_cycle() ;
X void draw_cycle_item(), draw_image(), draw_line() ;
X void draw_piece(), draw_rect(), draw_stencil() ;
X! void draw_text(), draw_textfield() ;
X! void generate_graphics(), get_filename() ;
X void get_options(), get_xy(), getparam() ;
X void handle_board_event(), handle_event(), handle_item() ;
X void handle_key(), init_canvas(), init_edge_table() ;
X void init_fonts(), init_notes(), init_player() ;
X void initboard(), initialise() ;
X! void load_colors(), load_game(), lock_screen() ;
X void make_canvas(), make_frame(), make_icon() ;
X void make_message(), make_move(), make_panel() ;
X! void message(), nap_upto(), new_game() ;
X! void position_popup(), process_event(), quit() ;
X void remove_textfield(), save_game(), set_cursor() ;
X void set_cycle(), set_display_types() ;
X void set_timer(), set_score(), set_turn() ;
X+ void show_all(), show_all_moves(), show_last() ;
X void show_suggestion(), start_tool() ;
X void suggest(), think(), undo() ;
X void update_board_image(), usage(), who_wins() ;
X
X------- tty.c -------
X*** /tmp/da28926 Fri Nov 9 10:40:00 1990
X--- tty.c Mon Nov 5 09:08:40 1990
X***************
X*** 7,17 ****
X * Copyright (C) 1990 - Rich Burridge & Yves Gallot.
X * All rights reserved.
X *
X! * Permission is given to distribute these sources, as long as the
X! * introductory messages are not removed, and no monies are exchanged.
X *
X! * You are forbidden from using Reve as is, or in a modified state, in
X! * any tournaments, without the permission of the authors.
X *
X * No responsibility is taken for any errors or inaccuracies inherent
X * either to the comments or the code of this program, but if reported
X--- 7,22 ----
X * Copyright (C) 1990 - Rich Burridge & Yves Gallot.
X * All rights reserved.
X *
X! * Permission is granted to copy this source, for redistribution
X! * in source form only, provided the news headers in "substantially
X! * unaltered format" are retained, the introductory messages are not
X! * removed, and no monies are exchanged.
X *
X! * Permission is also granted to copy this source, without the
X! * news headers, for the purposes of making an executable copy by
X! * means of compilation, provided that such copy will not be used
X! * for the purposes of competition in any othello tournaments, without
X! * prior permission from the authors.
X *
X * No responsibility is taken for any errors or inaccuracies inherent
X * either to the comments or the code of this program, but if reported
X***************
X*** 18,36 ****
X * (see README file), then an attempt will be made to fix them.
X */
X
X! #include <stdio.h>
X! #include <strings.h>
X #include <sys/ioctl.h>
X #include <signal.h>
X
X #ifdef SYSV
X #include <sgtty.h>
X #endif /*SYSV*/
X
X- #include "reve.h"
X- #include "color.h"
X- #include "extern.h"
X-
X #define DRAW_STRING(col, row, str, v) draw_string(col, row, str, v), return
X
X enum gr_type gtype = GTTY ; /* Graphics type. */
X--- 23,41 ----
X * (see README file), then an attempt will be made to fix them.
X */
X
X! #include "reve.h"
X! #include "color.h"
X! #include "extern.h"
X #include <sys/ioctl.h>
X #include <signal.h>
X
X #ifdef SYSV
X+ #include <string.h>
X #include <sgtty.h>
X+ #else
X+ #include <strings.h>
X #endif /*SYSV*/
X
X #define DRAW_STRING(col, row, str, v) draw_string(col, row, str, v), return
X
X enum gr_type gtype = GTTY ; /* Graphics type. */
X***************
X*** 60,69 ****
X } ;
X
X struct tty_info ttyvals[MAXITEMS] = {
X! { 1, 1, 33, 33, }, /* Last */
X! { 11, 1, 107, 33, }, /* Load */
X! { 22, 1, 167, 33, }, /* New game */
X! { 33, 1, 255, 33, }, /* Save */
X { 44, 1, 318, 33, }, /* Suggest */
X { 55, 1, 403, 33, }, /* Undo */
X { -1, -1, 33, 75, }, /* Done (not displayed). */
X--- 65,74 ----
X } ;
X
X struct tty_info ttyvals[MAXITEMS] = {
X! { 1, 1, 33, 33, }, /* Load */
X! { 11, 1, 107, 33, }, /* New game */
X! { 22, 1, 167, 33, }, /* Save */
X! { 33, 1, 255, 33, }, /* Show all */
X { 44, 1, 318, 33, }, /* Suggest */
X { 55, 1, 403, 33, }, /* Undo */
X { -1, -1, 33, 75, }, /* Done (not displayed). */
X***************
X*** 85,94 ****
X } ;
X
X struct other_info othervals[MAXITEMS] = {
X- { -1, -1, }, /* Last (ignored). */
X { -1, -1, }, /* Load (ignored). */
X { -1, -1, }, /* New game (ignored). */
X { -1, -1, }, /* Save (ignored). */
X { -1, -1, }, /* Suggest (ignored). */
X { -1, -1, }, /* Undo (ignored). */
X { -1, -1, }, /* Done (ignored). */
X--- 90,99 ----
X } ;
X
X struct other_info othervals[MAXITEMS] = {
X { -1, -1, }, /* Load (ignored). */
X { -1, -1, }, /* New game (ignored). */
X { -1, -1, }, /* Save (ignored). */
X+ { -1, -1, }, /* Show all (ignored). */
X { -1, -1, }, /* Suggest (ignored). */
X { -1, -1, }, /* Undo (ignored). */
X { -1, -1, }, /* Done (ignored). */
X***************
X*** 346,353 ****
X }
X else if (x == 237 && y == 195) /* Note message. */
X {
X! draw_string(othervals[(int) NOTES_MES].column,
X! othervals[(int) NOTES_MES].row, str, TRUE) ;
X return ;
X }
X else if (x == 15 && y == 237) /* Score message. */
X--- 351,358 ----
X }
X else if (x == 237 && y == 195) /* Note message. */
X {
X! draw_string(othervals[(int) EVAL_MES].column,
X! othervals[(int) EVAL_MES].row, str, TRUE) ;
X return ;
X }
X else if (x == 15 && y == 237) /* Score message. */
X***************
X*** 371,378 ****
X if (EQUAL(str, items[i].text))
X if (ttyvals[i].column != -1)
X {
X! if (EQUAL(str, "load")) STRCPY(str, "Load") ;
X! else if (EQUAL(str, "save")) STRCPY(str, "Save") ;
X draw_string(ttyvals[i].column, ttyvals[i].row, str, FALSE) ;
X return ;
X }
X--- 376,384 ----
X if (EQUAL(str, items[i].text))
X if (ttyvals[i].column != -1)
X {
X! if (EQUAL(str, "load")) STRCPY(str, "Load") ;
X! else if (EQUAL(str, "save")) STRCPY(str, "Save") ;
X! else if (EQUAL(str, "show all")) STRCPY(str, "show All") ;
X draw_string(ttyvals[i].column, ttyvals[i].row, str, FALSE) ;
X return ;
X }
X
X------- x11.c -------
X*** /tmp/da28929 Fri Nov 9 10:40:00 1990
X--- x11.c Thu Nov 8 10:28:39 1990
X***************
X*** 7,17 ****
X * Copyright (c) 1990 - Rich Burridge & Yves Gallot.
X * All rights reserved.
X *
X! * Permission is given to distribute these sources, as long as the
X! * introductory messages are not removed, and no monies are exchanged.
X *
X! * You are forbidden from using Reve as is, or in a modified state, in
X! * any tournaments, without the permission of the authors.
X *
X * No responsibility is taken for any errors or inaccuracies inherent
X * either to the comments or the code of this program, but if reported
X--- 7,22 ----
X * Copyright (c) 1990 - Rich Burridge & Yves Gallot.
X * All rights reserved.
X *
X! * Permission is granted to copy this source, for redistribution
X! * in source form only, provided the news headers in "substantially
X! * unaltered format" are retained, the introductory messages are not
X! * removed, and no monies are exchanged.
X *
X! * Permission is also granted to copy this source, without the
X! * news headers, for the purposes of making an executable copy by
X! * means of compilation, provided that such copy will not be used
X! * for the purposes of competition in any othello tournaments, without
X! * prior permission from the authors.
X *
X * No responsibility is taken for any errors or inaccuracies inherent
X * either to the comments or the code of this program, but if reported
X***************
X*** 18,30 ****
X * (see README file), then an attempt will be made to fix them.
X */
X
X- #include <stdio.h>
X- #include <strings.h>
X- #include <sys/time.h>
X #include "reve.h"
X #include "color.h"
X #include "extern.h"
X #include "images.h"
X #include <X11/Xlib.h>
X #include <X11/Xutil.h>
X #include <X11/Xatom.h>
X--- 23,40 ----
X * (see README file), then an attempt will be made to fix them.
X */
X
X #include "reve.h"
X #include "color.h"
X #include "extern.h"
X #include "images.h"
X+ #include <sys/time.h>
X+
X+ #ifdef SYSV
X+ #include <string.h>
X+ #else
X+ #include <strings.h>
X+ #endif /*SYSV*/
X+
X #include <X11/Xlib.h>
X #include <X11/Xutil.h>
X #include <X11/Xatom.h>
X***************
X*** 53,59 ****
X GC stencilgc[MAXDPY] ; /* Graphics context for stencils. */
X Pixmap images[MAXIMAGES] ;
X Pixmap no_pixmap ;
X! Pixmap load_color_icon(), load_image(), reve_icon ;
X Window frame[MAXDPY], root[MAXDPY] ;
X XClassHint class_hint = { "reve", "Reve" } ;
X XColor BGcolor, FGcolor ;
X--- 63,69 ----
X GC stencilgc[MAXDPY] ; /* Graphics context for stencils. */
X Pixmap images[MAXIMAGES] ;
X Pixmap no_pixmap ;
X! Pixmap load_color_icon(), load_image(), reve_icon[MAXDPY] ;
X Window frame[MAXDPY], root[MAXDPY] ;
X XClassHint class_hint = { "reve", "Reve" } ;
X XColor BGcolor, FGcolor ;
X***************
X*** 62,68 ****
X XSizeHints size ;
X XWMHints wm_hints ;
X XGCValues gc_val ; /* Used to setup graphics context values. */
X- int cmap_loaded ; /* Set if we've already loaded the colormap. */
X int gc_flags ; /* Used to set up graphics context flags. */
X int screen[MAXDPY] ; /* Default graphics display screen. */
X int xfd[MAXDPY] ; /* Server connection file descriptors. */
X--- 72,77 ----
X***************
X*** 79,85 ****
X fd_set fullmask ; /* Full mask of file descriptors to check on. */
X fd_set readmask ; /* Readmask used in select call. */
X #endif /*NO_43SELECT*/
X! #endif /*NOSELECT*/
X
X /* 256-byte table for quickly reversing the bits in an unsigned 8-bit char,
X * used to convert between MSBFirst and LSBFirst image formats.
X--- 88,94 ----
X fd_set fullmask ; /* Full mask of file descriptors to check on. */
X fd_set readmask ; /* Readmask used in select call. */
X #endif /*NO_43SELECT*/
X! #endif /*!NOSELECT*/
X
X /* 256-byte table for quickly reversing the bits in an unsigned 8-bit char,
X * used to convert between MSBFirst and LSBFirst image formats.
X***************
X*** 221,227 ****
X
X d = (int) cur_dpyno ;
X if (iscolor[d]) gc_val.foreground = palette[color] ;
X! else gc_val.foreground = foregnd[d] ;
X gc_val.function = opvals[(int) op] ;
X XChangeGC(dpy[d], gc[d], GCForeground | GCFunction, &gc_val) ;
X XDrawLine(dpy[d], frame[d], gc[d], x1, y1, x2, y2) ;
X--- 230,240 ----
X
X d = (int) cur_dpyno ;
X if (iscolor[d]) gc_val.foreground = palette[color] ;
X! else
X! {
X! if (color == C_WHITE) gc_val.foreground = backgnd[d] ;
X! else gc_val.foreground = foregnd[d] ;
X! }
X gc_val.function = opvals[(int) op] ;
X XChangeGC(dpy[d], gc[d], GCForeground | GCFunction, &gc_val) ;
X XDrawLine(dpy[d], frame[d], gc[d], x1, y1, x2, y2) ;
X***************
X*** 356,362 ****
X #else
X FD_ZERO(&fullmask) ;
X #endif /*NO_43SELECT*/
X! #endif /*NOSELECT*/
X
X if (dtype == XTWO)
X {
X--- 369,375 ----
X #else
X FD_ZERO(&fullmask) ;
X #endif /*NO_43SELECT*/
X! #endif /*!NOSELECT*/
X
X if (dtype == XTWO)
X {
X***************
X*** 364,370 ****
X init_X(DPY2, XWHITE) ;
X }
X else init_X(DPY1, dtype) ;
X- cmap_loaded = 0 ;
X move_delta = 10 ;
X
X images[(int) BUT_STENCIL] = load_image(button_stencil_image) ;
X--- 377,382 ----
X***************
X*** 394,400 ****
X u_char red[OTH_COLORSIZE], green[OTH_COLORSIZE], blue[OTH_COLORSIZE] ;
X int d, i, numcolors ;
X
X- if (cmap_loaded) return ;
X d = (int) cur_dpyno ;
X iscolor[d] = 0 ;
X if (DisplayCells(dpy[d], screen[d]) > 2)
X--- 406,411 ----
X***************
X*** 417,423 ****
X FPRINTF(stderr, "%s: cannot allocate colors.\n", progname) ;
X exit(1) ;
X }
X- cmap_loaded = 1 ;
X }
X }
X
X--- 428,433 ----
X***************
X*** 491,499 ****
X opvals[(int) RSRC] = GXcopy ;
X opvals[(int) RINV] = GXxor ;
X
X! load_colors() ;
X! if (iscolor[d]) reve_icon = load_color_icon(cicon_image) ;
X! else reve_icon = load_image(icon_image) ;
X
X size.flags = PMinSize | PMaxSize | PPosition | PSize ;
X size.x = 0 ;
X--- 501,509 ----
X opvals[(int) RSRC] = GXcopy ;
X opvals[(int) RINV] = GXxor ;
X
X! if (!monochrome) load_colors() ;
X! if (iscolor[d]) reve_icon[d] = load_color_icon(cicon_image) ;
X! else reve_icon[d] = load_image(icon_image) ;
X
X size.flags = PMinSize | PMaxSize | PPosition | PSize ;
X size.x = 0 ;
X***************
X*** 527,539 ****
X protocol_atom[d] = XInternAtom(dpy[d], "WM_PROTOCOLS", False) ;
X kill_atom[d] = XInternAtom(dpy[d], "WM_DELETE_WINDOW", False) ;
X
X! XSetStandardProperties(dpy[d], frame[d], "reve", NULL, reve_icon,
X argv, argc, &size) ;
X
X wm_hints.icon_x = ix ;
X wm_hints.icon_y = iy ;
X wm_hints.input = True ;
X! wm_hints.icon_pixmap = reve_icon ;
X wm_hints.flags = InputHint | IconPixmapHint ;
X if (iconic)
X {
X--- 537,549 ----
X protocol_atom[d] = XInternAtom(dpy[d], "WM_PROTOCOLS", False) ;
X kill_atom[d] = XInternAtom(dpy[d], "WM_DELETE_WINDOW", False) ;
X
X! XSetStandardProperties(dpy[d], frame[d], "reve", NULL, reve_icon[d],
X argv, argc, &size) ;
X
X wm_hints.icon_x = ix ;
X wm_hints.icon_y = iy ;
X wm_hints.input = True ;
X! wm_hints.icon_pixmap = reve_icon[d] ;
X wm_hints.flags = InputHint | IconPixmapHint ;
X if (iconic)
X {
X***************
X*** 587,593 ****
X #else
X FD_SET(xfd[d], &fullmask) ;
X #endif /*NO_43SELECT*/
X! #endif /*NOSELECT*/
X
X return(dpy) ;
X }
X--- 597,603 ----
X #else
X FD_SET(xfd[d], &fullmask) ;
X #endif /*NO_43SELECT*/
X! #endif /*!NOSELECT*/
X
X return(dpy) ;
X }
X***************
X*** 704,710 ****
X for (;;)
X {
X get_event() ; /* Get next canvas event. */
X- process_event() ; /* Find out what kind it is. */
X handle_event() ; /* And do the apropriate action. */
X }
X }
X--- 714,719 ----
X***************
X*** 713,728 ****
X Xselect_input()
X {
X int fd = -1 ; /* File descriptor with this event. */
X! struct timeval tval ; /* To set checking period. */
X
X- tval.tv_usec = 0 ;
X- tval.tv_sec = 0 ;
X-
X for (;;)
X {
X! XSync(dpy[0], 0) ;
X! if (dtype == XTWO) XSync(dpy[1], 0) ;
X!
X #ifdef NOSELECT
X fd = 0 ;
X #else
X--- 722,734 ----
X Xselect_input()
X {
X int fd = -1 ; /* File descriptor with this event. */
X! /** static struct timeval tval = { 0, 0 } ; **/
X! struct timeval *tval = NULL ;
X
X for (;;)
X {
X! XFlush(dpy[(int) DPY1]) ;
X! XFlush(dpy[(int) DPY2]) ;
X #ifdef NOSELECT
X fd = 0 ;
X #else
X***************
X*** 730,737 ****
X readmask = fullmask ;
X #ifdef NO_43SELECT
X SELECT(32, &readmask, 0, 0, &tval) ;
X! if (readmask && (1 << xfd)[0]) fd = 0 ;
X! else if (readmask && (1 << xfd)[1]) fd = 1 ;
X #else
X SELECT(FD_SETSIZE, &readmask, (fd_set *) 0, (fd_set *) 0, &tval) ;
X if (FD_ISSET(xfd[0], &readmask)) fd = 0 ;
X--- 736,743 ----
X readmask = fullmask ;
X #ifdef NO_43SELECT
X SELECT(32, &readmask, 0, 0, &tval) ;
X! if (readmask && (1 << xfd[0])) fd = 0 ;
X! else if (readmask && (1 << xfd[1])) fd = 1 ;
X #else
X SELECT(FD_SETSIZE, &readmask, (fd_set *) 0, (fd_set *) 0, &tval) ;
X if (FD_ISSET(xfd[0], &readmask)) fd = 0 ;
X***************
X*** 741,754 ****
X
X if (fd >= 0)
X {
X! cur_dpyno = (enum dpy_type) fd ;
X! do
X {
X! get_event() ; /* Get next canvas event. */
X! process_event() ; /* Find out what kind it is. */
X! handle_event() ; /* And do appropriate action. */
X }
X! while (XPending(dpy[fd])) ;
X }
X }
X }
X--- 747,767 ----
X
X if (fd >= 0)
X {
X! fd = 0 ;
X! cur_dpyno = DPY1 ;
X! while (XPending(dpy[fd]))
X {
X! get_event() ; /* Get next canvas event. */
X! handle_event() ; /* And do appropriate action. */
X }
X!
X! fd = 1 ;
X! cur_dpyno = DPY2 ;
X! while (XPending(dpy[fd]))
X! {
X! get_event() ; /* Get next canvas event. */
X! handle_event() ; /* And do appropriate action. */
X! }
X }
X }
X }
X
X------- FILES -------
X*** /tmp/da28932 Fri Nov 9 10:40:01 1990
X--- FILES Sat Nov 3 21:03:34 1990
X***************
X*** 33,38 ****
X--- 33,39 ----
X reve.edge1 - first half of the Reve edge stability table.
X reve.edge2 - second half of the Reve edge stability table.
X Makefile.dist - master Makefile used to build mp on Unix systems.
X+ Imakefile - Imakefile for the X11 version of reve.
X
X sunview.c - Sun SunView graphics routines.
X tty.c - dumb tty "graphics" routines.
X
X------- MANIFEST -------
X*** /tmp/da28935 Fri Nov 9 10:40:02 1990
X--- MANIFEST Sat Nov 3 21:04:35 1990
X***************
X*** 32,37 ****
X--- 32,38 ----
X x11.c | 4
X xview.c | 4
X sunview.c | 5
X+ Imakefile | 5
X images/black.icon | 5
X images/reve.icon | 5
X images/reve.color.icon | 5
X
X------- reve.edge2 -------
X*** /tmp/da28938 Fri Nov 9 10:40:03 1990
X--- reve.edge2 Fri Oct 26 12:05:37 1990
X***************
X*** 549,555 ****
X edges[2188] = -80 [ -oooooo- ]
X edges[2189] = 1304 [ xoooooo- ]
X edges[2190] = -1166 [ o-ooooo- ]
X! edges[2191] = 34 [ --ooooo- ]
X edges[2192] = 1234 [ x-ooooo- ]
X edges[2193] = 1434 [ oxooooo- ]
X edges[2194] = -36 [ -xooooo- ]
X--- 549,555 ----
X edges[2188] = -80 [ -oooooo- ]
X edges[2189] = 1304 [ xoooooo- ]
X edges[2190] = -1166 [ o-ooooo- ]
X! edges[2191] = 100 [ --ooooo- ]
X edges[2192] = 1234 [ x-ooooo- ]
X edges[2193] = 1434 [ oxooooo- ]
X edges[2194] = -36 [ -xooooo- ]
X***************
X*** 1275,1281 ****
X edges[2914] = 36 [ -xxxxxo- ]
X edges[2915] = 6511 [ xxxxxxo- ]
X edges[2916] = -6441 [ oooooo-- ]
X! edges[2917] = 34 [ -ooooo-- ]
X edges[2918] = 1234 [ xooooo-- ]
X edges[2919] = -1236 [ o-oooo-- ]
X edges[2920] = -36 [ --oooo-- ]
X--- 1275,1281 ----
X edges[2914] = 36 [ -xxxxxo- ]
X edges[2915] = 6511 [ xxxxxxo- ]
X edges[2916] = -6441 [ oooooo-- ]
X! edges[2917] = 100 [ -ooooo-- ]
X edges[2918] = 1234 [ xooooo-- ]
X edges[2919] = -1236 [ o-oooo-- ]
X edges[2920] = -36 [ --oooo-- ]
X
X
END_OF_FILE
if test 48717 -ne `wc -c <'patches01c'`; then
echo shar: \"'patches01c'\" unpacked with wrong size!
fi
# end of 'patches01c'
fi
echo shar: End of archive 3 \(of 4\).
cp /dev/null ark3isdone
MISSING=""
for I in 1 2 3 4 ; do
if test ! -f ark${I}isdone ; then
MISSING="${MISSING} ${I}"
fi
done
if test "${MISSING}" = "" ; then
echo You have unpacked all 4 archives.
rm -f ark[1-9]isdone
else
echo You still need to unpack the following archives:
echo " " ${MISSING}
fi
## End of shell archive.
exit 0