ON ERROR GOTO Error1
3 CLS : SCREEN 1: COLOR 15, 1, 9: CLS : DEFINT A-Z
  CLS : PRINT "É"; STRING$(37, "Í"); "»"
   PRINT "º"; SPACE$(14); "CHECKERS"; SPACE$(15); "º"
   PRINT "È"; STRING$(37, "Í"); "¼"
   PRINT : PRINT "THIS IS THE GAME OF CHECKERS.": PRINT
   PRINT "THE COMPUTER IS GREEN, AND YOU ARE RED."
   PRINT : PRINT "TO MOVE, MOVE THE CURSOR ON THE ®FROM¯"
   PRINT "SQUARE WITH THE NUMERIC KEY PAD.  PRESS"
   PRINT "<ENTER> TO ACCEPT YOUR MOVE.  THEN MOVE"
   PRINT "TO THE ®TO¯ SQUARE.  THE COORDINATES OF"
   PRINT "YOUR MOVE WILL BE SHOWN ON THE LEFT."
   PRINT : PRINT "WHEN JUMPING, THE COMPUTER WILL SHOW"
   PRINT "®& TO¯ SO YOU CAN CONTINUE JUMPING.  TO"
   PRINT "QUIT A SERIES OF JUMPS, PRESS THE <+>"
   PRINT "KEY.  TO START A MOVE OVER, PRESS "; CHR$(17); "-"
   PRINT "(BACKSPACE).  TO QUIT, PRESS <ESC>."
   GOSUB 4650
   DIM R(4), S(7, 7), CP(11): G = -1: R(0) = -99
    FOR X = 0 TO 6 STEP 2: S(X, 0) = 1: S(X + 1, 1) = 1: S(X, 2) = 1: S(X + 1, 5) = -1: S(X, 6) = -1: S(X + 1, 7) = -1: NEXT
    CP(0) = 16: CP(1) = 8: FOR X = 2 TO 11: CP(X) = -1: NEXT
    SCREEN 1, 0: COLOR 1, 1: OUT 985, 49'MAKE FOREGROUND BRIGHTER
    GOSUB 3000
    LOCATE 25, 1: PRINT "DO YOU WANT TO MOVE FIRST?_";
192 a$ = "": WHILE a$ = "": a$ = INKEY$: WEND
    IF a$ = "Y" OR a$ = "y" THEN LINE (0, 192)-(319, 199), 0, BF: GOTO 1590
    IF a$ <> "N" AND a$ <> "n" THEN 192
    LINE (0, 192)-(319, 199), 0, BF
230 FOR X = 0 TO 7: FOR Y = 0 TO 7: IF S(X, Y) > -1 THEN 350
    IF S(X, Y) = -1 THEN FOR a = -1 TO 1 STEP 2: b = G: GOSUB 650: NEXT a
    IF S(X, Y) = -2 THEN FOR a = -1 TO 1 STEP 2: FOR b = -1 TO 1 STEP 2: GOSUB 650: NEXT b, a
350 NEXT Y, X: GOSUB 3000: GOTO 1140
650 U = X + a: V = Y + b: IF U < 0 OR U > 7 OR V < 0 OR V > 7 THEN 870
    IF S(U, V) = 0 THEN GOSUB 910: GOTO 870
    IF S(U, V) < 0 THEN 870
    U = U + a: V = V + b: IF U < 0 OR V < 0 OR U > 7 OR V > 7 THEN 870
    IF S(U, V) = 0 THEN GOSUB 910
870 RETURN
910 IF V = 0 AND S(X, Y) = -1 THEN Q = Q + 2
    IF ABS(Y - V) = 2 THEN Q = Q + 5
    IF Y = 7 THEN Q = Q - 2
    IF Y = 0 OR U = 7 THEN Q = Q + 1
     FOR c = -1 TO 1 STEP 2: IF U + c < 0 OR U + c > 0 OR V + G < 0 THEN 1080
     IF S(U + c, V + G) < 0 THEN Q = Q + 1: GOTO 1080
     IF U - c < 0 OR U - c > 7 OR V - G > 7 THEN 1080
     IF S(U + c, V + G) > 0 AND (S(U - c, V - G) = 0 OR (U - c = X AND V - G = Y)) THEN Q = Q - 2
1080 NEXT c: IF Q > R(0) THEN R(0) = Q: R(1) = X: R(2) = Y: R(3) = U: R(4) = V
     Q = 0: RETURN
