10 REM GAMON.ECB 15 REM......GAMMON......SOL-20 version 4-28-1980 R.E.H. 20 REM......by Paul Von Autenried: Park Ridge H. School 30 REM......System: Hewlett Packard system 2000f 40 REM 50 REM......from CREATIVE COMPUTING, page 135, Jul/Aug 78 60 DIM A(25),B(25),S(10),A$(3),M$(13),P$(3),R$(3) 70 LET K$="&K": LET J$="&J": PRINT K$;J$;J$ 80 PRINT TAB(15);"***********************************" 90 PRINT TAB(15);"* *" 100 PRINT TAB(15);"* <<<===-- G A M M O N --===>>> *" 110 PRINT TAB(15);"* *" 120 PRINT TAB(15);"***********************************" 130 PRINT : PRINT 140 DATA 0,1,0,0,0,0,0,0,0,0,0,0,0,"-" 150 READ D5,D9,G,H1,L,L6,L7,P2,S1,S2,T1,T2,X5,B$ 160 FOR X=1 TO 25: LET A(X)=0: LET B(X)=0: NEXT X 170 FOR X=1 TO 10: LET S(X)=0: NEXT X 180 PRINT "Do you need any instructions (Y or N) ---=>"; 190 INPUT (1,0)A$: LET A$=A$+"N": PRINT 200 IF A$(1,1)="N" THEN 400 ELSE PRINT K$;"BACKGAMMON :" 210 PRINT " My chip's are represented by - signs, your" 220 PRINT "chip's by + signs. Input your moves in the" 230 PRINT "format from point #, to point #, from point #," 240 PRINT "to point # ; for each move. Example: 5,7,12,17" 250 PRINT "would be the move for the dice rolls of 2 and 5 ;" 260 PRINT "moving one chip from point 5 to point 7, and" 270 PRINT "another from point 12 to point 17." 280 PRINT " The BAR is represented by 0, your HOME is 25," 290 PRINT "my HOME is 0." 300 PRINT " If, at any time, you care to double, you will" 310 PRINT "be allowed 5 seconds immediately after the BOARD" 320 PRINT "printout to input a 1, indicating you wish to" 330 PRINT "check what value the cube has, or a 2, suggesting" 340 PRINT "doubling the stakes." 360 INPUT (1,0)"<*> Enter any letter when ready ---=>",A$ 370 PRINT : PRINT 400 DATA 2,5,3,5,5,3,5,2 410 READ A(1),A(12),A(17),A(19),B(6),B(8),B(13),B(24) 420 IF D4<>0 THEN 520 430 PRINT "Your credit is presently ";%C$9F2;D4;"." 520 GOSUB 2570 560 IF D4>=0 THEN 590 ELSE PRINT "You owe me ";%$C9F2;D4;"!" 570 PRINT "Obviously you like to move deeper into debt.";J$ 580 GOTO 610 590 IF D4=0 THEN 610 ELSE PRINT "I owe you ";%$C9F2;D4;"." 600 PRINT "Nice of you to return so I can win it back!";J$ 610 LET X=INT(RND(0)*6)+1: LET Y=INT(RND(0)*6)+1 620 PRINT "Your roll is a ";X;" and my roll is a ";Y;"." 630 IF X=Y THEN LET D9=D9*2 ELSE 670 650 PRINT "The doubling CUBE is now at ";D9;J$: GOTO 610 670 IF Y>X THEN 1260 ELSE PRINT "YOU START FIRST." 690 LET D1=X: LET D2=Y: GOTO 740 720 LET D1=INT(RND(0)*6)+1: LET D2=INT(RND(0)*6)+1 740 IF H1>0 AND B(D1)>1 AND B(D2)>1 THEN 1220 750 PRINT "Your roll is ";D1;" and ";D2;"." 755 PRINT "(Enter 4 numbers) What is your move ---=>"; 760 GOSUB 6440 770 IF D1=D2 THEN 3610 780 INPUT M1,M2,N1,N2 790 IF L7=1 THEN 960 800 IF M1=0 AND M2=0 THEN 850 810 IF M2-M1=D1 THEN 850 820 IF M2-M1=D2 THEN 880 830 PRINT "Nice try. Next time I will load the dice!" 840 PRINT "Re-input ---=>";: GOTO 780 850 IF N1=0 AND N2=0 THEN 930 860 IF N2-N1=D2 THEN 900 ELSE 830 880 IF N1=0 AND N2=0 THEN 930 890 IF N2-N1<>D1 THEN 830 900 IF B(M2)>1 OR B(N2)>1 THEN 830 910 IF M1=0 AND M2=0 THEN 940 920 IF N1=0 AND N2=0 THEN 940 930 IF M1<>0 AND N1<>0 AND H1>0 THEN 830 940 IF M1=0 AND M2=0 THEN 1010 950 IF M1<1 THEN 980 960 IF A(M1)<1 THEN 830 970 LET A(M1)=A(M1)-1 980 LET A(M2)=A(M2)+1 990 IF M1<=0 THEN LET H1=H1-1 1010 IF N1=0 AND N2=0 THEN 1080 1020 IF N1<1 THEN 1050 1030 IF A(N1)<1 THEN 830 1040 LET A(N1)=A(N1)-1 1050 LET A(N2)=A(N2)+1 1060 IF N1<=0 THEN LET H1=H1-1 1080 IF M1=0 AND M2=0 THEN 1140 1090 IF B(M2)<1 THEN 1140 1100 LET B(M2)=B(M2)-1: LET G=G+1: PRINT "You hit me !!!" 1130 IF M2=N2 THEN 1190 1140 IF N1=0 AND N2=0 THEN 1190 1150 IF B(N2)<1 THEN 1190 1160 LET B(N2)=B(N2)-1: LET G=G+1: PRINT "You hit me !!!" 1190 PRINT "Your move is completed." 1200 GOSUB 7460 1210 GOTO 1230 1220 PRINT "Your roll is ";D1;" and ";D2;"." 1225 PRINT "But you can't move. Ha-ha-ha!!!" 1230 GOSUB 6440: GOTO 1290 1250 REM.....Computer move determination..... 1260 LET C1=X: LET C2=Y: GOTO 1330 1290 LET S1=0: LET S2=0: LET T1=0: LET T2=0 1300 FOR I=1 TO 10: LET S(I)=0: NEXT I 1310 LET C1=INT(RND(0)*6)+1: LET C2=INT(RND(0)*6)+1 1330 GOSUB 6100 1340 PRINT "My roll is ";C1;" and ";C2;"." 1350 IF G>0 THEN 5630 1360 IF L6=1 THEN 6760 1370 IF C1=C2 THEN 4200 1380 IF C11 THEN 1480 1460 IF B(I-C1)>1 THEN 1480 1470 IF A(I-C1)<2 THEN 1530 1480 LET I=I+1: IF I<25-(C2-C1) THEN 1450 1490 LET I1=I1-1 1500 IF I1=2 THEN 1650 1510 IF I1=0 THEN 5170 ELSE 1440 1530 IF B(I+(C2-C1))<1 THEN 1480 1540 IF A(I-C1)=0 THEN 1580 1550 PRINT "I GOT YOU!" 1560 LET A(I-C1)=A(I-C1)-1: LET H1=H1+1 1580 LET B(I)=B(I)-1 1590 LET B(I-C1)=B(I-C1)+2 1600 LET B(I+(C2-C1))=B(I+(C2-C1))-1 1610 LET S1=I: LET S2=I-C1: LET T2=S2 1630 LET T1=I+(C2-C1): GOTO 2450 1650 LET L5=13 1660 LET I=25: REM...loop to 1780 1665 LET I=I-1 1670 IF B(I)<1 THEN 1780 1680 IF C1=0 THEN 1700 1690 IF A(I-C1)=1 THEN 1840 1700 IF C2=0 THEN 1780 1710 IF A(I-C2)=1 THEN 1970 1720 IF I-C1-C2<1 THEN 1740 1730 IF A(I-C1-C2)<>1 THEN 1780 1740 IF A(I-C1)<=1 THEN 2130 1760 IF A(I-C2)<=1 THEN 2100 1780 IF I>L5 THEN 1665 1790 IF L5<>13 OR C2=0 THEN 1810 1800 LET L5=C2+1 1810 IF I1=2 THEN 3030 1820 IF I1=1 AND C1<>0 AND C2<>0 THEN 1440 ELSE 5170 1840 LET B(I-C1)=B(I-C1)+1: LET B(I)=B(I)-1 1860 LET A(I-C1)=A(I-C1)-1: LET H1=H1+1 1880 PRINT "I took your chip at ";I-C1 1890 LET L5=C2+1: LET S1=I: LET S2=I-C1: LET C1=0 1930 GOSUB 6100 1940 IF L6=1 THEN 6760 1950 IF C2=0 THEN 2450 ELSE 1670 1970 LET B(I-C2)=B(I-C2)+1: LET B(I)=B(I)-1 1990 LET A(I-C2)=A(I-C2)-1: LET H1=H1+1 2010 PRINT "I took your chip at ";I-C2 2020 LET L5=C1+1: LET T1=I: LET T2=I-C2: LET C2=0 2060 GOSUB 6100 2070 IF L6=1 THEN 6760 2080 IF C1=0 THEN 2450 ELSE 1670 2100 LET Z=C2: LET C2=C1: LET C1=Z 2130 IF I-C1-C2<1 THEN 1780 2140 LET B(I-C1-C2)=B(I-C1-C2)+1: LET B(I)=B(I)-1 2160 LET A(I-C1-C2)=A(I-C1-C2)-1: LET H1=H1+1 2180 LET S1=I: LET S2=I-C1: LET T1=S2 2200 LET T2=I-C1-C2 2210 PRINT "I took your chip at ";I-C1-C2 2220 LET C1=0: LET C2=0 2230 IF C1=0 AND C2=0 THEN 2450 2240 IF C1<>0 AND C2<>0 THEN 3030 2250 IF C2=0 THEN 2290 2260 LET Z=C2: LET C2=C1: LET C1=Z 2290 FOR I=C1+1 TO 24 2300 IF B(I)<1 THEN 2320 2310 IF B(I-C1)>0 THEN EXIT 2370 2320 NEXT I 2330 LET Z=C2: LET C2=C1 2350 LET C1=Z: GOTO 3030 2370 LET B(I)=B(I)-1 2380 LET B(I-C1)=B(I-C1)+1 2390 IF IF S1=0 THEN 2430 2400 LET T1=I: LET T2=I-C1: GOTO 2450 2430 LET S1=I: LET S2=I-C1 2450 REM....Computor move printout..... 2460 IF S1<>T2 THEN 2530 2470 LET Z1=S1: LET Z2=S2 2490 LET S1=T1: LET S2=T2 2510 LET T1=Z1: LET T2=Z2 2530 PRINT "My move is ";S1;",";S2;" and ";T1;",";T2;"." 2540 PRINT "STATUS :" 2550 GOSUB 2570 2560 GOTO 720 2570 REM.....BOARD printout..... 2580 LET F2=24: LET P=13: LET V=-1: PRINT 2630 PRINT " 24 23 22 21 20 19 18 17 16 15 14 13" 2640 PRINT " --------------------------------------" 2650 PRINT " "; 2660 FOR H2=F2 TO P STEP V 2670 IF A(H2)<1 THEN 2710 ELSE PRINT %+3I;A(H2); 2700 GOTO 2760 2710 IF B(H2)<1 THEN 2740 ELSE PRINT %+3I;-B(H2); 2730 GOTO 2760 2740 PRINT %3I;O; 2760 IF H2=19 OR H2=6 THEN PRINT TAB(21); 2800 NEXT H2 2810 IF H2<>13 THEN 2890 ELSE PRINT 2830 PRINT TAB(16);B$;%2I;G;" ";H1 2850 LET V=1: LET P=12: LET F2=1: GOTO 2650 2890 PRINT : PRINT " --------------------------------------" 2900 PRINT " 1 2 3 4 5 6 7 8 9 10 11 12" 2910 PRINT : PRINT : LET R1=0 2920 INPUT (1,15)" 0=Pass 1=Status 2=Double ---=>",A$ 2925 LET A$=A$+"0": IF A$(1,1)="0" THEN LET D5=0 2926 IF A$(1,1)="1" THEN LET D5=1 2927 IF A$(1,1)="2" THEN LET D5=2 2930 ON D5+1 GOTO 3010,2940,7460 2940 PRINT "The doubling cube is at "; 2950 IF D9<0 THEN 2990 2960 PRINT D9;". You may double if you wish." 2970 LET D5=0: GOTO 2920 2990 PRINT -D9;" It is my turn to double." 3000 LET D5=0 3010 GOSUB 6100 3020 RETURN 3030 REM....SAFE MOVE..... 3040 LET I=24: REM.....loop to 3190 3050 IF B(I)<1 THEN 3190 3060 IF C1=0 OR C2=0 THEN 3100 3070 IF I-C1-C2<1 THEN 3100 3080 IF B(I-C1-C2)>0 AND A(I-C1)<1 THEN 3250 3090 IF B(I-C1-C2)>0 AND A(I-C2)<1 THEN 3450 3100 IF C1=0 THEN 3130 3110 IF B(I-C1)>0 THEN 3220 3120 IF C2=0 THEN 3190 3130 IF B(I-C2)>0 THEN 3420 3140 IF A(I-C1)>0 THEN 3180 3150 IF I-C1-C2<1 THEN 3190 3160 IF B(I-C1-C2)<1 THEN 3190 ELSE 3250 3180 IF A(I-C2)<1 AND B(I-C1-C2)>1 THEN 3450 3190 LET I=I-1: IF I>=L5 THEN 3050 ELSE LET I=I+1 3200 LET I1=I1-1: GOTO 1660 3220 IF C2=0 THEN 3310 3230 IF I-C1-C2<1 THEN 3190 3240 IF B(I-C1-C2)<1 THEN 3310 3250 LET B(I-C1-C2)=B(I-C1-C2)+1: LET B(I)=B(I)-1 3270 LET S1=I: LET S2=I-C1: LET T1=S2 3290 LET T2=I-C1-C2: GOTO 2450 3310 LET B(I)=B(I)-1 3320 LET B(I-C1)=B(I-C1)+1 3330 LET S1=I: LET S2=I-C1: LET C1=0 3360 GOSUB 6100 3370 IF L6=1 THEN 6760 3380 LET L5=C2+1 3390 IF C2=0 THEN 2450 3400 IF B(I)>0 THEN 3130 ELSE 3190 3420 IF C1=0 OR I-C1-C2<1 THEN 3510 3440 IF B(I-C1-C2)<1 THEN 3510 3450 LET B(I-C1-C2)=B(I-C1-C2)+1: LET B(I)=B(I)-1 3480 LET S1=I: LET S2=I-C2: LET T1=S2 3490 LET T2=I-C1-C2: GOTO 2450 3510 LET B(I)=B(I)-1 3520 LET B(I-C2)=B(I-C2)+1 3530 LET T1=I: LET T2=I-C2: LET C2=0 3560 GOSUB 6100 3570 IF L6=1 THEN 6760 3580 LET L5=C1+1 3590 IF C1=0 THEN 2450 ELSE 3190 3610 PRINT : REM.....Player doubles 3620 INPUT "Input 1st 4 moves ---=>",M1,M2,M3,M4 3625 INPUT "Input 2nd 4 moves ---=>",M5,M6,M7,M8 3627 IF M1+M2+M3+M4+M5+M6+M7+M8=0 THEN 1190 3630 IF L7=1 THEN 3750 3640 IF M1=0 AND M2=0 THEN 3680 3650 IF M2-M1=D1 THEN 3680 3660 PRINT "Nice try. Next time I will load the dice!" 3670 PRINT "Re-input !": GOSUB 2570: GOTO 3620 3680 IF M3=0 AND M4=0 THEN 3700 3690 IF M4-M3<>D1 THEN 3660 3700 IF M5=0 AND M6=0 THEN 3720 3710 IF M6-M5<>D1 THEN 3660 3720 IF M7=0 AND M8=0 THEN 3740 3730 IF M8-M7<>D1 THEN 3660 3740 IF B(M2)>1 OR B(M4)>1 OR B(M6)>1 OR B(M8)>1 THEN 3660 3750 IF M1=0 AND M2=0 THEN 3820 3760 IF M1<1 THEN 3790 3770 IF A(M1)<1 THEN 3660 3780 LET A(M1)=A(M1)-1 3790 LET A(M2)=A(M2)+1 3800 IF M1<=0 THEN LET H1=H1-1 3820 IF M3=0 AND M4=0 THEN 3890 3830 IF M3<1 THEN 3860 3840 IF A(M3)<1 THEN 3660 3850 LET A(M3)=A(M3)-1 3860 LET A(M4)=A(M4)+1 3870 IF M3<=0 THEN LET H1=H1-1 3890 IF M5=0 AND M6=0 THEN 3960 3900 IF M5<1 THEN 3930 3910 IF A(M5)<1 THEN 3660 3920 LET A(M5)=A(M5)-1 3930 LET A(M6)=A(M6)+1 3940 IF M5<=0 THEN LET H1=H1-1 3960 IF M7=0 AND M8=0 THEN 4030 3970 IF M7<1 THEN 4000 3980 IF A(M7)<1 THEN 3660 3990 LET A(M7)=A(M7)-1 4000 LET A(M8)=A(M8)+1 4010 IF M7<=0 THEN LET H1=H1-1 4030 IF B(M2)<>1 THEN 4070 4040 LET B(M2)=B(M2)-1: LET G=G+1: PRINT "You hit me !!!" 4070 IF B(M4)<>1 THEN 4110 4080 LET B(M4)=B(M4)-1: LET G=G+1: PRINT "You hit me !!!" 4110 IF B(M6)<>1 THEN 4150 4120 LET B(M6)=B(M6)-1: LET G=G+1: PRINT "You hit me !!!" 4150 IF B(M8)<>1 THEN 4190 4160 LET B(M8)=B(M8)-1: LET G=G+1: PRINT "You hit me !!!" 4190 GOTO 1190 4200 REM.....Computor doubles 4210 LET X3=0: LET L=0 4220 FOR I=1 TO 10: LET S(I)=0: NEXT I 4230 LET C3=C1: LET C4=C1: LET L5=C1+1 4250 LET I=L5: REM....loop to 4750 4260 IF B(I)<2 THEN 4750 4270 IF A(I-C1)>1 THEN 4750 4280 IF I-(2*C1)<1 THEN 4340 4290 IF A(I-(2*C1))<>1 THEN 4340 4300 LET C1=2*C1: LET H=I: LET X3=1: GOTO 4420 4340 IF B(I-C1)>1 THEN 4770 4350 IF B(I)-2=1 THEN 4770 4360 LET X4=I+1 4370 LET H=24: REM...Loop to 4700 4380 LET X5=0 4390 IF B(H)<2 THEN 4700 4400 IF A(H-C1)>1 THEN 4700 4410 IF A(H-C1)=0 THEN 4450 4420 PRINT "I hit your chip at point ";H-C1 4430 LET H1=H1+1: LET A(H-C1)=0 4450 IF X3=1 THEN LET C1=C1/2 4470 LET S(2)=H-C1: LET S(4)=S(2) 4480 LET S(1)=H: LET S(3)=H 4490 LET B(H)=B(H)-2 4500 IF X3=1 THEN LET C1=C2*2 4520 LET B(H-C1)=B(H-C1)+2 4530 IF X3<>1 THEN 4570 4540 LET C1=C1/2: LET I=H-C1: GOTO 4640 4570 LET X5=-1: LET B(I)=B(I)-2: LET B(I-C1)=B(I-C1)+2 4600 IF A(I-C1)=0 THEN 4640 4610 PRINT "I hit your chip at point ";I-C1 4620 LET H1=H1+1: LET A(I-C1)=0 4640 LET S(5)=I: LET S(7)=I 4650 LET S(6)=I-C1: LET S(8)=S(6) 4660 IF X5<>-1 THEN 4680 4670 LET C3=0: LET C4=0 4680 LET C1=0: LET C2=0 4690 GOTO 4800 4700 LET H=H-1: IF H>X4-1 THEN 4380 ELSE LET H=H+1 4710 IF X4<>I+1 THEN 4580 4720 LET X4=C4+1: GOTO 4700 4740 GOTO 4580 4750 LET I=I-1: IF I>L5-1 THEN 4880 ELSE LET I=I+1 4760 GOTO 4800 4770 IF L>0 THEN 4360 4780 LET L=L+1: GOTO 4750 4800 REM...Computor doubles safe move..... 4810 IF C1=0 AND C2=0 AND C3=0 AND C4=0 THEN 5030 4820 IF C1<>0 AND C2<>0 AND C3<>0 AND C4<>0 THEN 4850 4830 LET F1=2: LET F=2: GOTO 4870 4850 LET F1=4: LET F=4: LET L5=C4+1 4870 LET I=24: REM....Loop to 5020 4880 IF B(I)<1 OR A(I-C4)>1 THEN 5020 4900 IF A(I-C4)=0 THEN 4940 4910 PRINT "I hit your chip at point ";I-C4 4920 LET H1=H1+1: LET A(I-C4)=0 4940 LET B(I-C4)=B(I-C4)+1: LET B(I)=B(I)-1 4960 LET S((2*F)-1)=I 4970 LET S(2*F)=I-C4: LET F=F-1 4990 IF F<>0 AND B(I)<>0 THEN 4940 5000 IF F<>0 AND B(I)=0 THEN 5020 ELSE 5030 5020 LET I=I-1: IF I>L5-1 THEN 4880 ELSE LET I=I+1 5030 LET I=1: REM...loop to5120 5040 IF S(I+1)>=S(I+3) THEN 5120 5050 LET Z3=S(I+2): LET Z4=S(I+3): LET S(I+2)=S(I) 5080 LET S(I+3)=S(I+1): LET S(I)=Z3: LET S(I+1)=Z4: GOTO 5030 5120 LET I=I+2: IF I<7 THEN 5040 ELSE LET I=I-2 5130 PRINT "My moves are ";S(1);",";S(2);",";S(3);",";S(4) 5140 PRINT " and ";S(5);",";S(6);",";S(7);",";S(8);"." 5150 GOTO 2540 5170 REM....Computor farthest move 5180 LET C9=0 5190 IF C2=0 THEN 5220 5200 LET L5=C2+1: GOTO 5230 5220 LET L5=C1+1 5230 LET X1=1 5240 GOSUB 6100 5250 IF L6=1 THEN 6760 5260 LET I=24: REM....Loop to 5380 5270 IF B(I)<>X1 THEN 5380 5280 IF C2=0 THEN 5370 5290 IF A(I-C2)>1 THEN 5530 5300 LET B(I)=B(I)-1: LET B(I-C2)=B(I-C2)+1 5320 LET T1=I: LET T2=I-C2: LET C2=0: LET L5=C1+1 5360 IF C1=0 THEN 2450 5370 IF A(I-C1)<1 THEN 5540 5380 LET I=I-1: IF I>L5-1 THEN 5270 ELSE LET I=I+1 5390 IF X1=1 THEN LET X1=16 5410 LET X1=X1-1 5420 IF X1>0 THEN 5260 5430 IF C1=0 OR C9=1 THEN 5470 5440 LET C9=1: LET C2=0: GOTO 5220 5470 IF C1<>0 THEN 5500 5480 LET S1=0: LET S2=0 5490 GOTO 2450 5500 IF C2<>0 THEN 6080 5510 LET T1=0: LET T2=0: GOTO 2450 5530 IF C1=0 OR A(I-C1)>1 THEN 5380 5540 IF B(I)<1 THEN 5380 5550 LET B(I)=B(I)-1: LET B(I-C1)=B(I-C1)+1 5570 LET S1=I: LET S2=I-C1: LET C1=0: LET L5=C2+1 5610 IF C2=0 THEN 2450 ELSE 5270 5630 REM....Blot.... 5640 LET I1=1: LET G1=G: LET C3=C1: LET C4=C2 5680 IF A(25-C1)=1 THEN 6000 5690 IF A(25-C2)=1 THEN 6040 5700 IF A(25-C1)<1 AND B(25-C1)>0 THEN 5890 5710 IF A(25-C2)>1 THEN 5870 5720 LET B(25-C2)=B(25-C2)+1 5730 LET T1=0: LET T2=25-C2: LET L5=C1+1: LET C2=0 5770 IF C3<>C4 THEN 5800 5775 IF G>2 THEN LET G9=2 ELSE LET G9=G 5780 LET S(9-(2*G9))=T1 5790 LET S(10-(2*G9))=T2 5800 LET G=G-1 5810 IF G=0 AND C3=C4 THEN 5980 5820 IF G=0 AND G1=2 THEN 2460 5830 IF G=0 THEN 1660 5840 IF S(7)=0 OR S(5)=0 THEN 5870 5850 LET C1=C3: LET C2=C4 5870 IF C1=0 OR C2=0 THEN 5390 5880 IF A(25-C1)>1 THEN 6080 5890 LET B(25-C1)=B(25-C1)+1 5900 LET S1=0: LET S2=25-C1: LET L5=C2+1: LET C1=0 5940 IF C3<>C4 THEN 5800 5950 IF G>2 THEN LET G9=2 ELSE LET G9=G 5955 LET S(9-(2*G9))=S1 5960 LET S(10-(2*G9))=S2: GOTO 5800 5980 LET F1=4-G1: LET F=F1 5990 GOTO 4870 6000 PRINT "I hit you.": LET A(25-C1)=0 6020 LET H1=H1+1: GOTO 5890 6040 PRINT "I hit you.": LET A(25-C2)=0 6060 LET H1=H1+1: GOTO 5720 6080 PRINT "I can't move.": GOTO 2540 6090 STOP 6100 REM.....Computor HOME....... 6110 LET G8=0 6120 FOR J=7 TO 24: LET G8=G8+B(J): NEXT J 6150 IF G8<>0 THEN 6240 ELSE LET G8=0 6170 FOR J=1 TO 6: LET G8=G8+B(J): NEXT J 6200 IF G8=0 THEN 6260 ELSE LET L5=-1 6220 LET L6=1: RETURN 6240 LET L6=0: RETURN 6260 PRINT "I W O N !": LET J1=0 6270 IF G7<>0 AND G8<>0 THEN 6380 6280 FOR I=7 TO 18: LET J1=J1+A(I): NEXT I 6290 IF J1=0 THEN 6310 ELSE LET J1=0 6300 FOR I=1 TO 6: LET J1=J1+A(I): NEXT I 6305 LET M$="GAMMONED." 6310 IF J1=0 THEN 6330 6320 LET M$="BACKGAMMONED!" 6330 IF M$(1,1)="G" THEN LET D9=D9*2 6350 IF M$(1,1)="B" THEN LET D9=D9*3 6370 PRINT "You were ";M$ 6380 PRINT "YOU HAVE LOST ";ABS(D9);" POINTS." 6390 PRINT ,"I'll remember that." 6400 INPUT (1,0)" Care for a rematch ---=>",A$ 6410 LET A$=A$+"Y" 6420 IF A$(1,1)="Y" THEN 70 ELSE 7730 6440 REM....Player win subroutine...... 6450 LET G7=H2 6460 FOR J=1 TO 18: LET G7=G7+A(J): NEXT J 6490 IF G7<>0 THEN 6570 ELSE LET G7=0 6510 FOR J=24 TO 19 STEP -1: LET G7=G7+A(J): NEXT J 6540 IF G7=0 THEN 6590 ELSE LET L7=1 6560 GOTO 6580 6570 LET L7=0 6580 RETURN 6590 PRINT "You won." 6600 IF G7<>0 AND G8<>0 THEN 6710 ELSE LET J2=0 6610 FOR I=7 TO 18: LET J2=J2+B(I): NEXT I 6620 IF J2=0 THEN 6640 ELSE LET J2=0 6630 FOR I=19 TO 24: LET J2=J2+B(I): NEXT I 6635 LET M$="GAMMONED." 6640 IF J2=0 THEN 6660 6650 LET M$="BACKGAMMONED!" 6660 IF M$(1,1)="G" THEN LET D9=D9*2 6680 IF M$(1,1)="B" THEN LET D9=D9*3 6700 PRINT "I was ";M$ 6710 PRINT "I have lost ";ABS(D9);" points." 6730 PRINT "GOOD BYE." 6750 GOTO 7730 6760 REM....Computor finish...... 6770 LET I2=9: LET H3=1: LET F3=1: LET C3=0: LET C4=0 6800 IF C1<>C2 THEN 6830 6810 LET C3=C1: LET C4=C2 6830 LET C7=C1: LET C8=C2 6850 LET I=6: REM...Loop to 6900 6860 IF I=C1 AND B(I)>=I2 THEN 7230 6870 IF I=C2 AND B(I)>=I2 THEN 7050 6880 IF I=C3 AND B(I)>=I2 THEN 7360 6890 IF I=C4 AND B(I)>=I2 THEN 7380 6900 LET I=I-1: IF I>0 THEN 6860 ELSE LET I=I+1 6910 LET I2=I2-1 6920 IF I2<>0 THEN 6850 6930 IF C1<>0 THEN LET C1=C1+H3 6950 IF C2<>0 THEN LET C2=C2+H3 6970 IF C3<>0 THEN LET C3=C3+H3 6990 IF C4<>0 THEN LET C4=C4+H3 7010 IF C1=7 OR C2=7 OR C3=7 OR C4=7 THEN LET H3=-1 7030 LET I2=9: GOTO 6850 7050 LET S(F3)=I: LET T1=I 7060 IF I-C8<1 THEN 7150 7070 IF A(I-C8)>1 THEN 6900 7080 IF A(I-C8)<1 THEN 7120 7090 PRINT "I took your chip at ";I-C8 7100 LET H1=H1+1 7110 LET A(I-C8)=B(I-C8)-1: LET B(I-C8)=B(I-C8)+1 7130 LET S(F3+1)=I-C8: LET T2=I-C8: GOTO 7160 7150 LET S(F3+1)=-1: LET T2=-1: LET C2=0 7170 LET B(I)=B(I)-1 7180 GOSUB 6100 7190 IF C1=0 AND C2=0 AND C3=0 AND C4=0 AND C7=C8 THEN 5030 7200 IF C1=0 AND C2=0 AND C3=0 AND C4=0 THEN 2460 7210 LET F3=F3+2: GOTO 6870 7230 LET S(F3)=I: LET S1=I 7240 IF I-C7<1 THEN 7330 7250 IF A(I-C7)>1 THEN 6900 7260 IF A(I-C7)<1 THEN 7300 7270 PRINT "I took your chip at ";I-C7 7280 LET H1=H1+1 7290 LET A(I-C7)=A(I-C7)-1: LET B(I-C7)=B(I-C7)+1 7310 LET S(F3+1)=I-C7: LET S2=I-C7: GOTO 7340 7330 LET S(F3+1)=-1: LET S2=-1: LET C1=0: GOTO 7170 7360 LET A=1: GOTO 7390 7380 LET A=2 7390 LET Z5=C3: LET C3=C1 7410 LET C1=Z5: LET Z6=C4 7430 LET C4=C2: LET C2=Z6 7450 ON A GOTO 7230,7050 7460 REM.....DOUBLES evaluation........... 7470 IF ABS(D9)>=64 THEN 7720 7480 LET U1=0: LET U2=0 7490 FOR R2=1 TO 5 7500 LET R7=0: LET R8=0: RESTORE 7590 7510 READ R3,R5,R6 7520 FOR R4=R3 TO R5 7530 LET R7=B(R4)+R7: LET R8=A(R4)+R8 7550 NEXT R4 7560 LET U1=U1+(R6*R7) 7570 LET U2=U2+((3-R6)*R8) 7580 NEXT R2 7590 DATA 1,6,.5,7,12,1,13,15,1.5,16,19,2,20,24,2.5 7600 RESTORE 7590 7610 IF U1<=U2 AND D9>0 AND D5=2 THEN 7690 7620 IF U1<=U2 AND D5<>2 AND D9<0 THEN 7660 7630 IF D5<>2 THEN 7720 7640 PRINT "I REFUSE to double the stakes !" 7650 GOTO 6590 7660 INPUT (1,0)"Care to double the stakes ---=>",R$ 7670 LET R$=R$+"N" 7680 IF R$(1,1)<>"Y" THEN 6260 7690 LET D9=D9*-2 7700 PRINT "Fine." 7710 LET D5=0 7720 RETURN 7730 END