1 POKE&HFFD9,0 10 PALETTE0,7:PALETTE1,56:PALETTE 2,0:PALETTE 3,0:PALETTE 4,63:PALETTE 5,63:DIM S(8,7) 20 PALETTE 6,1:PALETTE 13,46:PALETTE 14,2:PALETTE 15,4 30 HSCREEN2:HCLS0:HCOLOR1 40 FORX=1TO16:HBUFF X,384:NEXTX 50 HCOLOR13:HDRAW"BM0,0ND15NF9":HLINE(0,15)-(9,9),PSET:HPAINT(2,6),13,13:HLINE(0 ,0)-(7,18),PSET:HGET(0,0)-(22,22),16:HCLS0:HCOLOR1 60 FORX=0TO7:FORY=0TO7:HLINE(X*24,Y*24)-((X*24)+24,(Y*24)+24),PSET,B:NEXTY,X 70 FORX=0TO7STEP2:FORY=0TO7STEP2:HPAINT((X*24)+2,(Y*24)+2),1,1:HPAINT((X*24)+30, (Y*24)+30),1,1:NEXTY,X 80 FORX=0 TO 1:IF X=0 THEN HCOLOR 2,0 ELSE IF X=1 THEN HCOLOR 4,0 90 HDRAW"BM204,122R8U1L8R1U1R6L1U1L4U1R4U1L4U1L1R6U1L6R1U1R4" 100 HGET (196,100)-(219,123),(X*6)+1 110 GOSUB 300 120 HDRAW"BM206,122R12U1L12R1U1NR10R2U1NR6U1NR6R1U1NR4U1NR4U1NR4U1NR4U1L1NR6U1NL 1NR2U2D1NR1D2R5U1NR2U1NR1U1NR1NL1U1NL2U1NL3L1U1L2" 130 HGET (200,100)-(223,123),(X*6)+2 140 GOSUB 300 150 HDRAW"BM206,122R12L1U1L10R1U1R8L1U1L6U1L1NR8U1NR8U1NR7U1NR6U1NR10R1U1NR8U1NR 7U1NR6R1U1R4L1U1" 160 HGET (200,100)-(223,123),(X*6)+3 170 GOSUB 300 180 HDRAW"BM205,122R10U1L10R1U1R8L1U1L6U1R6U1L6U1R6U1L6U1L1NR8U1L1NR10U1R1D1R3U1 R2D1R3U1R1D1" 190 HGET (198,100)-(221,123),(X*6)+4 200 GOSUB 300 210 HDRAW"BM206,122R12U1L12R1U1R10L1L8R1U1R6L1U1NL4U1NL4U1NL4U1NL4U1NL4U1NL4U1NL 4U1R1NL6E1NL8E1NL10L4U1L2" 220 HGET (200,100)-(223,123),(X*6)+5 230 GOSUB 300 240 HDRAW"BM205,122R10U1L10R1U1R8L1U1L6R1U1NR4U1NR4U1NR4U1NR4H1NR6H1NR8H1NR10R2U 1NR6R2U1NR2U1NR2U1NR4NL2U1NR4NL2U2R1D2R1U2" 250 HGET (200,100)-(223,123),(X*6)+6 260 GOSUB 300 270 NEXTX 280 GOTO 310 290 END 300 HLINE (200,100)-(223,123),PRESET,BF:RETURN 310 HGET(0,0)-(23,23),13:HGET(24,0)-(47,23),14 320 ' 330 ' SET UP BOARD 340 ' 350 FORX=0TO7:S(X,1)=1:S(X,6)=7:NEXTX:S(0,0)=4:S(1,0)=3:S(2,0)=2:S(3,0)=5:S(4,0) =6:S(5,0)=2:S(6,0)=3:S(7,0)=4 ' SETUP BLACK BACK ROW360 S(0,7)=10:S(1,7)=9:S(2,7 )=8:S(3,7)=11:S(4,7)=12:S(5,7)=8:S(6,7)=9:S(7,7)=10 370 ' 380 ' 390 ' PUT PIECES ON BOARD 400 ' 410 FORX=0TO7:FORY=0TO7:IF S(X,Y)=0 THEN NEXT Y,X ELSE HPUT(X*24,Y*24)-((X*24)+2 3,(Y*24)+23),S(X,Y),OR:NEXTY,X 420 HPAINT(319,0),6,1 430 HPRINT(24,0)," * Modem Chess *":HPRINT(24,1)," By Mike Pepe" 440 HPRINT(24,5),"Are you playing:":HPRINT(24,6)," (W)hite":HPRINT(24,7)," O R":HPRINT(24,8)," (B)lack?" 450 A$=INKEY$:IF A$="" THEN 450 460 IF A$="W" OR A$="w" THEN PL=1:HCOLOR6:HLINE(193,0)-(320,96),PSET,BF:GOTO490 470 IF A$="B" OR A$="b" THEN 480 SOUND1,1:GOTO 450 490 ' YOU MOVE! 500 GOSUB 670 510 X=INT(XX/24)*24:Y=INT(YY/24)*24:XO=X/24:YO=Y/24 520 IF S(XO,YO)=0 THEN SOUND200,1:GOTO 500 530 IF PL=1 AND S(XO,YO)<7 THEN SOUND 200,1:GOTO 500 540 HPUT(X,Y)-(X+23,Y+23),S(XO,YO),NOT 550 GOSUB 670 560 XF=INT(XX/24):YF=INT(YY/24) 570 X1=(XO AND 1):Y1=(YO AND 1) 580 IF Y1=0 AND X1=0 THEN Z=13:GOTO 620 590 IF Y1=0 AND X1=1 THEN Z=14:GOTO 620 600 IF Y1=1 AND X1=0 THEN Z=14:GOTO 620 610 IF Y1=1 AND X1=1 THEN Z=13:GOTO 620 620 GOSUB 720 ' CHECK MOTION 630 IF CK=-1 THEN SOUND 1,5:HPUT(XO*24,YO*24)-(XO*24+23,YO*24+23),S(XO,YO),NOT:G OTO 500 640 HPUT(XO*24,YO*24)-(XO*24+23,YO*24+23),Z,PSET 650 S(XF,YF)=S(XO,YO):S(XO,YO)=0:HPUT(XF*24,YF*24)-(XF*24+23,YF*24+23),S(XF,YF), OR 660 GOTO 2000 670 X=JOYSTK(0)*3:Y=JOYSTK(1)*3:HGET(X,Y)-(X+23,Y+23),15:HPUT(X,Y)-(X+22,Y+22),1 6,OR 680 IF BUTTON(0)=1 THEN 700 ELSE XX=JOYSTK(0)*3:YY=JOYSTK(1)*3:IF XX=X AND YY=Y THEN 680 690 HPUT(X,Y)-(X+23,Y+23),15:GOTO 670 700 HPUT(X,Y)-(X+23,Y+23),15 710 IF BUTTON(0)=1 THEN 710 ELSE RETURN 720 ' CHECK MOVE 730 ON S(XO,YO) GOTO 750,870,960,1020,1220,1460,750,870,960,1020,1220,1460 740 SOUND225,1:RETURN 750 ' CHECK PAWN 760 IF XO=XF THEN 801 770 IF ABS(XO-XF)<>1 THEN CK=-1:RETURN 780 IF S(XF,YF)=0 THEN CK=-1:RETURN 790 IF S(XO,YO)=1 AND S(XF,YF)<7 THEN CK=-1:RETURN ELSE IF S(XO,YO)=7 AND S(XF,Y F)>6 THEN CK=-1:RETURN 795 CK=0:RETURN 800 IF ABS(YF-YO)=2 AND (XF=1) OR (XF=6) THEN CK=0:RETURN 801 IF S(XF,YF)<>0 THEN CK=-1:RETURN 802 IF S(XO,YO)=1 AND YF-YO=2 AND YO=1 THEN CK=0:RETURN 803 IF S(XO,YO)=7 AND YO-YF=2 AND YO=6 THEN CK=0:RETURN 810 IF S(XO,YO)=1 AND YF-YO<>1 THEN CK=-1:RETURN 820 IF S(XO,YO)=7 AND YO-YF<>1 THEN CK=-1:RETURN 830 CK=0:RETURN 870 ' CHECK BISHOP 880 A=XO:B=YO 890 A=A+SGN(XF-XO):B=B+SGN(YF-YO) 900 IF S(A,B)<>0 THEN 930 910 IF A=XF AND B=YF THEN CK=0:RETURN 920 GOTO 890 930 IF S(XO,YO)=2 AND S(A,B)<7 THEN CK=-1:RETURN 940 IF S(XO,YO)=8 AND S(A,B)>6 THEN CK=-1:RETURN 950 IF A=XF AND B=YF THEN CK=0:RETURN 960 ' CHECK KNIGHT 970 IF S(XO,YO)=3 AND S(XF,YF)<7 AND S(XF,YF)<>0 THEN CK=-1:RETURN 980 IF S(XO,YO)=9 AND S(XF,YF)>6 THEN CK=-1:RETURN 990 IF ABS(XO-XF)=2 AND ABS(YO-YF)=1 THEN CK=0:RETURN 1000 IF ABS(XO-XF)=1 AND ABS(YO-YF)=2 THEN CK=0:RETURN 1010 CK=-1:RETURN 1020 ' CHECK ROOK 1030 IF ABS(XO-XF)=0 AND ABS(YO-YF)<>0 THEN 1140 1040 IF ABS(YF-YO)=0 AND ABS(XF-XO)<>0 THEN 1060 1050 CK=-1:RETURN 1060 'CHECK X 1070 FORX=XO TO XF STEP SGN(XF-XO) 1080 IF X=XO THEN NEXTX 1090 IF S(X,YO)=0 THEN NEXTX:CK=0:RETURN 1100 IF X<>XF THEN 1130 1110 IF S(X,YO)>6 AND S(XO,YO)=4 THEN CK=0:RETURN 1120 IF S(X,YO)<7 AND S(XO,YO)=10 THEN CK=0:RETURN 1130 CK=-1:RETURN 1140 ' CHECK Y 1150 FOR Y=YO TO YF STEP SGN(YF-YO) 1160 IF Y=YO THEN NEXTY 1170 IF S(XO,Y)=0 THEN NEXTY:CK=0:RETURN 1180 IF Y<>YF THEN 1210 1190 IF S(XO,Y)>6 AND S(XO,YO)=4 THEN CK=0:RETURN 1200 IF S(XO,Y)<7 AND S(XO,YO)=10 THEN CK=0:RETURN 1210 CK=-1:RETURN 1220 ' CHECK QUEEN 1230 IF ABS(XO-XF)=0 OR ABS(YO-YF)=0 THEN 1350 1240 ' CHECK QUEEN AS IF BISHOP 1250 IF ABS(XO-XF)<>ABS(YO-YF) THEN CK=-1:RETURN 1260 X=XO:Y=YO 1270 X=X+SGN(XF-XO):Y=Y+SGN(YF-YO) 1280 IF X=XF THEN 1310 1290 IF S(X,Y)=0 THEN 1270 1300 IF X<>XF THEN CK=-1:RETURN 1310 IF S(X,Y)=0 THEN CK=0:RETURN 1320 IF S(XO,YO)=5 AND S(XF,YF)<7 THEN CK=-1:RETURN 1330 IF S(XO,YO)=11AND S(XF,YF)>6 THEN CK=-1:RETURN 1340 CK=0:RETURN 1350 ' CHECK QUEEN AS IF R00K 1360 X=XO:Y=YO 1370 X=X+SGN(XF-XO):Y=Y+SGN(YF-YO) 1380 IF SGN(XF-XO)=0 AND YF=Y THEN 1410 ELSE IF SGN(YF-YO)=0 AND XF=X THEN 1410 1390 IF S(X,Y)=0 THEN 1370 1400 IF SGN(XF-XO)=0 AND YF<>Y THEN CK=-1:RETURN ELSE IF SGN(YF-YO)=0 AND XF<>X THEN CK=-1:RETURN 1410 IF S(X,Y)=0 THEN CK=0:RETURN 1420 IF S(XO,YO)=5 AND S(X,Y)>6 THEN CK=0:RETURN 1430 IF S(XO,YO)=11 AND S(X,Y)<6 AND S(X,Y)>0 THEN CK=0:RETURN 1440 CK=0:RETURN 1450 IF S(X,Y)=0 THEN CK=0:RETURN ELSE 1410 1460 ' CHECK KING 1470 IF ABS(XO-XF)>1 OR ABS(YO-YF)>1 THEN CK=-1:RETURN 1480 IF S(XF,YF)=0 THEN CK=0:RETURN 1490 IF S(XO,YO)=6 AND S(XF,YF)<7 THEN CK=-1:RETURN 1500 IF S(XO,YO)=12 AND S(XF,YF)>6 THEN CK=-1:RETURN 1510 CK=0:RETURN 2000 ' CONTINUE THE MOVE 2010 HCOLOR13:HLINE(208,16)-(280,23),PSET,BF:HCOLOR14:HLINE(208,32)-(288,39),PSE T,BF:HCOLOR15:HLINE(208,48)-(272,55),PSET,BF 2011 HCOLOR12:HPRINT(26,2),"Transmit":HPRINT(26,4),"Take Back":HPRINT(26,6),"Sen d Msg" 2020 GOTO 500