1140 IF R(0) = -99 THEN 1880
     LINE (240, 16)-(319, 111), 0, BF
     LOCATE 1, 30: PRINT "MY FROM:": LOCATE 3, 30: PRINT "FROM "; CHR$(65 + R(1)); ","; CHR$(49 + R(2)): LOCATE , 30: PRINT "  TO "; CHR$(65 + R(3)); ","; CHR$(49 + R(4)): R(0) = -99
1240 IF R(4) = 0 THEN S(R(3), R(4)) = -2: GOTO 1310
     S(R(3), R(4)) = S(R(1), R(2))
1310 S(R(1), R(2)) = 0: IF ABS(R(1) - R(3)) <> 2 THEN GOSUB 3000: GOTO 1590
     S((R(1) + R(3)) / 2, (R(2) + R(4)) / 2) = 0
     X = R(3): Y = R(4): IF S(X, Y) = -1 THEN b = -2: FOR a = -2 TO 2 STEP 4: GOSUB 1370: NEXT a
     IF S(X, Y) = -2 THEN FOR a = -2 TO 2 STEP 4: FOR b = -2 TO 2 STEP 4: GOSUB 1360: NEXT b, a
1360 IF R(0) <> -99 THEN LOCATE , 30: PRINT "  TO "; CHR$(65 + R(3)); ","; CHR$(49 + R(4)): R(0) = -99: GOTO 1240
     GOSUB 3000: GOTO 1590
1370 U = X + a: V = Y + b: IF U < 0 OR U > 7 OR V < 0 OR V > 7 THEN 1400
     IF S(U, V) = 0 AND S(X + a / 2, Y + b / 2) > 0 THEN GOSUB 910
1400 RETURN
1580 GOSUB 3000
1590 LOCATE 1, 1: PRINT "YOUR MOVE:"
     LINE (0, 16)-(95, 111), 0, BF
1595 LOCATE 3, 1: PRINT "FROM "; CHR$(65 + CO); ","; CHR$(49);
     GOSUB 4000: E = c: H = D: IF E < 0 OR H < 0 THEN 1580
     LINE (0, 192)-(319, 199), 0, BF
     X = E: Y = H: IF S(X, Y) < 0 THEN BEEP: LOCATE 25, 1: PRINT "PLAY YOUR OWN PIECES!"; : GOTO 1595
     IF S(X, Y) = 0 THEN BEEP: LOCATE 25, 1: PRINT "THAT'S AN EMPTY SQUARE, TRY AGAIN!"; : GOTO 1595
1620 LOCATE 4, 1: PRINT "  TO "; CHR$(65 + c); ","; CHR$(49 + D); : GOSUB 4000: a = c: b = D
     IF a < 0 OR b < 0 THEN SOUND 37, 2: GOTO 1580
     X = a: Y = b
     IF S(X, Y) = 0 AND ABS(a - E) <= 2 AND ABS(a - E) = ABS(b - H) THEN 1700
     BEEP: GOTO 1620
1700 I = 46
1750 S(a, b) = S(E, H): S(E, H) = 0: IF ABS(E - a) <> 2 THEN 1810
     S((E + a) / 2, (H + b) / 2) = 0
     PRINT
1802 LOCATE , 1: PRINT "& TO    "; : GOSUB 4000: A1 = c: B1 = D: IF K$ = "+" THEN 1810
     IF K$ = CHR$(8) THEN SOUND 37, 2: GOTO 1580
     IF S(A1, B1) <> 0 OR ABS(A1 - a) <> 2 OR ABS(B1 - b) <> 2 THEN 1802
     E = a: H = b: a = A1: b = B1: I = I + 15: GOTO 1750
1810 IF b = 7 THEN S(a, b) = 2
     GOTO 230
1880 PLAY "T240C8D8E8G4E8G2"
     LOCATE 25, 16: PRINT "YOU WIN!"; : CLS : SCREEN 2: PRINT "Please Wait...": CHAIN "MoneyCga"
     SCREEN 1, 0: COLOR 1, 1: c = -1: OUT 985, 49'MAKE FOREGROUND BRIGHTER
     FOR X = 0 TO 7: FOR Y = 0 TO 7: IF c THEN LINE (X * 20 + 80, Y * 20)-(X * 20 + 99, Y * 20 + 19), 3, BF
     c = NOT c: NEXT: c = NOT c: NEXT: RETURN
3000 FOR Y = 0 TO 7: FOR X = 0 TO 7: GOSUB 3100: NEXT X, Y
     LOCATE 18, 8: PRINT CHR$(24); "            <ENTER> ACCEPTS"
     LOCATE 19, 7: PRINT CHR$(27); " "; CHR$(26); " MOVES     "; CHR$(17); "-      CORRECTS"
     LOCATE 20, 8: PRINT CHR$(25); "            <ESC>   EXITS"
     LOCATE 22, 10: PRINT "<+> ENDS JUMP SERIES"
     RETURN
