10 CLS:MEMSET:WIDTH81,26 20 A$=STRING$(80,64) 30 PRINTA$ 40 PRINTTAB(34)"CHESS #2008-A" 50 COLOR1,0 60 PRINT:PRINT:PRINTTAB(39)"IPCO" 70 COLOR1,0 80 PRINT:PRINT:PRINTTAB(25)"PERSONAL COMPUTER OWNERS GROUP" 90 PRINT:PRINT:PRINTTAB(19)"p.o. box 10426, pittsburgh, pennsylvania 15234" 100 PRINTA$ 110 PRINT:PRINT:PRINT:PRINT:PRINT 120 PRINTTAB(28)"PRESS ANY KEY TO CONTINUE" 130 A$=INKEY$:IFA$=""THEN130 140 CLS 150 CLEAR:SCROLL9,0 160 REM CHESS C.4 BY M. C. RAKASKA, IDES OF MARCH, 1980 170 REM ADAPTED BY S. W. HUGGINS, DECEMBER 1981 FOR THE IBM PERSONAL COMPUTER. 180 DEFINTA-Z:A=0:B=0:X=0:Y=0:S=0:A0=0:T=0:A8=0:A1=0:A2=0:A3=0:A4=0:B1=0:B6!=0:H=0:M=0:N=0:P=0:W=0:A5=0:I=1:DIMC(64),A(10,10),B(10,10),T(10,10) 190 CLS:INPUT"DO YOU WANT INSTRUCTIONS ";IN$:IN$=LEFT$(IN$,1):IFIN$="Y"ORIN$="y"THENGOSUB3410 200 CL$="N" 210 CLS:INPUT"YOUR NAME IS ";B$:IFB$=""THENB$=" HUMAN "ELSEB$=LEFT$(B$,9) 220 CLS:PRINT"LEVEL OF PLAY";:INPUTB8!:IFB8!=0THENB8!=1:B7!=1+RND(0)/2:ELSEB7!=(B8!+1)/2+RND(0)/2 230 CLS:PRINT"DO YOU WANT WHITE ";B$;" ";:INPUTC$:GOSUB920:IFLEFT$(C$,1)<>"N"THENGOSUB1030:GOTO340 240 GOSUB1020:IFCL$="Y"THENLOCATE6,25,0:PRINT"START ";TIME$; 250 F!=-99:A0=0:FORJ=1TO8:FORK=1TO8:IFA(J,K)=99THENA6=J:A7=K 260 NEXT:NEXT 270 FORX=1TO8:FORY=1TO8:IFA(X,Y)<0THENGOSUB410:IFF!>=B7!THENGOTO300 280 NEXT:NEXT:IFF!>=-9THENGOTO300ELSEGOSUB1030 290 LOCATE62,25,0:PRINT"I CONCEED ";:GOTO3380 300 A(R,U)=A(E,Q):A(E,Q)=1:IFA(R,U)=-2ANDU=1THENA(R,U)=-9 310 X=R:Y=U:A0=4:GOSUB410:LOCATE62,25,0:PRINT"IS MY MOVE ";:LOCATE51,25,0:LPRINTCHR$(E+64);Q;"- "CHR$(R+64);U: 320 IFCL$="Y"THENLOCATE31,25,0:PRINT"STOP ";TIME$; 330 X=E:Y=Q:GOSUB1040:X=R:Y=U:GOSUB1040:IFC=1THENLOCATE1,24,1:PRINT"CHECK ";:C=0ELSELOCATE1,24,1:PRINT" "; 340 IFX$="S"THENGOSUB3000:B7!=3*RND(0):LOCATE1,25,1:PRINT"SELF-PLAYING";:GOSUB3710:GOTO250:ELSELOCATE1,25,1:PRINT"MOVE ";B$;:SOUND10,10:GOSUB2760:D=0:B4=A:B9=B:B5=0:IFA(X,Y)=2ANDY=5ANDB=6ANDA(A,B)=1ANDABS(A-X)=1THENB5=1:GOTO370 350 IFX$="K"ORX$="Q"THENGOSUB1030:LOCATE1,25,0:PRINTSTRING$(14," ");:GOTO250 360 IFX$="S"THENCL$="N":GOTO340:ELSEA0=3:GOSUB400:IFD=0THENLOCATE31,25,0:PRINT"ILLEGAL ";:GOTO340 370 LOCATE31,25,1:PRINT"OK ";:A=B4:B=B9:A(A,B)=A(X,Y):A(X,Y)=1:GOSUB1040:X=A:Y=B:GOSUB1040:IFN$="N"THENGOSUB1030:N$=" " 380 IFA(A,B)=2ANDB=8THENLOCATE31,25,1:PRINT"WHAT PIECE";:GOSUB3290:X=A:Y=B:GOSUB1040:LOCATE31,25,1:PRINT" "; 390 IFB5=1THENA(A,B-1)=1:X=A:Y=B-1:GOSUB1040:GOTO250:ELSEGOTO250 400 LOCATE78,1,0:PRINT"$ ";:ONA(X,Y)GOTO0,610,0,510,460,0,420,0,460:GOTO590 410 ON-A(X,Y)GOTO0,660,0,510,460,0,420,0,460:GOTO590 420 B=Y:FORA=X+1TO8:GOSUB770:IFS=0THENNEXTELSEGOTO430 430 FORA=X-1TO1STEP-1:GOSUB770:IFS=0THENNEXTELSEGOTO440 440 A=X:FORB=Y+1TO8:GOSUB770:IFS=0THENNEXTELSEGOTO450 450 FORB=Y-1TO1STEP-1:GOSUB770:IFS=0THENNEXT:RETURNELSERETURN 460 B=Y:FORA=X+1TO8:B=B+1:GOSUB770:IFS=0THENNEXTELSEGOTO470 470 B=Y:FORA=X-1TO1STEP-1:B=B-1:GOSUB770:IFS=0THENNEXTELSEGOTO480 480 B=Y:FORA=X-1TO1STEP-1:B=B+1:GOSUB770:IFS=0THENNEXTELSEGOTO490 490 B=Y:FORA=X+1TO8:B=B-1:GOSUB770:IFS=0THENNEXTELSEGOTO500 500 IFABS(A(X,Y))=9THENGOTO420:ELSERETURN 510 A=X+2:B=Y+1:IFA<9ANDB<9THENGOSUB780ELSEGOTO520 520 B=B-2:IFB>0ANDA<9THENGOSUB780ELSEGOTO530 530 A=A-4:IFA>0ANDB>0THENGOSUB780ELSEGOTO540 540 B=B+2:IFB<9ANDA>0THENGOSUB780ELSEGOTO550 550 A=A+1:B=B+1:IFA>0ANDA<9ANDB<9THENGOSUB780ELSEGOTO560 560 B=B-4:IFB>0ANDA>0ANDA<9THENGOSUB780ELSEGOTO570 570 A=A+2:IFA>0ANDA<9ANDB>0THENGOSUB780ELSEGOTO580 580 B=B+4:IFB<9ANDA>0ANDA<9THENGOSUB780:RETURNELSERETURN 590 FORA=X-1TOX+1:FORB=Y-1TOY+1:IFA(A,B)<>0THENGOSUB780 600 NEXT:NEXT:RETURN 610 A=X:IFY>2THENGOTO630ELSEGOTO620 620 B=Y+1:IFA(A,B)=1THENGOSUB790:B=B+1:IFA(A,B)=1THENGOSUB790:GOTO640:ELSEGOTO640:ELSEGOTO640 630 B=Y+1:IFA(A,B)=1THENGOSUB790ELSEGOTO640 640 A=X+1:B=Y+1:IFA(A,B)<0THENGOSUB790ELSEGOTO650 650 A=A-2:IFA(A,B)<0THENGOSUB790:RETURN:ELSERETURN 660 A=X:IFY<7THENGOTO680ELSEGOTO670 670 B=Y-1:IFA(A,B)=1THENGOSUB790:B=B-1:IFA(A,B)=1THENGOSUB790:GOTO690:ELSEGOTO690:ELSEGOTO690 680 B=Y-1:IFA(A,B)=1THENGOSUB790ELSEGOTO690 690 A=X-1:B=Y-1:IFA(A,B)>1THENGOSUB790ELSEGOTO700 700 A=A+2:IFA(A,B)>1THENGOSUB790:RETURN:ELSEGOTO720 710 T=A(A,B):IFT=-99THENB1=T:RETURN:ELSEGOTO720 720 A5=S:IFABS(T)<=A(X,Y)THENA(A,B)=A(X,Y):A(X,Y)=1:GOTO740:ELSEGOTO730 730 IFT1THENGOSUB400 870 NEXT:NEXT:X=N:Y=H:A0=1:GOSUB410:A0=0:S=B3:X=W:Y=M:A=N:B=H:A(X,Y)=A(A,B):A(A,B)=P 880 B6!=1/(ABS(4.5-A)+ABS(4.5-B)+1):IFA(X,Y)<-2ANDA(X,Y)>-9THENB6!=B6!+1/(ABS(A6-A)+ABS(A7-B)+5)+RND(0)/15 890 G!=P+B1+B6!:IFP=99THENGOSUB1030:LOCATE1,25,1:PRINT"MATE ";B$;:GOTO3380 900 IFG!<=F!THENRETURN 910 F!=G!:E=X:Q=Y:R=A:U=B:RETURN 920 CLS 930 Y=0:FORJ=896TO0STEP-128:Y=Y+1:X=0:FORK=J TO42+J STEP6:X=X+1:T(X,Y)=K:NEXT:NEXT 940 Y=0:FORJ=960TO64STEP-128:Y=Y+1:X=0:FORK=J TO42+J STEP6:X=X+1:B(X,Y)=K:NEXT:NEXT 950 DATA -7,-4,-5,-9,-99,-5,-4,-7 960 DATA -2,-2,-2,-2,-2,-2,-2,-2 970 DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 980 DATA 2,2,2,2,2,2,2,2 990 DATA 7,4,5,9,99,5,4,7 1000 FORY=8TO1STEP-1:FORX=1TO7STEP2:S(X,Y)=I:S(X+1,Y)=-I:NEXT:I=-I:NEXT 1010 FORY=8TO1STEP-1:FORX=1TO8:READA(X,Y):NEXT:NEXT:RETURN 1020 I=-I:A(4,1)=99:A(5,1)=9:A(4,8)=-99:A(5,8)=-9 1030 FORY=1TO8:FORX=1TO8:GOSUB1040:NEXT:NEXT:RETURN 1040 IFS(X,Y)>0THENGOTO1060 1050 ONABS(A(X,Y))GOSUB1140,1330,0,2110,2370,0,2630,0,1590:IFABS(A(X,Y))=99THENGOSUB1850:RETURNELSERETURN 1060 ONABS(A(X,Y))GOSUB1070,1200,0,1980,2240,0,2500,0,1460:IFABS(A(X,Y))=99THENGOSUB1720:RETURNELSERETURN 1070 IFS(X,Y)<0THENGOTO1140 1080 LOCATEX*8+1,25-Y*3,0 1090 PRINTSTRING$(8,CHR$(140)); 1100 LOCATEX*8+1,26-Y*3,0 1110 PRINTSTRING$(8,CHR$(140)); 1120 LOCATEX*8+1,27-Y*3,0 1130 PRINTSTRING$(8,CHR$(140));:RETURN 1140 LOCATEX*8+1,25-Y*3,0 1150 PRINTSTRING$(8," "); 1160 LOCATEX*8+1,26-Y*3,0 1170 PRINTSTRING$(8," "); 1180 LOCATEX*8+1,27-Y*3,0 1190 PRINTSTRING$(8," ");:RETURN 1200 IFI*A(X,Y)<0THENGOTO1270 1210 LOCATEX*8+1,25-Y*3,0 1220 PRINTSTRING$(8,CHR$(140)); 1230 LOCATEX*8+1,26-Y*3,0 1240 PRINTSTRING$(3,CHR$(140));CHR$(154);STRING$(4,CHR$(140)); 1250 LOCATEX*8+1,27-Y*3,0 1260 PRINTSTRING$(8,CHR$(140)):RETURN 1270 LOCATEX*8+1,25-Y*3,0 1280 PRINTSTRING$(8,CHR$(140)); 1290 LOCATEX*8+1,26-Y*3,0 1300 PRINTSTRING$(3,CHR$(140));CHR$(154);STRING$(4,CHR$(140)); 1310 LOCATEX*8+1,27-Y*3,0 1320 PRINTSTRING$(8,CHR$(140));:RETURN 1330 IFI*A(X,Y)<0THENGOTO1400 1340 LOCATEX*8+1,25-Y*3,0 1350 PRINTSTRING$(8,CHR$(32)); 1360 LOCATEX*8+1,26-Y*3,0 1370 PRINTSTRING$(3,CHR$(32));CHR$(154);STRING$(4,CHR$(32)); 1380 LOCATEX*8+1,27-Y*3,0 1390 PRINTSTRING$(8,CHR$(32)):RETURN 1400 LOCATEX*8+1,25-Y*3,0 1410 PRINTSTRING$(8,CHR$(32)); 1420 LOCATEX*8+1,26-Y*3,0 1430 PRINTSTRING$(3,CHR$(32));CHR$(154);STRING$(4,CHR$(32)); 1440 LOCATEX*8+1,27-Y*3,0 1450 PRINTSTRING$(8,CHR$(32));:RETURN 1460 IFI*A(X,Y)<0THENGOTO1530 1470 LOCATEX*8+1,25-Y*3,0 1480 PRINTSTRING$(2,CHR$(140));STRING$(3,CHR$(139));STRING$(3,CHR$(140)); 1490 LOCATEX*8+1,26-Y*3,0 1500 PRINTCHR$(140)+"QUEEN"+CHR$(140);CHR$(140); 1510 LOCATEX*8+1,27-Y*3,0 1520 PRINTSTRING$(2,CHR$(140));STRING$(3,CHR$(139));STRING$(3,CHR$(140));:RETURN 1530 LOCATEX*8+1,25-Y*3,0 1540 PRINTSTRING$(2,CHR$(140));STRING$(3,CHR$(139));STRING$(3,CHR$(140)); 1550 LOCATEX*8+1,26-Y*3,0 1560 PRINTCHR$(140)+"QUEEN"+CHR$(140);CHR$(140); 1570 LOCATEX*8+1,27-Y*3,0 1580 PRINTSTRING$(2,CHR$(140));STRING$(3,CHR$(139));STRING$(3,CHR$(140));:RETURN 1590 IFI*A(X,Y)<0THENGOTO1660 1600 LOCATEX*8+1,25-Y*3,0 1610 PRINTSTRING$(2,CHR$(32));STRING$(3,CHR$(178));STRING$(3,CHR$(32)); 1620 LOCATEX*8+1,26-Y*3,0 1630 PRINTCHR$(32)+"QUEEN"+CHR$(32);CHR$(32); 1640 LOCATEX*8+1,27-Y*3,0 1650 PRINTSTRING$(2,CHR$(32));STRING$(3,CHR$(139));STRING$(3,CHR$(32));:RETURN 1660 LOCATEX*8+1,25-Y*3,0 1670 PRINTSTRING$(2,CHR$(32));STRING$(3,CHR$(139));STRING$(3,CHR$(32)); 1680 LOCATEX*8+1,26-Y*3,0 1690 PRINTCHR$(32)+"QUEEN"+CHR$(32);CHR$(32); 1700 LOCATEX*8+1,27-Y*3,0 1710 PRINTSTRING$(2,CHR$(32));STRING$(3,CHR$(139));STRING$(3,CHR$(32));:RETURN 1720 IFI*A(X,Y)THENGOTO1790 1730 LOCATEX*8+1,25-Y*3,0 1740 PRINTSTRING$(2,CHR$(140));STRING$(4,CHR$(139));STRING$(2,CHR$(140)); 1750 LOCATEX*8+1,26-Y*3,0 1760 PRINTCHR$(140);CHR$(139)+"KING"+CHR$(139);CHR$(140); 1770 LOCATEX*8+1,27-Y*3,0 1780 PRINTSTRING$(2,CHR$(140));STRING$(4,CHR$(139));STRING$(2,CHR$(140));:RETURN 1790 LOCATEX*8+1,25-Y*3,0 1800 PRINTSTRING$(2,CHR$(140));STRING$(4,CHR$(139));STRING$(2,CHR$(140)); 1810 LOCATEX*8+1,26-Y*3,0 1820 PRINTCHR$(140);CHR$(139)+"KING"+CHR$(139);CHR$(140); 1830 LOCATEX*8+1,27-Y*3,0 1840 PRINTSTRING$(2,CHR$(140));STRING$(4,CHR$(139));STRING$(2,CHR$(140));:RETURN 1850 IFI*A(X,Y)<0THENGOTO1920 1860 LOCATEX*8+1,25-Y*3,0 1870 PRINTSTRING$(2,CHR$(32));STRING$(4,CHR$(139));STRING$(2,CHR$(32)); 1880 LOCATEX*8+1,26-Y*3,0 1890 PRINTCHR$(32);CHR$(139)+"KING"+CHR$(139);CHR$(32); 1900 LOCATEX*8+1,27-Y*3,0 1910 PRINTSTRING$(2,CHR$(32));STRING$(4,CHR$(139));STRING$(2,CHR$(32));:RETURN 1920 LOCATEX*8+1,25-Y*3,0 1930 PRINTSTRING$(2,CHR$(32));STRING$(4,CHR$(139));STRING$(2,CHR$(32)); 1940 LOCATEX*8+1,26-Y*3,0 1950 PRINTCHR$(32);CHR$(139)+"KING"+CHR$(139);CHR$(32); 1960 LOCATEX*8+1,27-Y*3,0 1970 PRINTSTRING$(2,CHR$(32));STRING$(4,CHR$(139));STRING$(2,CHR$(32));:RETURN 1980 IFI*A(X,Y)<0THENGOTO2050 1990 LOCATEX*8+1,25-Y*3,0 2000 PRINTSTRING$(3,CHR$(140));STRING$(2,CHR$(139));STRING$(3,CHR$(140)); 2010 LOCATEX*8+1,26-Y*3,0 2020 PRINTCHR$(140)+"KNIGHT"+CHR$(140); 2030 LOCATEX*8+1,27-Y*3,0 2040 PRINTSTRING$(3,CHR$(140));STRING$(2,CHR$(139));STRING$(3,CHR$(140));:RETURN 2050 LOCATEX*8+1,25-Y*3,0 2060 PRINTSTRING$(3,CHR$(140));STRING$(2,CHR$(139));STRING$(3,CHR$(140)); 2070 LOCATEX*8+1,26-Y*3,0 2080 PRINTCHR$(140)+"KNIGHT"+CHR$(140); 2090 LOCATEX*8+1,27-Y*3,0 2100 PRINTSTRING$(3,CHR$(140));STRING$(2,CHR$(139));STRING$(3,CHR$(140));:RETURN 2110 IFI*A(X,Y)<0THENGOTO2180 2120 LOCATEX*8+1,25-Y*3,0 2130 PRINTSTRING$(3,CHR$(32));STRING$(2,CHR$(139));STRING$(3,CHR$(32)); 2140 LOCATEX*8+1,26-Y*3,0 2150 PRINTCHR$(32)+"KNIGHT"+CHR$(32); 2160 LOCATEX*8+1,27-Y*3,0 2170 PRINTSTRING$(3,CHR$(32));STRING$(2,CHR$(139));STRING$(3,CHR$(32));:RETURN 2180 LOCATEX*8+1,25-Y*3,0 2190 PRINTSTRING$(3,CHR$(32));STRING$(2,CHR$(139));STRING$(3,CHR$(32)); 2200 LOCATEX*8+1,26-Y*3,0 2210 PRINTCHR$(32)+"KNIGHT"+CHR$(32); 2220 LOCATEX*8+1,27-Y*3,0 2230 PRINTSTRING$(3,CHR$(32));STRING$(2,CHR$(139));STRING$(3,CHR$(32));:RETURN 2240 IFI*A(X,Y)<0THENGOTO2310 2250 LOCATEX*8+1,25-Y*3,0 2260 PRINTSTRING$(3,CHR$(140));STRING$(2,CHR$(139));STRING$(3,CHR$(140)); 2270 LOCATEX*8+1,26-Y*3,0 2280 PRINTCHR$(140)+"BISHOP"+CHR$(140); 2290 LOCATEX*8+1,27-Y*3,0 2300 PRINTSTRING$(3,CHR$(140));STRING$(2,CHR$(139));STRING$(3,CHR$(140));:RETURN 2310 LOCATEX*8+1,25-Y*3,0 2320 PRINTSTRING$(3,CHR$(140));STRING$(2,CHR$(139));STRING$(3,CHR$(140)); 2330 LOCATEX*8+1,26-Y*3,0 2340 PRINTCHR$(140)+"BISHOP"+CHR$(140); 2350 LOCATEX*8+1,27-Y*3,0 2360 PRINTSTRING$(3,CHR$(140));STRING$(2,CHR$(139));STRING$(3,CHR$(140));:RETURN 2370 IFI+A(X,Y)<0THENGOTO2440 2380 LOCATEX*8+1,25-Y*3,0 2390 PRINTSTRING$(3,CHR$(32));STRING$(2,CHR$(139));STRING$(3,CHR$(32)); 2400 LOCATEX*8+1,26-Y*3,0 2410 PRINTCHR$(32)+"BISHOP"+CHR$(32); 2420 LOCATEX*8+1,27-Y*3,0 2430 PRINTSTRING$(3,CHR$(32));STRING$(2,CHR$(139));STRING$(3,CHR$(32));:RETURN 2440 LOCATEX*8+1,25-Y*3,0 2450 PRINTSTRING$(3,CHR$(32));STRING$(2,CHR$(139));STRING$(3,CHR$(32)); 2460 LOCATEX*8+1,26-Y*3,0 2470 PRINTCHR$(32)+"BISHOP"+CHR$(32); 2480 LOCATEX*8+1,27-Y*3,0 2490 PRINTSTRING$(3,CHR$(32));STRING$(2,CHR$(139));STRING$(3,CHR$(32));:RETURN 2500 IFI*A(X,Y)<0THENGOTO2570 2510 LOCATEX*8+1,25-Y*3,0 2520 PRINTCHR$(140);CHR$(140);CHR$(139);CHR$(140);CHR$(140);CHR$(139);CHR$(140);CHR$(140); 2530 LOCATEX*8+1,26-Y*3,0 2540 PRINTCHR$(140);CHR$(140)+"ROOK"+CHR$(140);CHR$(140); 2550 LOCATEX*8+1,27-Y*3,0 2560 PRINTSTRING$(2,CHR$(140));STRING$(4,CHR$(139));STRING$(2,CHR$(140));:RETURN 2570 LOCATEX*8+1,25-Y*3,0 2580 PRINTCHR$(140);CHR$(140);CHR$(139);CHR$(140);CHR$(140);CHR$(139);CHR$(140); CHR$(140); 2590 LOCATEX*8+1,26-Y*3,0 2600 PRINTCHR$(140);CHR$(140)+"ROOK"+CHR$(140);CHR$(140); 2610 LOCATEX*8+1,27-Y*3,0 2620 PRINTSTRING$(2,CHR$(140));STRING$(4,CHR$(139));STRING$(2,CHR$(140));:RETURN 2630 IFI*A(X,Y)<0THENGOTO2700 2640 LOCATEX*8+1,25-Y*3,0 2650 PRINTCHR$(32);CHR$(32);CHR$(139);CHR$(32);CHR$(32);CHR$(139);CHR$(32);CHR$(32); 2660 LOCATEX*8+1,26-Y*3,0 2670 PRINTCHR$(32);CHR$(32)+"ROOK"+CHR$(32);CHR$(32); 2680 LOCATEX*8+1,27-Y*3,0 2690 PRINTSTRING$(2,CHR$(32));STRING$(4,CHR$(139));STRING$(2,CHR$(32));:RETURN 2700 LOCATEX*8+1,25-Y*3,0 2710 PRINTCHR$(32);CHR$(32);CHR$(139);CHR$(32);CHR$(32);CHR$(139);CHR$(32);CHR$(32); 2720 LOCATEX*8+1,26-Y*3,0 2730 PRINTCHR$(32);CHR$(32)+"ROOK"+CHR$(32);CHR$(32); 2740 LOCATEX*8+1,27-Y*3,0 2750 PRINTSTRING$(2,CHR$(32));STRING$(4,CHR$(139));STRING$(2,CHR$(32));:RETURN 2760 LOCATE31,25,1:PRINTSTRING$(10," "); 2770 X$=INKEY$:IFX$="N"THENN$=X$ 2780 IFX$>="A"ANDX$<="H"THENX=VAL(CHR$(ASC(X$)-16)):GOTO2900 2790 IFX$="N"THENGOSUB3200 2800 IFX$="K"ANDA(5,1)=99ANDA(8,1)=7THENA(5,1)=1:A(8,1)=1:A(7,1)=99:A(6,1)=7:GOTO2970 2810 IFX$="Q"ANDA(5,1)=99ANDA(1,1)=7THENA(5,1)=1:A(1,1)=1:A(3,1)=99:A(4,1)=7:GOTO2970 2820 IFX$="K"ANDA(4,1)=99ANDA(1,1)=7THENA(4,1)=1:A(1,1)=1:A(2,1)=99:A(3,1)=7:GOTO2970 2830 IFX$="Q"ANDA(4,1)=99ANDA(8,1)=7THENA(4,1)=1:A(8,1)=1:A(6,1)=99:A(5,1)=7:GOTO2970 2840 IFX$="X"THENGOSUB3000:LOCATE1,25,0:PRINT"EXCHANGING ";:GOSUB3710:IFCL$="Y"THENLOCATE50,25,0:PRINT"START ";TIME$;:GOTO250:ELSE:GOTO250 2850 IFX$="S"THENGOTO2990 2860 IFX$="M"THENGOSUB3010 2870 IFX$="I"THENGOSUB3410:CLS:GOSUB1030:LOCATE1,25,1:PRINT"MOVE ";B$;:SOUND10,10 2880 IFX$="L"THENGOSUB3230 2890 GOTO2770 2900 LOCATE21,25,1:PRINTX$;:LOCATE31,25,1:PRINT" "; 2910 Y=VAL(INKEY$):IFY=0THENGOTO2910 2920 LOCATE22,25,1:PRINTY;:LOCATE25,25,1:PRINT"-"; 2930 IFA(X,Y)<2ORA(X,Y)>99THENLOCATE31,25,1:PRINT"ENTRY ERROR ";:GOTO2760 2940 A$=INKEY$:IFA$<"A"ORA$>"H"THENGOTO2940ELSEA=VAL(CHR$(ASC(A$)-16)) 2950 LOCATE27,25,1:PRINTA$; 2960 B=VAL(INKEY$):IFB=0THENGOTO2960ELSELOCATE28,25,1:PRINTB; 2970 IFX$="K"ORX$="Q"THENLOCATE20,25,1:PRINT"CSTL. ";X$;"-SIDE";:GOSUB3000ELSEGOSUB3000 2980 IFCL$="Y"THENLOCATE50,25,0:PRINT"START ";TIME$; 2990 RETURN 3000 LOCATE1,25,1:PRINTSTRING$(79," ");:RETURN 3010 GOSUB3000:LOCATE1,25,1:PRINT"MODIFYING "; 3020 GOSUB3180:IFM$<"A"ORM$>"H"THENGOTO3020 3030 X=VAL(CHR$(ASC(M$)-16)):LOCATE21,25,1:PRINTM$; 3040 M$=INKEY$:IFM$<"1"ORM$>"8"THENGOTO3040 3050 Y=VAL(M$):LOCATE23,25,1:PRINTM$;" = "; 3060 M$=INKEY$:IFM$="C"ORM$="P"ORM$="E"THENS1$=M$:LOCATE27,25,1:PRINTM$;:ELSEGOTO3060 3070 M$=INKEY$:IFM$="S"ORM$="P"ORM$="N"ORM$="B"ORM$="R"ORM$="Q"ORM$="K"THENV$=M$:LOCATE29,25,1:PRINTM$;ELSEGOTO3070 3080 IFV$="P"THENV1=2 3090 IFV$="N"THENV1=4 3100 IFV$="B"THENV1=5 3110 IFV$="R"THENV1=7 3120 IFV$="Q"THENV1=9 3130 IFV$="K"THENV1=99 3140 IFV$="S"THENV1=1 3150 IFS1$="C"ANDV1<>1THENV1=-V1 3160 A(X,Y)=V1:IFS1$="E"THENA(X,Y)=1 3170 GOSUB1040:GOTO3010 3180 M$=INKEY$:IFM$="N"THENGOSUB3200:GOTO3180:ELSEIFM$="Z"THENGOSUB3000:LOCATE20,25,1:PRINT" ";:GOSUB1030:ELSERETURN 3190 IFCL$="Y"THENLOCATE51,25,0:PRINT"START ";TIME$;:GOTO250ELSEGOTO250 3200 FORJ=1TO8:FORK=1TO8:K$=STR$(K) 3210 LOCATEJ*8+1,27-K*3,0 3220 PRINTCHR$(J+64);RIGHT$(K$,1);:NEXT:NEXT:RETURN 3230 GOSUB3000:LOCATE20,25,1:PRINT"LEVEL=";B8!;:PRINT"CHANGE LEVELS?"; 3240 C$=INKEY$:IFC$="N"THENGOTO3280ELSEIFC$="Y"THENLOCATE27,25,1:PRINT" ";:GOSUB3000:ELSEGOTO3240 3250 L1$=INKEY$:IFL1$=""THENGOTO3250ELSEIFL1$>="0"ANDL1$<="9"THENLOCATE27,25,1:PRINTL1$;:ELSEGOTO3250 3260 L2$=INKEY$:IFL2$=""THENGOTO3260ELSEIFL2$<"0"ORL2$>"9"THENL2$=L1$:L1$="0" 3270 B8!=VAL(L1$)*10+VAL(L2$):B7!=B8!/2:LOCATE27,25,0:PRINTL1$;L2$; 3280 GOSUB3000:LOCATE20,25,0:PRINT" ";:LOCATE1,25,1:PRINT"MOVE ";B$;:RETURN 3290 REM *** PROMOTION ROUTINE *** 3300 LOCATE1,2,1:PRINT"P, N, B, R, Q "; 3310 Z$=INKEY$:IFZ$="P"THENA(A,B)=2:GOTO3370 3320 IFZ$="N"THENA(A,B)=4:GOTO3370 3330 IFZ$="B"THENA(A,B)=5:GOTO3370 3340 IFZ$="R"THENA(A,B)=7:GOTO3370 3350 IFZ$="Q"THENA(A,B)=9:GOTO3370 3360 GOTO3310 3370 RETURN 3380 IFCL$="Y"THENLOCATE61,25,1:PRINT"STOP ";TIME$; 3390 LOCATE1,25,1:PRINT"HIT (P) TO PLAY OR HIT (B) FOR BASIC"; 3400 A$=INKEY$:IFA$=""THENGOTO3400ELSEIFA$="B"THENCLS:ENDELSEIFA$="P"THENRUNELSEGOTO3400 3410 CLS 3420 PRINT"1. USE LIST TO INSURE LOADED RIGHT, THE LAST LINE IS 65529 " 3430 PRINT"2. ALSO NOTE MEMORY SIZE AS A DOUBLE CHECK " 3440 PRINT"3. SPECIAL COMMANDS DURING PLAYER'S MOVE ARE:" 3450 PRINT" TYPE 'N' - TO NUMBER THE BOARD " 3460 PRINT" 'K' - TO CASTLE KING SIDE " 3470 PRINT" 'Q' - TO CASTLE QUEEN SIDE " 3480 PRINT" 'X' - TO EXCHANGE PIECES AND LET COMPUTER MOVE" 3490 PRINT" 'S' - TO LET COMPUTER PLAY BY ITSELF " 3500 PRINT" 'M' - TO MODIFY THE BOARD, ENTER THE SQUARE FOLLOWED BY" 3510 PRINT" C, P, OR E FOR COMPUTER, PLAYER, OR EMPTY" 3520 PRINT" AND S,P,N,B,R,Q,K FOR SQUARE, PAWN, ETC..." 3530 PRINT" 'Z' - TO ESCAPE MODIFY AND LET COMPUTER MOVE" 3540 PRINT" 'I' - TO GET INSTRUCTIONS AGAIN" 3550 PRINT" 'L' - TO LOOK AT OR CHANGE LEVEL OF PLAY" 3560 REM ******** 3570 INPUT"HIT ENTER TO CONTINUE";EN$:PRINT 3580 PRINT"4. TO PROMOTE TO P,N,B,R,Q ENTER THE LETTER WHEN PROMOTED" 3590 PRINT"5. TO CAPTURE 'EN PASSANT' SPECIFY THE 'FROM' - 'TO' SQUARES" 3600 PRINT"6. LEVELS OF PLAY ARE FROM 01 TO 24" 3610 PRINT"7. COMPUTER ASSUMES MATE IF KING IS LEFT IN CHECK SO BE SURE TO " 3620 PRINT" WATCH FOR THE CHECK MESSAGE" 3630 PRINT"8. IF A MOVE IS ILLEGAL OR AN ENTRY ERROR IS MADE SIMPLY TYPE IN" 3640 PRINT" A NEW MOVE. A MOVE MAY BE STARTED OVER BY FORCING AN ERROR. (E.G. '9')." 3650 PRINT"9. IF IS HIT DURING THE GAME, TYPE 'GOSUB 900:CONT' TO" 3660 PRINT" DRAW BOARD AND CONTINUE" 3670 PRINT"10. YOU HAVE A CHOICE OF BLACK OR WHITE, THE COMPUTER WILL ALWAYS" 3680 PRINT" BE AT THE TOP OF THE SCREEN" 3690 PRINT:PRINT:INPUT"HIT ENTER TO CONTINUE GAME";EN$ 3700 RETURN 3710 I=-I:GOSUB3720:GOSUB1030:RETURN 3720 L=0:FORJ=1TO8:FORK=1TO8:L=L+1:IFA(J,K)<>1THENC(L)=-A(J,K):ELSEC(L)=A(J,K) 3730 NEXT:NEXT 3740 L=65:FORJ=1TO8:FORK=1TO8:L=L-1:A(J,K)=C(L):NEXT:NEXT 3750 RETURN 3760 END