From decwrl!lll-winken!uunet!zephyr.ens.tek.com!tekred!saab!billr Sat Mar 3 16:25:07 PST 1990 Article 809 of comp.sources.games: Path: decwrl!lll-winken!uunet!zephyr.ens.tek.com!tekred!saab!billr From: billr@saab.CNA.TEK.COM (Bill Randle) Newsgroups: comp.sources.games Subject: v08i091: mgt - My Go Teacher program to read Smart-GO files, Part04/05 Message-ID: <5195@tekred.CNA.TEK.COM> Date: 20 Feb 90 19:34:17 GMT Sender: news@tekred.CNA.TEK.COM Lines: 3210 Approved: billr@saab.CNA.TEK.COM Submitted-by: Jeff Boscole Posting-number: Volume 8, Issue 91 Archive-name: mgt/Part04 #! /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 'env.c' <<'END_OF_FILE' X X/* X X "mgt" Copyright 1990 Shodan X All Rights Reserved. X Program by Greg Hale X XPermission to use, copy, modify, and distribute this software and its Xdocumentation for any purpose and without fee is hereby granted, Xprovided that this entire comment and copyright notice appear in all Xcopies and that both that copyright notice and this permission notice Xappear in supporting documentation. No representations are made about Xthe suitability of this software for any purpose. It is provided "as Xis" without express or implied warranty. X XPlease send copies of extensions to: X Xhale@scam.berkeley.edu X128.32.138.4 scam.berkeley.edu sting sting.Berkeley.EDU X XDonations for the 'From My Go Teacher' series may be sent to: X Shodan X P.O. Box 4456 X Berkeley, CA 94704 X (415) 849-9475 X X*/ X X#include X#include "mgt.h" X#include "var.h" X XFUNCTION void initEnv() X{ X extern char *getenv(); X char *env; X env = getenv("MGT"); X X if (env) X for (;;) { X if ((*io->setEnv)(env)) X break; X else X while (*env && *env != '_') X env++; X } X} END_OF_FILE if test 1050 -ne `wc -c <'env.c'`; then echo shar: \"'env.c'\" unpacked with wrong size! fi # end of 'env.c' fi if test -f 'file.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'file.c'\" else echo shar: Extracting \"'file.c'\" \(1061 characters\) sed "s/^X//" >'file.c' <<'END_OF_FILE' X X/* X X "mgt" Copyright 1990 Shodan X All Rights Reserved. X Program by Greg Hale X XPermission to use, copy, modify, and distribute this software and its Xdocumentation for any purpose and without fee is hereby granted, Xprovided that this entire comment and copyright notice appear in all Xcopies and that both that copyright notice and this permission notice Xappear in supporting documentation. No representations are made about Xthe suitability of this software for any purpose. It is provided "as Xis" without express or implied warranty. X XPlease send copies of extensions to: X Xhale@scam.berkeley.edu X128.32.138.4 scam.berkeley.edu sting sting.Berkeley.EDU X XDonations for the 'From My Go Teacher' series may be sent to: X Shodan X P.O. Box 4456 X Berkeley, CA 94704 X (415) 849-9475 X X*/ X X#include X#include "mgt.h" X#include "file.h" X X XFILE *input=0,*debug; X XFUNCTION void openfile(f) Xchar *f; X{ X input = fopen(f,"r"); X} X XFUNCTION void closefile() X{ X if (input) { X fclose(input); X input = 0; X } X} X XFUNCTION boolean bfile() X{ X return input != 0; X} END_OF_FILE if test 1061 -ne `wc -c <'file.c'`; then echo shar: \"'file.c'\" unpacked with wrong size! fi # end of 'file.c' fi if test -f 'go-files/f2' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'go-files/f2'\" else echo shar: Extracting \"'go-files/f2'\" \(1391 characters\) sed "s/^X//" >'go-files/f2' <<'END_OF_FILE' X X( X; XGaMe[1] XSiZe[19] XVieW[] XBlackSpec[1] XWhiteSpec[1] XAddBlack[cm][fj][fk][ec][eb][fc][gc][ff][ia][ib][ka][kb][la][jc][jd][md][if][kf][ih][jh][kh][ki][kj][hi][jk][il][im][io][lm][hq][hr][hs][is][js][jr][kr][lq][po][pk] XAddWhite[fa][fb][gb][hb][ha][hc][ic][ma][lb][kd][ke][mf][kg][ig][hg][gh][fi][ek][gk][fm][gl][hl][hm][ij][ji][in][hp][gr][gs][ir][jq][kp][kn][kl][ks][ls][mr][nq][mo][mn][mm][lk][lj][li] XFileFormat[1] XComment[White to play. X XSolution follows.] X; X; XWhite[jb] X; XBlack[ja] X; XWhite[kc] X; XBlack[jb] X; XWhite[je] X; XBlack[id] X; XWhite[ie] X; XBlack[hd] X; XWhite[gd] X; XBlack[he] X; XWhite[ge] X; XBlack[hf] X; XWhite[gf] X; XBlack[jf] X; XWhite[jg] X; XBlack[lf] X; XWhite[le] X; XBlack[lg] X; XWhite[lh] X; XBlack[mg] X; XWhite[ng] X; XBlack[mh] X; XWhite[nh] X; XBlack[mi] X; XWhite[ni] X; XBlack[mj] X; XWhite[nj] X; XBlack[mk] X; XWhite[nk] X; XBlack[ml] X; XWhite[ll] X; XBlack[nl] X; XWhite[ol] X; XBlack[nm] X; XWhite[om] X; XBlack[nn] X; XWhite[on] X; XBlack[no] X; XWhite[oo] X; XBlack[np] X; XWhite[op] X; XBlack[mp] X; XWhite[lp] X; XBlack[mq] X; XWhite[lr] X; XBlack[kq] X; XWhite[iq] X; XBlack[gq] X; XWhite[fq] X; XBlack[gp] X; XWhite[go] X; XBlack[fp] X; XWhite[ep] X; XBlack[fo] X; XWhite[fn] X; XBlack[eo] X; XWhite[do] X; XBlack[en] X; XWhite[dn] X; XBlack[em] X; XWhite[dm] X; XBlack[el] X; XWhite[dl] X; XBlack[fl] X; XWhite[ej] X; XBlack[gj] X; XWhite[hj] X; XBlack[gi] X; XWhite[hh] X; XBlack[ii] X; XWhite[jj] X; XBlack[kk] X; XWhite[jl] X; XBlack[ik] X; XWhite[hk] X; XBlack[jm] X; XWhite[km] X) X END_OF_FILE if test 1391 -ne `wc -c <'go-files/f2'`; then echo shar: \"'go-files/f2'\" unpacked with wrong size! fi # end of 'go-files/f2' fi if test -f 'go-files/h01.s' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'go-files/h01.s'\" else echo shar: Extracting \"'go-files/h01.s'\" \(1055 characters\) sed "s/^X//" >'go-files/h01.s' <<'END_OF_FILE' X X( X; XGaMe[1] XSiZe[19] XVieW[] XBlackSpec[1] XWhiteSpec[1] XAddBlack[pd][nc][jd] XAddWhite[ld][qf] XComment[h01.s XPossible hamete \(trick plays\) position that occurs frequently in handicap games. Black usually responds at "a" and is not the best play.] XLetter[lc] XAddEmpty[lc] XFileFormat[1] X( X; XBlack[lc] X; XWhite[oc] XComment[White 2 is hamete] X; XBlack[od] X; XWhite[kc] X; XBlack[kd] X; XWhite[mc] X; XBlack[lb] X; XWhite[nd] X; XBlack[nb] X; XWhite[mb] X; XBlack[ma] X; XWhite[md] X( X; XBlack[ob] X; XWhite[kb] X; XBlack[la] X; XWhite[pc] X( X; XBlack[qc] X; XWhite[ka] XComment[Black is embarrassed at White 18] X) X( X; XBlack[pb] X; XWhite[qc] X; XBlack[qb] X; XWhite[qd] X; XBlack[jb] X; XWhite[na] X; XBlack[oa] X; XWhite[rb] X; XBlack[jc] X; XWhite[mf] XComment[White 26 is equally bad for Black] X) X) X( X; XBlack[kb] X; XWhite[ob] X; XBlack[na] X; XWhite[jc] X; XBlack[jb] X; XWhite[ic] X; XBlack[ib] X; XWhite[hc] X; XBlack[hb] X; XWhite[gc] X; XBlack[pc] X; XWhite[mf] XComment[White 24 is also bad for Black] X) X) X( X; XBlack[qe] X; XWhite[pf] X; XBlack[ne] XComment[This is the best for Black. Keep the two White groups separated.] X) X) END_OF_FILE if test 1055 -ne `wc -c <'go-files/h01.s'`; then echo shar: \"'go-files/h01.s'\" unpacked with wrong size! fi # end of 'go-files/h01.s' fi if test -f 'go-files/h03.s' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'go-files/h03.s'\" else echo shar: Extracting \"'go-files/h03.s'\" \(1896 characters\) sed "s/^X//" >'go-files/h03.s' <<'END_OF_FILE' X X( X; XGaMe[1] XSiZe[19] XVieW[] XBlackSpec[1] XWhiteSpec[1] XAddBlack[pd][qd][of][pf] XAddWhite[nc][ob][qe][qf][pg] XComment[h03.s XThis position is another hamete variation resulting from the Xtsukenobi joseki.] XFileFormat[1] X; XAddEmpty[ob][qd][qe][qf][pf][of][pf][pg] X; XWhite[qf] X; XBlack[pf] X; XWhite[pg] X; XBlack[of] X; XWhite[qe] X; XBlack[qd] X; XWhite[ob] XKO[] XComment[This is how the position begins, ending with White playing hamete at XWhite 'p18'.] X( X; XBlack[nd] XComment[If Black plays the "usual" move at 'o16', White will be able to Xcomplete the hamete with White 'p16' and exploit Black's position.] X; XWhite[od] X; XBlack[oe] X; XWhite[oc] X; XBlack[pe] XComment[] X; XWhite[qi] X; XBlack[md] X; XWhite[kc] XComment[After the exchange Black is left with an overly concentrated group of Xstones. Black has a large weakness at 'a', and the ownership of the corner is Xsmall and in doubt for Black.] XLetter[mf] X) X( X; XBlack[od] XComment[This Black response at 'p16' is the correct move, and would be Ximmediately obvious to stronger dan level players. Below 5 dan, Black at 'p16' Xwould be very difficult to discover.] X( X; XWhite[qi] X; XBlack[jc] X; XWhite[lc] X; XBlack[pb] XComment[After White 'r11', Black will be able to squeeze the opposite White Xgroup with Black 'k17' and 'q18'.] X) X( X; XWhite[kc] X; XBlack[pi] X; XWhite[og] X; XBlack[ng] X; XWhite[oh] X; XBlack[pk] XComment[If White chooses to play White 'l17' instead, Black will be able to Xsqueeze the other White group.] X; XBlack[pb] XComment[Later, Black can play 'q15' to secure the corner] X; XWhite[qb] XComment[Can White steal Black's corner with White 'r18'?] X( X; XBlack[pa] X; XWhite[qc] X; XBlack[pc] X; XWhite[rd] XComment[If Black chooses this exchange, White will be able to take the corner.] X) X( X; XBlack[oc] XComment[Black at 'p17' is the correct play \(tesuji\).] X; XWhite[nb] X; XBlack[pa] X; XWhite[qc] X; XBlack[rb] XComment[Black retains the corner with Black 's18'.] X) X) X) X) END_OF_FILE if test 1896 -ne `wc -c <'go-files/h03.s'`; then echo shar: \"'go-files/h03.s'\" unpacked with wrong size! fi # end of 'go-files/h03.s' fi if test -f 'go-files/h10.s' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'go-files/h10.s'\" else echo shar: Extracting \"'go-files/h10.s'\" \(1724 characters\) sed "s/^X//" >'go-files/h10.s' <<'END_OF_FILE' X X( X; XGaMe[1] XSiZe[19] XVieW[] XBlackSpec[1] XWhiteSpec[1] XAddBlack[pd][nc] XAddWhite[jc][qf][ob] XFileFormat[1] XGameName[Hamete 10] XComment[h10.s XWhite at 'p18' is hamete. How should Black respond? X XSolution follows.] X( X; XBlack[nb] XComment[Black one at 'o18' is natural, but it is a poor move.] X; XWhite[qc] X; XBlack[qd] X; XWhite[rd] X( X; XBlack[pc] X; XWhite[rb] X; XBlack[pb] X; XWhite[qi] XComment[Black is too concentrated, and White has also taken the corner away Xfrom Black. Six stones to capture one stone! Terrible.] X) X( X; XBlack[re] XComment[Black five at 's15', instead of Black five at 'q17', is not much Xbetter.] X; XWhite[rc] X; XBlack[qe] X; XWhite[oc] X; XBlack[od] X; XWhite[nd] XComment[The White cut at 'o16' is very serious trouble for Black.] X) X) X( X; XBlack[qe] XComment[Black one at 'r15' is also a poor move, and the result is just a Xvariant of the previous sequences.] X; XWhite[pf] X; XBlack[nb] X; XWhite[qc] XComment[] X) X( X; XBlack[oc] XComment[Black one at 'p17' is the correct play.] X( X; XWhite[pb] X; XBlack[qe] X; XWhite[pf] X; XBlack[nb] X; XWhite[qc] X; XBlack[rd] X; XWhite[rc] X; XBlack[rf] X( X; XWhite[ra] X; XBlack[qg] XComment[White has a very small corner, and Black now has a very strong Xposition on the outside.] X) X( X; XWhite[qh] XComment[White at 'r12' does little to gain strength on the outside, and White Xwill lose the corner if he plays this move.] X; XBlack[oa] XComment[The White corner is dead, and White's influence on the outside is very Xsmall.] X) X) X( X; XWhite[qc] XComment[At this juncture, White two at 'r17' is probably the best move for XWhite, but Black will be a better position.] X; XBlack[qd] X; XWhite[rd] X; XBlack[re] X; XWhite[rc] X; XBlack[qe] X; XWhite[nb] X; XBlack[pf] XComment[Black has very good strength on the outside.] X) X) X) END_OF_FILE if test 1724 -ne `wc -c <'go-files/h10.s'`; then echo shar: \"'go-files/h10.s'\" unpacked with wrong size! fi # end of 'go-files/h10.s' fi if test -f 'go-files/h12.s' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'go-files/h12.s'\" else echo shar: Extracting \"'go-files/h12.s'\" \(1691 characters\) sed "s/^X//" >'go-files/h12.s' <<'END_OF_FILE' X X( X; XGaMe[1] XSiZe[19] XVieW[] XBlackSpec[1] XWhiteSpec[1] XAddBlack[pd][rd][nc] XAddWhite[lc][re][qf][qi] XFileFormat[1] XGameName[Hamete 12] XComment[h12.s XThe White move at 's15' is hamete. How should Black respond? X XSolution follows.] X; XAddEmpty[qf][re][rd][nc][lc] XComment[The following sequence White one 'r14' through White five at 's15' is Xhow the hamete begins.] X; XWhite[qf] X; XBlack[nc] X; XWhite[lc] X; XBlack[rd] X; XWhite[re] XKO[] X( X; XBlack[qd] XComment[Black at 'r16' is too timid, and Black will also be confined to the Xcorner with little outside influence if he plays this move.] X; XWhite[nb] X; XBlack[ob] X; XWhite[nd] X; XBlack[oc] X; XWhite[of] XComment[This position would make White very happy indeed.] X) X( X; XBlack[qe] XComment[Black at 'r15' is the first correct move.] X; XWhite[rf] XComment[Responding to the White move at 's14' is what we must really consider.] X( X; XBlack[pf] XComment[Black at 'q14' is not a good move.] X; XWhite[pg] X; XBlack[og] X; XWhite[qc] X; XBlack[qd] X; XWhite[of] X; XBlack[pe] X; XWhite[ph] X; XBlack[nf] X; XWhite[oh] X; XBlack[ng] XComment[Black's "shape" looks very dumb, and White has an interesting tesuji Xat 's17'.] X) X( X; XBlack[ne] XComment[Black at 'o15' is the second correct tesuji.] X; XWhite[qc] XComment[Black has nothing to fear from the White invasion at 'r17'.] X; XBlack[qd] X; XWhite[rc] X; XBlack[sd] X; XWhite[ob] X; XBlack[nb] X; XWhite[oc] X; XBlack[od] XComment[At this point the White group in the corner is dead.] X( X; XWhite[pc] X; XBlack[pa] X; XWhite[oa] X; XBlack[sc] X; XWhite[sb] X; XBlack[rb] X; XWhite[ra] X; XBlack[qb] X) X( X; XWhite[ra] XComment[White at 's19', instead of White 'q17', still dies.] X; XBlack[sb] X; XWhite[sc] X; XBlack[oa] X; XWhite[pa] X; XBlack[pc] X; XWhite[pb] X; XBlack[qb] X) X) X) X) END_OF_FILE if test 1691 -ne `wc -c <'go-files/h12.s'`; then echo shar: \"'go-files/h12.s'\" unpacked with wrong size! fi # end of 'go-files/h12.s' fi if test -f 'go-files/p27.s' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'go-files/p27.s'\" else echo shar: Extracting \"'go-files/p27.s'\" \(1107 characters\) sed "s/^X//" >'go-files/p27.s' <<'END_OF_FILE' X% X( X; XGaMe[1] XSiZe[19] XVieW[] XBlackSpec[1] XWhiteSpec[1] XAddEmpty[cq][cp][co][cn][dm][el][fl][fk][gk][hk][ik][il][jl][jm][km][kn][ko][kp] X[jp][jq][jr][ir][hr][hq][iq][ip][jp][jo][jn][in][im][hm][gm][gl][fl][fm][em][en] X[dn][do][dp][dq][dr][er][eq][fq][gq][gp][ho][hn][ho][hp] XAddBlack[db][dc][ed][de][df][dh][eh][gh][hh][ih][jg][kf][ke][kd][kc][jb][ib][hd] X[ge] XAddWhite[eb][gc][hc][ic][fd][fe][ff][hg][je][jf][ce] XFileFormat[1] XComment[p27.s XWhite to play.] XPLayer[] XGameName[mt27] X( X; XWhite[he] XComment[White one at 'h15' is correct.] X; XBlack[ie] X; XWhite[hf] X; XBlack[id] X; XWhite[gd] X; XBlack[jd] X( X; XWhite[ga] X; XBlack[ea] X; XWhite[fa] X; XBlack[ec] X; XWhite[da] X; XBlack[ca] X; XWhite[cb] XComment[The sequence ends in ko.] X) X( X; XWhite[da] XComment[White seven at 'd19' is another variation White may play.] X; XBlack[ca] X; XWhite[fa] X; XBlack[ec] X; XWhite[fc] X) X) X( X; XWhite[hf] XComment[White one at 'h14' will end in the loss of the White group.] X; XBlack[he] X; XWhite[ga] X; XBlack[if] XComment[The White group is dead at this point. The three Black stones in the Xmiddle cannot be captured after Black four at 'j14'.] X) X) END_OF_FILE if test 1107 -ne `wc -c <'go-files/p27.s'`; then echo shar: \"'go-files/p27.s'\" unpacked with wrong size! fi # end of 'go-files/p27.s' fi if test -f 'go-files/p37.s' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'go-files/p37.s'\" else echo shar: Extracting \"'go-files/p37.s'\" \(850 characters\) sed "s/^X//" >'go-files/p37.s' <<'END_OF_FILE' X X( X; XGaMe[1] XSiZe[19] XVieW[] XBlackSpec[1] XWhiteSpec[1] XAddWhite[qa][pb][oc][na][nb][pd][qd][rd] XAddBlack[pa][qb][ma][mb][mc][nc][od][ne][pe][qe][re][se] XFileFormat[1] XComment[p37.s XWhite to play. X XSolution follows.] XPLayer[ XWhite] X( X; XWhite[ra] XComment[White one at 's19' is the correct response. ] X; XBlack[rb] X; XWhite[sc] XComment[White three at 't17' is an important play to prevent Black from later Xmaking one eye. If Black is allowed one eye in the corner, then the White Xgroup dies.] X; XBlack[sa] X; XWhite[qa] X; XBlack[ra] X; XWhite[ob] XComment[White lives. The result is 'seki'.] X) X( X; XWhite[oa] XComment[White one at 'p19' is incorrect. The result is either 'ko', or White Xis dead. ] X; XBlack[ra] X( X; XWhite[pa] X; XBlack[rc] XComment[White is dead.] X) X( X; XWhite[rb] XComment[If White plays White three at 's18' instead, the result is a 'ko'.] X) X) X) END_OF_FILE if test 850 -ne `wc -c <'go-files/p37.s'`; then echo shar: \"'go-files/p37.s'\" unpacked with wrong size! fi # end of 'go-files/p37.s' fi if test -f 'go-files/p39.s' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'go-files/p39.s'\" else echo shar: Extracting \"'go-files/p39.s'\" \(2056 characters\) sed "s/^X//" >'go-files/p39.s' <<'END_OF_FILE' X X( X; XGaMe[1] XSiZe[19] XVieW[] XBlackSpec[1] XWhiteSpec[1] XAddBlack[ab][bc][bd][be][cd][db][ee][fc][fd][hb][ga][ic][id][ge][gf][eg][cg][ch] X[pd][pc][pb][qb][mc][qe][qf][ep][fp][fq][em][gm][pq][or][qr][op][np][no][oo][nn] X[om][ol][pm][pn][qm][rm][pk][qk][ql][rj] XAddWhite[ca][bb][cc][dc][dd][de][ce][eb][fb][gb][gc][gd][fe][ci][di][dl][cn][cp] X[dq][eq][ip][in][nq][mn][ok][nk][nj][nl][nm][oi][pj][qj][ri][rk][rl][sm][rn][po] X[qp][qq][pe][qc][qd][re][rf][rb] XFileFormat[1] XComment[p39.s XWhite to play. X XSolution follows.] XPLayer[] XGameName[39] X; XWhite[bf] XComment[White one at 'b14' is correct.] X; XBlack[cf] XAddEmpty[mc][nc][ob][pb][qb][rb][qb][pb][pc][qc][pc][pd][pe][pf][pg][ph][pi][pj] X[pk][pl][pm][pn][on][oo][op][oq][nq][mq][lq][kq][jq][iq][hq][gq][fq][eq][dq][cq] X[cp][co][cn][dm][dl][el][em][fm][gm][hm][gm][gn][fo][ep][fp][gp][go][ho][hn][in] X[io][ip][jp][kp][lp][mp][nq][or][pr][qr][qq][qp][pp][pq][oq][op][np][no][nn][mn] X[nn][nm][nl][nk][nj][ni][oh][og][pg][pf][pe][pd][qd][rd][re][qe][pe][qf][rf][rg] X[rh][ri][rj][rk][sl][sm][rm][rl][rk][qk][qj][qk][ql][qm][rm][rn][qn][qo][po][pn] X[on][om][ol][ok][oj][oi] X; XWhite[ae] X( X; XBlack[bg] XComment[If Black plays at 'b13', then White will have an easy life.] X; XWhite[ac] X; XBlack[af] X; XWhite[aa] XComment[White lives.] X) X( X; XBlack[ac] XComment[Black at 'a17' complicates the position slightly, but White still will Xlive.] X; XWhite[bg] XComment[White at 'b13' is a very important tesuji play. This move extends XWhite's liberty by one move. Without it the White group will surely die.] X; XBlack[bh] X; XWhite[af] X( X; XBlack[ah] XComment[Now we see how White gained one extra liberty by playing first at X'b13'.] X; XWhite[ba] X; XBlack[ag] X; XWhite[aa] X; XBlack[ad] X; XWhite[bf] XComment[White lives. 'Ishi no shita' Play under the stones.] X) X( X; XBlack[ba] XComment[Black at 'b19', instead of Black at 'a12', will lead to ko. However Xthis is a two step ko for Black to fight\; a very difficult type of ko to win.] X; XWhite[cb] X; XBlack[ah] X; XWhite[aa] XComment[It is almost useless for Black to try and win this ko.] X) X) X) END_OF_FILE if test 2056 -ne `wc -c <'go-files/p39.s'`; then echo shar: \"'go-files/p39.s'\" unpacked with wrong size! fi # end of 'go-files/p39.s' fi if test -f 'go-files/pos01.s' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'go-files/pos01.s'\" else echo shar: Extracting \"'go-files/pos01.s'\" \(1540 characters\) sed "s/^X//" >'go-files/pos01.s' <<'END_OF_FILE' X X( X; XGaMe[1] XSiZe[19] XVieW[] XBlackSpec[1] XWhiteSpec[1] XFileFormat[1] XAddBlack[cc][cd][de][ef][dg][dh][ch][di][dj][cj][ck][bk][cl][dm][en][fm][fl][fk] X[eo][ep][dq][dr][ic][id][qd][nj][mj][mk][jk][jl][ll][lm][km][kn][jo][jp][jq][kp] X[lp][lo][mo][mn][po][no][oo][qo][pp][qq][qr][om] XAddWhite[bb][cb][dc][gc][hc][cg][bh][ci][bj][ak][bl][cm][bn][co][bq][cr][fn][fo] X[fp][fq][gl][gm][il][jm][jn][kl][kk][lk][ml][mm][nk][ol][pk][nn][on][pn][qn][qp] X[rp][rq][rr][kq][lq][nq][op][pq][el][em] XComment[pos01.s XWhite to play. Middle game problem. XThis is a game between two professionals. XPlayed during the "Oteai" tournament, 1988. XWhite: Sato pro 4th dan XBlack: Miyazaki pro 1 dan X XThe solution follows.] XPLayer[ XWhite] X; XWhite[ek] XComment[White one at 'e9' is the key play, and this is how the game proceeded, Xwith White 'e9' through White five at 'p17'.] X( X; XBlack[fj] X; XWhite[jj] X( X; XBlack[pi] X; XWhite[oc] X) X( X; XBlack[ik] XComment[If Black continues with Black four at 'j9', he will lose the three Xstones, or the group of four on the left.] X; XWhite[hk] X; XBlack[ij] X; XWhite[ii] X; XBlack[hj] X; XWhite[gj] X; XBlack[hi] X; XWhite[fi] XLetter[dl][dn] XComment[An embarrassment for Black. Note the cutting points at 'a' and 'b'.] X) X) X( X; XBlack[jj] XComment[If Black chooses to play Black 2 at 'k10' instead of Black at 'f10', XWhite will capture the three stones on the left.] X; XWhite[fj] X; XBlack[gk] X; XWhite[hj] X) X( X; XBlack[hk] XComment[Lastly, Black may try Black two at 'h9', but no go.] X; XWhite[ik] X; XBlack[jj] X; XWhite[fj] X; XBlack[gk] X; XWhite[hj] X) X) END_OF_FILE if test 1540 -ne `wc -c <'go-files/pos01.s'`; then echo shar: \"'go-files/pos01.s'\" unpacked with wrong size! fi # end of 'go-files/pos01.s' fi if test -f 'go-files/pos03.s' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'go-files/pos03.s'\" else echo shar: Extracting \"'go-files/pos03.s'\" \(1690 characters\) sed "s/^X//" >'go-files/pos03.s' <<'END_OF_FILE' X X( X; XGaMe[1] XSiZe[19] XVieW[] XBlackSpec[1] XWhiteSpec[1] XAddWhite[dc][md][mc][oc][co][do][dn][cm][bn][ep][rr][qq][qo][pp][op] XAddBlack[ce][bo][bq][cp][ap][nd][pe][qd][qk][np][oq][pq][or][rq][qr][ps][mq] XFileFormat[1] XComment[pos03.s XWhite to play. X XHint: Which should White develop first, the top or the side? X XThe solution follows.] XPLayer[] XGameName[Position3] X( X; XWhite[ed] XComment[White one at 'e16' is very bad. After the exchange with Black two at X'c12', White has failed to fully develop his position.] X; XBlack[ch] X) X( X; XWhite[cg] XComment[White one at 'c13' is a very aggressive play. Please compare the Xfollowing results with the previous diagram.] X( X; XBlack[dg] X; XWhite[dh] X; XBlack[eg] X; XWhite[cf] X; XBlack[ed] X; XWhite[ec] X; XBlack[fd] X; XWhite[fc] X; XBlack[df] X; XWhite[di] X; XBlack[gd] X; XWhite[hc] X; XBlack[ie] XComment[In this sequence, White's upper moyo has be forced into a small amount Xof territory. It is not yet secure, and it has little potential for growth. XThe Black stones are also relatively secure at this point.] X) X( X; XBlack[ee] XComment[] X; XWhite[fd] X; XBlack[dg] X; XWhite[dh] X; XBlack[eg] X; XWhite[cf] X; XBlack[df] XComment[This is slightly better than the previous sequence. The Black stones Xare settled and have little to fear at this point.] X) X) X( X; XWhite[dg] XComment[White one at 'd13' is the most dynamic move. A very strong player Xwould appreciate White's stone at White 'n16'. The potential development for XWhite's stone at 'n16' is not made use of in the previous examples. ] XAddEmpty[ee] X; XBlack[ef] X; XWhite[fd] XComment[This simple sequence leaves White's upper moyo potential to grow. The XBlack stones are floating and are not settled yet, either.] X) X) END_OF_FILE if test 1690 -ne `wc -c <'go-files/pos03.s'`; then echo shar: \"'go-files/pos03.s'\" unpacked with wrong size! fi # end of 'go-files/pos03.s' fi if test -f 'go-files/pos05.s' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'go-files/pos05.s'\" else echo shar: Extracting \"'go-files/pos05.s'\" \(1406 characters\) sed "s/^X//" >'go-files/pos05.s' <<'END_OF_FILE' X X( X; XGaMe[1] XSiZe[19] XVieW[] XBlackSpec[1] XWhiteSpec[1] XAddWhite[dc][cd][ce][df][dg][cj][dq][jd][jb][ld][le][kf][nc][ji][ra][rb][rc][qc] X[qd][re][rf][rg][qf][pg][ph][oh][mh][qk][pk][pl][rl][jl][kl][ll][lm][im][in][io] X[ho][go][hn][gm][jp][kp][kq][iq][kn][lo][rn][qo][po][pp][so][rp][rr] XAddBlack[de][cf][co][do][fo][gp][hp][fq][hr][fn][gn][hm][hl][hk][il][ij][jk][kk] X[lk][mk][lp][lq][mo][no][oo][nn][oq][pq][qq][rq][qp][qr][om][pm][qm][qn][pn][ql] X[rm][sm][kg][lh][lf][mg][me][nf][og][lc][pf][pe][pd][pc][pb][qb][qe][rd][qg][qh] X[rh][jn] XFileFormat[1] XComment[pos05.s XBlack to play. X X>From the Kisei sen X XWhite: Fukube 1Dan XBlack: Okumura 1Dan] XGameName[Position5] X( X; XBlack[rk] XComment[Black one at 's9' fails.] X; XWhite[rj] X; XBlack[sl] X; XWhite[qi] XComment[There is little Black can do at this point. White captures the three XBlack stones and escapes.] X) X( X; XBlack[sl] XComment[Black one at 't8' also fails.] X; XWhite[rj] XComment[White escapes.] X) X( X; XBlack[sk] XComment[Black one at 't9' is the correct play.] X( X; XWhite[rk] X; XBlack[sl] XComment[White is unable to capture the three Black stones.] X) X( X; XWhite[sj] XComment[White two at 't10' still does not prevent Black from connecting the Xthree Black stones.] X; XBlack[rj] X; XWhite[rk] X; XBlack[sl] X; XAddEmpty[rj][sj][rk][sl] XComment[After Black's tesuji at 't9', what happens to the eight White stones Xthat are now cut off? X XNo solution follows.] X) X) X) END_OF_FILE if test 1406 -ne `wc -c <'go-files/pos05.s'`; then echo shar: \"'go-files/pos05.s'\" unpacked with wrong size! fi # end of 'go-files/pos05.s' fi if test -f 'go-files/pos07.s' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'go-files/pos07.s'\" else echo shar: Extracting \"'go-files/pos07.s'\" \(1136 characters\) sed "s/^X//" >'go-files/pos07.s' <<'END_OF_FILE' X X( X; XGaMe[1] XSiZe[19] XVieW[] XBlackSpec[1] XWhiteSpec[1] XAddBlack[dc][fc][cd][ce][gf][dj][lb][lc][ld][mc][nc][oc][pd][qd][rd][rc][sb][rf] X[qg][rh][ri][pp] XAddWhite[de][df][cf][kc][ma][mb][nb][ob][pc][qc][qb][rb][od][oe][pf][qf][ph][qh] X[qj][rj][oj][dp] XFileFormat[1] XComment[pos07.s XBlack to play. X>From the Tengen sen X XWhite: Takemiya 9 Dan, Honinbo XBlack: Ohira 9 Dan X XSolution follows] XGameName[Position7] X; XBlack[qe] XComment[Back to basics. Black must look to his own group and play Black one Xat 'r15'. There is no time to take advantage of the three White stones in the Xupper left corner. If White plays at 't15' before Black, the result is 'seki'. X Is seki obvious?] X; XWhite[ei] XComment[White plays 'e11' to escape with his three stones. White must also Xconsider Black's large territorial framework, and the White group on the Xopposite side of the board. Therefore, in this position, White must quickly Xgain influence in the center to watch over the upper section of the board. XThe following sequence is how the game proceeded. ] X; XBlack[ej] X; XWhite[fi] X; XBlack[di] X; XWhite[dh] X; XBlack[ch] X; XWhite[eg] X; XBlack[cn] X) END_OF_FILE if test 1136 -ne `wc -c <'go-files/pos07.s'`; then echo shar: \"'go-files/pos07.s'\" unpacked with wrong size! fi # end of 'go-files/pos07.s' fi if test -f 'go-files/pos08.s' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'go-files/pos08.s'\" else echo shar: Extracting \"'go-files/pos08.s'\" \(1309 characters\) sed "s/^X//" >'go-files/pos08.s' <<'END_OF_FILE' X X( X; XGaMe[1] XSiZe[19] XVieW[] XBlackSpec[1] XWhiteSpec[1] XAddWhite[dc][de][ic][ie][cj][oc][mc][qj][pn] XFileFormat[1] XAddBlack[kc][ld][nd][pc][qd][pe][cp][fq][pq][np] XComment[pos08.s XWhite to play. X XHint: How to proceed without being buried. X XSolution follows.] XPLayer[] XGameName[Position8] X( X; XWhite[cm] XComment[If White plays with White one at 'c7', Black will play a shoulder move Xat Black 'd11',leaving Black with strength and influence toward the center, Xand at the same time greatly reducing White's territorial framework. ] X; XBlack[di] X; XWhite[dj] X; XBlack[ei] X; XWhite[bh] X; XBlack[cg] X; XWhite[ch] X; XBlack[ef] X) X( X; XWhite[jp] XComment[White one at 'k4' doesn't help either. After Black at 'o6', White Xplays 'p10' to protect the weakness at 'r8', and to gain some influence in the Xcenter.] X; XBlack[nn] X; XWhite[oj] XLetter[ql] X; XBlack[di] XComment[Again, Black will play the shoulder move at 'd11', and the Xconsequences are the same as before, except that the White stone at 'c10' is Xnow one stone behind.] X) X( X; XWhite[dh] XComment[White one at 'd12' is better, but not to the point.] X) X( X; XWhite[ej] XComment[White one at 'e10' is the best choice. White has strengthened his Xterritorial framework in the upper left, threatens an invasion at 'k4', and Xlater gives White a strong extension at 'c6'.] X) X) END_OF_FILE if test 1309 -ne `wc -c <'go-files/pos08.s'`; then echo shar: \"'go-files/pos08.s'\" unpacked with wrong size! fi # end of 'go-files/pos08.s' fi if test -f 'go-files/pos14.s' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'go-files/pos14.s'\" else echo shar: Extracting \"'go-files/pos14.s'\" \(1565 characters\) sed "s/^X//" >'go-files/pos14.s' <<'END_OF_FILE' X X( X; XGaMe[1] XSiZe[19] XVieW[] XBlackSpec[1] XWhiteSpec[1] XAddBlack[bc][cc][dd][ce][ee][ef][qd][od][pq][op][pn][qn] XAddWhite[cb][dc][ec][ed][fe][mc][qf][qi][qo][cp][eq][ci] XFileFormat[1] XComment[pos14.s XBlack to play. X XSolution follows.] XGameName[14position] X( X; XBlack[oc] XLetter[ob][pc] XComment[Black should not be afraid of the corner weaknesses at 'p18' or 'q17'. X Black one at 'p17' gives White 'sente' to build his territory in the following Xdiagram.] X; XWhite[ff] X; XBlack[eg] X; XWhite[jd] XComment[This result is very good for White.] X) X( X; XBlack[ge] XComment[Black one at 'g15' is a very strong tesuji to limit White's potential Xterritory. ] X( X; XWhite[ff] XComment[White's response at 'f14' is an overplay. Black can now cut at 'f16' Xdealing a severe blow to White's territory.] X; XBlack[fd] X; XWhite[gd] X; XBlack[fc] X; XWhite[gc] X; XBlack[fb] X; XWhite[eb] X; XBlack[ea] X; XWhite[db] X; XBlack[gb] X; XWhite[hb] X; XBlack[hc] X; XWhite[hd] X; XBlack[fg] XComment[With this exchange, two things will happen: X1\) White will lose the corner, and X2\) White will lose either the two White stones in 'atari' or the three White Xstones at 'g16', 'g17' and 'h16'.] XMark[gc][gd][hd][fe][ff][cb][db][eb][ec][ed][ec][dc] X) X( X; XWhite[gc] XComment[White's best move is to play at 'g17'.] X; XBlack[ff] XComment[After Black 'f14', Black has successfully reduced White's territory, Xwhile gathering additional strength on the outside. Later Black will be able Xto coordinate intrusions into White's territorial framework on the left and Xupper sections of the board with his stone at 'f14'.] X) X) X) END_OF_FILE if test 1565 -ne `wc -c <'go-files/pos14.s'`; then echo shar: \"'go-files/pos14.s'\" unpacked with wrong size! fi # end of 'go-files/pos14.s' fi if test -f 'go-files/pos17.s' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'go-files/pos17.s'\" else echo shar: Extracting \"'go-files/pos17.s'\" \(2009 characters\) sed "s/^X//" >'go-files/pos17.s' <<'END_OF_FILE' X X( X; XGaMe[1] XSiZe[19] XVieW[] XBlackSpec[1] XWhiteSpec[1] XAddBlack[dc][ed][qd][pe][nd][qj][qm][oq][eq][do][cl][ci][bh] XAddWhite[ch][dh][ei][ce][ic][mc][md][ne][oc][qp][op][nq][lq] XFileFormat[1] XComment[pos17.s XBlack to play. X XSolution follows.] XGameName[17positiom] X; XAddEmpty[om] X( X; XBlack[om] XComment[Black would like to increase the size of his territorial influence Xwith Black one at 'p7'.] X; XWhite[pi] XComment[However, a White shoulder play at White 'q11' would severely limit any XBlack expansion.] X; XBlack[pj] X; XWhite[oi] X; XBlack[rh] X; XWhite[bg] XComment[With only two stones White has effectively ruined Black's potential Xon the right side of the board.] X) X( X; XBlack[iq] XComment[Besides developing the right side of the board, it would also be Xadvantageous for Black to extend from the lower left corner. Expanding from Xthe left corner with Black one at 'j3' would be the natural strategy for Black. X However, expanding from the left corner with Black 'j3' first does little to Xdevelop the potential right side of the board for Black. Black has a more Xdynamic play if he wishes to develop the lower left corner.] X) X( X; XBlack[np] XComment[Black one at 'o4' would be the most dynamic strategy for Black. This Xstrategy takes advantage of the weaknesses in the White corner, by using the X'aji' from the Black stone at 'p3'.] XMark[oq] X( X; XWhite[pq] XComment[If White plays atari with 'q3', Black will have enough 'aji' and X'sente' to further develop the right side.] X; XBlack[oo] X; XWhite[or] X; XBlack[nf] X; XWhite[mf] X; XBlack[oe] X; XWhite[me] X; XBlack[ng] XComment[With this exchange Black has successfully pushed White on both sides Xof the board to develop the right side. Any White invasion at the point would Xbe foolhardy.] X) X( X; XWhite[oo] XComment[Probably White's best counter response would be to simply extend with XWhite 'p5'. However, this will allow Black to fully develop the lower left Xcorner.] X; XBlack[kq] X; XWhite[mq] X; XBlack[kp] XComment[Black should be pleased with this exchange.] X) X) X) END_OF_FILE if test 2009 -ne `wc -c <'go-files/pos17.s'`; then echo shar: \"'go-files/pos17.s'\" unpacked with wrong size! fi # end of 'go-files/pos17.s' fi if test -f 'go-files/pos19.s' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'go-files/pos19.s'\" else echo shar: Extracting \"'go-files/pos19.s'\" \(1958 characters\) sed "s/^X//" >'go-files/pos19.s' <<'END_OF_FILE' X X( X; XGaMe[1] XSiZe[19] XVieW[] XBlackSpec[1] XWhiteSpec[1] XAddBlack[cc][cd][dd][ec][eb][gc][be][bf][df][qd][rc][pe][oe][ne][fo][gn][gp][hp][fq][fr][jp][kp][lp][ko][kq][jm][km][ln][mn][nm][nq] XAddWhite[db][dc][ed][fd][de][ce][cf][cg][qc][pc][od][nd][md][pp][pn][nn][mo][lo][mp][kn][jn][jo][go][fp][ep][dp][eq][dm][qj] XComment[pos19.s XWhite to play. Easy X XSolution follows.] XFileFormat[1] XGameName[Position #19] X; X( X; XWhite[ic] XComment[Ordinarily White one at 'j17' would be a good move. However, White has a weakness left behind for Black to exploit, as illustrated in the following sequence.] XName[Incorrect] X; XBlack[on] X; XWhite[no] X; XBlack[pm] X; XWhite[oo] X; XBlack[om] X; XWhite[qn] X; XBlack[qm] XComment[This exchange would be intolerable for White to endure. Black's newly created wall is much too powerful. White is left with a very weak and isolated stone at 'r10'. Also, Black's strength will later allow Black to invade White's position with 'l17'.] X) X( X; XWhite[no] XComment[If White were to protect his weakness first, with 'o5', Black will have time to play a capping move at 'p10'.] XName[Protect: Incorrect] X; XBlack[oj] XComment[At this point the capping move , Black 'p10', would be Black's strongest play. This move gives cohesion with Black's strength on the lower side of the board and the Black stones at the upper right. This is a very important move for Black.] X; XAddEmpty[oj] X; XBlack[qh] XComment[It would be a great mistake for Black to play 'r12' first.] X; XWhite[oj] XComment[White would then play 'p10' which is a severe intrusion into Black's potential.] X) X( X; XWhite[qf] XComment[White at 'r14' is not enough of a threat.] XName[Not a threat] X; XBlack[oj] XComment[Black will still play the strong capping play and create his large wall. X XA Go proverb says "The opponents key play is also my own key play".] X) X( X; XWhite[oj] XComment[Obviously the ONLY move left for White is to play at 'p10', thus destroying Black's potential.] XName[Correct] X) X) END_OF_FILE if test 1958 -ne `wc -c <'go-files/pos19.s'`; then echo shar: \"'go-files/pos19.s'\" unpacked with wrong size! fi # end of 'go-files/pos19.s' fi if test -f 'go-files/t01.s' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'go-files/t01.s'\" else echo shar: Extracting \"'go-files/t01.s'\" \(1326 characters\) sed "s/^X//" >'go-files/t01.s' <<'END_OF_FILE' X X( X; XGaMe[1] XSiZe[19] XVieW[] XBlackSpec[1] XWhiteSpec[1] XAddBlack[bq][cq][dq][er][fr] XAddWhite[bp][cp][dp][eq][fq][gr][hq][cn] XComment[t01.s XWhite to play. This is one of the most common occurring corner Xpositions, and it is usually the most misplayed, this includes many strong X'dan' level players as well.] XPLayer[ XWhite] XFileFormat[1] XAddEmpty[bb][cb][db][eb][fb][gc][fc][ec][dc][cc][bc][bd][cd][dd][ec][fc][fd][gd] X[hd][gd][ge][fe][ee][de][dd][ed] X( X; XWhite[fs] X; XBlack[ds] XComment[After the exchange White 1 at 'f1' and Black 2 at 'd1', many leave Xthis position at this point thinking the Black group is alive.] X; XWhite[aq] XComment[However, the White 'hane' with White 3 at 'a3', will end with the XBlack group dead. This move is the key play. Sometimes you will see White 3 Xat 'a' or 'b' instead, but these variations will not work. ] XLetter[br][bs] X; XBlack[ar] X; XWhite[bs] X( X; XBlack[cr] X) X( X; XBlack[cs] XComment[Black can try Black 6 at 'c1', but with the same result.] X; XWhite[gs] X; XBlack[br] X; XWhite[dr] X; XBlack[cr] X; XWhite[es] X) X( X; XBlack[br] XComment[Black 6 at 'b2' will also end in Black's loss.] X; XWhite[gs] X; XBlack[cs] X; XWhite[dr] X) X) X( X; XAddEmpty[fq][hq][fr] XAddWhite[ep] XAddBlack[ds] XPLayer[ XWhite] X; XWhite[fr] XComment[This is the same position as the other diagram. Black is dead if XWhite plays.] X) X) END_OF_FILE if test 1326 -ne `wc -c <'go-files/t01.s'`; then echo shar: \"'go-files/t01.s'\" unpacked with wrong size! fi # end of 'go-files/t01.s' fi if test -f 'go-files/t02.s' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'go-files/t02.s'\" else echo shar: Extracting \"'go-files/t02.s'\" \(1556 characters\) sed "s/^X//" >'go-files/t02.s' <<'END_OF_FILE' X X( X; XGaMe[1] XSiZe[19] XVieW[] XBlackSpec[1] XWhiteSpec[1] XAddBlack[dr][dq][cp][bo][cn][bm][am][gq][gp][gn][io][jo][lo] XAddWhite[bl][ck][cm][dm][fm][dp][ep][eq][er][iq][jq][en] XFileFormat[1] XComment[t02.s XWhat move do you envision would connect the two White stones with the XWhite main group?] XPLayer[] XGameName[tesuji2] X( X; XAddBlack[bq] XComment[] XPLayer[] X; XWhite[ds] X; XBlack[cs] X; XWhite[es] X; XBlack[cr] X; XWhite[hr] XComment[It would be nice if this sequence was possible. Obviously a key White Xstone at 'e1' with 'sente' would do the trick. ] X) X( X; XWhite[ds] XComment[White one at 'd1' fails, ending with Black twelve at 'j2'] X; XBlack[cr] X; XWhite[cs] X; XBlack[br] X; XWhite[hs] X; XBlack[hr] X; XWhite[gs] X; XBlack[is] X; XWhite[es] X; XBlack[gr] X; XWhite[fs] X; XBlack[ir] X) X( X; XWhite[cr] XComment[This also fails.] X; XBlack[cq] X; XWhite[ds] X; XBlack[br] X; XWhite[bs] X; XBlack[ar] X) X( X; XWhite[gr] XComment[Lastly this does not work either.] X; XBlack[hr] X; XWhite[fq] X; XBlack[hq] X; XWhite[ds] X; XBlack[br] X; XWhite[hs] X; XBlack[is] X; XWhite[gs] X; XBlack[ir] X) X( X; XWhite[br] XComment[White one at 'b2' is the correct tesuji.] X( X; XBlack[cq] X; XWhite[ds] X; XBlack[cs] X; XWhite[es] X; XBlack[cr] X; XWhite[hr] X) X( X; XBlack[cr] XComment[Black two at 'c2' also cannot prevent White from connecting the two XWhite stones.] X; XWhite[cs] X; XBlack[ds] X; XWhite[es] X; XBlack[bs] X; XWhite[hr] X) X( X; XBlack[bq] XComment[Black two at 'b3' would be an overplay resulting with the loss of many Xpoints in the corner, and a White monkey jump at 'h1' ] X; XWhite[cr] X; XBlack[cq] X; XWhite[ds] X; XBlack[aq] X; XWhite[hs] X) X) X) END_OF_FILE if test 1556 -ne `wc -c <'go-files/t02.s'`; then echo shar: \"'go-files/t02.s'\" unpacked with wrong size! fi # end of 'go-files/t02.s' fi if test -f 'go-files/t05.s' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'go-files/t05.s'\" else echo shar: Extracting \"'go-files/t05.s'\" \(1370 characters\) sed "s/^X//" >'go-files/t05.s' <<'END_OF_FILE' X X( X; XGaMe[1] XSiZe[19] XVieW[] XBlackSpec[1] XWhiteSpec[1] XAddWhite[dr][dq][cp][eq][fq][gq][dn][ck] XAddBlack[er][fr][gr][hq][iq][lp] XFileFormat[1] XGameName[tesuji5] XComment[t05.s XBlack to play.] X; XBlack[ds] XComment[This example illustrates one of the most common mistakes seen in many Xgames. Black has just played 'yose' \(end game move\) with Black one at 'd1', Xand most players would simply respond by playing the following: White 'c1', XBlack 'e1', and White 'c2'. But this sequence does not take advantage of XBlack's weakness at 'a'. Look again, and how should you play?] XLetter[hr] X( X; XWhite[cs] X; XBlack[es] X; XWhite[cr] X) X( X; XWhite[es] XComment[White two at 'e1' is the correct tesuji, ending with White four at X'c2'.] X( X; XBlack[fs] X; XWhite[cr] XComment[Compare this diagram with the usual sequence White 'c1', Black 'e1', Xand White 'c2'. Even though White sacrificed a stone at White 'e1', Black must Xeventually add another stone at 'a', which balances out with White's captured Xstone. The usual sequence is settled, but this sequence leaves later Xpossibilities for White to capture Black's original move at 'd1'. Moral: Xdon't fall into usual habits.] XLetter[hr] X) X( X; XBlack[cs] XComment[Black three at 'c1' would lead to the capture of Black's stones, Xending with White eight at 'c3'.] X; XWhite[bs] X; XBlack[cr] X; XWhite[br] X; XBlack[fs] X; XWhite[cq] X) X) X) END_OF_FILE if test 1370 -ne `wc -c <'go-files/t05.s'`; then echo shar: \"'go-files/t05.s'\" unpacked with wrong size! fi # end of 'go-files/t05.s' fi if test -f 'go-files/t07.s' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'go-files/t07.s'\" else echo shar: Extracting \"'go-files/t07.s'\" \(1284 characters\) sed "s/^X//" >'go-files/t07.s' <<'END_OF_FILE' X X( X; XGaMe[1] XSiZe[19] XVieW[] XBlackSpec[1] XWhiteSpec[1] XAddWhite[dd][df][qd][pd][od][nd][oc][pj][nb] XAddBlack[fc][mc][nc][ob][pb][pc][qc] XComment[t07.s XWhite to play.] XFileFormat[1] XPLayer[ XWhite] X( X; XWhite[mb] XComment[White one at 'n18' is the worst possible play.] X; XBlack[lc] X; XWhite[lb] X; XBlack[kc] X; XWhite[kb] X; XBlack[jc] X; XWhite[jb] X; XBlack[ic] X; XWhite[ib] X; XBlack[hb] X; XWhite[hc] X; XBlack[gb] X) X( X; XWhite[md] XComment[If you choose this play, then you may be playing 2nd dan or less. This Xmove is only a little better than White one at 'n18', in the eyes of a sixth Xdan or higher.] X; XBlack[lc] X; XWhite[ld] X; XBlack[kc] X; XWhite[je] X; XBlack[id] XComment[The ending result may seam reasonable to many, but it should not be Xacceptable if you are a very strong player.] X) X( X; XWhite[lc] XComment[White one at 'm17' is the strongest tesuji.] X; XBlack[mb] X; XWhite[md] X; XBlack[ld] X; XWhite[lb] X; XBlack[na] X; XWhite[jc] XComment[The result here is that White has separated all the Black groups, and Xhas maintained all the outside influence. Please compare this result with the Xprevious White move \(White one at 'n16'\). If you understand the difference Xyou have hopes of becoming a very strong go player. If the players were both Xvery strong, the game would be over at this point.] X) X) END_OF_FILE if test 1284 -ne `wc -c <'go-files/t07.s'`; then echo shar: \"'go-files/t07.s'\" unpacked with wrong size! fi # end of 'go-files/t07.s' fi if test -f 'go-files/t08.s' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'go-files/t08.s'\" else echo shar: Extracting \"'go-files/t08.s'\" \(1444 characters\) sed "s/^X//" >'go-files/t08.s' <<'END_OF_FILE' X X( X; XGaMe[1] XSiZe[19] XVieW[] XBlackSpec[1] XWhiteSpec[1] XAddWhite[cb][cc][dc][ed][fd][de][dg][ch][bh] XAddBlack[db][eb][ec][fc][gd][hd][id][kc][mc] XFileFormat[1] XComment[t08.s XThis problem represents a very common error made during the end game Xby many players. How should White play this position?] XGameName[tesuji8] X( X; XWhite[da] XComment[This is the usual play. If White plays this sequence, he will Xpossibly lose 'sente', or he will not have reduced Black's territory Xsufficiently. ] X; XBlack[ea] X; XWhite[ca] XComment[Reference diagram. X XAt this juncture the position is settled and there is no 'aji'.] X) X( X; XWhite[ca] XComment[White one at 'c19' is the correct tesuji. If Black responds, White Xwill still have sente, and if Black does not respond, White will be able to Xexploit Blacks position with the following sequence. ] X( X; XWhite[ea] X( X; XBlack[gb] XComment[Black must play this move at 'g18'.] X; XWhite[da] X; XBlack[fa] XComment[Compare this result with the usual sequence starting with White one at X'd19'. See 'Reference diagram'] X) X( X; XBlack[fa] XComment[If Black plays 'f19', the result will end in disaster for Black.] X; XWhite[gc] X; XBlack[da] X; XWhite[gb] XComment[Black has lost a good portion of his territory. ] X) X) X( X; XBlack[da] XComment[Black loses sente with this sequence.] X) X) X( X; XBlack[ca] XComment[Obviously White would lose a great opportunity if Black were to play Xat 'c19' first.] X; XWhite[ba] X; XBlack[da] X; XWhite[bb] X) X) END_OF_FILE if test 1444 -ne `wc -c <'go-files/t08.s'`; then echo shar: \"'go-files/t08.s'\" unpacked with wrong size! fi # end of 'go-files/t08.s' fi if test -f 'go-files/t14.s' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'go-files/t14.s'\" else echo shar: Extracting \"'go-files/t14.s'\" \(1081 characters\) sed "s/^X//" >'go-files/t14.s' <<'END_OF_FILE' X X( X; XGaMe[1] XSiZe[19] XVieW[] XBlackSpec[1] XWhiteSpec[1] XAddBlack[rb][qb][qc][pd][pe][pf][nc][qj][pl] XAddWhite[rc][sd][qd][qe][re][sb][qh] XAddEmpty[kd] XFileFormat[1] XComment[t14.s XBlack to play. X XSolution follows.] XGameName[tesuji14] X; XBlack[rg] XComment[Black one at 's13' is the correct tesuji. The main objective is to Xseparate the White stone at 'r12' if White tries to live.] X( X; XWhite[qg] X; XBlack[rh] X; XWhite[qf] X; XBlack[qi] X; XWhite[oh] XAddEmpty[] XComment[If White plays this sequence, he will be in for a great adventure Xtrying to make eyes while Black builds influence and territory, while attacking Xthe White group.] X) X( X; XWhite[rh] X; XBlack[qg] X( X; XWhite[ph] X; XBlack[sg] XComment[This is the worst sequence for White.] X) X( X; XWhite[sf] XComment[Can White still live if he plays White four at 't14'?] X) X) X( X; XWhite[rf] XComment[White two at 's14' lives, and Black succeeds in his original Xobjective.] X( X; XBlack[qg] X; XWhite[sf] XComment[White is alive.] X) X( X; XBlack[sf] XComment[Black three at 't14', instead of 'r13', is too greedy. ] X; XWhite[qg] X; XBlack[rh] X; XWhite[ri] X) X) X) END_OF_FILE if test 1081 -ne `wc -c <'go-files/t14.s'`; then echo shar: \"'go-files/t14.s'\" unpacked with wrong size! fi # end of 'go-files/t14.s' fi if test -f 'go-files/t15.s' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'go-files/t15.s'\" else echo shar: Extracting \"'go-files/t15.s'\" \(1670 characters\) sed "s/^X//" >'go-files/t15.s' <<'END_OF_FILE' X( X; XGaMe[1] XSiZe[19] XVieW[] XBlackSpec[1] XWhiteSpec[1] XAddBlack[qb][pb][oc][od][oe][qd][pg][qg][rg][oh][pi][qh][ri][sh][qr][ps][or][oq] X[pp][qn][qo][ro][sn][pm][kb][fb][gb][dd][ee][gd][hd][id][ic][gf][hf][je][ld][le] X[kg][kh][ki][kj][kk][jk][hj][gi][km][jo][jp][lp][ho][go][gp][gq][hq][iq][hr][fr] X[er][dr][bq][bo][co][dn][cm][cl][ck][cj][bh][bi][an][am] XAddWhite[pa][nb][ob][jc][kc][lc][mc][nc][me][lh][oi][oj][mj][qi][qj][rj][mm][om] X[pl][qm][rl][rn][mo][mp][mq][nr][ns][os][jq][jr][ir][ip][kl][jl][il][hm][hn][fn] X[en][fp][fq][dq][cq][cr][cp][bp][ap][ao][bn][dl][dk][dj][jj][ci][ch][ei][bg][cf] X[cd][cc][eb][ec][ib][hb][hc][fg][gg][hh][ig] XFileFormat[1] XComment[t15.s XProblems of any type are sometimes easier when presented in isolation. XI found this game for those who asked to see a full scale game tesuji. XWhite is Yamashiro 9th Dan and Black is Otake 9th Dan. X XWhite to play. X XSolution follows.] XPLayer[] XGameName[15tesuji] X; XWhite[ai] XComment[White one at 'a11' is the correct tesuji.] X( X; XBlack[bj] XComment[Black two at 'b10' is a losing play.] X; XWhite[bm] X; XBlack[al] X; XWhite[bl] X; XBlack[ak] X; XWhite[do] X; XBlack[cn] X; XWhite[ah] XComment[After this exchange the Black group is dead.] X) X( X; XBlack[aj] XComment[Black two at 'a10' results in ko.] X; XWhite[ak] X; XBlack[bk] XComment[] X) X( X; XBlack[bm] XComment[Black two at 'b7' gives Black life, but then White easily captures two XBlack stones.] X; XWhite[bj] X; XBlack[bk] X; XWhite[ah] X) X( X; XBlack[ah] XComment[Black two at 'a12' is the move that was played, and this move also Xleads to a ko.] X; XWhite[bm] X; XBlack[al] X; XWhite[do] X; XBlack[cn] X; XWhite[ak] X; XBlack[bl] X; XWhite[bj] X; XBlack[aj] XComment[The result is a ko.] X) X) END_OF_FILE if test 1670 -ne `wc -c <'go-files/t15.s'`; then echo shar: \"'go-files/t15.s'\" unpacked with wrong size! fi # end of 'go-files/t15.s' fi if test -f 'go-files/t16.s' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'go-files/t16.s'\" else echo shar: Extracting \"'go-files/t16.s'\" \(1933 characters\) sed "s/^X//" >'go-files/t16.s' <<'END_OF_FILE' X X( X; XGaMe[1] XSiZe[19] XVieW[] XBlackSpec[1] XWhiteSpec[1] XAddWhite[cb][cc][cf][ec][ed][fd][gd][kc][ke][kg] XAddBlack[db][eb][fc][gc][id][if] XFileFormat[1] XGameName[16tesuji] X; XBlack[jb] XAddWhite[pd][nd] XAddBlack[qf] XComment[t16.s XBlack has just played Black one at 'k18', a common move made by Dan level players. In this case the idea is to protect the Black group and threaten the White group. The following sequence is usually expected...] X; XWhite[jc] X; XBlack[ic] X; XWhite[kb] X; XBlack[ib] XComment[If White plays this sequence, then Black will have accomplished his Xgoal.] X; XAddEmpty[ic][ib][jc][kb] XComment[How then should White play? X XSolution follows.] X; XWhite[jc] XKO[] XComment[White at 'k17' is the correct first play, but White's next move provokes thought...] X( X; XBlack[ic] XComment[Please see if you can find the next move.] X; XWhite[hb] XComment[White at 'h18' is the second tesuji.] X( X; XBlack[hc] X; XWhite[ib] X; XBlack[gb] X; XWhite[kb] XComment[After this exchange, White has successfully reduced Black's eye space Xand protected his own territory with one Black stone captured to boot!] X) X( X; XBlack[kb] XComment[Black at 'l18', instead of Black at 'h17', still loses.] X; XWhite[ib] X; XBlack[lc] X; XWhite[ld] XComment[White can capture either side. Black now has two weakness at 'h17' Xand 'm18' for White to exploit. ] XLetter[hc][lb] X) X( X; XBlack[ib] XComment[Black at 'j18' is also a very poor choice for Black.] X; XWhite[hc] XComment[After the White play at 'h17', the Black stones are separated into two Xeyeless groups. The Black group with a lead to the outside is in for the Xadventure of his lifetime. ] X) X) X( X; XBlack[ib] XComment[Black at 'j18', instead of Black a 'j17', is worse than before. With Xthis move the Black stones will be cut off from the outside.] X; XWhite[ic] X; XBlack[hc] X; XWhite[hd] XComment[White's influence on the outside is too great. Don't ever let this Xhappen if you are playing Black in this position.] X) X) END_OF_FILE if test 1933 -ne `wc -c <'go-files/t16.s'`; then echo shar: \"'go-files/t16.s'\" unpacked with wrong size! fi # end of 'go-files/t16.s' fi if test -f 'go-files/t19.s' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'go-files/t19.s'\" else echo shar: Extracting \"'go-files/t19.s'\" \(1245 characters\) sed "s/^X//" >'go-files/t19.s' <<'END_OF_FILE' X( X; XGaMe[1] XSiZe[19] XVieW[] XBlackSpec[1] XWhiteSpec[1] XAddBlack[cb][dc][ec][fc][gb][ic][cf][be][df][eh][eg][dk][bf] XAddWhite[bc][cc][dd][ed][fd][gc][ge][ff][fg][ce][lc] XFileFormat[1] XPLayer[] XGameName[19tesuji] XComment[t19.s XWhite to play. X XSolution follows.] XAddEmpty[oc] X( X; XWhite[hc] XComment[White one at 'h17' accomplishes very little, other than strengthening XBlack.] X; XBlack[hb] X; XWhite[id] X; XBlack[hd] X; XWhite[gd] X; XBlack[jd] X; XWhite[ie] X; XBlack[jc] XComment[Black connected on the bottom too easily.] X) X( X; XWhite[hb] XComment[White one at 'h18' in this case does nothing at all.] X; XBlack[hc] X; XWhite[gd] X; XBlack[fb] XComment[White gained nothing with this exchange.] X) X( X; XWhite[fb] XComment[White one at 'f18' is the correct tesuji. The object of White 'f18' Xis a sacrifice to separate the Black corner group from the outside.] X( X; XBlack[eb] X; XWhite[hb] X; XBlack[fa] X; XWhite[hc] XMark[ic] XComment[After White 'h17' has separated Black from the outside, White has a Xgood potential for territory on the upper board.] X) X( X; XBlack[hc] XComment[Black at 'h17', instead of 'e18', gives White the corner.] X; XWhite[db] X; XBlack[gd] X; XWhite[eb] XComment[After this sequence Black loses the corner and is left with a weak Xgroup on the outside.] X) X) X) END_OF_FILE if test 1245 -ne `wc -c <'go-files/t19.s'`; then echo shar: \"'go-files/t19.s'\" unpacked with wrong size! fi # end of 'go-files/t19.s' fi if test -f 'go-files/t21.s' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'go-files/t21.s'\" else echo shar: Extracting \"'go-files/t21.s'\" \(1323 characters\) sed "s/^X//" >'go-files/t21.s' <<'END_OF_FILE' X X( X; XGaMe[1] XSiZe[19] XVieW[] XBlackSpec[1] XWhiteSpec[1] XAddWhite[rd][re][qd][pd][pc][oc][lc][mc][md][kb][le][lf][mg][jg] XAddBlack[nc][od][ne][pe][qe][rf][qg][ic][jc][kc][kd][ld][me][fc] XFileFormat[1] XComment[t21.s XBlack to play. X XSolution follows.] XGameName[21tesuji] X; X( X; XBlack[mb] XComment[Black one at 'n18' fails.] X; XWhite[lb] XComment[After White two at 'm18', there is nothing Black can do. ] X; XBlack[nd] XComment[If Black connects at 'o16', White will capture the Black stone at X'n18', as seen in the next diagram.] X; XWhite[nb] XComment[The two White groups are safe.] X) X( X; XBlack[nb] XComment[Black one at 'o18' instead will also fail.] X; XWhite[nd] X; XBlack[oe] X; XWhite[mb] X; XBlack[ma] X; XWhite[lb] XComment[Black is captured.] X) X( X; XBlack[lb] XComment[Black one at 'm18' is the correct tesuji.] X( X; XWhite[mb] XComment[White two at 'n18' is the worst play for White.] X; XBlack[nb] X; XWhite[la] X; XBlack[nd] X; XWhite[jb] X; XBlack[ib] X; XWhite[ja] X; XBlack[na] XComment[Black at 'o19' is tesuji also. At this juncture White will lose Xeither the side group or the corner group.] X; XWhite[ma] X; XBlack[qb] XComment[White is dead in the corner.] X) X( X; XWhite[nb] XComment[White's only option is to play White two at 'o18' and to give up the Xside group to live in the corner.] X; XBlack[mb] XComment[The position ends in a 'snap back'.] X) X) X) END_OF_FILE if test 1323 -ne `wc -c <'go-files/t21.s'`; then echo shar: \"'go-files/t21.s'\" unpacked with wrong size! fi # end of 'go-files/t21.s' fi if test -f 'go-files/t24.s' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'go-files/t24.s'\" else echo shar: Extracting \"'go-files/t24.s'\" \(1907 characters\) sed "s/^X//" >'go-files/t24.s' <<'END_OF_FILE' X X( X; XGaMe[1] XSiZe[19] XVieW[] XBlackSpec[1] XWhiteSpec[1] XAddBlack[qd][qg][nc] XAddWhite[lc][jc] XPLayer[] XFileFormat[1] XGameName[Tesuji #24] X; XWhite[oc] XComment[t24.s XWhite has just played White one at 'p17'. XWhat is Black's best move to secure the single Black stone at 'o17'? X XSolution follows.] XMark[nc] X( X; XBlack[od] XComment[Black at 'p16' is the natural choice, but this play lets White escape Xeasily and allows White to have too much of the corner.] XName[Natural - Bad] X; XWhite[pc] X( X; XBlack[pd] XName[White's corner] X; XWhite[nb] X; XBlack[nd] X; XWhite[pb] XComment[This exchange leaves the Black stones too over concentrated while XWhite escapes with part of the corner.] X) X( X; XBlack[nd] XComment[If Black plays 'o16' instead of 'q16', White will take all of the Xcorner.] XName[White's Big Corner] X; XWhite[qc] X; XBlack[rd] X; XWhite[nb] X; XBlack[mb] X; XWhite[ob] X; XBlack[mc] X; XWhite[rc] XComment[This sequence is very good for White.] X) X) X( X; XBlack[nd] XComment[Black at 'o16' is not much better.] XName[Not Much Better] X; XWhite[nb] X; XBlack[mb] X; XWhite[pb] X; XBlack[na] X; XWhite[ob] X; XBlack[mc] X; XWhite[qc] XComment[This sequence gives White the corner too easily.] X) X( X; XBlack[ob] XComment[Black at 'p18' is the worst move for Black.] XName[Terrible] X; XWhite[pc] X; XBlack[nd] X; XWhite[pb] X; XBlack[nb] X; XWhite[oe] XComment[This exchange is not good for Black.] X) X( X; XBlack[pc] XComment[Black at 'q17' is the best tesuji for Black. This move will either Xgive Black the entire corner, or the outside with White having a minimal part Xof the corner.] XName[Best Answer] X( X; XWhite[ob] XName[Black's outside] X; XBlack[od] X; XWhite[nb] X; XBlack[nd] XComment[Black should be satisfied with this sequence. Black has taken the Xoutside without immediately surrendering the corner.] X) X( X; XWhite[od] XName[Solid Corner] X; XBlack[ob] X; XWhite[nd] X; XBlack[nb] X; XWhite[md] XComment[This sequence leaves Black with a solid corner position.] X) X) X) X END_OF_FILE if test 1907 -ne `wc -c <'go-files/t24.s'`; then echo shar: \"'go-files/t24.s'\" unpacked with wrong size! fi # end of 'go-files/t24.s' fi if test -f 'main.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'main.c'\" else echo shar: Extracting \"'main.c'\" \(1440 characters\) sed "s/^X//" >'main.c' <<'END_OF_FILE' X X/* X X "mgt" Copyright 1990 Shodan X All Rights Reserved. X Program by Greg Hale X XPermission to use, copy, modify, and distribute this software and its Xdocumentation for any purpose and without fee is hereby granted, Xprovided that this entire comment and copyright notice appear in all Xcopies and that both that copyright notice and this permission notice Xappear in supporting documentation. No representations are made about Xthe suitability of this software for any purpose. It is provided "as Xis" without express or implied warranty. X XPlease send copies of extensions to: X Xhale@scam.berkeley.edu X128.32.138.4 scam.berkeley.edu sting sting.Berkeley.EDU X XDonations for the 'From My Go Teacher' series may be sent to: X Shodan X P.O. Box 4456 X Berkeley, CA 94704 X (415) 849-9475 X X*/ X X#include X#include "mgt.h" X#include "ascii.h" X#include "var.h" X#include "file.h" X X X XFUNCTION main(argc,argv) Xint argc; Xchar **argv; X{ X#ifdef DEBUG X debug = fopen("dout","w"); X setbuffer(debug,0,0); X#endif DEBUG X /* setbuffer(stdin,0,0); */ X X io = &asciiInterface; X X input = stdin; X X while (argv++,--argc>0) { X switch(**argv) { X case '-': X switch ((*argv)[1]) { X } X default: X openfile(*argv); X } X } X X if (input == stdin || !input) { X fprintf(stderr, "Usage: mgt \n\n"); X fprintf(stderr, "See the README document for changes changes and other notices.\n\n"); X } else { X init(); X doit(); X myexit(); X } X return 0; X} X END_OF_FILE if test 1440 -ne `wc -c <'main.c'`; then echo shar: \"'main.c'\" unpacked with wrong size! fi # end of 'main.c' fi if test -f 'util.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'util.c'\" else echo shar: Extracting \"'util.c'\" \(1124 characters\) sed "s/^X//" >'util.c' <<'END_OF_FILE' X X/* X X "mgt" Copyright 1990 Shodan X All Rights Reserved. X Program by Greg Hale X XPermission to use, copy, modify, and distribute this software and its Xdocumentation for any purpose and without fee is hereby granted, Xprovided that this entire comment and copyright notice appear in all Xcopies and that both that copyright notice and this permission notice Xappear in supporting documentation. No representations are made about Xthe suitability of this software for any purpose. It is provided "as Xis" without express or implied warranty. X XPlease send copies of extensions to: X Xhale@scam.berkeley.edu X128.32.138.4 scam.berkeley.edu sting sting.Berkeley.EDU X XDonations for the 'From My Go Teacher' series may be sent to: X Shodan X P.O. Box 4456 X Berkeley, CA 94704 X (415) 849-9475 X X*/ X X#include X#include "mgt.h" X XFUNCTION void Beep() X{ X mvaddch(0,0,07); X refresh(); X} X XFUNCTION char getKey() X{ X#if 0 X char buf[3]; X return (!read(0, buf, 1)) ? 0 : buf[0]; X#else X return getchar(); X#endif X} X XFUNCTION barf(s) Xchar *s; X{ X int i; X for (i=24; i--;) X fprintf(stderr,"\n"); X fprintf(stderr,"%s\n",s); X exit(1); X} END_OF_FILE if test 1124 -ne `wc -c <'util.c'`; then echo shar: \"'util.c'\" unpacked with wrong size! fi # end of 'util.c' fi echo shar: End of archive 4 \(of 5\). cp /dev/null ark4isdone MISSING="" for I in 1 2 3 4 5 ; do if test ! -f ark${I}isdone ; then MISSING="${MISSING} ${I}" fi done if test "${MISSING}" = "" ; then echo You have unpacked all 5 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