3100 ON S(X, Y) + 3 GOTO 3120, 3130, 3110, 3150, 3140
3110 LINE (X * 16 + 100, 116 - Y * 16)-(X * 16 + 115, 131 - Y * 16), ((X XOR Y) AND 1) * 3, BF: RETURN
3120 GOSUB 3130: LOCATE 16 - Y - Y, X + X + 14: PRINT "K"; : RETURN
3130 CIRCLE (X * 16 + 107, 123 - Y * 16), 7, 3, , , 1: PAINT (X * 16 + 101, 121 - Y * 16), 1, 3: RETURN
3140 GOSUB 3150: LOCATE 16 - Y - Y, X + X + 14: PRINT "K"; : RETURN
3150 CIRCLE (X * 16 + 107, 123 - Y * 16), 7, 3, , , 1: PAINT (X * 16 + 101, 121 - Y * 16), 2, 3: RETURN
4000 T = 0
     c = CO: PUT (c * 16 + 104, 120 - D * 16), CP
     GOSUB 4500
     CN = c: DN = D
     IF CO = CN AND DN THEN 4100
     PUT (c * 16 + 104, 120 - D * 16), CP
     CO = CN: T = TN
4100 IF K$ = CHR$(8) OR K$ = "+" THEN c = -1
     IF c < 0 THEN PUT (CN * 16 + 104, 120 - D * 16), CP
     RETURN
4500 MF = 0: K$ = INKEY$: IF K$ = "" THEN 4500
     CT = c: DT = D
     IF K$ = CHR$(13) OR K$ = CHR$(8) OR K$ = "+" THEN RETURN
     IF K$ = CHR$(27) THEN 4800
     IF K$ = CHR$(0) + "H" OR K$ = "8" THEN D = (D + 1) AND 7: MF = -1
     IF K$ = CHR$(0) + "P" OR K$ = "2" THEN D = (D - 1) AND 7: MF = -1
     IF K$ = CHR$(0) + "K" OR K$ = "4" THEN c = (c - 1) AND 7: MF = -1
     IF K$ = CHR$(0) + "M" OR K$ = "6" THEN c = (c + 1) AND 7: MF = -1
     IF MF THEN SOUND 32767, 1: PUT (CT * 16 + 104, 120 - DT * 16), CP: PUT (c * 16 + 104, 120 - D * 16), CP: SOUND 37, 0: LOCATE , 6: PRINT CHR$(65 + c); ","; CHR$(49 + D);
     GOTO 4500
      REM  TITLE PAGE ROUTINE.
     LOCATE 3, 1: CT$ = "* CHECKERS *": GOSUB 4700
      PRINT : PRINT : PRINT : CT$ = "A VERY GOOD GAME OF CHECKERS": GOSUB 4700
     CT$ = "TO PLAY WITH YOUR IBM PC": GOSUB 4700
4650 LOCATE 24, 1: PRINT "PRESS <SPACE> TO CONTINUE";
     LOCATE 25, 1: PRINT "PRESS <ESC> TO EXIT";
4670 K$ = INKEY$: IF K$ = "" THEN 4670
     IF K$ = CHR$(27) THEN 4841
     IF K$ <> " " THEN 4670 ELSE CLS : RETURN
4700 LOCATE , 20.5 - LEN(CT$) \ 2
     PRINT CT$: RETURN
4800 LOCATE 25, 1: PRINT "<SPACE> TO CONTINUE, <ESC> TO EXIT";
4810 K$ = INKEY$: IF K$ = "" THEN 4810
     IF K$ = CHR$(27) THEN RUN
4830 IF K$ <> " " THEN 4830 ELSE CLS : K$ = "+": RETURN
     GOSUB 4650: RUN
4841 CLS 2: INPUT "Play Again <Y> <N>"; a$
IF a$ = "Y" OR a$ = "y" THEN GOTO 3 ELSE GOTO 2
CLS 2: INPUT "Play Again <Y> <N>"; a$
IF a$ = "Y" OR a$ = "y" THEN GOTO 3 ELSE GOTO 2
2 SCREEN 2: PRINT "Please Wait...": CHAIN "moneycga"
Error1:
CLS : PRINT "ERROR - You need a graphics adapter to run CHEKERS.BAS"
PRINT
PRINT "Please Wait...": CHAIN "MoneyCga"

