100 N$='123456789MMMMMM'
110 Y$ = '|                      |                       |'
120 X$ = '|                      |                       |'
130 DIM B(25) & DIM W(3,25) & DIM R(4) & DIM S(4) & DIM A(3) & DIM H(12)
140 DIM D(6) & DIM V(4) & DIM Q(2,10) & DIM G(5)
150 * GAME INITIALIZATION
160 PRINT " LET'S PLAY BACKGAMMON, VERSION A01.3"
170 FOR I = 1 TO 5 & G(I) = 0 & NEXT I
180 GOSUB 6640
190 GOSUB 6790
200 P = 1 & G(4) = 1
210 PRINT 'DO YOU NEED INSTRUCTIONS (Y OR N)?'
220 INPUT K
230 IF K = 'Y' GOTO 270& IF K = 'y' GOTO 270
240 IF K = 'N' GOTO 290& IF K = 'n' GOTO 290
250 PRINT 'ANSWER "Y" OR "N" '
260 GOTO 220
270 GOSUB 6340
280 GOTO 300
290 GOSUB 5940
300 GOSUB 6860
310 GOSUB 8400
320 PRINT 'GAME SCORE STARTS AT: WHITE: 0, BLACK: 0'
330 PRINT 'DO YOU WANT BOARD PRINTED AFTER EVERY PLAY (E)'
340 PRINT 'OR JUST AFTER EACH BLACK PLAY (B)? ANSWER E OR B'
350 INPUT K
360 IF K = 'E' GOTO 410& IF K = 'e' GOTO 410
370 IF K = 'B' GOTO 390& IF K = 'b' GOTO 390
380 PRINT 'ANSWER "B" OR "E" ' & GOTO 350
390 G(1) = 1
400 * MAKE BASIC'S RND MORE RANDOM
410 Z = INT(TIM(1))
420 FOR I = 1 TO (R(2)*Z/50)
430 R(1)=0
440 NEXT I
450 GOSUB 6860
460 PRINT 'I ROLL A' R(1) ', AND YOU ROLL A ' R(2)
470 IF R(1) >< R(2) GOTO 500
480 PRINT 'WE HAVE TO ROLL AGAIN'
490 GOTO 450
500 IF R(1)>R(2) GOTO 1320
510 * WHITE'S GAME
520 PRINT 'YOU GO FIRST' & GOTO 540
530 PRINT 'YOU ROLLED A 'R(1)' AND A 'R(2)
540 IF R(1) >= R(2) GOTO 550& GOSUB 6920
550 M=2 & R(3)=-1 & R(4)=-1
560 IF R(1)><R(2) GOTO 580
570 M=4 & R(3)=R(1) & R(4)=R(1)
580 GOSUB 7010
590 I = 1 & P = 1
600 PRINT 'YOUR FIRST MOVE OF 'M', (S TO D)?' & GOTO  1550
610 GOTO  1340
620 GOTO 800
630 FOR I = 2 TO M
640 PRINT 'NOW, MOVE 'I' OF 'M'?' & GOTO  1550
650 GOTO  1340
660 GOTO 800
670 GOTO 2450
680 PRINT 'WANT INSTRUCTIONS (Y OR N)? OR BOARD (B)?'
690 INPUT K
700 IF K = 'N' GOTO 580& IF K = 'n' GOTO 580
710 IF K = 'Y' GOTO 720& IF K >< 'y' GOTO 740
720 GOSUB 6340
730 GOTO 580
740 IF K = 'B' GOTO 750& IF K >< 'b' GOTO 780
750 GOSUB 5940
760 PRINT 'YOUR ROLLS WERE 'R(1)' AND 'R(2)
770 GOTO 580
780 PRINT 'YOU MUST REPLY "Y", "N", OR "B" '
790 GOTO 690
800 IF H(4) >< 0 GOTO 1250
810 IF S(I) < 0 GOTO 920
820 IF S(I)=0 GOTO 840
830 IF W(P,S(I)) > -1 GOTO 940
840 IF W(P,D(I))>1 GOTO 960
850 IF D(I)-S(I)=R(I) GOTO 870
860 GOTO 990
870 IF W(P,D(I))=1 GOTO 1430
880 IF S(I) = 0 GOTO 910
890 IF D(I)=25 GOTO 1450
900 W(P,S(I))=W(P,S(I))+1
910 W(P,D(I))=W(P,D(I))-1
920 IF W(P,25) =< -15 GOTO 2290
930 IF I=1 GOTO 630& GOTO 670
940 PRINT 'NO WHITES ON 'S(I)
950 GOTO 1100
960 PRINT D(I) ' IS BLOCKED BY BLACK'
970 GOTO 1100
980 * VALIDITY CHECKING
990 IF I >< 1 GOTO 1040
1000 GOSUB 6920
1010 IF D(I)-S(I)=R(I) GOTO 870
1020 IF I >< 1 GOTO 1040
1030 GOSUB 6920
1040 IF D(I) >< 25 GOTO 1070
1050 IF S(I) < 19 GOTO 1070
1060 GOTO 1140
1070 IF R(2) <= R(1) GOTO 1090
1080 GOSUB 6920
1090 PRINT 'MOVES NOT EQUAL TO DICE ROLLS'
1100 I = 0
1110 GOSUB 6790
1120 GOTO 680
1130 * UTILITY PROCEDURES AND SUBROUTINES
1140 T=0
1150 FOR L = 1 TO 18
1160 IF W(P,L) > -1 GOTO 1180
1170 T = T+W(P,L)
1180 NEXT L
1190 IF T>< 0 GOTO 1070
1200 IF W(P,25-(R(I)))<0 GOTO 1070
1210 FOR J = 19 TO (25-R(I))
1220 IF W(P,J)<0 GOTO 1070
1230 NEXT J
1240 GOTO 870
1250 IF H(4)>-1 GOTO 2330
1260 L = ABS(H(4))
1270 IF S(I)><0 GOTO 1310
1280 IF D(I) < 0 GOTO 1070& IF D(I) > 6 GOTO 1070
1290 H(4)=H(4)+1
1300 GOTO 840
1310 PRINT 'MOVE ILLEGAL, PIECES BUMPED' & GOTO 1100
1320 PRINT 'I GO FIRST' & GOTO 2810
1330 * WHITE EXCEPTION PROCESSES
1340 S(I)=A(1) \ D(I) = A(3)
1350 IF H(4)>< 0 GOTO 2230
1360 IF S(I)=0 GOTO 1410
1370 IF S(I)<0 GOTO 1400& IF S(I)>24 GOTO 1400
1380 IF D(I)<1 GOTO 1400& IF D(I)>25 GOTO 1400
1390 ON I GOTO 620,660,660,660
1400 PRINT 'BAD BOARD LOCATION' & GOTO 1100
1410 IF H(4)><0 GOTO 1390
1420 PRINT 'NONE OF YOUR PIECES ARE BUMPED' & GOTO 1100
1430 PRINT 'BUMP BLACK' & H(6)=H(6)+1 & W(P,D(I))= 0
1440 GOTO 880
1450 IF H(4) >< 0 GOTO 1530
1460 T = 0
1470 FOR L = 1 TO 18
1480 IF W(1,L) > -1 GOTO 1500
1490 T = T+1
1500 NEXT L
1510 IF T >< 0 GOTO 1530
1520 GOTO 900
1530 PRINT 'CANT REMOVE, NOT ALL PIECES IN 18-24'
1540 GOTO 1100
1550 INPUT A(1)
1560 IF A(1) = 'D' GOTO 8480
1570 IF A(1) = 'd' GOTO 8480
1580 IF A(1) = 'DOUBLE' GOTO 8480
1590 IF A(1) = 'double' GOTO 8480
1600 IF A(1)='?' GOTO 1770& IF A(1)='ON' GOTO 1700& IF A(1)='on' GOTO 1700
1610 IF A(1) < 1 GOTO 1400& IF A(1) > 25 GOTO 1400
1620 INPUT A(2)
1630 IF A(2) = 'OFF' GOTO 1740& IF A(2) = 'off' GOTO 1740
1640 IF A(2) = 'TO' GOTO 1690& IF A(2) = 'to' GOTO 1690
1650 IF A(2)>1 GOTO 1670
1660 GOTO 1400
1670 IF A(2) < 26 GOTO 1720
1680 GOTO 1400
1690 INPUT A(3) & GOTO 1750
1700 A(1)=0 & INPUT A(2)
1710 IF A(2) < 1 GOTO 1400& IF A(2) > 25 GOTO 1400
1720 A(3)=A(2) & A(2)='TO'
1730 GOTO 1750
1740 A(3)=25
1750 IF I > 1 GOTO 650
1760 GOTO 610
1770 IF H(4) < 0 GOTO 1840
1780 PRINT 'REPLY WITH N IF NO MORE MOVES AVAILABLE'
1790 PRINT 'ANY OTHER RESPONSE WILL LET YOU TRY AGAIN'
1800 INPUT K
1810 IF K = 'N' GOTO 1830& IF K = 'n' GOTO 1830
1820 GOTO 2090
1830 IF H(4)=0 GOTO 1920
1840 FOR J = I TO M
1850 IF W(P,R(J)) > 1 GOTO 1880
1860 PRINT 'OH YES, YOU CAN COME ON AT 'R(J)
1870 GOTO 680
1880 NEXT J
1890 PRINT 'SORRY ABOUT THAT!'
1900 IF I < 2 GOTO 2610
1910 GOTO 2500
1920 FOR J = 1 TO 24
1930 IF W(P,J) > -1 GOTO 2200
1940 IF J+R(I) < 25 GOTO 1990
1950 IF J+R(I) > 24 GOTO 2060
1960 IF I > 1 GOTO 2200
1970 IF J + R(2) > 24 GOTO 2200
1980 GOTO 2020
1990 IF W(P,J+(R(I))) < 2 GOTO 2040
2000 IF I > 1 GOTO 2200
2010 IF J + R(2) > 24 GOTO 2200
2020 IF W(P,J+(R(2))) > 1 GOTO 2200
2030 I = 2
2040 PRINT 'OH, NO. I SEE AT LEAST ONE MOVE: 'J' TO '(J+R(I))
2050 GOTO 2180
2060 IF H(4) >< 0 GOTO 1960
2070 FOR K = 1 TO 18
2080 IF W(P,K) < 0 GOTO 1960
2090 NEXT K
2100 FOR K = 25-R(I) TO 24
2110 IF W(P,K) < 0 GOTO 2140
2120 NEXT K
2130 GOTO 1990
2140 FOR L = 19 TO (K-1)
2150 IF W(P,L) < 0 GOTO 1890
2160 NEXT L
2170 PRINT 'YOU COULD BEAR OFF FROM ' J
2180 GOSUB 6790
2190 GOTO 680
2200 NEXT J
2210 M = I-1 & I = M
2220 GOTO 2480
2230 IF S(I)><0 GOTO 2250
2240 GOTO 1380
2250 PRINT 'YOU HAVE TO BRING ON YOUR BUMPED PIECES FIRST' & GOTO 1100
2260 PRINT 'I WIN' & G(5) = 5 & G(3) = G(3)+G(4)
2270 IF W(P,25) < 0 GOTO 2340
2280 G(3) = G(3)+G(4) & PRINT 'WITH A SKUNK, YET!' & GOTO 2340
2290 PRINT 'YOU WIN' & G(2) = G(2) + G(4)
2300 IF H(8) > 0 GOTO 2340
2320 GOTO 2340
2330 PRINT 'METEOR FELL ON BOARD, SORRY'H(4),I,J,K,M
2340 PRINT 'SCORE IS: WHITE ' G(2) ', BLACK: ' G(3)
2350 PRINT 'WANT TO PLAY ANOTHER?'
2360 INPUT K
2370 IF K = 'Y' GOTO 2380& IF K >< 'y' GOTO 2470
2380 GOSUB 6640
2390 GOSUB 6790
2400 GOSUB 8400
2410 GOSUB 6860
2420 IF G(5) = 5 GOTO 2440
2430 PRINT 'I GO FIRST THIS TIME' & GOTO 2700
2440 G(5) = 0 & GOTO 530
2450 NEXT I
2460 GOTO 2480
2470 PRINT 'THANKS. LETS DO IT AGAIN SOON' & STOP
2480 IF I<M GOTO 930
2490 * WHITE IS DONE
2500 IF G(1) > 0 GOTO 2610
2510 PRINT 'THAT WOULD MAKE THE BOARD LOOK LIKE:'
2520 GOSUB 5940
2530 PRINT 'IS THAT OKAY?(Y OR N)'
2540 INPUT K
2550 IF K = 'Y' GOTO 2610& IF K = 'y' GOTO 2610
2560 IF K = 'N' GOTO 2590& IF K = 'n' GOTO 2590
2570 PRINT 'ANSWER "Y" OR "N" '
2580 GOTO 2540
2590 GOSUB 6790
2600 GOTO 680
2610 IF W(P,25) <= -15 GOTO 2290
2620 GOSUB 6740
2630 GOSUB 6860
2640 * ADDITIONAL RANDOMIZATION
2650 IF H(6) =  0 GOTO 2680& IF O<3 GOTO 2680
2660 IF B(R(1))>-2 GOTO 2680& IF B(R(2)) > -2 GOTO 2680
2670 O = G(1) & GOSUB 6860
2680 GOSUB 6790
2690 GOTO 2710
2700 * BLACK'S GAME
2710 H(10) = 0 & H(11) = 0
2720 FOR Z = 1 TO 25
2730 IF W(P,Z) = 0 GOTO 2780
2740 IF W(P,Z) < 1 GOTO 2770
2750 H(10)=H(10)+(W(P,Z)*(25-Z))
2760 GOTO 2780
2770 H(11) = H(11) + (W(P,Z)*Z)
2780 NEXT Z
2790 H(10) = H(10) + (25*H(8)) - (25*H(6))
2800 H(11) = H(11) - (25*H(4))
2810 U=2 & P=1
2820 H(12)=H(10)+H(11)
2830 FOR I = 1 TO 2
2840 FOR J = 1 TO 10
2850 Q(I,J)=0
2860 NEXT J
2870 NEXT I
2880 Q(1,9)=-99 & Q(2,9)=-99
2900 V(4)=0
2910 M = 2
2920 IF R(1) => R(2) GOTO 2950& GOSUB 6920
2930 IF H(12) < 16 GOTO 2950
2940 GOSUB 8600
2950 PRINT 'I ROLL A 'R(1)' AND A 'R(2)
2960 IF R(1) = R(2) GOTO 5320
2970 IF H(6) > 0 GOTO 4290
2980 E = 0 & GOSUB 7030
2990 IF E=1 GOTO 4710
3000 I = 0
3010 IF H(4) >< 0 GOTO 3040& IF H(6) >< 0 GOTO 3040
3020 IF W(P,1) < 0 GOTO 3040
3030 GOTO 5490
3040 FOR I = R(1) TO 24
3050 IF V(4) < 5 GOTO 3120
3060 IF V(4) > 5 GOTO 3090
3070 I = 25 & V(4) = 1
3080 GOTO 3230
3090 IF V(4) > 7 GOTO 3240
3100 I = 25 & P = 2
3110 GOTO 3240
3120 P = 1
3130 IF H(6)=0 GOTO 3150
3140 GOTO 4290
3150 IF W(P,I)<1 GOTO 3950
3160 IF (I-R(1))<1 GOTO 3950
3170 IF W(P,I-R(1))<-1 GOTO 3950
3180 N = R(1) & C = I & V(4) = 1
3190 Q(U,9)=0 & Q(U,10)=0
3200 GOSUB 7240
3210 V(P)=Q(U,9) & H(P)=Q(U,10)
3220 W(P,I)=W(P,I)-1 & W(P,I-R(1))=W(P,I-R(1))+1
3230 P = 2 & GOSUB 6930
3240 FOR J = R(2) TO 24
3250 IF V(4) < 5 GOTO 3300
3260 IF V(4) > 7 GOTO 3460
3270 J = 25 & IF V(4) > 6 GOTO 3410
3280 V(4) = 2
3290 GOTO 3460
3300 IF H(6)=0 GOTO 3320
3310 GOTO 4290
3320 E=0 & GOSUB 7030
3330 IF E=1 GOTO 4710
3340 IF W(P,J) < 1 GOTO 3910
3350 IF (J-R(2))<1 GOTO 3910
3360 IF W(P,(J-R(2))) < -1 GOTO 3910
3370 N = R(2) & C = J & V(4) = 2
3380 Q(U,9)=V(1) & Q(U,10)=H(1)
3390 GOSUB 7240
3400 V(P)=Q(U,9) & H(P)=Q(U,10)
3410 IF V(4) > 6 GOTO 3460
3420 V(4) = 2
3430 IF M < 4 GOTO 3900
3440 IF J > 24 GOTO 3460
3450 W(P,J)=W(P,J)-1 & W(P,J-R(2))=W(P,J-R(2))+1
3460 P=3 & GOSUB 6930
3470 D(5) = 0
3480 FOR K=R(1) TO 24
3490 IF V(4) < 7 GOTO 3540
3500 IF V(4) > 7 GOTO 3530
3510 K = 25 & V(4) = 3
3520 GOTO 3540
3530 V(4) = 2 & I = 24 & J = 24
3540 IF H(6)=0 GOTO 3560
3550 GOTO 4290
3560 E=0 & GOSUB 7030
3570 IF E=1 GOTO 4710
3580 IF W(P,K)<1 GOTO 3870& IF (K-R(1))<1 GOTO 3870
3590 IF W(P,K-R(2)) < -1 GOTO 3870
3600 N = R(1) & C = K & V(4)=3
3610 D(5) = D(5) + 1
3620 Q(U,9)=V(2) & Q(U,10)=H(2)
3630 GOSUB 7240
3640 W(P,K)=W(P,K)-1 & W(P,K-R(2))=W(P,K-R(2))+1
3650 V(P)=Q(U,9) & H(P)=Q(U,10)
3660 D(6) = 0
3670 FOR L = R(1) TO 24
3680 IF V(4) < 8 GOTO 3700
3690 K = 25 & V(4) = 3
3700 IF H(6)=0 GOTO 3720
3710 GOTO 4290
3720 E=0 & GOSUB 7030
3730 IF E=1 GOTO 4710
3740 IF W(P,L)<1 GOTO 3820& IF (L-R(2))<1 GOTO 3820
3750 IF W(P,L-R(2)) < -1 GOTO 3820
3760 N = R(1) & C = L & V(4)=4
3770 D(6) = D(6) + 1
3780 Q(U,9)=V(3) & Q(U,10)=H(3)
3790 GOSUB 7240
3800 GOSUB 7080
3810 P=3 & Q(U,9)=V(P) & Q(U,10)=H(P)
3820 NEXT L
3825 L = L + 1
3830 GOSUB 6930
3840 IF D(6) > 0 GOTO 3860
3850 GOSUB 7080
3860 P=3 & Q(U,9)=V(2) & Q(U,10)=H(2)
3870 NEXT K
3875 K = K + 1
3880 P=2 & GOSUB 6930
3890 IF D(5) > 0 GOTO 3910
3900 GOSUB 7080
3910 P=2 & NEXT J
3920 GOSUB 6790
3930 IF V(4)=M GOTO 3950
3940 GOSUB 7080
3950 NEXT I
3960 IF Q(1,1)=25 GOTO 4010
3970 IF R(1) <= R(2) GOTO 4010
3980 GOSUB 6920
3990 FOR Y = 1 TO 4 & V(Y)=0 & NEXT Y
4000 GOTO 3000
4010 IF Q(1,1) = 0 GOTO 4210
4020 GOSUB 6790
4030 FOR Z=1 TO (2*M)
4040 IF Q(1,Z)<1 GOTO 4260
4050 IF Q(1,Z)=25 GOTO 4070
4060 W(P,Q(1,Z))=W(P,Q(1,Z))-1
4070 W(P,Q(1,Z+1))=W(P,Q(1,Z+1))+1
4080 IF W(P,Q(1,Z+1)) >< 0 GOTO 4100
4090 W(P,Q(1,Z+1))=1
4100 Z = Z+1
4110 NEXT Z
4120 H(4)=H(4)+Q(1,10)
4130 IF H(4) >= H(5) GOTO 4150
4140 PRINT 'HA! I BUMPED YOU!'
4150 PRINT 'MY MOVES MAKE THE BOARD LOOK LIKE:'
4160 GOSUB 5940
4170 GOSUB 6740
4180 GOSUB 6860
4190 GOSUB 6790
4200 GOTO 530
4210 PRINT 'I CANT SEE ANY LEGAL MOVES'
4220 O=O+1 & IF G(1) = 0 GOTO 4250
4230 GOSUB 5940
4240 O = O+1
4250 GOTO 4170
4260 PRINT 'CANT TAKE ALL MY ROLLS'
4270 Z=2*M
4280 GOTO 4110
4290 FOR Z = 1 TO M
4300 IF W(P,25-R(Z)) < -1 GOTO 4390
4310 H(6)=H(6)-1 & H(7)=H(6) & V(4)=V(4)+1
4320 IF V(4) < 2 GOTO 4340
4330 H(V(4))=H(V(4)-1)
4340 W(P,25-R(Z))=W(P,25-R(Z))+1
4350 IF W(P,25-R(Z))>< 0 GOTO 4380
4360 H(4)=H(4)-1 & H(V(4))=H(V(4))-1
4370 W(P,25-R(Z))=1
4380 IF H(6)=0 GOTO 4400
4390 NEXT Z
4400 IF V(4)=0 GOTO 4210
4410 IF H(6)>0 GOTO 4670
4420 IF Z >< 2 GOTO 4440& IF V(4) > 1 GOTO 4440
4430 GOSUB 6920
4440 ON V(4) GOTO 4600,4520,4450,4150
4450 V(1) = 499 & V(2) = 799 & V(3) = 999
4460 IF V(4) >= M GOTO 4490
4470 V(4) = 7
4480 GOTO 3040
4490 Q(U,9)=999 & Q(U,10)=H(3)
4500 GOSUB 7080
4510 GOTO 4020
4520 V(1) = 499 & V(2) = 799
4530 IF V(4) >= M GOTO 4560
4540 V(4) = 6
4550 GOTO 3040
4560 Q(U,9)=799 & Q(U,10)=H(2)
4570 I = 25 & J = 25
4580 GOSUB 7080
4590 GOTO 4020
4600 V(1) = 599 & Q(U,9) = 599 & Q(U,10) = H(1)
4610 IF H(6) > 0 GOTO 4640
4620 V(4) = 5
4630 GOTO 3040
4640 IF Z >< 1 GOTO 4660& IF M >< 2 GOTO 4660& IF H(1) >< 0 GOTO 4660
4650 IF W(P,25-R(2)) > -2 GOTO 5680
4660 GOTO 4620
4670 PRINT 'CANT GET ALL MY PIECES ON'
4680 IF H(V(4)) > -1 GOTO 4700
4690 PRINT 'BUT I GOT YOU, ANYHOW'
4700 GOTO 4150
4710 FOR Z=V(4)+1 TO M
4720 IF W(P,R(Z))<1 GOTO 4760
4730 W(P,R(Z))=W(P,R(Z))-1 & H(8)=H(8)+1 & V(4)=V(4)+1
4740 IF H(8)=>15 GOTO 2260& IF V(4)=M GOTO 4150
4750 IF Z >< 2 GOTO 4760& GOSUB 6920
4760 NEXT Z
4770 IF H(8)>=15 GOTO 2260
4780 IF V(4) = M GOTO 4150
4790 FOR Z = V(4)+1 TO M
4800 FOR Y=R(Z)+1 TO 6
4810 IF W(P,Y)>0 GOTO 4900
4820 NEXT Y
4830 FOR L=1 TO R(Z)-1
4840 IF W(P,R(Z)-L)<1 GOTO 4880
4850 W(P,R(Z)-L)=W(P,R(Z)-L)-1 & H(8)=H(8)+1
4860 V(4)=V(4)+1 & IF H(8)=>15 GOTO 2260& IF V(4)=M GOTO 4150
4870 GOTO 5290
4880 NEXT L
4890 GOTO 5290
4900 FOR X = Y TO 6
4910 IF X-R(Z)<1 GOTO 5060
4920 IF W(P,X) < 1 GOTO 5060
4930 IF W(P,X-R(Z)) < -1 GOTO 5060
4940 IF (V(4)+1) => M GOTO 4970
4950 IF Z+1 => M GOTO 4970
4960 IF X-R(Z)=R(Z+1) GOTO 5210
4970 IF W(P,X) = 2 GOTO 4990
4980 IF W(P,X-R(Z)) >< 0 GOTO 5210
4990 IF X > 5 GOTO 5210
5000 IF H(4) < 0 GOTO 5080
5010 FOR L = 1 TO X-1
5020 IF W(P,L) > -1 GOTO 5040
5030 L = 0 & GOTO 5080
5040 NEXT L
5050 GOTO 5210
5060 NEXT X
5070 GOTO 5290
5080 FOR L = X+1 TO 6
5090 IF L-R(Z) < 1 GOTO 5200
5100 IF W(P,L-R(Z)) < -1 GOTO 5200
5110 IF W(P,L) < 1 GOTO 5200
5120 IF W(P,L-R(Z)) = -1 GOTO 5150
5130 IF W(P,L) = 2 GOTO 5200
5140 IF W(P,L-R(Z))=0 GOTO 5200
5150 W(P,L)=W(P,L)-1 & W(P,L-R(Z))=W(P,L-R(Z))+1
5160 IF W(P,L-R(Z)) >< 0 GOTO 5190
5170 W(P,L-R(Z))=1 & H(4)=H(4)-1 & Q(1,10)=Q(1,10)-1
5180 PRINT 'HATE TO BUMP YOU NOW,BUT - '
5190 V(4) = V(4) + 1 & IF V(4) = M GOTO 4150& GOTO 4710
5200 NEXT L
5210 W(P,X)=W(P,X)-1 & W(P,X-R(Z))=W(P,X-R(Z))+1
5220 IF W(P,X-R(Z))=0 GOTO 5250
5230 V(4)=V(4)+1 & IF V(4)=M GOTO 4150
5240 GOTO 4710
5250 W(P,X-R(Z))=1
5260 H(4)=H(4)-1 & Q(1,10)=Q(1,10)-1
5270 PRINT 'GOTCHA!'
5280 GOTO 5230
5290 NEXT Z
5300 IF H(8) = > 15 GOTO 2260& IF V(4) = M GOTO 4150
5310 GOTO 4260
5320 R(4)=R(1) & R(3)=R(1) & M = 4
5330 IF H(6) > 0 GOTO 4290
5340 IF R(1) < 4 GOTO 2980
5350 IF W(P,24)<2 GOTO 2980
5360 IF R(1) = 4 GOTO 5840
5370 IF W(P,24-R(1)) < -1 GOTO 5830& IF W(P,24-2*R(1)) < -1 GOTO 5830
5380 IF W(P,24-R(1)) = -1 GOTO 5420
5390 IF W(P,24-2*R(1)) = -1 GOTO 5470
5400 W(P,24)=W(P,24)-2 & W(P,24-2*R(1))=W(P,24-2*R(2))+2
5410 GOTO 4150
5420 W(P,24-R(1))=0 & H(4)=H(4)-1
5430 PRINT 'BUMP YOU ONCE'
5440 IF W(P,24-2*R(1)) >< -1 GOTO 5400
5450 PRINT 'AND BUMP YOU TWICE'
5460 H(4)=H(4)-1 & W(P,24-2*R(1))=0 & GOTO 5400
5470 W(P,24-2*R(1))=2 & H(4)=H(4)-1 & W(P,24)=0 & GOTO 4140
5480 * BLACK'S EXCEPTION PROCESSES
5490 E = 0
5500 FOR Z = 1 TO 23
5510 IF W(P,25-Z) = 0 GOTO 5560
5520 IF E < 1 GOTO 5540
5530 IF W(P,25-Z) < 0 GOTO 3040
5540 IF W(P,25-Z) <1 GOTO 5560
5550 E = E+1
5560 NEXT Z
5570 FOR Y = 1 TO 18
5580 IF W(P,25-Y) < 1 GOTO 5660
5590 W(P,25-Y)=W(P,25-Y)-1
5600 V(4)=V(4)+1
5610 W(P,((25-Y)-R(V(4))))=W(P,((25-Y)-R(V(4))))+1
5620 IF W(P,((25-Y)-R(V(4)))) >< 0 GOTO 5640
5630 W(P,((25-Y)-R(V(4))))= 1 & H(4)=H(4)-1
5640 IF V(4)=M GOTO 4150
5650 GOTO 5580
5660 NEXT Y
5670 GOTO 4710
5680 P = 2 & GOSUB 6930
5690 FOR J = R(2) TO 24
5700 IF W(P,J) < 1 GOTO 5770
5710 IF J-R(2) < 1 GOTO 5770
5720 IF W(P,J-R(2)) < -1 GOTO 5770
5730 N = R(2) & C = J & V(4) = 2
5740 Q(U,9)=V(1) & Q(U,10)=H(1)
5750 V(4)=2
5760 GOSUB 7080
5770 NEXT J
5780 IF R(2) > R(1) GOTO 4020
5790 GOSUB 6920
5800 W(1,25-R(1))=W(1,25-R(1))+1 & W(1,25-R(2))=W(1,25-R(2))-1
5810 GOSUB 6970
5820 GOTO 5690
5830 IF H(12) < -12 GOTO 2980
5840 IF W(P,24-R(1)) < -1 GOTO 2980
5850 W(P,24)=W(P,24)-2
5860 W(P,24-R(1))=W(P,24-R(1))+2
5870 IF W(P,24-R(1)) >< 1 GOTO 5900
5880 PRINT 'BUMPED YOU' & H(4)=H(4)-1
5890 H(1)=-1 & H(2)=-1 & W(P,24-R(1))=2
5900 V(1) = 250 & V(2) = 500
5910 V(4)=8 & P = 2
5920 GOSUB 6930
5930 GOTO 3040
5940 FOR I = 1 TO 12
5950 F=I*4-1
5960 GOSUB 6220
5970 NEXT I
5980 PRINT
5990 Z=P & IF Z><0 GOTO 6010
6000 Z = 1
6010 PRINT 'BLACKS: 'H(6)' BUMPED, 'H(8)' REMOVED'
6020 PRINT '               < < BLACK < <'
6030 PRINT '| 1   2   3   4   5   6|  7   8   9  10  11  12|'
6040 PRINT '| *   -   *   -   *   -|  *   -   *   -   *   -|'
6050 PRINT Y$
6060 PRINT X$
6070 PRINT '|'
6080 PRINT '|                    | 'G(4)' |'
6090 FOR I = 13 TO 24
6100 F = 99-4*I
6110 GOSUB 6220
6120 NEXT I
6130 PRINT '|'
6140 PRINT X$
6150 PRINT Y$
6160 PRINT '| -   *   -   *   -   *|  -   *   -   *   -   *|'
6170 PRINT '|24  23  22  21  20  19  18  17  16  15  14  13|'
6180 PRINT '               < < WHITE < < '
6190 PRINT 'WHITES: 'ABS(H(4))' BUMPED, 'ABS(W(Z,25))' REMOVED'
6200 PRINT
6210 RETURN
6220 IF W(P,I)>< 0 GOTO 6260
6230 Y$(:F,1)=' '
6240 X$(:F,1)=' '
6250 RETURN
6260 IF W(P,I)<0 GOTO 6290
6270 Y$(:F,1)='B'
6280 GOTO 6300
6290 Y$(:F,1)='W'
6300 E=ABS(W(P,I))
6310 X$(:F,1)=N$(:E)
6320 GOTO 6250
6330 * INSTRUCTIONS
6350 PRINT 'FOR THIS COMPUTER GAME, YOU ARE WHITE; THE COMPUTER IS BLACK.'
6360 PRINT 'AT GAME START YOU ARE INVITED TO SET GAME STAKE OF 1,2,4,8,'
6370 PRINT '16,32, OR 64. THEREAFTER, YOU MAY DOUBLE THE GAME STAKE AT'
6380 PRINT 'THE START OF YOUR MOVES, UNLESS YOU WERE THE LAST DOUBLER,'
6390 PRINT 'BY REPLYING "D" OR "DOUBLE" TO: "YOUR FIRST MOVE......?'
6400 PRINT 'THE BOARD APPEARS AS FOLLOWS:'
6410 GOSUB 5940
6420 PRINT 'B5, FOR INSTANCE, INDICATES 5 BLACK PIECES; W2 MEANS 2 WHITE.'
6430 PRINT 'THE LETTER M, INSTEAD OF A NUMBER, MEANS MORE THAN 9 PIECES.'
6440 PRINT 'EACH LOCATION ON THE BOARD IS NUMBERED 1-24.'
6450 PRINT 'YOU, AS WHITE, MOVE IN THE DIRECTION OF INCREASING NUMBERS.'
6460 PRINT 'TO BRING ON A BUMPED PIECE, TYPE: "ON N" (WHERE N=1 TO 6)'
6470 PRINT 'TO REMOVE A PIECE, TYPE: "N OFF" (WHERE N=19 TO 24)'
6480 PRINT 'THE MOVE COMMAND FORMATS ARE (S = SOURCE, D = DESTINATION):'
6490 PRINT ' S TO D  OR: S,D   OR: ON D    OR: S OFF'
6500 PRINT ' GOOD EXAMPLES: 19 TO 22, 19,22, ON 3, 22 OFF'
6510 PRINT ' BAD EXAMPLES: 19,,22  3 ON     OFF 22'
6520 PRINT 'IF YOU ROLL DOUBLES, YOU WILL BE ASKED FOR 4 SETS OF MOVES,'
6530 PRINT 'OTHERWISE, 2 SETS OF MOVES.'
6540 PRINT 'FOR EXAMPLE, IF I (BLACK) ROLLED A 5 AND A 3,'
6550 PRINT ' "6 TO 3", THEN "8 TO 3" '
6560 PRINT 'WOULD MOVE 1 PIECE FROM 6, ANOTHER FROM 8, AND PLACE BOTH ON'
6570 PRINT 'LOCATION 3 (BLOCKING 3).'
6580 PRINT 'IF YOU CANT MAKE ANY (MORE) MOVES, TYPE A SINGLE "?" '
6590 PRINT 'IF YOU SHOULD ENTER A WRONG MOVE, YOU WILL GET THE OPPORTUNITY'
6600 PRINT 'TO SEE THESE INSTRUCTIONS AGAIN, OR TO SEE THE BOARD AGAIN.'
6610 PRINT 'IF YOU DONT ENTER ENOUGH MOVE VALUES, BASIC WILL REPEAT THE PROMPT.'
6620 PRINT
6630 RETURN
6640 FOR I = 1 TO 25
6650 B(I)=0
6660 NEXT I
6670 B(1)=-2 & B(6)=5 & B(8)=3 & B(12)=-5 & B(13)=5 & B(17)=-3
6680 B(19)=-5 & O=0 & B(24)=2
6690 FOR I = 1 TO 12
6700 H(I)=0
6710 NEXT I
6720 R(3)=0 & R(4) = 0
6730 RETURN
6740 FOR I = 1 TO 25
6750 B(I)=W(P,I)
6760 NEXT I
6770 H(9)=H(8) & H(7)=H(6) & H(5)=H(4)
6780 RETURN
6790 FOR Z=1 TO 25
6800 FOR Y = 1 TO 3
6810 W(Y,Z)=B(Z)
6820 NEXT Y
6830 NEXT Z
6840 H(4)=H(5) & H(6)=H(7) & H(8)=H(9)
6850 RETURN
6860 FOR I= 1 TO 2
6870 R(I)=INT(7*RND(1))
6880 IF R(I)<1 GOTO 6870
6890 IF R(I)>6 GOTO 6870
6900 NEXT I
6910 RETURN
6920 K=R(1) & R(1)=R(2) & R(2)=K & RETURN
6930 FOR Z = 1 TO 25
6940 W(P,Z)=W(P-1,Z)
6950 NEXT Z
6960 RETURN
6970 FOR Y = 1 TO 25
6980 W(P,Y)=W(P-1,Y)
6990 NEXT Y
7000 RETURN
7010 FOR I=1 TO 4
7020 S(I)=-1 \ D(I) = -1 \ NEXT I \ RETURN
7030 FOR Y=7 TO 24
7040 IF W(P,Y) > 0 GOTO 7070
7050 NEXT Y
7060 E=1
7070 Y=0 & RETURN
7080 IF Q(U,9) <= Q(1,9) GOTO 7170
7090 Q(1,9)=Q(U,9) & Q(1,10)=Q(U,10)
7100 Q(1,1)=I & Q(1,2)=I-R(1)
7110 IF V(4)<2 GOTO 7140
7120 Q(1,3)=J & Q(1,4)=J-R(2)
7130 IF V(4)>2 GOTO 7180
7140 FOR Z = ((V(4)*2)+1) TO 8
7150 Q(1,Z)=-1
7160 NEXT Z
7170 RETURN
7180 IF K > 24 GOTO 7140
7190 Q(1,5)=K & Q(1,6)=K-R(1)
7200 IF V(4) < 4 GOTO 7140
7210 IF L > 24 GOTO 7140
7220 Q(1,7)=L & Q(1,8)=L-R(1)
7230 GOTO 7170
7240 IF W(P,C-N) > 1 GOTO 7310
7250 FOR Z = (C-N)-5 TO (C-N)+3
7260 IF Z < 1 GOTO 7300& IF Z > 24 GOTO 7300
7270 IF W(P,Z) < 1 GOTO 7300
7280 Q(U,9)=Q(U,9)+3
7290 IF W(P,Z) < 2 GOTO 7300& Q(U,9)=Q(U,9)+3
7300 NEXT Z
7320 Q(U,9)=Q(U,9)-(3*W(P,C-N))
7330 IF W(P,C) < 3 GOTO 7350
7340 Q(U,9)=Q(U,9)+(3*W(P,C))
7350 IF W(P,C-N) >< -1 GOTO 7490
7360 Q(U,9)=Q(U,9)+22
7370 IF C >< 24 GOTO 7390
7380 Q(U,9)=Q(U,9)+16
7390 FOR Z=1 TO 6
7400 IF W(P,Z)<2 GOTO 7420
7410 Q(U,9)=Q(U,9)+4
7420 IF W(P,Z)><1 GOTO 7440
7430 Q(U,9)=Q(U,9)-3
7440 NEXT Z
7450 W(P,C-N)=0
7460 Q(U,10)=Q(U,10)-1
7470 IF Q(U,10) > -2 GOTO 7490
7480 Q(U,9)=Q(U,9)+12
7490 IF W(P,C-N)><1 GOTO 7630
7500 Q(U,9)=Q(U,9)+(25-(C-N))
7510 IF C-N >< 5 GOTO 7530
7520 Q(U,9)=Q(U,9)+10
7530 IF C >< 5 GOTO 7550
7540 Q(U,9)=Q(U,9)-7
7550 FOR Y = 1 TO C-N-1
7560 IF W(P,Y) > -1 GOTO 7580
7570 Q(U,9)=Q(U,9)+2
7580 NEXT Y
7590 FOR Z=(C-N-6) TO (C-N-1) & IF Z<1 GOTO 7610& IF Z>24 GOTO 7610
7600 IF W(P,Z)>-1 GOTO 7610& Q(U,9)=Q(U,9)+3
7610 NEXT Z
7620 GOSUB 8350
7630 IF W(P,C) >< 2 GOTO 7750
7640 Q(U,9)=Q(U,9)-(24-C)
7650 FOR Y=1 TO C-1
7660 IF W(P,Y) > -1 GOTO 7680
7670 Q(U,9)=Q(U,9)-2
7680 NEXT Y
7690 FOR Z= C-6 TO C-1
7700 IF Z<1 GOTO 7730& IF Z>24 GOTO 7730
7710 IF W(P,Z)>-1 GOTO 7730
7720 Q(U,9)=Q(U,9)-3
7730 NEXT Z
7740 GOSUB 8300
7750 IF W(P,C)><1 GOTO 7870
7760 Q(U,9)=Q(U,9)+(25-C)
7770 FOR Y = 1 TO C-1
7780 IF W(P,Y)>-1 GOTO 7800
7790 Q(U,9)=Q(U,9)+2
7800 NEXT Y
7810 FOR Z=C-6 TO C-1
7820 IF Z<1 GOTO 7850& IF Z>24 GOTO 7850
7830 IF W(P,Z)>-1 GOTO 7850
7840 Q(U,9)=Q(U,9)+3
7850 NEXT Z
7860 GOSUB 8350
7870 IF W(P,C-N)>< 0 GOTO 8060
7880 IF C-N > 9 GOTO 7930
7890 IF C-N <2 GOTO 7910
7900 IF W(P,(C-N-1)) < 2 GOTO 7930
7910 IF W(P,(C-N+1)) < 2 GOTO 7930
7930 Q(U,9)=Q(U,9)-(24-(C-N))
7940 FOR Y = 1 TO C-N-1
7950 IF W(P,Y)>-1 GOTO 7970
7960 Q(U,9)=Q(U,9)-2
7970 NEXT Y
7980 FOR Z = (C-N-6) TO (C-N-1)
7990 IF Z<1 GOTO 8020& IF Z>24 GOTO 8020
8000 IF W(P,Z)>-1 GOTO 8020
8010 Q(U,9)=Q(U,9)-3
8020 NEXT Z
8030 IF (C-N) < 19 GOTO 8050
8040 Q(U,9) = Q(U,9) - 12
8050 GOSUB 8300
8060 IF V(4)>1 GOTO 8090& IF C-N>6 GOTO 8090
8070 IF W(P,C-N) > 0 GOTO 8090
8080 Q(U,9)=Q(U,9)+20
8090 IF C < 19 GOTO 8220
8100 IF H(12) > -20 GOTO 8130
8110 IF C < 20 GOTO 8130
8120 Q(U,9) = Q(U,9) - 50
8130 E = 0
8140 FOR Y = 13 TO 24
8150 IF W(P,Y) >= 0 GOTO 8170
8160 E = E+W(P,Y)
8170 NEXT Y
8180 IF E < -14 GOTO 8220& IF E > -10 GOTO 8220
8190 IF E >-13 GOTO 8210
8200 Q(U,9)=Q(U,9)+5
8210 Q(U,9)=Q(U,9)+5
8220 IF (C-N)>6 GOTO 8250
8230 IF W(P,C-N)>1 GOTO 8250
8240 Q(U,9)=Q(U,9)+8
8250 IF W(P,25) < 0 GOTO 8260& IF H(12) < 9 GOTO 8270
8260 Q(U,9)=Q(U,9)+(C)
8270 IF C < 9 GOTO 8290
8280 Q(U,9)=Q(U,9)+10
8290 RETURN
8300 FOR Z=19 TO 24
8310 IF W(P,Z) > -2 GOTO 8330
8320 Q(U,9)=Q(U,9)-4
8330 NEXT Z
8340 RETURN
8350 FOR Z = 19 TO 24
8360 IF W(P,Z)> -2 GOTO 8380
8370 Q(U,9)=Q(U,9)+4
8380 NEXT Z
8390 RETURN
8400 PRINT 'YOUR CHOICE: SELECT GAME STAKE OF 1,2,4,8,16,32,OR 64'
8410 INPUT K
8420 IF K=1 GOTO 8460& IF K=2 GOTO 8460& IF K=4 GOTO 8460& IF K=8 GOTO 8460
8430 IF K=16 GOTO 8460& IF K=32 GOTO 8460& IF K=64 GOTO 8460
8440 PRINT 'YOU MUST REPLY WITH 1,2,4,8,16,32, OR 64'
8450 GOTO 8410
8460 G(4) = K
8470 PRINT 'O.K., GAME STAKE IS 'G(4) & RETURN
8480 IF I < 2 GOTO 8510
8490 PRINT 'CHANGE ALLOWED ONLY PRIOR TO FIRST MOVE'
8500 GOTO 580
8510 IF G(5) >< 1 GOTO 8540
8520 PRINT 'SORRY, YOU DOUBLED LAST'
8530 GOTO 600
8540 IF G(4) < 33 GOTO 8570
8550 PRINT 'SORRY, 64 IS AS HIGH AS WE GO'
8560 GOTO 600
8570 G(4) = G(4) * 2 & G(5) = 1
8580 PRINT 'O.K., GAME STAKE NOW 'G(4)
8590 GOTO 600
8600 I = H(12) - 8
8610 IF H(8) > 0 GOTO 8650& IF I < G(4) GOTO 8650
8620 IF B(25) < 0 GOTO 8650& IF G(5) = 2 GOTO 8650
8630 IF G(4) > 32 GOTO 8650
8640 G(5)=2 & G(4)=G(4)*2 & PRINT 'I DOUBLED THE STAKE TO 'G(4)
8650 RETURN
