home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / SIMTEL / CPMUG / CPMUG021.ARK / CHESS.ASC < prev    next >
Text File  |  1985-02-10  |  12KB  |  495 lines

  1. 120 DIM PS(70,3),MV(35,2),V(32)
  2. 130 DEF FNL(X)=INT(X/10)
  3. 140 DEF FNM(X)=X-INT(X/10)*10
  4. 145 CB=3:CW=3
  5. 150 FOR X=1 TO 32
  6. 160 READ V(X)
  7. 170 NEXT
  8. 180 FOR Y=1 TO 8
  9. 190 FOR X=1 TO 8
  10. 200 READ B(X,Y)
  11. 210 NEXT X,Y
  12. 220 DATA -2,1,-1,2,1,2,2,1,2,-1,1,-2,-1,-2,-2,-1
  13. 230 DATA 8,12,19,21,-8,-12,-19,-21
  14. 240 DATA 1,9,10,11,-1,-9,-10,-11
  15. 250 DATA 4,2,3,6,5,3,2,4,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0
  16. 260 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1
  17. 270 DATA -1,-1,-1,-1,-4,-2,-3,-6,-5,-3,-2,-4
  18. 280 PRINT:PRINT:PRINT:PRINT TAB(10);"**** CHESS ****"
  19. 290 PRINT TAB(10);"BY RANDY MILLER":PRINT:PRINT
  20. 300 INPUT "DO YOU WANT TO BE WHITE OR BLACK";C$
  21. 310 IF LEFT$(C$,1)="B" THEN 350
  22. 320 B(4,1)=5:B(4,8)=-5
  23. 330 B(5,1)=6:B(5,8)=-6
  24. 340 GOTO 360
  25. 350 PRINT "THANK YOU, THAT MEANS I GET TO GO FIRST":PRINT
  26. 360 FOR Y=1 TO 8
  27. 370 FOR X=1 TO 8
  28. 380 TM(X,Y)=B(X,Y)
  29. 390 NEXT X,Y
  30. 400 IF LEFT$(C$,1)<>"B" THEN 765
  31. 615 NB=1
  32. 616 REM -- COMPILE LIST OF POSSIBLE MOVES --
  33. 620 FOR X=1 TO 8
  34. 625 FOR Y=1 TO 8
  35. 630 IF SGN(B(X,Y))<>1 THEN 670
  36. 635 GOSUB 6100
  37. 640 FOR D=1 TO N
  38. 645 IF MV(D,1)=0 THEN 665
  39. 650 PS(NB,1)=MV(D,1)
  40. 655 PS(NB,2)=MV(D,2)
  41. 660 NB=NB+1
  42. 665 NEXT D
  43. 670 NEXT Y
  44. 675 NEXT X
  45. 676 IF NB>1 THEN 680
  46. 677 PRINT "I DON'T BELIEVE IT! - YOU WON!!!"
  47. 678 STOP
  48. 679 REM -- EVALUATE EACH POSSIBLE MOVE --
  49. 680 FOR D=1 TO NB-1
  50. 685 D1=FNL(PS(D,1))
  51. 690 D2=FNM(PS(D,1))
  52. 695 D3=FNL(PS(D,2))
  53. 700 D4=FNM(PS(D,2))
  54. 705 D5=B(D3,D4)
  55. 710 TM(D3,D4)=TM(D1,D2)
  56. 715 TM(D1,D2)=0
  57. 720 GOSUB 3000
  58. 721 PS(D,3)=EV
  59. 725 TM(D1,D2)=TM(D3,D4)
  60. 730 TM(D3,D4)=D5
  61. 734 NEXT D
  62. 735 REM
  63. 736 MZ=PS(1,3):MX=1
  64. 737 IF NB=2 THEN 760
  65. 740 FOR D=2 TO NB-1
  66. 745 IF PS(D,3)<=MZ THEN 755
  67. 750 MX=D:MZ=PS(D,3)
  68. 755 NEXT D
  69. 760 GOSUB 2000
  70. 765 GOSUB 1000
  71. 766 PRINT 
  72. 770 GOTO 615
  73. 1000 REM -- INPUT ROUTINE --
  74. 1001 INPUT "YOUR MOVE";M,N
  75. 1002 IF M<>0 THEN 1011
  76. 1003 FOR P=1TO8:FORP1=1TO8:PRINTB(P1,P);:NEXTP1:PRINT:NEXTP
  77. 1010 GOTO 1001
  78. 1011 X1=FNL(M):Y1=FNM(M):X2=FNL(N):Y2=FNM(N)
  79. 1012 IF X1>8 OR X1<1 OR Y1>8 OR Y1<1 THEN 1020
  80. 1013 IF X2>8 OR X2<1 OR Y2>8 OR Y2<1 THEN 1020
  81. 1015 IF SGN(B(X1,Y1))=-1 THEN 1030
  82. 1020 PRINT "YOU CAN'T DO THAT."
  83. 1025 GOTO 1001
  84. 1030 REM
  85. 1035 FOR P=1 TO 8
  86. 1040 FOR P1=1 TO 8
  87. 1045 TM(P,P1)=B(P,P1)
  88. 1050 NEXT P1
  89. 1055 NEXT P
  90. 1060 GOSUB 8100
  91. 1065 IF LG=0 THEN 1020
  92. 1070 TM(X2,Y2)=TM(X1,Y1)
  93. 1075 TM(X1,Y1)=0
  94. 1080 B(X2,Y2)=B(X1,Y1)
  95. 1085 B(X1,Y1)=0
  96. 1086 PRINT "ACCEPTED."
  97. 1090 IF Y2 <> 1 OR B(X2,Y2) <> -1 THEN 1140
  98. 1100 PRINT "TO PROMOTE YOUR PAWN TO A KNIGHT, TYPE 2;  FOR A BISHOP,"
  99. 1105 PRINT "TYPE 3;  FOR A ROOK, TYPE 4;  FOR A QUEEN, TYPE 5";
  100. 1110 INPUT P
  101. 1120 IF P>5 OR P<2 THEN 1100
  102. 1130 B(X2,Y2)=-P:TM(X2,Y2)=-P
  103. 1140 IF B(X2,Y2) <> -6 OR ABS(X1-X2) <> 2 THEN 1147
  104. 1142 IF X1-X2=2 THEN 1148
  105. 1143 B(8,8)=0:TM(8,8)=0
  106. 1144 B(X2-1,8)=-4:TM(X2-1,8)=-4
  107. 1145 CB=(CB AND -2)
  108. 1146 PRINT "IT'S ABOUT TIME YOU CASTLED!":PRINT
  109. 1147 RETURN
  110. 1148 B(1,8)=0:TM(1,8)=0
  111. 1149 B(X2+1,8)=-4:TM(X2+1,8)=-4
  112. 1150 CB=(CB AND -3)
  113. 1151 GOTO 1146
  114. 2000 REM -- OUTPUT ROUTINE --
  115. 2001 IF PS(MX,3)<200 THEN 2010
  116. 2002 PRINT "HA - LET'S SEE YOU GET OUT OF THIS -"
  117. 2003 PRINT "I MOVE";PS(MX,1);"TO";PS(MX,2)
  118. 2004 PRINT "THANKS FOR THE GOOD GAME..."
  119. 2005 STOP
  120. 2010 ON INT(RND(1)*4)+1 GOTO 2011,2012,2013,2014
  121. 2011 PRINT "I RECKON I'LL MOVE";:GOTO 2015
  122. 2012 PRINT "I GUESS I'LL TAKE";:GOTO 2015
  123. 2013 PRINT "MY MOVE IS";:GOTO 2015
  124. 2014 PRINT "I LIKE";
  125. 2015 PRINT PS(MX,1);"TO";PS(MX,2):PRINT
  126. 2020 D1=FNL(PS(MX,1))
  127. 2030 D2=FNM(PS(MX,1))
  128. 2040 D3=FNL(PS(MX,2))
  129. 2050 D4=FNM(PS(MX,2))
  130. 2060 B(D3,D4)=B(D1,D2)
  131. 2070 B(D1,D2)=0
  132. 2071 IF D4 <> 8 OR B(D3,D4) <> 1 THEN 2080
  133. 2072 PRINT "I PROMOTE MY PAWN TO A QUEEN!"
  134. 2073 B(D3,D4)=5
  135. 2080 RETURN
  136. 3000 REM
  137. 3001 EV=RND(1):RETURN
  138. 3005 EV=RND(1)/2:US=0
  139. 3006 EV=EV+D4/7
  140. 3007 FOR PJ=1 TO 8
  141. 3008 IF TM(PJ,8)<>1 THEN 3011
  142. 3009 TM(PJ,8)=5
  143. 3010 GOTO 3012
  144. 3011 NEXT PJ
  145. 3012 FOR X=1 TO 8
  146. 3020 FOR Y=1 TO 8
  147. 3030 CX=TM(X,Y):CS=SGN(CX)
  148. 3031 IF CS<>-1 THEN 3700
  149. 3035 EV=EV+CX
  150. 3040 GOSUB 6000
  151. 3042 IF N=0 THEN 3700
  152. 3045 US=US+N:EV=EV+N*CS/6
  153. 3050 IF N=0 THEN 3700
  154. 3060 FOR UX=1 TO N
  155. 3100 U1=MV(UX,1):U2=MV(UX,2)
  156. 3105 IF SGN(TM(FNL(U2),FNM(U2)))<>1 THEN 3500
  157. 3106 IF SGN(TM(FNL(U1),FNM(U1)))<>-1 THEN 3500
  158. 3120 EV=EV-TM(FNL(U2),FNM(U2))
  159. 3500 NEXT UX
  160. 3700 NEXT Y
  161. 3710 NEXT X
  162. 3711 IF US>0 THEN 3720
  163. 3712 EV=EV+1000
  164. 3713 GOTO 3725
  165. 3720 FOR X=3 TO 6:FOR Y=3 TO 6:EV=EV+TM(X,Y)/3:NEXT Y:NEXT X
  166. 3725 IF PJ>8 THEN 3740
  167. 3735 TM(PJ,8)=1
  168. 3740 RETURN
  169. 6000 REM
  170. 6010 R=0
  171. 6020 GOTO 6110
  172. 6100 R=1
  173. 6110 MV(1,1)=0
  174. 6112 S1=SGN(TM(X,Y))
  175. 6113 AA=X*10+Y
  176. 6114 N=1
  177. 6118 PRINT 6118,X,Y,TM(X,Y)
  178. 6120 ON ABS(TM(X,Y)) GOSUB 6300,6525,6600,6725,6850,6875
  179. 6121 PRINT 6121
  180. 6122 IF N=1 THEN 6130
  181. 6125 IF R=1 THEN 6140
  182. 6130 N=N-1
  183. 6135 RETURN
  184. 6140 REM -- IF RESTRICTED --
  185. 6141 N1=N-1
  186. 6142 N=N1
  187. 6143 FOR K=1 TO N1
  188. 6144 PRINT 6144,"K= ";K
  189. 6145 C1=FNL(MV(K,1))
  190. 6150 C2=FNM(MV(K,1))
  191. 6155 C3=FNL(MV(K,2))
  192. 6160 C4=FNM(MV(K,2))
  193. 6162 IF ABS(TM(C3,C4))=6 THEN 6164
  194. 6163 IF SGN(TM(C3,C4))<>S1 THEN 6165
  195. 6164 MV(K,1)=0:MV(K,2)=0:GOTO 6250
  196. 6165 C5=TM(C3,C4)
  197. 6170 TM(C3,C4)=TM(C1,C2)
  198. 6175 TM(C1,C2)=0
  199. 6180 REM -- FIND KING --
  200. 6182 FOR Y2=1 TO 8
  201. 6185 FOR X2=1 TO 8
  202. 6190 IF TM(X2,Y2)=6*S1 THEN 6202
  203. 6195 NEXT X2
  204. 6200 NEXT Y2
  205. 6202 REM
  206. 6205 FOR Y1=1 TO 8
  207. 6210 FOR X1=1 TO 8
  208. 6215 IF SGN(TM(X1,Y1))<>-S1 THEN 6230
  209. 6216 IF TM(X1,Y1)<>-S1 THEN 6220
  210. 6217 IF X1=X2 AND ABS(Y2-Y1)>2 THEN 6230
  211. 6220 GOSUB 8000
  212. 6225 IF LG=1 THEN 6260
  213. 6230 NEXT X1
  214. 6231 PRINT 6231,"Y1= ";Y1
  215. 6235 NEXT Y1
  216. 6240 TM(C1,C2)=TM(C3,C4)
  217. 6245 TM(C3,C4)=C5
  218. 6247 PRINT 6247,"K= ";K
  219. 6250 NEXT K
  220. 6255 RETURN
  221. 6260 MV(K,1)=0:MV(K,2)=0
  222. 6265 GOTO 6230
  223. 6300 REM -- RAW PAWN MOVE --
  224. 6305 IF S1=-1 THEN 6400
  225. 6310 IF Y+1>8 THEN 6390
  226. 6315 IF TM(X,Y+1)<>0 THEN 6340
  227. 6320 MV(N,1)=AA
  228. 6325 MV(N,2)=X*10+Y+1
  229. 6327 N=N+1
  230. 6330 IF Y>2 THEN 6340
  231. 6335 IF TM(X,Y+2)<>0 THEN 6340
  232. 6336 MV(N,1)=AA
  233. 6337 MV(N,2)=X*10+Y+2
  234. 6338 N=N+1
  235. 6340 IF X=1 THEN 6365
  236. 6345 IF SGN(TM(X-1,Y+1))<>-S1 THEN 6365
  237. 6350 MV(N,1)=AA
  238. 6355 MV(N,2)=(X-1)*10+Y+1
  239. 6360 N=N+1
  240. 6365 IF X=8 THEN 6390
  241. 6370 IF SGN(TM(X+1,Y+1))<>-S1 THEN 6390
  242. 6375 MV(N,1)=AA
  243. 6380 MV(N,2)=(X+1)*10+Y+1
  244. 6385 N=N+1
  245. 6390 RETURN
  246. 6400 IF Y-1<1 THEN 6500
  247. 6405 IF TM(X,Y-1)<>0 THEN 6450
  248. 6410 MV(N,1)=AA
  249. 6415 MV(N,2)=X*10+Y-1
  250. 6420 N=N+1
  251. 6425 IF Y<7 THEN 6450
  252. 6430 IF TM(X,Y-2)<>0 THEN 6450
  253. 6435 MV(N,1)=AA
  254. 6440 MV(N,2)=X*10+Y-2
  255. 6445 N=N+1
  256. 6450 IF X=1 THEN 6475
  257. 6455 IF SGN(TM(X-1,Y-1))<>-S1 THEN 6475
  258. 6460 MV(N,1)=AA
  259. 6465 MV(N,2)=(X-1)*10+Y-1
  260. 6470 N=N+1
  261. 6475 IF X=8 THEN 6500
  262. 6480 IF SGN(TM(X+1,Y-1))<>-S1 THEN 6500
  263. 6485 MV(N,1)=AA
  264. 6490 MV(N,2)=(X+1)*10+Y-1
  265. 6495 N=N+1
  266. 6500 RETURN
  267. 6525 REM -- RAW KNIGHT MOVE --
  268. 6535 FOR C6=1 TO 15 STEP 2
  269. 6540 KL=V(C6):KM=V(C6+1)
  270. 6545 XT=X+KL
  271. 6550 YT=Y+KM
  272. 6555 IF XT>8 OR XT<1 OR YT>8 OR YT<1 THEN 6570
  273. 6560 MV(N,1)=AA
  274. 6565 MV(N,2)=XT*10+YT
  275. 6567 N=N+1
  276. 6570 NEXT C6
  277. 6575 RETURN
  278. 6600 REM -- RAW BISHOP MOVE --
  279. 6605 EL=(8-Y)*-(8-Y <= 8-X)+(8-X)*-(8-X < 8-Y)
  280. 6610 IF EL=0 THEN 6630
  281. 6620 C6=11
  282. 6625 GOSUB 6695
  283. 6630 EL=(8-Y)*-(8-Y <= X-1)+(X-1)*-(X-1 < 8-Y)
  284. 6635 IF EL=0 THEN 6650
  285. 6640 C6=-9
  286. 6645 GOSUB 6695
  287. 6650 EL=(8-X)*-(8-X <= Y-1)+(Y-1)*-(Y-1 < 8-X)
  288. 6655 IF EL=0 THEN 6670
  289. 6660 C6=9
  290. 6665 GOSUB 6695
  291. 6670 EL=(Y-1)*-(Y-1 <= X-1)+(X-1)*-(X-1 < Y-1)
  292. 6675 IF EL=0 THEN 6690
  293. 6680 C6=-11
  294. 6685 GOSUB 6695
  295. 6690 RETURN
  296. 6695 FOR E=1 TO EL
  297. 6698 F=C6*E
  298. 6700 MV(N,1)=AA
  299. 6702 MV(N,2)=AA+F
  300. 6704 N=N+1
  301. 6706 IF TM(FNL(AA+F),FNM(AA+F)) <> 0 THEN 6715
  302. 6710 NEXT E
  303. 6715 RETURN
  304. 6725 REM -- RAW ROOK MOVE --
  305. 6730 EL=8-Y
  306. 6735 IF EL=0 THEN 6750
  307. 6740 C6=1
  308. 6745 GOSUB 6820
  309. 6750 EL=Y-1
  310. 6755 IF EL=0 THEN 6770
  311. 6760 C6=-1
  312. 6765 GOSUB 6820
  313. 6770 EL=8-X
  314. 6775 IF EL=0 THEN 6790
  315. 6780 C6=10
  316. 6785 GOSUB 6820
  317. 6790 EL=X-1
  318. 6795 IF EL=0 THEN 6815
  319. 6800 C6=-10
  320. 6810 GOSUB 6820
  321. 6815 RETURN
  322. 6820 FOR E=1 TO EL
  323. 6822 F=C6*E
  324. 6824 MV(N,1)=AA
  325. 6826 MV(N,2)=AA+F
  326. 6828 N=N+1
  327. 6830 IF TM(FNL(AA+F),FNM(AA+F)) <>0 THEN 6845
  328. 6840 NEXT E
  329. 6845 RETURN
  330. 6850 REM -- RAW QUEEN MOVE --
  331. 6855 GOSUB 6600
  332. 6860 GOSUB 6725
  333. 6865 RETURN
  334. 6875 REM -- RAW KING MOVE --
  335. 6880 IF X=8 THEN 6910
  336. 6885 C6=10:GOSUB 6965
  337. 6890 IF Y=1 THEN 6905
  338. 6895 C6=9:GOSUB 6965
  339. 6900 IF Y=8 THEN 6915
  340. 6905 C6=11:GOSUB 6965
  341. 6910 IF X=1 THEN 6940
  342. 6915 C6=-10:GOSUB 6965
  343. 6920 IF Y=8 THEN 6940
  344. 6925 C6=-9:GOSUB 6965
  345. 6930 IF Y=1 THEN 6940
  346. 6935 C6=-11:GOSUB 6965
  347. 6940 IF Y=1 THEN 6950
  348. 6945 C6=-1:GOSUB 6965
  349. 6950 IF Y=8 THEN 6960
  350. 6955 C6=1:GOSUB 6965
  351. 6960 RETURN
  352. 6965 MV(N,1)=AA
  353. 6970 MV(N,2)=AA+C6
  354. 6975 N=N+1
  355. 6980 RETURN
  356. 8000 REM
  357. 8010 RR=0
  358. 8020 GOTO 8110
  359. 8100 RR=1
  360. 8110 IF TM(X1,Y1)<>0 THEN 8120
  361. 8115 LG=0:RETURN
  362. 8120 S=SGN(TM(X1,Y1))
  363. 8126 A=X1*10+Y1
  364. 8127 B=X2*10+Y2
  365. 8129 PRINT 8129,X1,XY,TM(X1,Y1)
  366. 8130 ON ABS(TM(X1,Y1)) GOSUB 8250,8350,8400,8500,8575,8600
  367. 8131 PRINT 8131,LG,RR
  368. 8140 IF LG=0 THEN RETURN
  369. 8145 IF RR=1 THEN 8155
  370. 8150 LG=1:RETURN
  371. 8155 REM  -- IF RESTRICTED --
  372. 8156 IF S=SGN(TM(X2,Y2)) THEN 8115
  373. 8157 T1=X1:T2=Y1:T3=X2:T4=Y2:T=TM(X2,Y2)
  374. 8158 TM(X2,Y2)=TM(X1,Y1):TM(X1,Y1)=0
  375. 8159 PRINT8159 ,"T2= ";T2 : SV=S
  376. 8160 REM -- FIND KING --
  377. 8161 FOR Y2=1 TO 8
  378. 8165 FOR X2=1 TO 8
  379. 8170 IF TM(X2,Y2)=6*S THEN 8185
  380. 8175 NEXT X2
  381. 8180 NEXT Y2
  382. 8181 STOP
  383. 8185 REM
  384. 8186 FOR Y1=1 TO 8
  385. 8190 FOR X1=1 TO 8
  386. 8195 P=TM(X1,Y1):IF SGN(P)=S OR P=0 OR ABS(P)=6 THEN 8210
  387. 8200 GOSUB 8000
  388. 8201 S=SV
  389. 8205 IF LG=1 THEN 8235
  390. 8210 NEXT X1
  391. 8215 NEXT Y1
  392. 8216 LG=1
  393. 8220 TM(T1,T2)=TM(T3,T4)
  394. 8225 TM(T3,T4)=T
  395. 8226 X1=T1:Y1=T2:X2=T3:Y2=T4
  396. 8227 PRINT8227 ,"Y1= ";Y1
  397. 8230 RETURN
  398. 8235 LG=0
  399. 8240 GOTO 8220
  400. 8250 REM ---- RAW PAWN MOVE --
  401. 8255 IF SGN(Y2-Y1)=S THEN 8270
  402. 8260 LG=0 : RETURN
  403. 8265 LG=1 : RETURN
  404. 8270 IF S=-1 THEN 8315
  405. 8275 IF B-A=1 OR B-A=2 THEN 8295
  406. 8280 IF TM(X2,Y2)=0 THEN 8260
  407. 8285 IF B-A=-9 OR B-A=11 THEN 8265
  408. 8290 GOTO 8260
  409. 8295 IF Y2=2 THEN 8265
  410. 8300 IF B-A=1 THEN 8265
  411. 8310 GOTO 8260
  412. 8315 IF A-B=1 OR A-B=2 THEN 8335
  413. 8320 IF TM(X2,Y2)=0 THEN 8260
  414. 8325 IF A-B=-9 OR A-B=11 THEN 8265
  415. 8330 GOTO 8260
  416. 8335 IF Y2=7 THEN 8265
  417. 8340 IF A-B=1 THEN 8265
  418. 8341 IF Y1=7 AND A-B=2 THEN 8265
  419. 8345 GOTO 8260
  420. 8350 REM -- RAW KNIGHT MOVE --
  421. 8355 FOR P=17 TO 24
  422. 8360 P1=V(P)
  423. 8365 IF A+P1<>B THEN 8375
  424. 8370 LG=1 : RETURN
  425. 8375 NEXT P
  426. 8380 LG=0:RETURN
  427. 8400 REM -- RAW BISHOP MOVE --
  428. 8401 IF Y2=Y1 OR X2=X1 THEN 8425
  429. 8402 SP=-9
  430. 8405 IF X2<X1 THEN 8445
  431. 8410 IF Y1<Y2 THEN 8430
  432. 8412 SP=9
  433. 8415 P=INT(ABS(A-B)/9)
  434. 8420 IF ABS(A-B)/9=P THEN 8455
  435. 8425 LG=0 :RETURN
  436. 8430 SP=11
  437. 8432 P=INT(ABS(A-B)/11)
  438. 8435 IF ABS(A-B)/11<>P THEN 8425
  439. 8440 GOTO 8455
  440. 8445 IF Y1<Y2 THEN 8415
  441. 8450 SP=-11:GOTO 8432
  442. 8455 GOSUB 8900
  443. 8460 RETURN
  444. 8500 REM -- RAW ROOK MOVES --
  445. 8505 IF Y2=Y1 THEN 8540
  446. 8510 IF X1=X2 THEN 8520
  447. 8515 LG=0:RETURN
  448. 8520 P=ABS(B-A)
  449. 8525 SP=SGN(B-A)
  450. 8530 GOSUB 8900
  451. 8535 RETURN
  452. 8540 P=ABS(INT((B-A)/10))
  453. 8545 SP=SGN(B-A)*10
  454. 8550 GOSUB 8900
  455. 8555 RETURN
  456. 8575 REM -- RAW QUEEN MOVE --
  457. 8580 GOSUB 8400
  458. 8581 IF LG=1 THEN RETURN
  459. 8585 GOSUB 8500
  460. 8590 RETURN
  461. 8600 REM -- KING MOVE --
  462. 8601 IF ABS(A-B)<>20 THE!ƒçüëëαßçüÅëƒ$1ƒ<Ç9ÇëŃ'0!ƒçüÅÇαßçüÅêƒ$1ƒ89âüîƒ<!3ƒ89âüêƒ'0!ƒçüëîαßçüÅâƒ0  ƒçüÅÇαßçüÅǃ$1ƒ89ÇŃ     ƒ89Çîƒ'0!ƒçüëîαßçüÅǃÇ0!ç<Ç9äü1     ÇëçÇÇÅüççÇÇîäüÇîä <ÇîÅÇëÅüççÇÇîäÇîä0îÅüαßçüÅçƒ$1ƒ ç1!#çëäâ1! çëääâüŃ'0!ƒçüëîαßçüÅäƒ!0ƒëüîÇîüëÇîüêÇëüâÇëαßçüîŃ1     ƒëÇ<ƒ ƒîçÇÇÅççÇÇîäüÇîäƒ0ƒîÅüÇαßçüîîƒëÇ1!#çëäüëÇ1! çëäαßçüîëƒ1     ƒîÇƒçαßçüîê FOR Y1=1 TO 8
  463. 8614 IF SGN(TM(X1,Y1))<>1 THEN 8617
  464. 8615 GOSUB 8100
  465. 8616 PRINT8616,"T2= ";T2 : IF LG=1 THEN 8621
  466. 8617 NEXT Y1,X1,P2
  467. 8618 PRINT 8618,"Y1= ";Y1 : LG=1
  468. 8619 PRINT 8619,"Y1= ";Y1:X1=T1:Y1=T2:X2=T3:Y2=T4
  469. 8620 PRINT 8620,"Y1= ";Y1 : RETURN
  470. 8621 PRINT8621,"Y1= ";Y1 : LG=0 : GOTO 8619
  471. 8622 FOR P=25 TO 32
  472. 8623 LG=0 :GOTO 8619
  473. 8625 P1=V(P)
  474. 8630 IF B=A+P1 THEN 8645
  475. 8635 NEXT P
  476. 8640 LG=0 :RETURN
  477. 8645 LG=1 :RETURN
  478. 8900 REM
  479. 8905 LG=0
  480. 8910 IF P=0 THEN STOP
  481. 8915 IF P>1 THEN 8925
  482. 8920 LG=1:RETURN
  483. 8925 FOR P1=1 TO P-1
  484. 8930 P2=A+SP*P1
  485. 8935 IF TM(FNL(P2),FNM(P2))<>0 THEN RETURN
  486. 8940 NEXT P1
  487. 8945 LG=1 :RETURN
  488. 9999 END
  489. 
  490. 8925 FOR P1=1 TO P-1
  491. 8930 P2=A+SP*P1
  492. 8935 IF TM(FNL(P2),FNM(P2))<>0 THEN RETURN
  493. 8940 NEXT P1
  494. 8945 LG=1 :RETURN
  495. 999