home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / misc / volume19 / gnuchess / part03 < prev    next >
Encoding:
Text File  |  1991-05-17  |  50.1 KB  |  3,009 lines

  1. Newsgroups: comp.sources.misc
  2. From: Mike McGann <mwm@hasler.ascom.ch>
  3. Subject:  v19i075:  gnuchess - gnuchess version 3.1+, Part03/07
  4. Message-ID: <1991May17.024452.27673@sparky.IMD.Sterling.COM>
  5. X-Md4-Signature: 7eb890ba4d53b3b18bb8a5e27897b59f
  6. Date: Fri, 17 May 1991 02:44:52 GMT
  7. Approved: kent@sparky.imd.sterling.com
  8.  
  9. Submitted-by: Mike McGann <mwm@hasler.ascom.ch>
  10. Posting-number: Volume 19, Issue 75
  11. Archive-name: gnuchess/part03
  12.  
  13. #!/bin/sh
  14. # do not concatenate these parts, unpack them in order with /bin/sh
  15. # file gnuchess.book continued
  16. #
  17. if test ! -r _shar_seq_.tmp; then
  18.     echo 'Please unpack part 1 first!'
  19.     exit 1
  20. fi
  21. (read Scheck
  22.  if test "$Scheck" != 3; then
  23.     echo Please unpack part "$Scheck" next!
  24.     exit 1
  25.  else
  26.     exit 0
  27.  fi
  28. ) < _shar_seq_.tmp || exit 1
  29. if test ! -f _shar_wnt_.tmp; then
  30.     echo 'x - still skipping gnuchess.book'
  31. else
  32. echo 'x - continuing file gnuchess.book'
  33. sed 's/^X//' << 'SHAR_EOF' >> 'gnuchess.book' &&
  34. f2f4  e7e6
  35. d1f3  d8b6
  36. d4b3  b8c6
  37. f1d3  f8e7
  38. c1e3  b6c7
  39. o-o   o-o
  40. a1e1  c6b4
  41. ! #  col. 23f
  42. e2e4  c7c5
  43. g1f3  d7d6
  44. d2d4  c5d4
  45. f3d4  g8f6
  46. b1c3  a7a6
  47. c1e3  e7e5
  48. d4b3  c8e6
  49. d1d2  b8d7
  50. f2f3  f8e7
  51. g2g4  b7b5
  52. g4g5  f6h5
  53. o-o-o o-o
  54. h1g1  a8c8
  55. c3e2
  56. ! #  col. 24k; Kotkov-Polugayevski, USSR 1959
  57. e2e4  c7c5
  58. g1f3  d7d6
  59. d2d4  c5d4
  60. f3d4  g8f6
  61. b1c3  a7a6
  62. f1c4  e7e6
  63. o-o   f8e7
  64. c4b3  o-o
  65. f2f4  b7b5
  66. a2a3  c8b7
  67. f4f5  e6e5
  68. d4e2  b8d7
  69. e2g3  d7c5
  70. b3d5  b7d5
  71. e4d5  a8c8
  72. c1g5  c5d7
  73. g5f6  d7f6
  74. c3e4  c8c4
  75. ! #  col. 25o; Ciocaltea-Minic, Bucharest 1966
  76. e2e4  c7c5
  77. g1f3  d7d6
  78. d2d4  c5d4
  79. f3d4  g8f6
  80. b1c3  a7a6
  81. f1c4  e7e6
  82. c4b3  b7b5
  83. f2f4  c8b7
  84. f4f5  e6e5
  85. d4e2  b8d7
  86. o-o   f8e7
  87. e2g3  a8c8
  88. c1g5  o-o
  89. ! #  col. 26e
  90. e2e4  c7c5
  91. g1f3  d7d6
  92. d2d4  c5d4
  93. f3d4  g8f6
  94. b1c3  g7g6
  95. c1e3  f8g7
  96. f2f3  o-o
  97. d1d2  b8c6
  98. o-o-o d6d5
  99. e4d5  f6d5
  100. d4c6  b7c6
  101. c3d5  c6d5
  102. d2d5  d8c7
  103. d5a8  c8f5
  104. a8f8  g8f8
  105. d1d2  h7h5
  106. f1e2  f8g8
  107. a2a3  c7b8
  108. ! #  col. 27i; Bikhovski-Gik, Moscow 1968
  109. e2e4  c7c5
  110. g1f3  d7d6
  111. d2d4  c5d4
  112. f3d4  g8f6
  113. b1c3  g7g6
  114. c1e3  f8g7
  115. f2f3  o-o
  116. d1d2  b8c6
  117. f1c4  c8d7
  118. o-o-o d8a5
  119. c4b3  f8c8
  120. g2g4  c6e5
  121. h2h4  e5c4
  122. b3c4  c8c4
  123. d4b3  a5a6
  124. h4h5  c4c3
  125. b2c3  d7e6
  126. c1b1  a8c8
  127. e3d4  c8c4
  128. h5g6  h7g6
  129. ! #  col. 28k
  130. e2e4  c7c5
  131. g1f3  d7d6
  132. d2d4  c5d4
  133. f3d4  g8f6
  134. b1c3  g7g6
  135. c1e3  f8g7
  136. f2f3  o-o
  137. d1d2  b8c6
  138. f1c4  c8d7
  139. o-o-o d8a5
  140. c4b3  f8c8
  141. h2h4  c6e5
  142. h4h5  f6h5
  143. e3h6  e5d3
  144. c1b1  d3b2
  145. b1b2  g7h6
  146. d2h6  c8c3
  147. g2g4  h5f6
  148. g4g5  f6h5
  149. ! #  col. 29m; Ostojic-Honfi, Monte Carlo 1968
  150. e2e4  c7c5
  151. g1f3  d7d6
  152. d2d4  c5d4
  153. f3d4  g8f6
  154. b1c3  g7g6
  155. c1e3  f8g7
  156. f2f3  o-o
  157. d1d2  b8c6
  158. f1c4  c8d7
  159. o-o-o d8a5
  160. c4b3  f8c8
  161. c1b1  c6e5
  162. h2h4  e5c4
  163. b3c4  c8c4
  164. d4b3  a5c7
  165. h4h5  c4c3
  166. d2c3  c7c3
  167. b2c3  f6h5
  168. e3d4  d7e6
  169. h1e1  h5f6
  170. e4e5  d6e5
  171. d4e5  f6d5
  172. b1b2  a8c8
  173. ! #  col. 30p; Karpov-Korchnoi, 2nd match game 1974.
  174. e2e4  c7c5
  175. g1f3  d7d6
  176. d2d4  c5d4
  177. f3d4  g8f6
  178. b1c3  g7g6
  179. c1e3  f8g7
  180. f2f3  o-o
  181. d1d2  b8c6
  182. f1c4  c8d7
  183. h2h4  a8c8
  184. c4b3  c6e5
  185. h4h5  f6h5
  186. o-o-o e5c4
  187. b3c4  c8c4
  188. g2g4  h5f6
  189. d4e2  d8a5
  190. e3h6  g7h6
  191. d2h6  f8c8
  192. d1d3  c4c5
  193. g4g5  c5g5
  194. d3d5  g5d5
  195. c3d5  c8e8
  196. e2c3  d7c6
  197. e4e5  c6d5
  198. e5f6  e7f6
  199. h6h7  g8f8
  200. h7h8  f8e7
  201. c3d5
  202. ! #  col. 31
  203. e2e4  c7c5
  204. g1f3  d7d6
  205. d2d4  c5d4
  206. f3d4  g8f6
  207. b1c3  g7g6
  208. g2g3  b8c6
  209. f1g2  c6d4
  210. d1d4  f8g7
  211. o-o   o-o
  212. d4d3  c8e6
  213. c3d5  f6d5
  214. e4d5  e6f5
  215. ! #  col. 32c; Pulsen-Cortlever, Buenos Aires 1939.
  216. e2e4  c7c5
  217. g1f3  d7d6
  218. d2d4  c5d4
  219. f3d4  g8f6
  220. b1c3  g7g6
  221. c1g5  f8g7
  222. d1d2  b8c6
  223. o-o-o o-o
  224. d4b3  f8e8
  225. f2f3  a7a6
  226. c1b1  b7b5
  227. h2h4  c8e6
  228. g2g4  c6e5
  229. ! #  col. 33h
  230. e2e4  c7c5
  231. g1f3  d7d6
  232. d2d4  c5d4
  233. f3d4  g8f6
  234. b1c3  g7g6
  235. f2f4  b8c6
  236. d4c6  b7c6
  237. e4e5  d6e5
  238. d1d8  e8d8
  239. f4e5  f6g4
  240. c1f4  c8e6
  241. c3e4  f8g7
  242. e4g5  g7e5
  243. o-o-o d8c7
  244. g5e6  f7e6
  245. f4e5  g4e5
  246. d1e1  c7d6
  247. g2g3  e5g4
  248. f1c4  e6e5
  249. e1e2
  250. ! #  col. 34j
  251. e2e4  c7c5
  252. g1f3  d7d6
  253. d2d4  c5d4
  254. f3d4  g8f6
  255. b1c3  g7g6
  256. f2f4  b8c6
  257. f1b5  d8c7
  258. c3d5  f6d5
  259. e4d5  a7a6
  260. b5c6  b7c6
  261. d4c6  c8b7
  262. c1e3  f8g7
  263. e3d4  g7d4
  264. d1d4  o-o
  265. o-o   b7c6
  266. ! #  col. 35l
  267. e2e4  c7c5
  268. g1f3  d7d6
  269. d2d4  c5d4
  270. f3d4  g8f6
  271. b1c3  g7g6
  272. f2f4  b8d7
  273. f1e2  f8g7
  274. c1e3  o-o
  275. e2f3  d7b6
  276. d1e2  e7e5
  277. d4b3  f6g4
  278. f3g4  d8h4
  279. g2g3  h4g4
  280. e2g4  c8g4
  281. ! #  col. 36a
  282. e2e4  c7c5
  283. g1f3  d7d6
  284. d2d4  c5d4
  285. f3d4  g8f6
  286. b1c3  g7g6
  287. f1e2  f8g7
  288. c1e3  b8c6
  289. o-o   o-o
  290. d4b3  c8e6
  291. f2f4  c6a5
  292. f4f5  e6c4
  293. b3a5  c4e2
  294. d1e2  d8a5
  295. g2g4  a8c8
  296. g4g5  c8c3
  297. g5f6  c3e3
  298. e2e3  g7f6
  299. c2c3  f8c8
  300. a2a3  c8c4
  301. a1e1  b7b5
  302. ! #  col. 37c; Domnitz-Kraidman, Tel Aviv 1964
  303. e2e4  c7c5
  304. g1f3  d7d6
  305. d2d4  c5d4
  306. f3d4  g8f6
  307. b1c3  g7g6
  308. f1e2  f8g7
  309. c1e3  b8c6
  310. o-o   o-o
  311. d4b3  c8e6
  312. f2f4  d8c8
  313. d1e1  f6g4
  314. e2g4  e6g4
  315. f4f5  g6f5
  316. h2h3  g4h3
  317. g2h3  f5e4
  318. e1h4  f7f5
  319. g1h1  f8f7
  320. f1g1  c6e5
  321. c3d5  c8d7
  322. b3d4  e5g6
  323. g1g6  h7g6
  324. a1g1  e7e5
  325. g1g6  d7d8
  326. e3g5  d8a5
  327. d5f6  g8f8
  328. d4e6
  329. ! #  col. 38f; Unzicker-Geller, W. Germany-USSR 1960 (drawn)
  330. e2e4  c7c5
  331. g1f3  d7d6
  332. d2d4  c5d4
  333. f3d4  g8f6
  334. b1c3  g7g6
  335. f1e2  f8g7
  336. c1e3  b8c6
  337. o-o   o-o
  338. d1d2  f6g4
  339. e2g4  c8g4
  340. f2f4  c6d4
  341. e3d4  e7e5
  342. d4e3  e5f4
  343. f1f4  g4e6
  344. f4f2  g7e5
  345. e3d4  a8c8
  346. a1d1  d8a5
  347. a2a3  c8c4
  348. c3e2  a5d2
  349. d1d2
  350. ! #  col. 39
  351. e2e4  c7c5
  352. g1f3  d7d6
  353. d2d4  c5d4
  354. f3d4  g8f6
  355. b1c3  g7g6
  356. f1e2  f8g7
  357. c1e3  b8c6
  358. o-o   o-o
  359. f2f4  d8b6
  360. d1d3  f6g4
  361. c3d5  g7d4
  362. e2g4  d4e3
  363. d3e3  b6b2
  364. g4c8  a8c8
  365. a1b1  b2a2
  366. b1b7  e7e6
  367. ! #  col. 40h
  368. e2e4  c7c5
  369. g1f3  d7d6
  370. d2d4  c5d4
  371. f3d4  g8f6
  372. b1c3  g7g6
  373. f1e2  f8g7
  374. c1e3  b8c6
  375. o-o   o-o
  376. f2f4  d8b6
  377. e4e5  d6e5
  378. f4e5  c6e5
  379. d4f5  b6b2
  380. f5e7  g8h8
  381. e3d4  b2b4
  382. d4e5  b4e7
  383. d1d4  f6e8
  384. e5g7  e8g7
  385. e2d3  c8e6
  386. ! #  col. 41b; Smyslov-Botvinnik, match 1958
  387. e2e4  c7c5
  388. g1f3  d7d6
  389. d2d4  c5d4
  390. f3d4  g8f6
  391. b1c3  g7g6
  392. f1e2  f8g7
  393. c1e3  b8c6
  394. h2h4  h7h5
  395. f2f3  o-o
  396. d1d2  d6d5
  397. d4c6  b7c6
  398. e4e5  f6e8
  399. f3f4  f7f6
  400. o-o-o f6e5
  401. f4e5  g7e5
  402. g2g4  c8g4
  403. e2g4  h5g4
  404. h4h5  g6g5
  405. ! #  col. 42d; Van den Burg-Rajkovic, Orebro 1966
  406. e2e4  c7c5
  407. g1f3  d7d6
  408. d2d4  c5d4
  409. f3d4  g8f6
  410. b1c3  g7g6
  411. f1e2  f8g7
  412. c1e3  b8c6
  413. d4b3  o-o
  414. f2f4  c6a5
  415. g2g4  b7b6
  416. g4g5  f6d7
  417. o-o   c8b7
  418. e2d3  a8c8
  419. b3a5  b6a5
  420. d1e1  d7c5
  421. f4f5  g7e5
  422. e1h4  e7e6
  423. f5f6  h7h5
  424. d3e2  g8h7
  425. e2h5  f8h8
  426. ! #  col. 43f
  427. e2e4  c7c5
  428. g1f3  d7d6
  429. d2d4  c5d4
  430. f3d4  g8f6
  431. b1c3  g7g6
  432. f1e2  f8g7
  433. c1e3  b8c6
  434. d4b3  o-o
  435. f2f4  c6a5
  436. g2g4  c8e6
  437. g4g5  f6d7
  438. e3d4  f7f6
  439. h2h4  f6g5
  440. d4g7  g8g7
  441. b3d4  e6g8
  442. f4f5  d8b6
  443. ! #  col. 44
  444. e2e4  c7c5
  445. g1f3  d7d6
  446. d2d4  c5d4
  447. f3d4  g8f6
  448. b1c3  g7g6
  449. f1e2  f8g7
  450. o-o   b8c6
  451. d4b3  o-o
  452. f2f4  b7b5
  453. e2f3  b5b4
  454. c3d5  f6d5
  455. e4d5  c6a5
  456. b3a5  d8a5
  457. f1e1  f8e8
  458. ! #  col. 45i; Smyslov-Korchnoi, Moscow 1960
  459. e2e4  c7c5
  460. g1f3  d7d6
  461. d2d4  c5d4
  462. f3d4  g8f6
  463. b1c3  g7g6
  464. f1e2  f8g7
  465. d4b3  b8c6
  466. g2g4  b7b6
  467. f2f4  c8b7
  468. e2f3  o-o
  469. h2h4  a7a5
  470. a2a4  c6b4
  471. h4h5  d6d5
  472. e4e5  f6g4
  473. b3d4  g4h6
  474. h5g6  f7g6
  475. d4e6  d8d7
  476. e6f8  a8f8
  477. c3b5  d5d4
  478. ! #  col. 46
  479. e2e4  c7c5
  480. g1f3  d7d6
  481. d2d4  c5d4
  482. f3d4  g8f6
  483. f2f3  e7e5
  484. f1b5  c8d7
  485. b5d7  b8d7
  486. d4f5  d6d5
  487. e4d5  d8a5
  488. b1c3  d7b6
  489. ! #  col. 47h; Schweber-Najdorf, Buenos Aires 1970
  490. e2e4  c7c5
  491. g1f3  d7d6
  492. d2d4  c5d4
  493. d1d4  b8c6
  494. f1b5  c8d7
  495. b5c6  d7c6
  496. c2c4  g8f6
  497. b1c3  e7e6
  498. c1g5  f8e7
  499. o-o   o-o
  500. f1e1  h7h6
  501. g5h4  a7a6
  502. a1d1  d8a5
  503. d4d2  a5b6
  504. f3d4  a8c8
  505. e1e3  f8e8
  506. ! #  col. 48i
  507. e2e4  c7c5
  508. g1f3  d7d6
  509. d2d4  c5d4
  510. d1d4  a7a6
  511. c1e3  g8f6
  512. b1c3  b8c6
  513. d4b6  d8b6
  514. e3b6  g7g6
  515. o-o-o f8h6
  516. c1b1  o-o
  517. f3d4  c8d7
  518. f2f3  c6e5
  519. d4b3  f8c8
  520. b3a5  d7c6
  521. c3d5  c6d5
  522. e4d5  f6d7
  523. b6d4  b7b6
  524. ! #  col. 50
  525. e2e4  c7c5
  526. g1f3  d7d6
  527. d2d4  g8f6
  528. d4c5  f6e4
  529. c5d6  e7e6
  530. d1d3  e4d6
  531. b1c3  b8c6
  532. c1f4  f7f6
  533. o-o-o e6e5
  534. c3b5
  535. ! #  col. 51c; Pfeiffer-Kottnauer, Helsinki 1952
  536. e2e4  c7c5
  537. g1f3  d7d6
  538. c2c3  g8f6
  539. f1d3  b8c6
  540. d3c2  c8g4
  541. h2h3  g4h5
  542. d2d3  d6d5
  543. d1e2  e7e6
  544. b1d2  f8e7
  545. d2f1  d8a5
  546. ! #  col. 52d; Brasket-Evans, U.S. Open Chp. 1960
  547. e2e4  c7c5
  548. g1f3  d7d6
  549. c2c3  g8f6
  550. d2d3  g7g6
  551. g2g3  f8g7
  552. b1d2  o-o
  553. f1g2  e7e5
  554. o-o   b8c6
  555. a2a4  h7h6
  556. d2b1  d8a5
  557. ! #  col. 53h; Ciocaltea-Fischer, Varna 1962
  558. e2e4  c7c5
  559. g1f3  d7d6
  560. g2g3  g7g6
  561. f1g2  f8g7
  562. o-o   b8c6
  563. c2c3  e7e5
  564. d2d3  g8e7
  565. f3h4  o-o
  566. f2f4  e5f4
  567. g3f4  f7f5
  568. b1d2  g8h8
  569. d2f3
  570. ! #  col. 54k; Tarjan-Mednis, U.S. Chp. 1973
  571. e2e4  c7c5
  572. g1f3  b8c6
  573. d2d4  c5d4
  574. f3d4  g8f6
  575. b1c3  e7e6
  576. f1e2  g7g6
  577. d4b3
  578. ! e2e4  c7c5
  579. g1f3  d7d6
  580. b1c3  g8f6
  581. e4e5  d6e5
  582. f3e5  a7a6
  583. f1e2  e7e6
  584. o-o   d8c7
  585. e5c4  b7b5
  586. c4e3  f8d6
  587. h2h3  b8c6
  588. a2a4  b5b4
  589. c3b1  c8b7
  590. d2d3  c6d4
  591. b1d2  o-o
  592. d2f3  d4e2
  593. d1e2  f8e8
  594. e3c4  e6e5
  595. f3g5  e5e4
  596. c4d6  c7d6
  597. g5e4  f6e4
  598. d3e4  b7e4
  599. c1e3  d6c6
  600. ! #  col. 55o; Medina-Pomar, Santander 1947
  601. e2e4  c7c5
  602. g1f3  d7d6
  603. b2b4  c5b4
  604. d2d4  g8f6
  605. f1d3  d6d5
  606. b1d2  d5e4
  607. d2e4  b8d7
  608. e4g5  d8c7
  609. c2c4  h7h6
  610. g5h3  g7g5
  611. h3g1  f8g7
  612. g1e2  e7e5
  613. e2g3  e5e4
  614. d1e2  o-o
  615. ! #  col. 56e; del Corral-Benko, Mallorca 1968
  616. e2e4  c7c5
  617. g1f3  d7d6
  618. f1b5  c8d7
  619. b5d7  d8d7
  620. o-o   b8c6
  621. f1e1  g8f6
  622. c2c3  e7e6
  623. d2d3  f8e7
  624. a2a4  o-o
  625. b1d2  d7c7
  626. ! #  col. 57g; Radovich-Lombardy, Leipzig 1960
  627. e2e4  c7c5
  628. g1f3  d7d6
  629. f1b5  b8c6
  630. o-o   a7a6
  631. b5c6  b7c6
  632. d2d4  c5d4
  633. d1d4  e7e5
  634. d4d3  f7f6
  635. c2c4  c8e6
  636. b1c3  d8c7
  637. ! #  col. 58j; Gurgenidze-Osnos, Alma Ata 1969
  638. e2e4  c7c5
  639. g1f3  b8c6
  640. f1b5  e7e6
  641. b1c3  g8e7
  642. o-o   a7a6
  643. b5c6  e7c6
  644. d2d4  c5d4
  645. f3d4  d7d6
  646. d4c6  b7c6
  647. d1g4  g7g6
  648. e4e5  d6d5
  649. c1g5  f8e7
  650. ! #  col. 59m
  651. e2e4  c7c5
  652. g1f3  b8c6
  653. f1b5  g7g6
  654. o-o   f8g7
  655. c2c3  g8f6
  656. f1e1  o-o
  657. d2d4  c5d4
  658. c3d4  d7d5
  659. e4e5  f6e4
  660. b1c3  e4c3
  661. b2c3  c6a5
  662. c1g5  c8f5
  663. f3d2  f8e8
  664. ! #  col. 60o
  665. e2e4  c7c5
  666. g1f3  b8c6
  667. f1b5  g7g6
  668. o-o   f8g7
  669. f1e1  e7e5
  670. f1e1  o-o
  671. d2d4  c5d4
  672. c3d4  d7d5
  673. e4e5  f6e4
  674. b1c3  e4c3
  675. b2c3  c6a5
  676. c1g5  c8f5
  677. f3d2  f8e8
  678. ! #  col. 61c; Barczay-Szilagyi, Hungarian Chp. 1969
  679. e2e4  c7c5
  680. g1f3  b8c6
  681. d2d4  c5d4
  682. f3d4  g8f6
  683. b1c3  d7d6
  684. c1g5  c8d7
  685. g5f6  g7f6
  686. d4b3  h8g8
  687. g2g3  f6f5
  688. d1d2  f8g7
  689. e4f5  d7f5
  690. f1g2  d8d7
  691. o-o   g7c3
  692. b2c3  f5h3
  693. g2h3  d7h3
  694. ! #  col. 62e
  695. e2e4  c7c5
  696. g1f3  b8c6
  697. d2d4  c5d4
  698. f3d4  g8f6
  699. b1c3  d7d6
  700. c1g5  c8d7
  701. d4b3  h7h6
  702. g5h4  a8c8
  703. f1e2  g7g5
  704. h4g3  h6h5
  705. h2h4  g5g4
  706. g3f4  c6e5
  707. d1d4  e5g6
  708. f4g5  f8g7
  709. o-o
  710. ! #  col. 63g; Matulovic-Masic, Sombor 1968
  711. e2e4  c7c5
  712. g1f3  b8c6
  713. d2d4  c5d4
  714. f3d4  g8f6
  715. b1c3  d7d6
  716. c1g5  c8d7
  717. f2f4  d8b6
  718. d4b3  f6g4
  719. d1e2  c6d4
  720. c3d5  d4e2
  721. d5b6  a7b6
  722. e1e2  h7h6
  723. g5h4  g7g5
  724. h4g3  g5f4
  725. g3f4  f8g7
  726. c2c3  d7c6
  727. ! #  col. 64j; Liberzo-Stein, USSR Chp. 1969-70.  Complete game (draw).
  728. e2e4  c7c5
  729. g1f3  b8c6
  730. d2d4  c5d4
  731. f3d4  g8f6
  732. b1c3  d7d6
  733. c1g5  c8d7
  734. d1d3  c6d4
  735. d3d4  d8a5
  736. f2f4  e7e5
  737. d4d3  f8e7
  738. o-o-o d7c6
  739. c1b1  e5f4
  740. g5f4  o-o
  741. f1e2  f8e8
  742. e2f3  e7f8
  743. c3d5  f6d7
  744. d3d2  a5d2
  745. d1d2  a8c8
  746. h1d1  d7e5
  747. b2b3
  748. ! #  col. 65m; Bronstein-Stein, USSR 1969
  749. e2e4  c7c5
  750. g1f3  b8c6
  751. d2d4  c5d4
  752. f3d4  g8f6
  753. b1c3  d7d6
  754. c1g5  c8d7
  755. d1d3  c6d4
  756. d3d4  d8a5
  757. f1e2  e7e5
  758. d4d3  a5c7
  759. e2g4  f8e7
  760. g5f6  e7f6
  761. o-o-o f6e7
  762. c3b5  d7b5
  763. d3b5  c7c6
  764. b5d5  c6d5
  765. d1d5
  766. ! #  col. 66b; Benko-R. Byrne, US Open Chp. 1968
  767. e2e4  c7c5
  768. g1f3  b8c6
  769. d2d4  c5d4
  770. f3d4  g8f6
  771. b1c3  d7d6
  772. c1g5  c8d7
  773. d1d2  a8c8
  774. o-o-o c6d4
  775. d2d4  d8a5
  776. g5d2  a7a6
  777. f1c4  a5c5
  778. d4c5  c8c5
  779. c4b3  g7g6
  780. d2e3  c5c8
  781. e3d4  f8g7
  782. c3d5  f6h5
  783. d4g7  h5g7
  784. e4e5  c8c6
  785. d5b4  c6b6
  786. ! #  col. 66b alternate; Polgar-Nagy, Hungarian Chp. 1972
  787. e2e4  c7c5
  788. g1f3  b8c6
  789. d2d4  c5d4
  790. f3d4  g8f6
  791. b1c3  d7d6
  792. c1g5  c8d7
  793. d1d2  a8c8
  794. o-o-o c6d4
  795. d2d4  d8a5
  796. g5d2  e7e5
  797. d4d3  a7a6
  798. c1b1  h7h6
  799. f2f3  a5c7
  800. g2g3  f8e7
  801. h2h4  b7b5
  802. ! #  col. 67c; Suetin-Gheorghiu, Hastings 1967/8.  Draw.
  803. e2e4  c7c5
  804. g1f3  b8c6
  805. d2d4  c5d4
  806. f3d4  g8f6
  807. b1c3  d7d6
  808. c1g5  c8d7
  809. d1d2  a8c8
  810. o-o-o c6d4
  811. d2d4  d8a5
  812. g5e3  a7a6
  813. f2f3  e7e6
  814. d4b6  a5b6
  815. e3b6  d7c6
  816. f1c4  c6e4
  817. c4e6  f7e6
  818. c3e4  f6e4
  819. f3e4  f8e7
  820. h1f1  e7g5
  821. c1b1  e8e7
  822. c2c3  h8f8
  823. b1c2  f8f1
  824. d1f1  c8f8
  825. ! #  col. 68d
  826. e2e4  c7c5
  827. g1f3  b8c6
  828. d2d4  c5d4
  829. f3d4  g8f6
  830. b1c3  d7d6
  831. c1g5  c8d7
  832. d1d2  a8c8
  833. o-o-o c6d4
  834. d2d4  d8a5
  835. f2f4  e7e6
  836. e4e5  d6e5
  837. f4e5  c8c3
  838. g5d2  a5a2
  839. d2c3  g7g6
  840. ! #  col. 69fA1; Janosevic-Larsen, Belgrade 1964
  841. e2e4  c7c5
  842. g1f3  b8c6
  843. d2d4  c5d4
  844. f3d4  g8f6
  845. b1c3  d7d6
  846. c1g5  c8d7
  847. d1d2  a8c8
  848. o-o-o c6d4
  849. d2d4  d8a5
  850. f2f4  c8c3
  851. b2c3  e7e5
  852. d4b4  a5b4
  853. c3b4  f6e4
  854. f1c4  b7b5
  855. c4d5  e4c3
  856. f4e5  h7h6
  857. g5h4  g7g5
  858. h4g3  c3e2
  859. c1b2  e2g3
  860. h2g3  f8g7
  861. ! #  col. 70g; Bednarski-Simagin, Polanica Zdroj 1968
  862. e2e4  c7c5
  863. g1f3  b8c6
  864. d2d4  c5d4
  865. f3d4  g8f6
  866. b1c3  d7d6
  867. c1g5  c8d7
  868. d1d2  a8c8
  869. o-o-o c6d4
  870. d2d4  c8c3
  871. d4c3  f6e4
  872. c3e3  e4g5
  873. e3g5  d8b6
  874. f1c4  e7e6
  875. g5g3  g7g6
  876. c4b3  f8e7
  877. h2h4  h7h5
  878. h1e1  b6b4
  879. g3e3  a7a5
  880. e3d4
  881. ! #  col. 71d
  882. e2e4  c7c5
  883. g1f3  b8c6
  884. d2d4  c5d4
  885. f3d4  g8f6
  886. b1c3  d7d6
  887. c1g5  e7e6
  888. d1d2  f8e7
  889. o-o-o c6d4
  890. d2d4  o-o
  891. f2f4  h7h6
  892. g5h4  d8a5
  893. f1c4  e6e5
  894. f4e5  d6e5
  895. d4d3  a5c5
  896. h4f6  e7f6
  897. ! #  col. 72g
  898. e2e4  c7c5
  899. g1f3  b8c6
  900. d2d4  c5d4
  901. f3d4  g8f6
  902. b1c3  d7d6
  903. c1g5  e7e6
  904. d1d2  f8e7
  905. o-o-o c6d4
  906. d2d4  o-o
  907. f2f4  d8a5
  908. f1c4  c8d7
  909. c4b3  d7c6
  910. h1f1  b7b5
  911. g5f6  e7f6
  912. d4d6  f6c3
  913. d6c6  a8c8
  914. c6d7  c8d8
  915. d7e7  c3d2
  916. c1b1  d2f4
  917. d1d8  a5d8
  918. ! #  col. 73i
  919. e2e4  c7c5
  920. g1f3  b8c6
  921. d2d4  c5d4
  922. f3d4  g8f6
  923. b1c3  d7d6
  924. c1g5  e7e6
  925. d1d2  f8e7
  926. o-o-o o-o
  927. d4b3  d8b6
  928. f2f3  a7a6
  929. g2g4  f8d8
  930. g5e3  b6c7
  931. h2h4  b7b5
  932. g4g5  f6d7
  933. g5g6  f7g6
  934. h4h5  g6h5
  935. h1h5  d7f6
  936. h5g5  c6e5
  937. d2g2  e7f8
  938. f3f4  e5c4
  939. f1c4  b5c4
  940. b3d4  a8b8
  941. d1g1  b8b7
  942. ! #  col. 74; Tal-Larsen, match 1969
  943. e2e4  c7c5
  944. g1f3  b8c6
  945. d2d4  c5d4
  946. f3d4  g8f6
  947. b1c3  d7d6
  948. c1g5  e7e6
  949. d1d2  f8e7
  950. o-o-o o-o
  951. d4b3  a7a6
  952. g5f6  g7f6
  953. f1e2  g8h8
  954. e2h5  c8d7
  955. f2f4  b7b5
  956. c1b1
  957. ! #  col. 75k
  958. e2e4  c7c5
  959. g1f3  b8c6
  960. d2d4  c5d4
  961. f3d4  g8f6
  962. b1c3  d7d6
  963. c1g5  e7e6
  964. d1d2  f8e7
  965. o-o-o o-o
  966. d4b5  d8a5
  967. g5f6  e7f6
  968. b5d6  f8d8
  969. f2f4  e6e5
  970. d2d5  a5c7
  971. f4f5  c6d4
  972. d6b5  c7a5
  973. d5c4  c8f5
  974. b2b4  a5a6
  975. ! #  col. 76b; Spasski-Larsen, Santa Monica 1966
  976. e2e4  c7c5
  977. g1f3  b8c6
  978. d2d4  c5d4
  979. f3d4  g8f6
  980. b1c3  d7d6
  981. c1g5  e7e6
  982. d1d2  f8e7
  983. o-o-o o-o
  984. f2f4  h7h6
  985. g5h4  e6e5
  986. d4f5  c8f5
  987. e4f5  d8a5
  988. c1b1  a8d8
  989. h4f6  e7f6
  990. c3d5  a5d2
  991. d5f6  g7f6
  992. d1d2  e5f4
  993. ! #  col. 77e; Kujpers-Minev, Halle 1967
  994. e2e4  c7c5
  995. g1f3  b8c6
  996. d2d4  c5d4
  997. f3d4  g8f6
  998. b1c3  d7d6
  999. c1g5  e7e6
  1000. d1d2  f8e7
  1001. o-o-o o-o
  1002. f2f4  d6d5
  1003. e4e5  f6d7
  1004. h2h4  d7b6
  1005. d2e3  c8d7
  1006. g5e7  d8e7
  1007. h4h5  c6a5
  1008. d4b3  a5c4
  1009. e3d4  f8c8
  1010. c1b1  a7a5
  1011. f4f5  a5a4
  1012. f5f6  e7f8
  1013. h1h3  c4b2
  1014. b1b2  b6c4
  1015. f1c4  c8c4
  1016. d4d2
  1017. ! #  col. 78h
  1018. e2e4  c7c5
  1019. g1f3  b8c6
  1020. d2d4  c5d4
  1021. f3d4  g8f6
  1022. b1c3  d7d6
  1023. c1g5  e7e6
  1024. d1d2  a7a6
  1025. o-o-o c8d7
  1026. f2f4  h7h6
  1027. g5h4  f6e4
  1028. d2e1  e4f6
  1029. d4f5  d8a5
  1030. f5d6  f8d6
  1031. d1d6  o-o-o 
  1032. d6d1  e6e5
  1033. f1c4  e5f4
  1034. c3e4  d7e6
  1035. c4e6  f7e6
  1036. e4d6  c8b8
  1037. e1e6  h8f8
  1038. ! #  col. 79j; O'Kelly-Simagin corr. 1964
  1039. e2e4  c7c5
  1040. g1f3  b8c6
  1041. d2d4  c5d4
  1042. f3d4  g8f6
  1043. b1c3  d7d6
  1044. c1g5  e7e6
  1045. d1d2  a7a6
  1046. o-o-o h7h6
  1047. g5h4  f6e4
  1048. d2f4  e4g5
  1049. d4c6  b7c6
  1050. f4a4  d8b6
  1051. f2f4  g5h7
  1052. f4f5  f8e7
  1053. c3e4  a8b8
  1054. a4a3  b6b5
  1055. ! #  col. 80k; Di Camillo-R. Byrne, US Open Chp. 1958
  1056. e2e4  c7c5
  1057. g1f3  b8c6
  1058. d2d4  c5d4
  1059. f3d4  g8f6
  1060. b1c3  d7d6
  1061. c1g5  e7e6
  1062. d1d2  h7h6
  1063. g5f6  g7f6
  1064. o-o-o a7a6
  1065. f2f4  c8d7
  1066. f1e2  h6h5
  1067. c1b1  d8b6
  1068. d4b3  o-o-o 
  1069. h1f1  f8e7
  1070. c3a4  b6a7
  1071. c2c4  c6d4
  1072. ! #  col. 81b
  1073. e2e4  c7c5
  1074. g1f3  b8c6
  1075. d2d4  c5d4
  1076. f3d4  g8f6
  1077. b1c3  d7d6
  1078. c1g5  e7e6
  1079. d4c6  b7c6
  1080. e4e5  d6e5
  1081. d1f3  f8e7
  1082. f3c6  c8d7
  1083. c6f3  e5e4
  1084. c3e4  f6e4
  1085. g5e7  d8a5
  1086. ! #  col. 82e
  1087. e2e4  c7c5
  1088. g1f3  b8c6
  1089. d2d4  c5d4
  1090. f3d4  g8f6
  1091. b1c3  d7d6
  1092. c1g5  e7e6
  1093. d1d3  f8e7
  1094. a1d1  o-o
  1095. f1e2  c8d7
  1096. o-o   c6d4
  1097. d3d4  d7c6
  1098. g1h1  d8a5
  1099. f2f4  f8e8
  1100. ! #  col. 83
  1101. e2e4  c7c5
  1102. g1f3  b8c6
  1103. d2d4  c5d4
  1104. f3d4  g8f6
  1105. b1c3  d7d6
  1106. h2h3  g7g6
  1107. c1e3  f8g7
  1108. d1d2  o-o
  1109. o-o-o c6d4
  1110. e3d4  d8a5
  1111. c1b1  e7e5
  1112. d4e3  c8e6
  1113. ! #  BAD! -- col. 84i; Karaklajic-Taimanov, Yugoslavia-USSR, match 1956
  1114. e2e4  c7c5
  1115. g1f3  b8c6
  1116. d2d4  c5d4
  1117. f3d4  g8f6
  1118. b1c3  d7d6
  1119. c1e3  f6g4
  1120. f1b5  g4e3
  1121. f2e3  c8d7
  1122. o-o   e7e6
  1123. 5c6   b7c6
  1124. e4e5  f8e7
  1125. d1h5  o-o
  1126. e5d6  e7d6
  1127. c3e4  d6e7
  1128. a1d1  d8c7
  1129. d4b3  h7h6
  1130. ! #  col. 85
  1131. e2e4  c7c5
  1132. g1f3  b8c6
  1133. d2d4  c5d4
  1134. f3d4  g8f6
  1135. b1c3  d7d6
  1136. d4e2  e7e6
  1137. g2g3  d6d5
  1138. e4d5  f6d5
  1139. f1g2  d5c3
  1140. d1d8  e8d8
  1141. e2c3  c8d7
  1142. c1d2  f8e7
  1143. ! #  col. 86c; Carcia-Pomar, Havana 1969
  1144. e2e4  c7c5
  1145. g1f3  b8c6
  1146. d2d4  c5d4
  1147. f3d4  g8f6
  1148. b1c3  d7d6
  1149. f1c4  e7e5
  1150. d4e2  c8e6
  1151. c4e6  f7e6
  1152. o-o   f8e7
  1153. f2f4  o-o
  1154. e2g3  e5f4
  1155. f1f4  d8b6
  1156. g1h1  a8d8
  1157. b2b3  d6d5
  1158. e4d5  f6d5
  1159. f4f8  e7f8
  1160. c3d5  d8d5
  1161. d1e1  c6d4
  1162. c1e3  f8c5
  1163. ! #  col. 87
  1164. e2e4  c7c5
  1165. g1f3  b8c6
  1166. d2d4  c5d4
  1167. f3d4  g8f6
  1168. b1c3  d7d6
  1169. f1c4  d8b6
  1170. d4b3  e7e6
  1171. o-o   f8e7
  1172. c1e3  b6c7
  1173. f2f4  o-o
  1174. c4d3  a7a6
  1175. d1f3
  1176. ! #  col. 88
  1177. e2e4  c7c5
  1178. g1f3  b8c6
  1179. d2d4  c5d4
  1180. f3d4  g8f6
  1181. b1c3  d7d6
  1182. f1c4  e7e6
  1183. c1e3  d8c7
  1184. d1e2  a7a6
  1185. c4b3  c6a5
  1186. g2g4  b7b5
  1187. g4g5  f6d7
  1188. o-o-o d7c5
  1189. ! #  col. 89mA; Spasjevic-Ostojic, Belgrade 1966 (draw)
  1190. e2e4  c7c5
  1191. g1f3  b8c6
  1192. d2d4  c5d4
  1193. f3d4  g8f6
  1194. b1c3  d7d6
  1195. f1c4  e7e6
  1196. c1e3  f8e7
  1197. d1e2  a7a6
  1198. o-o-o o-o
  1199. c4b3  d8c7
  1200. g2g4  c6d4
  1201. d1d4  e6e5
  1202. d4c4  c7d8
  1203. g4g5  f6e8
  1204. h1g1  c8d7
  1205. c3d5  d7b5
  1206. e3b6  d8d7
  1207. e2g4  e7d8
  1208. g4d7  b5d7
  1209. c4c3  d7e6
  1210. b6d8  a8d8
  1211. d5e3  d8d7
  1212. b3a4  d7c7
  1213. ! #  col. 90o; Bogdanovic-Shamkovich, Sarajevo 1963
  1214. e2e4  c7c5
  1215. g1f3  b8c6
  1216. d2d4  c5d4
  1217. f3d4  g8f6
  1218. b1c3  d7d6
  1219. f1c4  e7e6
  1220. c1e3  f8e7
  1221. d1e2  o-o
  1222. o-o-o c6d4
  1223. e3d4  d8a5
  1224. e4e5  d6e5
  1225. d4e5  b7b6
  1226. c3b5  c8a6
  1227. e5c3  a5a4
  1228. d1d4  a6b5
  1229. c4b5  a4a2
  1230. h1d1  f8d8
  1231. d4a4  d8d1
  1232. e2d1  a2d5
  1233. d1d5  f6d5
  1234. c3d4  e7g5
  1235. c1b1  h7h5
  1236. b5c6  a8d8
  1237. a4a7  d5b4
  1238. c6d7  b4c6
  1239. ! #  Queen's Catalan, col. 1c; Kramer-Fichtl, Varna Olympics 1962
  1240. d2d4  d7d5
  1241. c2c4  e7e6
  1242. g2g3  g8f6
  1243. g1f3  f8e7
  1244. f1g2  o-o
  1245. o-o   b8d7
  1246. b1c3  c7c6
  1247. b2b3  b7b6
  1248. c1b2  c8b7
  1249. d1c2  a8c8
  1250. a1d1  d8c7
  1251. e2e4  d5e4
  1252. c3e4  f6e4
  1253. c2e4  c6c5
  1254. d4d5  e7f6
  1255. e4c2  e6d5
  1256. c4d5  f6b2
  1257. c2b2  c8d8
  1258. ! #  col. 2f
  1259. d2d4  d7d5
  1260. c2c4  e7e6
  1261. g2g3  g8f6
  1262. g1f3  f8e7
  1263. f1g2  o-o
  1264. o-o   b8d7
  1265. b1c3  d5c4
  1266. e2e4  c7c6
  1267. a2a4  a7a5
  1268. d1e2  d7b6
  1269. f1d1  e7b4
  1270. f3e5  d8e7
  1271. c1e3  c8d7
  1272. e5c4  b6c4
  1273. e2c4  e6e5
  1274. d4e5  f6g4
  1275. ! #  col. 3i; Geller-Medina, Beverwijk 1965
  1276. d2d4  d7d5
  1277. c2c4  e7e6
  1278. g2g3  g8f6
  1279. g1f3  f8e7
  1280. f1g2  o-o
  1281. o-o   b8d7
  1282. d1c2  b7b6
  1283. c4d5  f6d5
  1284. b1c3  c8b7
  1285. c3d5  b7d5
  1286. e2e4  d5b7
  1287. f1d1  c7c5
  1288. d4d5  e6d5
  1289. e4d5  e7f6
  1290. h2h4  h7h6
  1291. ! #  col. 4k; Geller-Bisguier, Bled 1961
  1292. d2d4  d7d5
  1293. c2c4  e7e6
  1294. g2g3  g8f6
  1295. g1f3  f8e7
  1296. f1g2  o-o
  1297. o-o   b8d7
  1298. d1c2  c7c6
  1299. b2b3  b7b6
  1300. c1b2  c8b7
  1301. b1c3  a8c8
  1302. a1d1  b6b5
  1303. c4c5  b5b4
  1304. c3b1  f6e4
  1305. f3e1  f7f5
  1306. e1d3  a7a5
  1307. d3f4  f8f6
  1308. f2f3  e4g5
  1309. ! #  col. 5m; Benko-Pachman, Budapest 1948
  1310. d2d4  d7d5
  1311. c2c4  e7e6
  1312. g2g3  g8f6
  1313. g1f3  f8e7
  1314. f1g2  o-o
  1315. o-o   b8d7
  1316. d1c2  c7c6
  1317. b1d2  b7b6
  1318. e2e4  c8b7
  1319. b2b3  a8c8
  1320. f1d1  d8c7
  1321. c1b2  f8d8
  1322. a1c1  c7b8
  1323. c2b1  a7a5
  1324. f3e5  b8a8
  1325. ! #  col. 6
  1326. d2d4  d7d5
  1327. c2c4  e7e6
  1328. g2g3  g8f6
  1329. g1f3  f8e7
  1330. f1g2  o-o
  1331. o-o   c7c6
  1332. b1c3  b7b6
  1333. f3e5  a7a5
  1334. d1c2  c8a6
  1335. f1d1  b6b5
  1336. ! #  col. 7d; Evans-Poschel, US Jr. Chp. 1947
  1337. d2d4  d7d5
  1338. c2c4  e7e6
  1339. g2g3  g8f6
  1340. g1f3  c7c5
  1341. c4d5  f6d5
  1342. f1g2  c5d4
  1343. o-o   f8c5
  1344. f3d4  o-o
  1345. a2a3  b8c6
  1346. d4c6  b7c6
  1347. b2b4  c5e7
  1348. c1b2  e7f6
  1349. d1c2  f6b2
  1350. c2b2  a7a5
  1351. ! #  col. 8g; O'Kelly-Euwe, New York 1951
  1352. d2d4  d7d5
  1353. c2c4  e7e6
  1354. g2g3  g8f6
  1355. g1f3  d5c4
  1356. f1g2  c7c5
  1357. o-o   b8c6
  1358. d1a4  f6d7
  1359. d4c5  f8c5
  1360. a4c4  o-o
  1361. b1c3  a7a6
  1362. c3e4  c5e7
  1363. c1e3  d7b6
  1364. c4b3  b6d5
  1365. f1d1  d8c7
  1366. ! #  col. 9
  1367. d2d4  d7d5
  1368. c2c4  e7e6
  1369. g2g3  g8f6
  1370. g1f3  d5c4
  1371. f1g2  b7b5
  1372. a2a4  c7c6
  1373. o-o   c8b7
  1374. f3e5  d8c8
  1375. b2b3  c4b3
  1376. d1b3  b5b4
  1377. a4a5  f6d7
  1378. ! #  col. 10l; Keres-Korchnoi, Curacao 1962
  1379. d2d4  d7d5
  1380. c2c4  e7e6
  1381. g2g3  g8f6
  1382. g1f3  d5c4
  1383. d1a4  b8d7
  1384. f1g2  a7a6
  1385. a4c4  c7c5
  1386. d4c5  f8c5
  1387. o-o   b7b5
  1388. c4h4  c8b7
  1389. b1d2  c5e7
  1390. d2b3  a8c8
  1391. h4d4  o-o
  1392. c1d2  d7c5
  1393. ! #  col. -- Accelerated Catalan
  1394. d2d4  d7d5
  1395. c2c4  e7e6
  1396. g2g3  g8f6
  1397. f1g2  d5c4
  1398. d1a4  b8d7
  1399. b1d2  c7c6
  1400. a4c4  e6e5
  1401. g1f3  d7b6
  1402. c4d3  e5d4
  1403. f3d4  f8e7
  1404. o-o  o-o
  1405. ! #  col. 12e; Muller-Ratzek, Vienna 1951
  1406. d2d4  d7d5
  1407. c2c4  e7e6
  1408. g2g3  g8f6
  1409. f1g2  d5c4
  1410. d1a4  c8d7
  1411. a4c4  d7c6
  1412. g1f3  c6d5
  1413. c4d3  c7c5
  1414. b1c3  d5c6
  1415. o-o   b8d7
  1416. f1d1  d8b6
  1417. e2e4  c5d4
  1418. f3d4  f8c5
  1419. d4c6  c5f2
  1420. g1f1  b7c6
  1421. c3a4  b6a5
  1422. f1f2  a5a4
  1423. d3d6
  1424. ! #  col. 13f; Smyslov-Kere, USSR Chp. 1948
  1425. d2d4  d7d5
  1426. c2c4  e7e6
  1427. g2g3  g8f6
  1428. f1g2  d5c4
  1429. d1a4  c8d7
  1430. a4c4  d7c6
  1431. g1f3  b8d7
  1432. b1c3  d7b6
  1433. c4d3  f8b4
  1434. o-o   o-o
  1435. f1d1  h7h6
  1436. c1d2  d8e7
  1437. a2a3  b4c3
  1438. d3c3  f8d8
  1439. ! #  col. 14g
  1440. d2d4  d7d5
  1441. c2c4  e7e6
  1442. g2g3  g8f6
  1443. b1c3  d5c4
  1444. d1a4  b8c6
  1445. f1g2  c8d7
  1446. a4c4  c6b4
  1447. c4b3  c7c5
  1448. g1f3  c5d4
  1449. f3d4  e6e5
  1450. d4f3  d7e6
  1451. b3a4  e6d7
  1452. ! #  col. 15; Stoltz-Vidmar, Groningen 1946
  1453. d2d4  d7d5
  1454. c2c4  e7e6
  1455. g2g3  g8f6
  1456. b1c3  f8e7
  1457. f1g2  o-o
  1458. g1f3  d5c4
  1459. d1a4  a7a6
  1460. a4c4  b7b5
  1461. c4d3  c8b7
  1462. ! #  col. 16
  1463. d2d4  d7d5
  1464. c2c4  e7e6
  1465. g2g3  g8f6
  1466. b1d2  c7c5
  1467. d4c5  f8c5
  1468. f1g2  b8c6
  1469. g1f3  o-o
  1470. o-o   a7a5
  1471. c4d5  e6d5
  1472. d2b3  c5b6
  1473. ! #  col. 17d; Mikenas-Aronin, USSR Chp. 1963
  1474. d2d4  d7d5
  1475. c2c4  e7e6
  1476. g2g3  c7c5
  1477. c4d5  e6d5
  1478. g1f3  b8c6
  1479. f1g2  g8f6
  1480. o-o   f8e7
  1481. d4c5  e7c5
  1482. b1d2  o-o
  1483. d2b3  c5b6
  1484. b3d4  f8e8
  1485. b2b3  c6d4
  1486. f3d4  b6d4
  1487. d1d4  e8e2
  1488. ! #  col. 18e
  1489. d2d4  d7d5
  1490. c2c4  e7e6
  1491. g2g3  d5c4
  1492. d1a4  c8d7
  1493. a4c4  c7c5
  1494. d4c5  d7c6
  1495. g1f3  b8d7
  1496. c1e3  g8f6
  1497. f1g2  d8c7
  1498. o-o   c6d5
  1499. c4a4  f8c5
  1500. e3c5  c7c5
  1501. b1c3  d5c6
  1502. ! #  col. 19
  1503. d2d4  d7d5
  1504. c2c4  e7e6
  1505. g2g3  f8b4
  1506. c1d2  b4d2
  1507. d1d2  g8f6
  1508. g1f3  o-o
  1509. f1g2  d8e7
  1510. o-o   b8c6
  1511. f1c1
  1512. ! #  col. 20
  1513. d2d4  d7d5
  1514. c2c4  e7e6
  1515. g2g3  f8b4
  1516. c1d2  b4e7
  1517. f1g2  g8f6
  1518. g1f3  o-o
  1519. d1b3  b7b6
  1520. c4d5  e6d5
  1521. b1c3  c8b7
  1522. o-o
  1523. ! #  col. 21
  1524. d2d4  g8f6
  1525. c2c4  e7e6
  1526. g2g3  e6e5
  1527. g1f3  e5d4
  1528. f3d4  d7d5
  1529. f1g2  d5c4
  1530. d1a4  c7c6
  1531. a4c4  f8e7
  1532. o-o   o-o
  1533. f1d1
  1534. ! #  col. 22
  1535. d2d4  g8f6
  1536. c2c4  e7e6
  1537. g2g3  c7c5
  1538. g1f3  c5d4
  1539. f3d4  d7d5
  1540. f1g2  e6e5
  1541. d4f3  d5d4
  1542. o-o   b8c6
  1543. e2e3  f8e7
  1544. e3d4  e5d4
  1545. ! #  col. 23g
  1546. d2d4  g8f6
  1547. c2c4  e7e6
  1548. g2g3  c7c5
  1549. g1f3  c5d4
  1550. f3d4  b8c6
  1551. f1g2  d8b6
  1552. d4c2  f8c5
  1553. e2e3  o-o
  1554. b1c3  b6a6
  1555. d1d2  f8d8
  1556. a2a3  d7d5
  1557. b2b4  d5d4
  1558. c3e4
  1559. ! #  col. 24j; Smyslov-Petrosian, Moscow 1967
  1560. d2d4  g8f6
  1561. c2c4  e7e6
  1562. g2g3  f8b4
  1563. b1d2  c7c5
  1564. d4c5  b4c5
  1565. f1g2  b8c6
  1566. g1f3  b7b6
  1567. o-o   c8b7
  1568. a2a3  o-o
  1569. b2b4  c5e7
  1570. c1b2  a8c8
  1571. d1b1
  1572. ! #  col. 25
  1573. d2d4  g8f6
  1574. c2c4  e7e6
  1575. g2g3  f8b4
  1576. c1d2  b4d2
  1577. d1d2  f6e4
  1578. d2c2  f7f5
  1579. f2f3  e4f6
  1580. e2e4  f5e4
  1581. f3e4  e6e5
  1582. ! #  Alternate openings leading to the Catalan, line C
  1583. g1f3  d7d5
  1584. c2c4  e7e6
  1585. g2g3  g8f6
  1586. d2d4
  1587. ! #  line D
  1588. c2c4  g8f6
  1589. d2d4  e7e6
  1590. g2g3  d7d5
  1591. ! #  line E
  1592. d2d4  g8f6
  1593. c2c4  e7e6
  1594. g2g3  d7d5
  1595. ! #  The Reti Opening, col. 1c; Muller-Lilenthal, Budapest 1933
  1596. g1f3  d7d5
  1597. c2c4  c7c6
  1598. b2b3  g8f6
  1599. g2g3  c8f5
  1600. c1b2  e7e6
  1601. f1g2  b8d7
  1602. o-o   f8d6
  1603. d2d3  o-o
  1604. b1c3  d8e7
  1605. f1e1  e6e5
  1606. c4d5  c6d5
  1607. e2e4  d5e4
  1608. d3e4  f5g6
  1609. ! #  col. 2g; Bilek-Geller, Sousse 1967
  1610. g1f3  d7d5
  1611. c2c4  c7c6
  1612. b2b3  g8f6
  1613. g2g3  c8g4
  1614. f1g2  e7e6
  1615. c1b2  b8d7
  1616. o-o   f8e7
  1617. d2d3  o-o
  1618. b1d2  a7a5
  1619. a2a3  d8b6
  1620. d1c2  h7h6
  1621. b2c3  f8c8
  1622. f1e1  b6d8
  1623. e2e4  d8f8
  1624. ! #  col. 3k; Botvinnik-Fine, Nottingham 1936
  1625. g1f3  d7d5
  1626. c2c4  d5c4
  1627. b1a3  c7c5
  1628. a3c4  b8c6
  1629. g2g3  e7e5
  1630. f1g2  f7f6
  1631. b2b3  g8e7
  1632. c1b2  e7d5
  1633. o-o   f8e7
  1634. f3h4  o-o
  1635. d1b1  f8f7
  1636. h4f5  c8e6
  1637. f2f4  e5f4
  1638. g3f4  d5b6
  1639. g2e4  e6c4
  1640. ! #  col. 4n; Katetov-Alekhin, Prague 1943
  1641. g1f3  d7d5
  1642. c2c4  d5d4
  1643. e2e3  b8c6
  1644. e3d4  c6d4
  1645. f3d4  d8d4
  1646. b1c3  e7e5
  1647. d2d3  f8c5
  1648. c1e3  d4d6
  1649. c3b5  d6e7
  1650. e3c5  e7c5
  1651. d3d4  e5d4
  1652. d1d4  c5d4
  1653. b5d4  c8g4
  1654. ! #  col. 5o
  1655. g1f3  d7d5
  1656. c2c4  d5d4
  1657. e2e3  c7c5
  1658. e3d4  c5d4
  1659. g2g3  b8c6
  1660. f1g2  g7g6
  1661. d2d3  f8g7
  1662. o-o   e7e5
  1663. f1e1  f7f6
  1664. b2b4  c6b4
  1665. d1a4  b4c6
  1666. f3d4  d8d4
  1667. g2c6  c8d7
  1668. ! #  col. 6
  1669. g1f3  d7d5
  1670. c2c4  e7e6
  1671. g2g3  g8f6
  1672. f1g2  f8e7
  1673. o-o   o-o
  1674. b2b3  c7c5
  1675. c4d5  f6d5
  1676. c1b2  b8c6
  1677. d2d4  d5b4
  1678. a2a3  b4a6
  1679. d4c5  d8d1
  1680. ! #  col. 7
  1681. g1f3  d7d5
  1682. c2c4  e7e6
  1683. g2g3  g8f6
  1684. f1g2  f8e7
  1685. b1c3  o-o
  1686. b2b3  c7c5
  1687. c1b2  b8c6
  1688. c4d5  e6d5
  1689. a1c1  c8e6
  1690. o-o   a8c8
  1691. d2d4  f8e8
  1692. ! #  col. 8g; Kashdan-Horowitz, New York 1931
  1693. g1f3  d7d5
  1694. c2c4  e7e6
  1695. g2g3  g8f6
  1696. f1g2  b8d7
  1697. b2b3  c7c6
  1698. o-o   f8d6
  1699. c1b2  o-o
  1700. b1c3  b7b6
  1701. d2d3  c8b7
  1702. e2e4  d5e4
  1703. d3e4  d8c7
  1704. d1e2  f8d8
  1705. f1d1
  1706. ! #  col. 9h; Abroshin-Krykov corr. 1960
  1707. g1f3  d7d5
  1708. c2c4  e7e6
  1709. g2g3  g8f6
  1710. f1g2  d5c4
  1711. d1a4  c8d7
  1712. a4c4  d7c6
  1713. o-o   c6d5
  1714. c4a4  d8d7
  1715. a4c2  b8c6
  1716. b1c3  d5f3
  1717. g2f3  c6d4
  1718. c2d3  c7c6
  1719. ! #  col. 10m; Teti-Tartakover, Semmering 1926
  1720. g1f3  d7d5
  1721. c2c4  e7e6
  1722. g2g3  d5c4
  1723. d1a4  c8d7
  1724. a4c4  c7c5
  1725. f3e5  b8c6
  1726. e5d7  d8d7
  1727. f1g2  g8f6
  1728. d2d3  f8e7
  1729. o-o   c6d4
  1730. b1c3  a8d8
  1731. a2a4  f6d5
  1732. ! #  Barcza System, col. 11
  1733. g1f3  d7d5
  1734. g2g3  g8f6
  1735. f1g2  c8f5
  1736. o-o   c7c6
  1737. c2c4  d5c4
  1738. b1a3  e7e5
  1739. a3c4  e5e4
  1740. f3e1  f8c5
  1741. d2d3  o-o
  1742. c1e3  b8d7
  1743. ! #  col. 12d; Benko-Petrosian, Curacao 1962
  1744. g1f3  d7d5
  1745. g2g3  g8f6
  1746. f1g2  c8f5
  1747. o-o   c7c6
  1748. d2d3  b8d7
  1749. b1d2  h7h6
  1750. d1e1  e7e6
  1751. e2e4  f5h7
  1752. e1e2  f8e7
  1753. e4e5  f6g8
  1754. d2b3  e7f8
  1755. c2c4  g8e7
  1756. b3d4  e7f5
  1757. d4f5  h7f5
  1758. c4d5  c6d5
  1759. d3d4  a7a5
  1760. c1e3  f8e7
  1761. f1c1  o-o
  1762. ! #  col. 13f; Bronstein-O'Kelly, Beverwijk 1963
  1763. g1f3  d7d5
  1764. g2g3  g8f6
  1765. f1g2  c7c5
  1766. o-o   e7e6
  1767. d2d3  b8c6
  1768. b1d2  f8e7
  1769. e2e4  o-o
  1770. f1e1  d8c7
  1771. e4e5  f6d7
  1772. d1e2  b7b5
  1773. h2h4  a7a5
  1774. d2f1  c8a6
  1775. f1h2  c6b4
  1776. h4h5
  1777. ! #  col. 14i; Evans-Olafsson, Dallas 1957
  1778. g1f3  d7d5
  1779. g2g3  g8f6
  1780. f1g2  g7g6
  1781. o-o   f8g7
  1782. d2d3  o-o
  1783. b1d2  b8c6
  1784. e2e4  e7e5
  1785. c2c3  a7a5
  1786. f1e1  d5e4
  1787. d3e4  f6d7
  1788. d1e2  b7b6
  1789. d2c4  c8a6
  1790. g2f1  d8f6
  1791. ! #  col. 15
  1792. g1f3  d7d5
  1793. g2g3  g8f6
  1794. f1g2  g7g6
  1795. d2d4  f8g7
  1796. o-o   c7c6
  1797. b2b3  b8d7
  1798. c1b2  e7e5
  1799. d4e5  f6g4
  1800. b1d2  d7e5
  1801. f3e5  g4e5
  1802. ! #  col. 16d; Larsen-Mecking, Mallorca 1969
  1803. g1f3  d7d5
  1804. g2g3  c7c5
  1805. f1g2  b8c6
  1806. o-o   e7e6
  1807. d2d3  g7g6
  1808. b1c3  f8g7
  1809. a2a3  g8e7
  1810. a1b1  o-o
  1811. c1d2  a8b8
  1812. b2b4  c5b4
  1813. a3b4  b7b5
  1814. e2e4  a7a5
  1815. ! #  col. 17h; Benko-Bisguier, US Chp. 1963
  1816. g1f3  d7d5
  1817. g2g3  c8g4
  1818. f1g2  b8d7
  1819. c2c4  c7c6
  1820. c4d5  c6d5
  1821. b1c3  e7e6
  1822. d1b3  d8b6
  1823. b3b6  d7b6
  1824. d2d3  a8c8
  1825. c1e3  f8d6
  1826. c3b5  d6b8
  1827. o-o   g8e7
  1828. f1c1  c8c1
  1829. a1c1  e7c6
  1830. f3d4  e8d7
  1831. ! #  col. 18j; Keene-Basman, Hastings 1966-7
  1832. g1f3  d7d5
  1833. g2g3  c8g4
  1834. f1g2  g8f6
  1835. c2c4  c7c6
  1836. c4d5  g4f3
  1837. g2f3  c6d5
  1838. d1b3  d8d7
  1839. b1c3  e7e6
  1840. o-o   b8c6
  1841. f3g2  f8e7
  1842. d2d3  o-o
  1843. ! #  col. 19k
  1844. g1f3  d7d5
  1845. g2g3  c8g4
  1846. f1g2  g8f6
  1847. c2c4  c7c6
  1848. d1c2  e7e6
  1849. o-o   f8e7
  1850. b2b3  b8d7
  1851. c1b2  o-o
  1852. d2d3  a7a5
  1853. b1d2  a5a4
  1854. b2c3  a4b3
  1855. a2b3  d8b6
  1856. ! #  col. 20m
  1857. g1f3  d7d5
  1858. g2g3  c8g4
  1859. f1g2  g8f6
  1860. o-o   c7c6
  1861. c2c4  e7e6
  1862. c4d5  g4f3
  1863. g2f3  c6d5
  1864. b1c3  b8c6
  1865. d2d3  f8e7
  1866. f3g2
  1867. ! #  col. 21b; Savon-Aronin, USSR 1963
  1868. g1f3  d7d5
  1869. g2g3  b8c6
  1870. d2d4  c8f5
  1871. f1g2  c6b4
  1872. b1a3  e7e6
  1873. o-o   g8f6
  1874. f3h4  f5g4
  1875. c2c4  c7c6
  1876. a3c2  b4c2
  1877. d1c2  f8e7
  1878. h2h3  g4h5
  1879. f2f3  h5g6
  1880. h4g6  h7g6
  1881. ! #  col. 22d; Fischer-Ivkov, Santa Monica 1966
  1882. g1f3  d7d5
  1883. g2g3  e7e6
  1884. f1g2  c7c5
  1885. o-o   b8c6
  1886. d2d3  f8d6
  1887. e2e4  g8e7
  1888. b1d2  o-o
  1889. f3h4  b7b6
  1890. f2f4  d5e4
  1891. d3e4  c8a6
  1892. f1e1  c5c4
  1893. c2c3
  1894. ! #  col. 23
  1895. g1f3  d7d5
  1896. g2g3  b8d7
  1897. c2c4  e7e6
  1898. f1g2  g8f6
  1899. b1c3  f8e7
  1900. o-o   o-o
  1901. d2d3  c7c5
  1902. c4d5  e6d5
  1903. c1g5  b7b6
  1904. ! #  col. 24g; Benko-Bisguier, US Chp. 1976-7
  1905. g1f3  d7d5
  1906. g2g3  g8f6
  1907. f1g2  b7b6
  1908. c2c4  e7e6
  1909. c4d5  e6d5
  1910. o-o   f8d6
  1911. d2d4  o-o
  1912. b1c3  c7c6
  1913. f3e5  c8b7
  1914. c1g5  h7h6
  1915. g5f6  d8f6
  1916. f2f4  f8d8
  1917. e2e4
  1918. ! #  col. 25; Rabinovich-Rauser, Moscow 1934
  1919. g1f3  d7d5
  1920. b2b3  c8g4
  1921. c1b2  b8d7
  1922. c2c4  e7e6
  1923. e2e3  g8f6
  1924. f1e2  c7c6
  1925. f3d4  g4e2
  1926. d1e2  f8d6
  1927. f2f4  o-o
  1928. ! #  col. 26e; Evans-Najdorf, Dallas 1967
  1929. g1f3  c7c5
  1930. g2g3  b8c6
  1931. f1g2  g7g6
  1932. o-o   f8g7
  1933. e2e4  d7d6
  1934. c2c3  e7e5
  1935. d2d3  g8h6
  1936. f3e1  o-o
  1937. f2f4  e5f4
  1938. c1f4  h6g4
  1939. b1a3  g4e5
  1940. g1h1  d8b6
  1941. d1d2  c8e6
  1942. ! #  col. 27h; Van den Pol-Barden, Holland v. England 1960
  1943. g1f3  f7f5
  1944. g2g3  g8f6
  1945. f1g2  g7g6
  1946. d2d3  f8g7
  1947. b1d2  d7d6
  1948. e2e4  e7e5
  1949. d2c4  o-o
  1950. e4f5  g6f5
  1951. c1e3  b8c6
  1952. d3d4  e5e4
  1953. ! #  col. 28m; Gufeld-Bokuchava, USSR Chp. prelims 1968
  1954. g1f3  f7f5
  1955. g2g3  g8f6
  1956. f1g2  e7e6
  1957. c2c4  f8e7
  1958. o-o   o-o
  1959. d2d3  d7d6
  1960. b1c3  b8c6
  1961. a1b1  a7a5
  1962. a2a3  d8e8
  1963. b2b4  a5b4
  1964. a3b4  e6e5
  1965. ! #  col. 29p; Lundin-Tartakover, Groningen 1946
  1966. g1f3  f7f5
  1967. g2g3  g8f6
  1968. f1g2  e7e6
  1969. c2c4  f8e7
  1970. o-o   o-o
  1971. b2b3  c7c5
  1972. c1b2  b8c6
  1973. b1c3  e6e5
  1974. e2e3  d7d6
  1975. d2d4
  1976. ! #  col. 30
  1977. g1f3  g7g6
  1978. g2g3  f8g7
  1979. f1g2  e7e5
  1980. d2d3  b8c6
  1981. e2e4  d7d6
  1982. b1c3  g8e7
  1983. c1e3  o-o
  1984. d1d2  c6d4
  1985. o-o
  1986. ! #  King's Indian attack, col. 31a
  1987. g1f3  g8f6
  1988. g2g3  b7b5
  1989. h2h4  b5b4
  1990. d2d3  c8b7
  1991. e2e4  d7d6
  1992. f1g2  b8d7
  1993. o-o   e7e6
  1994. h4h5  a8b8
  1995. b1d2  f8e7
  1996. d2c4  o-o
  1997. ! #  col. 32d
  1998. g1f3  g8f6
  1999. g2g3  g7g6
  2000. b2b4  f8g7
  2001. c1b2  o-o
  2002. f1g2  d7d5
  2003. o-o   c8g4
  2004. c2c4  c7c6
  2005. b1a3  b8d7
  2006. a1c1  a7a5
  2007. b4b5  a5a4
  2008. d2d3  e7e5
  2009. ! #  col. 33e; Olafsson-Kavalek, Wijik aan Zee 1969
  2010. g1f3  g8f6
  2011. g2g3  g7g6
  2012. b2b3  f8g7
  2013. c1b2  o-o
  2014. f1g2  d7d6
  2015. d2d4  f6d7
  2016. b1c3  e7e5
  2017. d1d2  f8e8
  2018. d4e5  d7e5
  2019. f3e5  g7e5
  2020. ! #  col. 34h
  2021. g1f3  g8f6
  2022. g2g3  g7g6
  2023. c2c4  d7d6
  2024. f1g2  f8g7
  2025. o-o   o-o
  2026. b1c3  b8d7
  2027. d2d3  e7e5
  2028. c1d2  d7c5
  2029. b2b4  c5e6
  2030. a1b1  f6e8
  2031. a2a4  c7c6
  2032. a4a5  e8c7
  2033. ! #  col. 35
  2034. g1f3  g8f6
  2035. c2c4  g7g6
  2036. b2b3  f8g7
  2037. c1b2  o-o
  2038. e2e3  d7d6
  2039. f1e2  e7e5
  2040. o-o   f8e8
  2041. b1c3  b8d7
  2042. d2d3  c7c6
  2043. ! #  col. 36d
  2044. g1f3  g8f6
  2045. c2c4  g7g6
  2046. b1c3  d7d5
  2047. c4d5  f6d5
  2048. d1a4  c8d7
  2049. a4b3  d5b6
  2050. d2d4  f8g7
  2051. c1f4  d7e6
  2052. b3c2  b8c6
  2053. a1d1
  2054. ! #  col. 37f
  2055. g1f3  g8f6
  2056. c2c4  b7b6
  2057. g2g3  c8b7
  2058. f1g2  c7c5
  2059. o-o   g7g6
  2060. b2b3  f8g7
  2061. c1b2  o-o
  2062. b1c3  d7d5
  2063. c3d5  f6d5
  2064. b2g7  g8g7
  2065. c4d5  d8d5
  2066. d2d4  b8a6
  2067. ! #  col. 38h; Geller-Kholmov, Moscow 1969
  2068. g1f3  g8f6
  2069. c2c4  b7b6
  2070. g2g3  c8b7
  2071. f1g2  e7e6
  2072. o-o   f8e7
  2073. b2b3  o-o
  2074. c1b2  d7d5
  2075. e2e3  b8d7
  2076. b1c3  f6e4
  2077. c4d5  e4c3
  2078. b2c3  e6d5
  2079. ! #  col. 39
  2080. g1f3  g8f6
  2081. b2b3  g7g6
  2082. c2c4  f8g7
  2083. c1b2  o-o
  2084. g2g3  c7c5
  2085. f1g2  b7b6
  2086. o-o   c8b7
  2087. b1c3  e7e6
  2088. a1b1  d8e7
  2089. ! #  col. 40o; Lombardy-Burger, US Chp. 1969-70
  2090. g1f3  g8f6
  2091. b2b3  d7d5
  2092. c1b2  e7e6
  2093. e2e3  f8e7
  2094. c2c4  o-o
  2095. d2d4  b7b6
  2096. f1d3  c8b7
  2097. o-o   b8d7
  2098. b1d2  c7c5
  2099. d1e2  f6e4
  2100. a1c1  a8c8
  2101. !
  2102. SHAR_EOF
  2103. echo 'File gnuchess.book is complete' &&
  2104. chmod 0444 gnuchess.book ||
  2105. echo 'restore of gnuchess.book failed'
  2106. Wc_c="`wc -c < 'gnuchess.book'`"
  2107. test 47344 -eq "$Wc_c" ||
  2108.     echo 'gnuchess.book: original size 47344, current size' "$Wc_c"
  2109. rm -f _shar_wnt_.tmp
  2110. fi
  2111. # ============= gnuchess.c ==============
  2112. if test -f 'gnuchess.c' -a X"$1" != X"-c"; then
  2113.     echo 'x - skipping gnuchess.c (File already exists)'
  2114.     rm -f _shar_wnt_.tmp
  2115. else
  2116. > _shar_wnt_.tmp
  2117. echo 'x - extracting gnuchess.c (Text)'
  2118. sed 's/^X//' << 'SHAR_EOF' > 'gnuchess.c' &&
  2119. /*
  2120. X  gnuchess.c - C source for GNU CHESS
  2121. X
  2122. X  Revision: 1991-04-15
  2123. X
  2124. X  Copyright (C) 1986, 1987, 1988, 1989, 1990 Free Software Foundation, Inc.
  2125. X  Copyright (c) 1988, 1989, 1990  John Stanback
  2126. X
  2127. X  This file is part of CHESS.
  2128. X
  2129. X  CHESS is distributed in the hope that it will be useful, but WITHOUT ANY
  2130. X  WARRANTY.  No author or distributor accepts responsibility to anyone for
  2131. X  the consequences of using it or for whether it serves any particular
  2132. X  purpose or works at all, unless he says so in writing.  Refer to the CHESS
  2133. X  General Public License for full details.
  2134. X
  2135. X  Everyone is granted permission to copy, modify and redistribute CHESS, but
  2136. X  only under the conditions described in the CHESS General Public License.
  2137. X  A copy of this license is supposed to have been given to you along with
  2138. X  CHESS so you can know your rights and responsibilities.  It should be in a
  2139. X  file named COPYING.  Among other things, the copyright notice and this
  2140. X  notice must be preserved on all copies.
  2141. */
  2142. X
  2143. X
  2144. #include "gnuchess.h"
  2145. X
  2146. #include <ctype.h>
  2147. X
  2148. #ifdef MSDOS
  2149. #include <stdlib.h>
  2150. #include <string.h>
  2151. #include <time.h>
  2152. #define RWA_ACC "r+b"
  2153. #define WA_ACC "w+b"
  2154. #else
  2155. #define RWA_ACC "r+"
  2156. #define WA_ACC "w+"
  2157. #include <sys/param.h>
  2158. #include <sys/types.h>
  2159. #include <sys/times.h>
  2160. #endif /* MSDOS */
  2161. X
  2162. /* <stdlib.h> */
  2163. extern int abs (int);
  2164. extern int atoi (const char *);
  2165. /* <time.h> */
  2166. extern long int time (long int *);
  2167. /* <string.h> */
  2168. extern void *memset (void *, int, size_t);
  2169. X
  2170. #define valueP 100
  2171. #define valueN 350
  2172. #define valueB 355
  2173. #define valueR 550
  2174. #define valueQ 1100
  2175. #define valueK 1200
  2176. #define ctlP 0x4000
  2177. #define ctlN 0x2800
  2178. #define ctlB 0x1800
  2179. #define ctlR 0x0400
  2180. #define ctlQ 0x0200
  2181. #define ctlK 0x0100
  2182. #define ctlBQ 0x1200
  2183. #define ctlBN 0x0800
  2184. #define ctlRQ 0x0600
  2185. #define ctlNN 0x2000
  2186. #define Patak(c, u) (atak[c][u] > ctlP)
  2187. #define Anyatak(c, u) (atak[c][u] > 0)
  2188. X
  2189. #if ttblsz
  2190. #define truescore 0x0001
  2191. #define lowerbound 0x0002
  2192. #define upperbound 0x0004
  2193. #define kingcastle 0x0008
  2194. #define queencastle 0x0010
  2195. X
  2196. struct hashval
  2197. {
  2198. X  unsigned long key, bd;
  2199. };
  2200. struct hashentry
  2201. {
  2202. X  unsigned long hashbd;
  2203. X  unsigned short mv;
  2204. X  unsigned char flags, depth;    /* char saves some space */
  2205. X  short score;
  2206. #ifdef HASHTEST
  2207. X  unsigned char bd[32];
  2208. #endif /* HASHTEST */
  2209. X
  2210. };
  2211. X
  2212. #ifdef HASHFILE
  2213. /*
  2214. X  persistent transposition table.
  2215. X  The size must be a power of 2. If you change the size,
  2216. X  be sure to run gnuchess -c before anything else.
  2217. */
  2218. #define frehash 6
  2219. #ifdef MSDOS
  2220. #define Deffilesz (1 << 11) -1
  2221. #else
  2222. #define Deffilesz (1 << 17) -1
  2223. #endif /* MSDOS */
  2224. struct fileentry
  2225. {
  2226. X  unsigned char bd[32];
  2227. X  unsigned char f, t, flags, depth, sh, sl;
  2228. };
  2229. X
  2230. /*
  2231. X  In a networked enviroment gnuchess might be compiled on different
  2232. X  hosts with different random number generators, that is not acceptable
  2233. X  if they are going to share the same transposition table.
  2234. */
  2235. unsigned long int next = 1;
  2236. X
  2237. unsigned int
  2238. urand (void)
  2239. {
  2240. X  next *= 1103515245;
  2241. X  next += 12345;
  2242. X  return ((unsigned int) (next >> 16) & 0xFFFF);
  2243. }
  2244. X
  2245. void
  2246. srand (unsigned int seed)
  2247. {
  2248. X  next = seed;
  2249. }
  2250. X
  2251. #else
  2252. #define urand rand
  2253. #endif /* HASHFILE */
  2254. X
  2255. static unsigned long hashkey, hashbd;
  2256. static struct hashval hashcode[2][7][64];
  2257. static struct hashentry huge ttable[2][ttblsz];
  2258. #endif /* ttblsz */
  2259. static short rpthash[2][256];
  2260. X
  2261. FILE *hashfile;
  2262. char savefile[128] = "";
  2263. char listfile[128] = "";
  2264. struct leaf Tree[2000], *root;
  2265. short TrPnt[maxdepth];
  2266. short PieceList[2][16], PawnCnt[2][8];
  2267. #define wking PieceList[white][0]
  2268. #define bking PieceList[black][0]
  2269. #define EnemyKing PieceList[c2][0]
  2270. short castld[2], Mvboard[64];
  2271. short svalue[64];
  2272. struct flags flag;
  2273. short opponent, computer, Awindow, Bwindow, dither, INCscore;
  2274. long ResponseTime, ExtraTime, Level, et, et0, time0, ft;
  2275. long NodeCnt, ETnodes, EvalNodes, HashCnt, HashAdd, FHashCnt, FHashAdd, HashCol,
  2276. X filesz;
  2277. short HashDepth = 4, HashMoveLimit = 12;
  2278. short player, xwndw, rehash;
  2279. struct GameRec GameList[200];
  2280. short Sdepth, GameCnt, Game50, MaxSearchDepth;
  2281. short epsquare, contempt;
  2282. struct BookEntry *Book, *BKBook;
  2283. struct TimeControlRec TimeControl;
  2284. short TCflag, TCmoves, TCminutes, OperatorTime;
  2285. const short otherside[3] =
  2286. {1, 0, 2};
  2287. unsigned short hint, PrVar[maxdepth];
  2288. X
  2289. static short Pindex[64];
  2290. static short PieceCnt[2];
  2291. static short c1, c2, *atk1, *atk2, *PC1, *PC2, atak[2][64];
  2292. static short mtl[2], pmtl[2], emtl[2], hung[2];
  2293. static short FROMsquare, TOsquare, Zscore, zwndw;
  2294. static short HasKnight[2], HasBishop[2], HasRook[2], HasQueen[2];
  2295. static short ChkFlag[maxdepth], CptrFlag[maxdepth], PawnThreat[maxdepth];
  2296. static short Pscore[maxdepth], Tscore[maxdepth];
  2297. static const short qrook[3] =
  2298. {0, 56, 0};
  2299. static const short krook[3] =
  2300. {7, 63, 0};
  2301. static const short kingP[3] =
  2302. {4, 60, 0};
  2303. static const short rank7[3] =
  2304. {6, 1, 0};
  2305. static const short sweep[8] =
  2306. {false, false, false, true, true, true, false, false};
  2307. static unsigned short killr0[maxdepth], killr1[maxdepth];
  2308. static unsigned short killr2[maxdepth], killr3[maxdepth];
  2309. static unsigned short PV, Swag0, Swag1, Swag2, Swag3, Swag4;
  2310. static unsigned char history[8192], *ih;
  2311. X
  2312. static short Mwpawn[64], Mbpawn[64], Mknight[2][64], Mbishop[2][64];
  2313. static short Mking[2][64], Kfield[2][64];
  2314. static const short value[7] =
  2315. {0, valueP, valueN, valueB, valueR, valueQ, valueK};
  2316. static const short control[7] =
  2317. {0, ctlP, ctlN, ctlB, ctlR, ctlQ, ctlK};
  2318. static const short PassedPawn0[8] =
  2319. {0, 60, 80, 120, 200, 360, 600, 800};
  2320. static const short PassedPawn1[8] =
  2321. {0, 30, 40, 60, 100, 180, 300, 800};
  2322. static const short PassedPawn2[8] =
  2323. {0, 15, 25, 35, 50, 90, 140, 800};
  2324. static const short PassedPawn3[8] =
  2325. {0, 5, 10, 15, 20, 30, 140, 800};
  2326. static const short ISOLANI[8] =
  2327. {-12, -16, -20, -24, -24, -20, -16, -12};
  2328. static const short BACKWARD[16] =
  2329. {-6, -10, -15, -21, -28, -28, -28, -28,
  2330. X -28, -28, -28, -28, -28, -28, -28, -28};
  2331. static const short BMBLTY[14] =
  2332. {-2, 0, 2, 4, 6, 8, 10, 12, 13, 14, 15, 16, 16, 16};
  2333. static const short RMBLTY[15] =
  2334. {0, 2, 4, 6, 8, 10, 11, 12, 13, 14, 14, 14, 14, 14, 14};
  2335. static const short KTHRT[36] =
  2336. {0, -8, -20, -36, -52, -68, -80, -80, -80, -80, -80, -80,
  2337. X -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
  2338. X -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80};
  2339. static short KNIGHTPOST, KNIGHTSTRONG, BISHOPSTRONG, KATAK;
  2340. static short PEDRNK2B, PWEAKH, PADVNCM, PADVNCI, PAWNSHIELD, PDOUBLED, PBLOK;
  2341. static short RHOPN, RHOPNX, KHOPN, KHOPNX, KSFTY;
  2342. static short ATAKD, HUNGP, HUNGX, KCASTLD, KMOVD, XRAY, PINVAL;
  2343. static short stage, stage2, Developed[2];
  2344. static short PawnBonus, BishopBonus, RookBonus;
  2345. static const short KingOpening[64] =
  2346. {0, 0, -4, -10, -10, -4, 0, 0,
  2347. X -4, -4, -8, -12, -12, -8, -4, -4,
  2348. X -12, -16, -20, -20, -20, -20, -16, -12,
  2349. X -16, -20, -24, -24, -24, -24, -20, -16,
  2350. X -16, -20, -24, -24, -24, -24, -20, -16,
  2351. X -12, -16, -20, -20, -20, -20, -16, -12,
  2352. X -4, -4, -8, -12, -12, -8, -4, -4,
  2353. X 0, 0, -4, -10, -10, -4, 0, 0};
  2354. static const short KingEnding[64] =
  2355. {0, 6, 12, 18, 18, 12, 6, 0,
  2356. X 6, 12, 18, 24, 24, 18, 12, 6,
  2357. X 12, 18, 24, 30, 30, 24, 18, 12,
  2358. X 18, 24, 30, 36, 36, 30, 24, 18,
  2359. X 18, 24, 30, 36, 36, 30, 24, 18,
  2360. X 12, 18, 24, 30, 30, 24, 18, 12,
  2361. X 6, 12, 18, 24, 24, 18, 12, 6,
  2362. X 0, 6, 12, 18, 18, 12, 6, 0};
  2363. static const short DyingKing[64] =
  2364. {0, 8, 16, 24, 24, 16, 8, 0,
  2365. X 8, 32, 40, 48, 48, 40, 32, 8,
  2366. X 16, 40, 56, 64, 64, 56, 40, 16,
  2367. X 24, 48, 64, 72, 72, 64, 48, 24,
  2368. X 24, 48, 64, 72, 72, 64, 48, 24,
  2369. X 16, 40, 56, 64, 64, 56, 40, 16,
  2370. X 8, 32, 40, 48, 48, 40, 32, 8,
  2371. X 0, 8, 16, 24, 24, 16, 8, 0};
  2372. static const short KBNK[64] =
  2373. {99, 90, 80, 70, 60, 50, 40, 40,
  2374. X 90, 80, 60, 50, 40, 30, 20, 40,
  2375. X 80, 60, 40, 30, 20, 10, 30, 50,
  2376. X 70, 50, 30, 10, 0, 20, 40, 60,
  2377. X 60, 40, 20, 0, 10, 30, 50, 70,
  2378. X 50, 30, 10, 20, 30, 40, 60, 80,
  2379. X 40, 20, 30, 40, 50, 60, 80, 90,
  2380. X 40, 40, 50, 60, 70, 80, 90, 99};
  2381. static const short pknight[64] =
  2382. {0, 4, 8, 10, 10, 8, 4, 0,
  2383. X 4, 8, 16, 20, 20, 16, 8, 4,
  2384. X 8, 16, 24, 28, 28, 24, 16, 8,
  2385. X 10, 20, 28, 32, 32, 28, 20, 10,
  2386. X 10, 20, 28, 32, 32, 28, 20, 10,
  2387. X 8, 16, 24, 28, 28, 24, 16, 8,
  2388. X 4, 8, 16, 20, 20, 16, 8, 4,
  2389. X 0, 4, 8, 10, 10, 8, 4, 0};
  2390. static const short pbishop[64] =
  2391. {14, 14, 14, 14, 14, 14, 14, 14,
  2392. X 14, 22, 18, 18, 18, 18, 22, 14,
  2393. X 14, 18, 22, 22, 22, 22, 18, 14,
  2394. X 14, 18, 22, 22, 22, 22, 18, 14,
  2395. X 14, 18, 22, 22, 22, 22, 18, 14,
  2396. X 14, 18, 22, 22, 22, 22, 18, 14,
  2397. X 14, 22, 18, 18, 18, 18, 22, 14,
  2398. X 14, 14, 14, 14, 14, 14, 14, 14};
  2399. static const short PawnAdvance[64] =
  2400. {0, 0, 0, 0, 0, 0, 0, 0,
  2401. X 4, 4, 4, 0, 0, 4, 4, 4,
  2402. X 6, 8, 2, 10, 10, 2, 8, 6,
  2403. X 6, 8, 12, 16, 16, 12, 8, 6,
  2404. X 8, 12, 16, 24, 24, 16, 12, 8,
  2405. X 12, 16, 24, 32, 32, 24, 16, 12,
  2406. X 12, 16, 24, 32, 32, 24, 16, 12,
  2407. X 0, 0, 0, 0, 0, 0, 0, 0};
  2408. X
  2409. X
  2410. /* .... MOVE GENERATION VARIABLES AND INITIALIZATIONS .... */
  2411. X
  2412. X
  2413. #define taxicab(a,b) taxidata[a][b]
  2414. short distdata[64][64], taxidata[64][64];
  2415. X
  2416. static inline void
  2417. Initialize_dist (void)
  2418. {
  2419. X  register short a, b, d, di;
  2420. X
  2421. X  for (a = 0; a < 64; a++)
  2422. X    for (b = 0; b < 64; b++)
  2423. X      {
  2424. X    d = abs (column (a) - column (b));
  2425. X    di = abs (row (a) - row (b));
  2426. X    taxidata[a][b] = d + di;
  2427. X    distdata[a][b] = (d > di ? d : di);
  2428. X      }
  2429. }
  2430. X
  2431. const short Stboard[64] =
  2432. {rook, knight, bishop, queen, king, bishop, knight, rook,
  2433. X pawn, pawn, pawn, pawn, pawn, pawn, pawn, pawn,
  2434. X 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  2435. X 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  2436. X pawn, pawn, pawn, pawn, pawn, pawn, pawn, pawn,
  2437. X rook, knight, bishop, queen, king, bishop, knight, rook};
  2438. const short Stcolor[64] =
  2439. {white, white, white, white, white, white, white, white,
  2440. X white, white, white, white, white, white, white, white,
  2441. X 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  2442. X 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  2443. X black, black, black, black, black, black, black, black,
  2444. X black, black, black, black, black, black, black, black};
  2445. short board[64], color[64];
  2446. static unsigned char nextpos[8][64][64];
  2447. static unsigned char nextdir[8][64][64];
  2448. /*
  2449. X  ptype is used to separate white and black pawns, like this;
  2450. X  ptyp = ptype[side][piece]
  2451. X  piece can be used directly in nextpos/nextdir when generating moves
  2452. X  for pieces that are not black pawns.
  2453. */
  2454. static const short ptype[2][8] =
  2455. {
  2456. X  no_piece, pawn, knight, bishop, rook, queen, king, no_piece,
  2457. X  no_piece, bpawn, knight, bishop, rook, queen, king, no_piece};
  2458. static const short direc[8][8] =
  2459. {
  2460. X  0, 0, 0, 0, 0, 0, 0, 0,
  2461. X  10, 9, 11, 0, 0, 0, 0, 0,
  2462. X  8, -8, 12, -12, 19, -19, 21, -21,
  2463. X  9, 11, -9, -11, 0, 0, 0, 0,
  2464. X  1, 10, -1, -10, 0, 0, 0, 0,
  2465. X  1, 10, -1, -10, 9, 11, -9, -11,
  2466. X  1, 10, -1, -10, 9, 11, -9, -11,
  2467. X  -10, -9, -11, 0, 0, 0, 0, 0};
  2468. static const short max_steps[8] =
  2469. {0, 2, 1, 7, 7, 7, 1, 2};
  2470. static const short nunmap[120] =
  2471. {
  2472. X  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  2473. X  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  2474. X  -1, 0, 1, 2, 3, 4, 5, 6, 7, -1,
  2475. X  -1, 8, 9, 10, 11, 12, 13, 14, 15, -1,
  2476. X  -1, 16, 17, 18, 19, 20, 21, 22, 23, -1,
  2477. X  -1, 24, 25, 26, 27, 28, 29, 30, 31, -1,
  2478. X  -1, 32, 33, 34, 35, 36, 37, 38, 39, -1,
  2479. X  -1, 40, 41, 42, 43, 44, 45, 46, 47, -1,
  2480. X  -1, 48, 49, 50, 51, 52, 53, 54, 55, -1,
  2481. X  -1, 56, 57, 58, 59, 60, 61, 62, 63, -1,
  2482. X  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  2483. X  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1};
  2484. X
  2485. X
  2486. void
  2487. Initialize_moves (void)
  2488. X
  2489. /*
  2490. X  This procedure pre-calculates all moves for every piece from every square.
  2491. X  This data is stored in nextpos/nextdir and used later in the move generation
  2492. X  routines.
  2493. */
  2494. X
  2495. {
  2496. X  short ptyp, po, p0, d, di, s, delta;
  2497. X  unsigned char *ppos, *pdir;
  2498. X  short dest[8][8];
  2499. X  short steps[8];
  2500. X  short sorted[8];
  2501. X
  2502. X  for (ptyp = 0; ptyp < 8; ptyp++)
  2503. X    for (po = 0; po < 64; po++)
  2504. X      for (p0 = 0; p0 < 64; p0++)
  2505. X    {
  2506. X      nextpos[ptyp][po][p0] = (unsigned char) po;
  2507. X      nextdir[ptyp][po][p0] = (unsigned char) po;
  2508. X    }
  2509. X  for (ptyp = 1; ptyp < 8; ptyp++)
  2510. X    for (po = 21; po < 99; po++)
  2511. X      if (nunmap[po] >= 0)
  2512. X    {
  2513. X      ppos = nextpos[ptyp][nunmap[po]];
  2514. X      pdir = nextdir[ptyp][nunmap[po]];
  2515. X      /* dest is a function of direction and steps */
  2516. X      for (d = 0; d < 8; d++)
  2517. X        {
  2518. X          dest[d][0] = nunmap[po];
  2519. X          delta = direc[ptyp][d];
  2520. X          if (delta != 0)
  2521. X        {
  2522. X          p0 = po;
  2523. X          for (s = 0; s < max_steps[ptyp]; s++)
  2524. X            {
  2525. X              p0 = p0 + delta;
  2526. X              /*
  2527. X            break if (off board) or
  2528. X            (pawns only move two steps from home square)
  2529. X              */
  2530. X              if (nunmap[p0] < 0 || (ptyp == pawn || ptyp == bpawn)
  2531. X              && s > 0 && (d > 0 || Stboard[nunmap[po]] != pawn))
  2532. X            break;
  2533. X              else
  2534. X            dest[d][s] = nunmap[p0];
  2535. X            }
  2536. X        }
  2537. X          else
  2538. X        s = 0;
  2539. X
  2540. X          /*
  2541. X            sort dest in number of steps order
  2542. X            currently no sort is done due to compability with
  2543. X            the move generation order in old gnu chess
  2544. X          */
  2545. X          steps[d] = s;
  2546. X          for (di = d; s > 0 && di > 0; di--)
  2547. X        if (steps[sorted[di - 1]] == 0)    /* should be: < s */
  2548. X          sorted[di] = sorted[di - 1];
  2549. X        else
  2550. X          break;
  2551. X          sorted[di] = d;
  2552. X        }
  2553. X
  2554. X      /*
  2555. X        update nextpos/nextdir,
  2556. X        pawns have two threads (capture and no capture)
  2557. X      */
  2558. X      p0 = nunmap[po];
  2559. X      if (ptyp == pawn || ptyp == bpawn)
  2560. X        {
  2561. X          for (s = 0; s < steps[0]; s++)
  2562. X        {
  2563. X          ppos[p0] = (unsigned char) dest[0][s];
  2564. X          p0 = dest[0][s];
  2565. X        }
  2566. X          p0 = nunmap[po];
  2567. X          for (d = 1; d < 3; d++)
  2568. X        {
  2569. X          pdir[p0] = (unsigned char) dest[d][0];
  2570. X          p0 = dest[d][0];
  2571. X        }
  2572. X        }
  2573. X      else
  2574. X        {
  2575. X          pdir[p0] = (unsigned char) dest[sorted[0]][0];
  2576. X          for (d = 0; d < 8; d++)
  2577. X        for (s = 0; s < steps[sorted[d]]; s++)
  2578. X          {
  2579. X            ppos[p0] = (unsigned char) dest[sorted[d]][s];
  2580. X            p0 = dest[sorted[d]][s];
  2581. X            if (d < 7)
  2582. X              pdir[p0] = (unsigned char) dest[sorted[d + 1]][0];
  2583. X            /* else is already initialized */
  2584. X          }
  2585. X        }
  2586. X    }
  2587. }
  2588. X
  2589. /* hmm.... shouldn`t main be moved to the interface routines */
  2590. int
  2591. main (int argc, char **argv)
  2592. {
  2593. X  short int ahead = true, hash = true;
  2594. X  char *xwin = 0;
  2595. X
  2596. X  while (argc > 1 && ((argv[1][0] == '-') || (argv[1][0] == '+')))
  2597. X    {
  2598. X      switch (argv[1][1])
  2599. X    {
  2600. X    case 'a':
  2601. X      ahead = (argv[1][0] == '-') ? false : true;
  2602. X      break;
  2603. X    case 'h':
  2604. X      hash = (argv[1][0] == '-') ? false : true;
  2605. X      break;
  2606. X    case 's':
  2607. X      argc--;
  2608. X      argv++;
  2609. X      if (argc > 1)
  2610. X        strcpy (savefile, argv[1]);
  2611. X      break;
  2612. X    case 'l':
  2613. X      if (argc > 1)
  2614. X        strcpy (listfile, argv[1]);
  2615. X      break;
  2616. #if ttblsz
  2617. #ifdef HASHFILE
  2618. X    case 't':        /* create or test persistent transposition table */
  2619. X      hashfile = fopen (HASHFILE, RWA_ACC);
  2620. X      if (hashfile)
  2621. X        {
  2622. X          fseek (hashfile, 0L, SEEK_END);
  2623. X          filesz = (ftell (hashfile) / sizeof (struct fileentry)) - 1;
  2624. X        }
  2625. X      if (hashfile != NULL)
  2626. X        {
  2627. X          long i, j;
  2628. X          int nr[maxdepth];
  2629. X          struct fileentry n;
  2630. X
  2631. X          printf ("Counting transposition file entries, wait!\n");
  2632. X          for (i = 0; i < maxdepth; i++)
  2633. X        nr[i] = 0;
  2634. X          fseek (hashfile, 0L, SEEK_END);
  2635. X          i = ftell (hashfile) / sizeof (struct fileentry);
  2636. X          fseek (hashfile, 0L, SEEK_SET);
  2637. X          for (j = 0; j < i + 1; j++)
  2638. X        {
  2639. X          fread (&n, sizeof (struct fileentry), 1, hashfile);
  2640. X          if (n.depth)
  2641. X            {
  2642. X              nr[n.depth]++;
  2643. X              nr[0]++;
  2644. X            }
  2645. X        }
  2646. X          printf ("The file contains %d entries out of max %d\n",
  2647. X              nr[0], i);
  2648. X          for (j = 1; j < maxdepth; j++)
  2649. X        printf ("%d ", nr[j]);
  2650. X          printf ("\n");
  2651. X        }
  2652. X      return 0;
  2653. X    case 'c':        /* create or test persistent transposition table */
  2654. X      if (argc > 2)
  2655. X        filesz = atoi (argv[2]);
  2656. X      if (filesz > 0 && filesz < 24)
  2657. X        filesz = (1 << filesz) - 1;
  2658. X      else
  2659. X        filesz = Deffilesz;
  2660. X      if ((hashfile = fopen (HASHFILE, RWA_ACC)) == NULL)
  2661. X        hashfile = fopen (HASHFILE, WA_ACC);
  2662. X      if (hashfile != NULL)
  2663. X        {
  2664. X          long i, j;
  2665. X          struct fileentry n;
  2666. X          printf ("Filling transposition file, wait!\n");
  2667. X          for (j = 0; j < 32; j++)
  2668. X        n.bd[j] = 0;
  2669. X          n.f = n.t = 0;
  2670. X          n.flags = 0;
  2671. X          n.depth = 0;
  2672. X          n.sh = n.sl = 0;
  2673. X          for (j = 0; j < filesz + 1; j++)
  2674. X        fwrite (&n, sizeof (struct fileentry), 1, hashfile);
  2675. X          fclose (hashfile);
  2676. X        }
  2677. X      return (0);
  2678. #endif /* HASHFILE */
  2679. #endif /* ttblsz */
  2680. X    case 'x':
  2681. X      xwin = &argv[1][2];
  2682. X      break;
  2683. X    default:
  2684. X      fprintf (stderr, "Usage: gnuchess [-a] [-t] [-c size] [-s savefile][-l listfile] [-x xwndw]\n");
  2685. X    }
  2686. X      argv++;
  2687. X      argc--;
  2688. X    }
  2689. X  Level = 0;
  2690. X  TCflag = false;
  2691. X  OperatorTime = 0;
  2692. X  if (argc == 2)
  2693. X    Level = atoi (argv[1]);
  2694. X  if (argc == 3)
  2695. X    {
  2696. X      TCmoves = atoi (argv[1]);
  2697. X      TCminutes = atoi (argv[2]);
  2698. X      TCflag = true;
  2699. X    }
  2700. X  Initialize ();
  2701. X  Initialize_dist ();
  2702. X  Initialize_moves ();
  2703. X  NewGame ();
  2704. X  GetOpenings ();
  2705. X
  2706. X  flag.easy = ahead;
  2707. X  flag.hash = hash;
  2708. X  if (xwin)
  2709. X    xwndw = atoi (xwin);
  2710. X
  2711. X  hashfile = NULL;
  2712. #if ttblsz
  2713. #ifdef HASHFILE
  2714. X  hashfile = fopen (HASHFILE, RWA_ACC);
  2715. X  if (hashfile)
  2716. X    {
  2717. X      fseek (hashfile, 0L, SEEK_END);
  2718. X      filesz = ftell (hashfile) / sizeof (struct fileentry) - 1;
  2719. X    }
  2720. #endif /* HASHFILE */
  2721. #endif /* ttblsz */
  2722. X  while (!(flag.quit))
  2723. X    {
  2724. X      if (flag.bothsides && !flag.mate)
  2725. X    SelectMove (opponent, 1);
  2726. X      else
  2727. X    InputCommand ();
  2728. X      if (!(flag.quit || flag.mate || flag.force))
  2729. X    SelectMove (computer, 1);
  2730. X    }
  2731. #if ttblsz
  2732. #ifdef HASHFILE
  2733. X  if (hashfile)
  2734. X    fclose (hashfile);
  2735. #endif /* HASHFILE */
  2736. #endif /* ttblsz */
  2737. X
  2738. X  ExitChess ();
  2739. X  return (0);
  2740. }
  2741. X
  2742. void
  2743. NewGame (void)
  2744. X
  2745. /*
  2746. X  Reset the board and other variables to start a new game.
  2747. */
  2748. X
  2749. {
  2750. X  short l, c, p;
  2751. X
  2752. X  stage = stage2 = -1;        /* the game is not yet started */
  2753. X  flag.mate = flag.post = flag.quit = flag.reverse = flag.bothsides = false;
  2754. X  flag.force = false;
  2755. X  flag.hash = flag.easy = flag.beep = flag.rcptr = true;
  2756. X  NodeCnt = et0 = epsquare = 0;
  2757. X  dither = 0;
  2758. X  Awindow = 90;
  2759. X  Bwindow = 90;
  2760. X  xwndw = 90;
  2761. X  MaxSearchDepth = 29;
  2762. X  contempt = 0;
  2763. X  GameCnt = 0;
  2764. X  Game50 = 1;
  2765. X  hint = 0x0C14;
  2766. X  ZeroRPT ();
  2767. X  Developed[white] = Developed[black] = false;
  2768. X  castld[white] = castld[black] = false;
  2769. X  PawnThreat[0] = CptrFlag[0] = false;
  2770. X  Pscore[0] = 12000;
  2771. X  Tscore[0] = 12000;
  2772. X  opponent = white;
  2773. X  computer = black;
  2774. X  for (l = 0; l < 2000; l++)
  2775. X    Tree[l].f = Tree[l].t = 0;
  2776. #if ttblsz
  2777. X  rehash = 6;
  2778. X  ZeroTTable ();
  2779. X  srand ((unsigned int) 1);
  2780. X  for (c = white; c <= black; c++)
  2781. X    for (p = pawn; p <= king; p++)
  2782. X      for (l = 0; l < 64; l++)
  2783. X    {
  2784. X      hashcode[c][p][l].key = (((unsigned long) urand ()));
  2785. X      hashcode[c][p][l].key += (((unsigned long) urand ()) << 16);
  2786. X      hashcode[c][p][l].bd = (((unsigned long) urand ()));
  2787. X      hashcode[c][p][l].bd += (((unsigned long) urand ()) << 16);
  2788. X      if (sizeof (long) > 4)
  2789. X        {
  2790. X          hashcode[c][p][l].key += (((unsigned long) urand ()) <<32);
  2791. X          hashcode[c][p][l].key += (((unsigned long) urand ()) << 48);
  2792. X          hashcode[c][p][l].bd += (((unsigned long) urand ()) << 32);
  2793. X          hashcode[c][p][l].bd += (((unsigned long) urand ()) << 48);
  2794. X        }
  2795. X    }
  2796. #endif /* ttblsz */
  2797. X  for (l = 0; l < 64; l++)
  2798. X    {
  2799. X      board[l] = Stboard[l];
  2800. X      color[l] = Stcolor[l];
  2801. X      Mvboard[l] = 0;
  2802. X    }
  2803. X  ClrScreen ();
  2804. X  if (TCflag)
  2805. X    SetTimeControl ();
  2806. X  else if (Level == 0)
  2807. X    SelectLevel ();
  2808. X  InitializeStats ();
  2809. X  time0 = time ((long *) 0);
  2810. X  ElapsedTime (1);
  2811. X  UpdateDisplay (0, 0, 1, 0);
  2812. X  Book = BKBook;
  2813. }
  2814. X
  2815. X
  2816. /* ............    MOVE GENERATION & SEARCH ROUTINES    .............. */
  2817. X
  2818. static inline void
  2819. pick (short int p1, short int p2)
  2820. X
  2821. /*
  2822. X  Find the best move in the tree between indexes p1 and p2. Swap the best
  2823. X  move into the p1 element.
  2824. */
  2825. X
  2826. {
  2827. X  register short p, s;
  2828. X  short p0, s0;
  2829. X  struct leaf temp;
  2830. X
  2831. X  s0 = Tree[p1].score;
  2832. X  p0 = p1;
  2833. X  for (p = p1 + 1; p <= p2; p++)
  2834. X    if ((s = Tree[p].score) > s0)
  2835. X      {
  2836. X    s0 = s;
  2837. X    p0 = p;
  2838. X      }
  2839. X  if (p0 != p1)
  2840. X    {
  2841. X      temp = Tree[p1];
  2842. X      Tree[p1] = Tree[p0];
  2843. X      Tree[p0] = temp;
  2844. X    }
  2845. }
  2846. X
  2847. void
  2848. SelectMove (short int side, short int iop)
  2849. X
  2850. X
  2851. /*
  2852. X  Select a move by calling function search() at progressively deeper ply
  2853. X  until time is up or a mate or draw is reached. An alpha-beta window of -90
  2854. X  to +90 points is set around the score returned from the previous
  2855. X  iteration. If Sdepth != 0 then the program has correctly predicted the
  2856. X  opponents move and the search will start at a depth of Sdepth+1 rather
  2857. X  than a depth of 1.
  2858. */
  2859. X
  2860. {
  2861. X  static short i, tempb, tempc, tempsf, tempst, xside, rpt;
  2862. X  static short alpha, beta, score;
  2863. X  static struct GameRec *g;
  2864. X
  2865. X  flag.timeout = false;
  2866. X  xside = otherside[side];
  2867. X  if (iop != 2)
  2868. X    player = side;
  2869. X  if (TCflag)
  2870. X    {
  2871. X      if ((TimeControl.moves[side] + 3) != 0)
  2872. X    ResponseTime = (TimeControl.clock[side]) /
  2873. X      (TimeControl.moves[side] + 3) -
  2874. X      OperatorTime;
  2875. X      else
  2876. X    ResponseTime = 0;
  2877. X      ResponseTime += (ResponseTime * TimeControl.moves[side]) / (2 * TCmoves + 1);
  2878. X    }
  2879. X  else
  2880. X    ResponseTime = Level;
  2881. X  if (iop == 2)
  2882. X    ResponseTime = 99999;
  2883. X  if (Sdepth > 0 && root->score > Zscore - zwndw)
  2884. X    ResponseTime -= ft;
  2885. X  else if (ResponseTime < 1)
  2886. X    ResponseTime = 1;
  2887. X  ExtraTime = 0;
  2888. X  ExaminePosition ();
  2889. X  ScorePosition (side, &score);
  2890. X  /* Pscore[0] = -score; */
  2891. X  ShowSidetoMove ();
  2892. X
  2893. X  if (Sdepth == 0)
  2894. X    {
  2895. #if ttblsz
  2896. X      /* ZeroTTable (); */
  2897. #endif /* ttblsz */
  2898. X      SearchStartStuff (side);
  2899. #ifdef NOMEMSET
  2900. X      for (ih = history; ih < history + 8192; ih++)
  2901. X    *ih = 0;
  2902. #else
  2903. X      memset ((char *) history, 0, sizeof (history));
  2904. #endif /* NOMEMSET */
  2905. X      FROMsquare = TOsquare = -1;
  2906. X      PV = 0;
  2907. X      if (iop != 2)
  2908. X    hint = 0;
  2909. X      for (i = 0; i < maxdepth; i++)
  2910. X    PrVar[i] = killr0[i] = killr1[i] = killr2[i] = killr3[i] = 0;
  2911. X      alpha = score - 90;
  2912. X      beta = score + 90;
  2913. X      rpt = 0;
  2914. X      TrPnt[1] = 0;
  2915. X      root = &Tree[0];
  2916. X      MoveList (side, 1);
  2917. X      /* Analysis Mode Goes here */
  2918. X
  2919. X      for (i = TrPnt[1]; i < TrPnt[2]; i++)
  2920. X    pick (i, TrPnt[2] - 1);
  2921. X      if (Book != NULL)
  2922. X    OpeningBook (&hint);
  2923. X      if (Book != NULL)
  2924. X    flag.timeout = true;
  2925. X      NodeCnt = ETnodes = EvalNodes = HashCnt = FHashAdd = HashAdd = FHashCnt = HashCol = 0;
  2926. X      Zscore = 0;
  2927. X      zwndw = 20;
  2928. X    }
  2929. X  while (!flag.timeout && Sdepth < MaxSearchDepth)
  2930. X    {
  2931. X      Sdepth++;
  2932. X      ShowDepth (' ');
  2933. X      score = search (side, 1, Sdepth, alpha, beta, PrVar, &rpt);
  2934. X      for (i = 1; i <= Sdepth; i++)
  2935. X    killr0[i] = PrVar[i];
  2936. X      if (score < alpha)
  2937. X    {
  2938. X      ShowDepth ('-');
  2939. X      ExtraTime = 10 * ResponseTime;
  2940. X      /* ZeroTTable (); */
  2941. X      score = search (side, 1, Sdepth, -9000, score, PrVar, &rpt);
  2942. X    }
  2943. X      if (score > beta && !(root->flags & exact))
  2944. X    {
  2945. X      ShowDepth ('+');
  2946. X      ExtraTime = 0;
  2947. X      /* ZeroTTable (); */
  2948. X      score = search (side, 1, Sdepth, score, 9000, PrVar, &rpt);
  2949. X    }
  2950. X      score = root->score;
  2951. X      if (!flag.timeout)
  2952. X    for (i = TrPnt[1] + 1; i < TrPnt[2]; i++)
  2953. X      pick (i, TrPnt[2] - 1);
  2954. X      ShowResults (score, PrVar, '.');
  2955. X      for (i = 1; i <= Sdepth; i++)
  2956. X    killr0[i] = PrVar[i];
  2957. X      if (score > Zscore - zwndw && score > Tree[1].score + 250)
  2958. X    ExtraTime = 0;
  2959. X      else if (score > Zscore - 3 * zwndw)
  2960. X    ExtraTime = ResponseTime;
  2961. X      else
  2962. X    ExtraTime = 3 * ResponseTime;
  2963. X      if (root->flags & exact)
  2964. X    flag.timeout = true;
  2965. X      if (Tree[1].score < -9000)
  2966. X    flag.timeout = true;
  2967. X      if (4 * et > 2 * ResponseTime + ExtraTime)
  2968. X    flag.timeout = true;
  2969. X      if (!flag.timeout)
  2970. X    {
  2971. X      Tscore[0] = score;
  2972. X      Zscore = (Zscore == 0) ? score : ((Zscore + score) / 2);
  2973. X    }
  2974. X      zwndw = 20 + abs (Zscore / 12);
  2975. X      beta = score + Bwindow;
  2976. X      alpha = ((Zscore < score) ? Zscore : score) - Awindow - zwndw;
  2977. X    }
  2978. X
  2979. X  score = root->score;
  2980. X  if (rpt >= 2)
  2981. X    {
  2982. X      root->flags |= draw;
  2983. X      DRAW = "Repitition";
  2984. X    }
  2985. X  if (score < -12000)
  2986. X    {
  2987. X      root->flags |= draw;
  2988. X      DRAW = "Score";
  2989. X    }
  2990. X  if (!PieceCnt[black] && !PieceCnt[white])
  2991. X    {
  2992. X      root->flags |= draw;
  2993. X      DRAW = "No pieces";
  2994. X    }
  2995. X  if ((root->score == -9999) && !(SqAtakd (PieceList[side][0], xside)))
  2996. SHAR_EOF
  2997. true || echo 'restore of gnuchess.c failed'
  2998. fi
  2999. echo 'End of  part 3'
  3000. echo 'File gnuchess.c is continued in part 4'
  3001. echo 4 > _shar_seq_.tmp
  3002. exit 0
  3003. exit 0 # Just in case...
  3004. -- 
  3005. Kent Landfield                   INTERNET: kent@sparky.IMD.Sterling.COM
  3006. Sterling Software, IMD           UUCP:     uunet!sparky!kent
  3007. Phone:    (402) 291-8300         FAX:      (402) 291-4362
  3008. Please send comp.sources.misc-related mail to kent@uunet.uu.net.
  3009.