Listing of file='CHESS.BAS;01' on disk='vmedia/bounce_ball-sector.ccvf'
50 PLOT 15,6,6,12,27,24 60 DIM B(100),P(6,20) 100 REM LOAD THE BOARD 110 PLOT 27,4:PRINT "LOAD CHESS.DSP":PLOT 27,27 120 PL$(1)= "WHITE":PL$(3)= "BLACK" 130 FOR K= 1TO 6:READ P$(K):NEXT :DATA "PAWN","KNIGHT","BISHOP","ROOK","QUEEN","KING" 200 REM SET UP BOARD SQUARES 210 FOR K= 12TO 89:B(K)= 0:NEXT 220 FOR K= 1TO 9:B(K)= 99:NEXT 230 FOR K= 92TO 100:B(K)= 99:NEXT 240 FOR K= 10TO 90STEP 10:B(K)= 99:B(K+ 1)= 99:NEXT 250 REM GET DATA FOR PRINTING PIECES 260 LOAD "P.ARY" 300 REM SET UP INITIAL PIECE CONFIGURATION 310 PL(1)= 1:PL(2)= - 1:PLOT 15,8 320 PRINT "DO YOU WISH":PRINT "TO PLAY" 330 INPUT "WHITE? ";A$:A$= LEFT$ (A$,1) 340 IF A$= "N"THEN PL(1)= - 1:PL(2)= 1:GOTO 360 350 IF A$< > "Y"AND A$< > "O"THEN GOSUB 6520:GOTO 330 360 PLOT 8:GOSUB 6500 1000 REM ROOKS 1002 B(12)= PL(2)* 4:B(19)= PL(2)* 4:B(82)= PL(1)* 4:B(89)= PL(1)* 4 1010 REM KNIGHTS 1012 B(13)= PL(2)* 2:B(18)= PL(2)* 2:B(83)= PL(1)* 2:B(88)= PL(1)* 2 1020 REM BISHOPS 1022 B(14)= PL(2)* 3:B(17)= PL(2)* 3:B(84)= PL(1)* 3:B(87)= PL(1)* 3 1030 REM PAWNS 1032 FOR K= 22TO 29:B(K)= PL(2):NEXT 1034 FOR K= 72TO 79:B(K)= PL(1):NEXT 1040 REM KINGS & QUEENS 1042 B(15)= (5- (PL(2)= 1))* PL(2) 1044 B(16)= (5- (PL(2)= - 1))* PL(2) 1046 B(85)= (6+ (PL(1)= 1))* PL(1) 1048 B(86)= (6+ (PL(1)= - 1))* PL(1) 2000 FC= 17+ (PL(2)= - 1) 2010 FOR S= 12TO 19:GOSUB 3000:NEXT 2050 FOR S= 22TO 29:GOSUB 3000:NEXT 2100 FC= 17+ (PL(1)= - 1) 2110 FOR S= 72TO 79:GOSUB 3000:NEXT 2150 FOR S= 82TO 89:GOSUB 3000:NEXT 2160 GOTO 8000 2200 END 3000 REM DRAW A PIECE 3010 GOSUB 4000:GOSUB 5000:K= ABS (B(S)) 3020 PLOT 30,BC,29,FC,3,X,Y 3025 PLOT 2,254 3030 FOR J= 1TO 5:PLOT P(K,J):NEXT :GOSUB 6000 3040 FOR J= 6TO 10:IF P(K,J)= 255THEN GOSUB 7000:GOTO 3060 3050 PLOT P(K,J) 3060 NEXT J 3070 GOSUB 6000 3080 FOR J= 11TO 15:IF P(K,J)= 255THEN GOSUB 7000:GOTO 3100 3090 PLOT P(K,J) 3100 NEXT J 3110 GOSUB 6000 3120 FOR J= 16TO 20:PLOT P(K,J):NEXT :PLOT 255:RETURN 4000 REM SET UP FOREGROUND AND BACKGROUND COLORS 4002 REM S=SQUARE ON WHICH TO DRAW A PIECE 4004 REM BC=BACKGROUND COLOR, FC=FOREGROUND COLOR 4006 REM FC HAS BEEN SET TO 16 FOR BLACK AND 17 FOR WHITE 4010 BC= 20:S1= INT (S/ 10):IF S1/ 2= INT (S1/ 2)THEN 4040 4020 IF S/ 2= INT (S/ 2)THEN BC= 22 4030 RETURN 4040 IF S/ 2< > INT (S/ 2)THEN BC= 22 4050 RETURN 5000 REM DETERMINE WHERE TO DRAW THE PIECE 5002 REM S IS GIVEN AS THE SQUARE NUMBER (12-89) 5004 REM NOW DETERMINE ITS PLOT POSITION 5010 Y= INT ((S- 1)/ 10) 5020 X= (S- (10* Y+ 2))* 6+ 16 5030 Y= (Y- 1)* 4 5040 RETURN 6000 REM 6010 PLOT 255,26,26,26,26,26,10,2,254:RETURN 6500 FOR SP= 1TO 8:PRINT SPC( 13)"":NEXT :RETURN 6520 PLOT 28:PRINT SPC( 13)"":PLOT 28:RETURN 7000 REM 7010 PLOT 255,30,FC,32,30,BC,29,2,254:RETURN 7400 REM CHECK FOR CASTLING 7410 D= T3- F3:IF ABS (D)< > 2THEN RETURN 7415 PLOT 6,5,3,0,Y1+ 5:PRINT "CASTLES" 7420 F4= T3+ 2* SGN (D):IF B(F4)= 99THEN F4= F4- SGN (D) 7430 S= F4:GOSUB 7500:T4= F3+ SGN (D):B(T4)= B(F4):B(F4)= 0 7440 S= T4:GOSUB 3000:RETURN 7500 REM ERASE A SQUARE 7510 GOSUB 4000:PLOT 30,BC:GOSUB 5000 7515 PLOT 3,X,Y 7520 FOR SP= 1TO 4:PRINT SPC( 5):PLOT 10,26,26,26,26,26:NEXT :PLOT 29:PRINT :RETURN 7900 FLG= 0:IF LEN (A$)< > 2THEN FLG= - 1:GOSUB 6520:RETURN 7910 IF LEFT$ (A$,1)< "A"OR LEFT$ (A$,1)> "H"OR RIGHT$ (A$,1)< "1"OR RIGHT$ (A$,1)> "8"THEN FLG= - 1:GOSUB 6520 7920 RETURN 7950 PRINT :PRINT "ILLEGAL!":FOR T= 1TO 500:NEXT :RETURN 8000 P= - 1 8100 REM BEGIN EACH MOVE HERE 8110 P= - P:FC= 17+ (P= - 1):Y1= ABS (P+ PL(1))* 8 8120 PLOT 15,6,2,3,0,Y1:GOSUB 6500:PLOT 3,0,Y1 8140 PRINT PL$(2- P)" MOVES" 8150 INPUT "FROM: ";A$:GOSUB 7900:IF FLGTHEN 8150 8160 F1= ASC (LEFT$ (A$,1))- 63:F2= 90- 10* VAL (RIGHT$ (A$,1)):F3= F1+ F2 8170 IF SGN (B(F3))< > SGN (P)THEN GOSUB 7950:GOTO 8120 8200 INPUT "TO: ";A$:GOSUB 7900:IF FLGTHEN 8120 8210 T1= ASC (LEFT$ (A$,1))- 63:T2= 90- 10* VAL (RIGHT$ (A$,1)):T3= T1+ T2 8220 IF SGN (B(T3))= SGN (P)THEN GOSUB 7950:GOTO 8120 8224 DL= ABS (T3- F3) 8225 GOSUB 9000:IF FLGTHEN GOSUB 7950:GOTO 8120 8230 IF B(T3)< > 0THEN PLOT 21:PRINT :PRINT P$(ABS (B(F3)))" TAKES":PRINT P$(ABS (B(T3))) 8240 B(T3)= B(F3):B(F3)= 0:S= F3:GOSUB 7500 8250 S= T3:GOSUB 3000:IF ABS (B(T3))= 6THEN GOSUB 7400 8260 GOTO 8110 9000 FLG= 0:ON ABS (B(F3))GOTO 11000,12000,13000,14000,15000,16000 11000 IF DL> 20THEN FLG= - 1:RETURN 11005 IF DL= 10AND B(T3)< > 0THEN FLG= - 1:RETURN 11010 IF ((DL= 9)OR (DL= 13))AND (B(T3)= 0)THEN FLG= - 1:RETURN 11015 RETURN 12000 RETURN 13000 RETURN 14000 IF (DL> 7)AND (DL/ 10< > INT (DL/ 10))THEN FLG= - 1:RETURN 14005 RETURN 15000 RETURN 16000 IF DL< > 1AND (DL< 9OR DL> 11)THEN FLG= - 1:RETURN 16005 RETURN