100 PRINT"BACKGAMMON 105 PRINT"BY RODGER OLSEN":PRINT:PRINT"COPYRIGHT 1979":PRINT:PRINT 110 POKE11,0:POKE12,253:PRINT"HIT SHIFT TO START" 111 Y=RND(8):X=PEEK(57100):IFX=254ORX=1THEN111 120 L=32:R1=53444:DIMA(27),B(27),P(25):R2=0:X=0:Y=0:TM=0 130 IFPEEK(57088)<129THENR1=R1+126:L=64 140 R2=R1+22*L:POKE56900,0 150 FORX=1TO30:PRINT:NEXT:FORX=R2TOR2+5*L:POKEX,32:NEXT 160 FORX=1TO12:P(X)=R1+2*X:POKEP(X),161:FORI=1TO7 170 POKEP(X)+L*I,149:NEXTI 177 IFFF=3ANDDB=0THEN390 180 P(X+12)=R2+26-2*X:POKEP(X+12),161:FORI=1TO7 190 POKEP(X+12)-L*I,149:NEXTI:POKEP(X+12)-L*8,128 200 POKEP(X)+L*8,135:POKEP(X)+9*L,64+X:POKEP(X+12)-9*L,76+X 210 NEXT 220 P(0)=P(6)+1:P(25)=P(18)-1:FORX=P(0)TOP(25)STEPL:POKEX,125:NEXT 230 DP=R1+3+11*L:D2=DP+12:FORX=1TO250:POKER1+30-X-L,170 240 POKER2-10+L+X,170:NEXT:FORX=R1TOR2STEPL:POKEX,161 250 POKEX+26,161:NEXT:FORX=1TO25:POKER1-L+X,161:POKER2+L+X,161:NEXT 260 FORX=1TO25:A(X)=0:B(X)=0:NEXT:B(1)=2:B(12)=5:B(17)=3:B(19)=5 270 A(24)=2:A(13)=5:A(8)=3:A(6)=5 280 POKEDP-L-1,68:POKEDP-L,73:POKEDP-L+1,69 290 FORX=1TO24:IFA(X)>0THEND=42:N=A(X) 300 IFB(X)>0THEND=43:N=B(X) 310 IFA(X)=0ANDB(X)=0THEN340 320 Y=1:IFX>12THENY=-1 330 FORI=1TON:POKEP(X)+Y*L*I,D:NEXTI 340 NEXT 350 A$="ROLL FOR":GOSUB1560:FORX=1TO400:NEXT:A$="FIRST " 360 GOSUB1560:X=USR(X):GOSUB1540:IFR1>R2THEN630 370 IFR1=R2THEN350 380 GOTO410 390 A$="YOUR ROLL .":GOSUB1560:X=USR(X):IFPEEK(531)<>82THEN390 400 GOSUB1540 410 A$="YOUR MOVE":GOSUB1560 420 POKEDP+9,32:POKEDP+11,32:X=USR(X):IFPEEK(531)=32THEN620 430 IFPEEK(531)<64ORPEEK(531)>90THEN420 440 X=PEEK(531):POKEDP+9,X:X=X-64 450 Y=USR(Y):Y=PEEK(531):IFY<65ORY>91THEN450 460 POKEDP+11,Y:Y=Y-64:I=USR(I) 470 IFPEEK(531)<>13THEN420 480 GOSUB490:GOTO420 490 IFY=26ANDA(X)>0THENA(X)=A(X)-1:A(27)=A(27)+1:GOTO520 500 IFA(X)>0ANDB(X)<2THENA(X)=A(X)-1:A(Y)=A(Y)+1:GOTO520 510 RETURN 520 IFB(Y)=1THENB(Y)=0:B(0)=B(0)+1:POKEP(0)+B(0)*L,43 525 IFA(27)>14THEN3000 530 I=1:IFY>12THENI=-1 540 IFY>25THENI=1:GOTO580 550 FORT=1TOA(Y):IFT<8THENPOKEP(Y)+I*L*T,42 560 IFT>7THENPOKEP(Y)+I*L,A(Y)+42 570 NEXTT:I=1:IFX>12THENI=-1 580 IFA(X)>7THENPOKEP(X)+I*L,A(X)+42:RETURN 590 IFX=25THENPOKEP(25)-A(25)*L-L,125:RETURN 600 POKEP(X)+L*I,42:IFA(X)<7THENPOKEP(X)+(A(X)+1)*L*I,149 610 RETURN 620 GOSUB1540 630 A$="MY MOVE .":GOSUB1560 640 Y=0:FORX=0TO18:Y=Y+B(X):NEXT:IFY=0THEN1940 645 Y=0:FORX=1TO24:IFX+R1>24THEN660 650 IFB(X)<>0ANDA(X+R1)<2THENY=Y+1:GOTO670 660 NEXT 670 FORX=1TO23:IFX+R2>24THEN690 680 IFB(X)<>0ANDA(X+R2)<2THENY=Y+1:GOTO700 690 NEXT 700 FORX=1TO23:IFX+R1+R2>24THEN720 710 IFB(X+R1+R2)>0ANDA(X+R1+R2)<1AND(A(X+R1)<2ORA(X+R2)<2)THENY=Y+2 720 NEXT 730 IFY=1ORB(0)>0THEN1570 740 IFY=0THEN1920 750 FF=1:BM=-999 760 REM 950 FORX=1TO23:IFX+R1>24THEN1250 960 IFB(X)=0ORA(X+R1)>1THEN1250 970 IFX>18ORY>18THENTM=TM-50 980 BX=0:FORI=X+R1TO25:BX=BX+A(I)*.2:NEXT 990 FORY=1TO23:IFY+R2>24ORB(Y)=0THEN1240 1000 IFA(Y+R2)>1OR(X=YANDB(X)<2)THEN1240 1005 IFX+R1=Y+R2THENTM=TM+200:IFB(X+R1)=0THENTM=TM+200 1010 BY=0:FORI=Y+R2TO25:BY=BY+A(I)*.2:NEXT 1015 IFR1=R2ANDX=YANDB(X)=3THENTM=TM-100+100*BX+BY 1020 IFA(X+R1)=1THENTM=TM+400-8*(X+R1)+10*BX 1030 IFA(Y+R2)=1THENTM=TM+400-8*(Y+R2)+10*BY 1033 IFB(X+R1)=0AND(X+R1<>Y+R2)THENTM=TM-5*(X+R1) 1037 IFB(Y+R2)=0ANDX+R1<>Y+R2THENTM=TM-5*(Y+R2) 1040 IF(X>17ORY>17)ANDX+R1<>Y+R2THENTM=TM-110 1047 TM=TM+400-4*X-4*Y 1050 IFB(X+R1)=1THENTM=TM+200:IFB(X)=1THENTM=TM+200+25-X 1060 IFB(X+R1)=1AND(B(X+R1+1)>1ORB(X+R1-1)>1)THENTM=TM+50*BX 1070 IFB(Y+R2)=1THENTM=TM+200:IFB(X)=1THENTM=TM+200+25-Y 1080 IFB(X+R1)>0ORX+R1=Y+R2THENTM=TM+100+10*BX+BY 1090 IFB(Y+R2)>0THENTM=TM+100+10*BX+BY 1100 IFB(X+R1)=1ANDB(Y+R2)=1THENTM=TM+100 1110 IFB(X)=1THENTM=TM+50*BX 1120 IFB(Y)=1THENTM=TM+50*BY 1130 IFB(Y)=2ANDX<>YTHENTM=TM-200-100*BY 1140 IFB(X)=2ANDX<>YTHENTM=TM-200-100*BX 1150 IFB(X)>2ANDR1<>R2THENTM=TM+50-X 1160 IFB(Y)>2ANDR1<>R2THENTM=TM+100-X 1170 IFB(X)<18ANDB(X+R1)>17THENTM=TM+15 1180 IFB(Y)<18ANDB(Y+R2)>18THENTM=TM+15 1183 IFA(X+R1)=1THENTM=TM*1.5 1185 IFB(X)=0ANDX+R1=Y++R2ANDX+R1>18AND(X<18ORY<18)THENTM=TM*2 1187 IFA(Y+R2)=1THENTM=TM*1.5 1190 IFTM24ORY+R2>24THEN1240 1210 IFB(X)<1ORA(X+R1)>1ORA(Y+R2)>1THEN1240 1220 IFR1=R2ANDX=YANDB(X)<2THEN1240 1230 BM=TM:TM=0:M1$=CHR$(X)+CHR$(X+R1):M2$=CHR$(Y)+CHR$(Y+R2) 1240 TM=0:NEXTY 1250 NEXTX 1260 FORX=1TO23:IFX+R1+R2>24THEN1360 1270 IFB(X)<1ORA(X+R1)>1ORA(X+R1+R2)>1THEN1360 1280 IFA(X+R1)=1ANDB(X+R1+R2)>0THENTM=TM+300 1290 BY=0:FORY=X+R1+R2TO25:BY=BY+A(X)*.2:NEXT 1293 BX=0:FORY=XTO25:BX=BX+A(Y)*.2:NEXT 1300 IFB(R1+R2)=1THENTM=TM+400-8*(X+R1)+10*BL+R1+R2 1310 IFB(X)=2THENTM=TM-100-50*BY-(5*X) 1320 IFB(X+R1+R2)>0THENTM=TM+400-8*(X+R1+R2) 1330 IFB(X)<18ANDB(X+R1+R2)>17THENTM=TM+10 1333 IFA(X+R1)=1THENTM=TM*1.5 1337 IFA(X+R1+R2)=1THENTM=TM*1.5 1340 IFBM>TMTHENTM=0:GOTO1360 1345 TM=TM+400-8*X 1350 BM=TM:TM=0:M1$=CHR$(X)+CHR$(X+R1):M2$=CHR$(X+R1)+CHR$(X+R1+R2) 1360 NEXTX 1370 IFFF=1THENFF=0:Y=R1:R1=R2:R2=Y:GOTO760 1380 A$="READY .":GOSUB1560:X=USR(X):A$="SECOND MOVE":GOSUB1560 1390 GOSUB1430 1400 M1$=M2$:X=USR(X):GOSUB1430 1410 IFDB=1THENDB=0:A$="THINKING .":GOSUB1560:GOTO640 1420 GOTO390 1430 X=ASC(LEFT$(M1$,1)):Y=ASC(RIGHT$(M1$,1)) 1450 POKED2-3,X+64:POKED2-1,Y+64 1455 IFB(X)<=0THEN1920 1460 IFA(Y)=1THENA(25)=A(25)+1:A(Y)=0:POKEP(25)+A(25)*L*-1,42 1470 B(X)=B(X)-1:B(Y)=B(Y)+1:I=1:IFY>12THENI=-1 1490 FORT=1TOB(Y):IFT<8THENPOKEP(Y)+I*L*T,43:GOTO1510 1500 POKEP(Y)+I*L,B(Y)+42 1510 NEXT:I=1:IFX>12THENI=-1 1515 FORT=1TOB(X) 1520 IFT>7THENPOKEP(X)+L*I,B(X)+42:RETURN 1530 POKEP(X)+(B(X)+1)*L*I,149:RETURN 1540 R1=INT(6*RND(8)+1):R2=INT(6*RND(8)+1):DB=0:IFR1=R2THENDB=1 1550 POKEDP-1,R1+48:POKEDP+1,R2+48:RETURN 1560 FORQ=1TOLEN(A$):POKED2+Q,ASC(MID$(A$,Q,1)):NEXT:RETURN 1570 I=0:FF=1 1580 IFB(0)=0THEN1780 1590 BM=0:IFA(R1)>1ANDA(R2)>1THEN1920 1600 TM=0:IFA(R1)>1THEN1640 1610 I=R1:IFA(R1)=1THENTM=TM+50 1620 IFA(R1)=0THENTM=TM+10:IFB(R1)>0THENTM=TM+50:IFB(R1)=1THENTM=TM+99 1630 BM=TM 1640 IFA(R2)>1THEN1680 1650 TM=0:IFA(R2)=1THENTM=TM+105+R2 1660 IFA(R2)=0THENTM=TM+10:IFB(R2)>0THENTM=TM+50:IFB(R2)=1THENTM=TM+10 1670 IFTM>BMTHENI=R2 1680 A$="READY .":GOSUB1560:X=USR(ZX) 1690 IFI=R1THENR1=R2:GOTO1710 1700 R2=R1 1710 POKEP(0)+B(0)*L,125:B(0)=B(0)-1 1720 POKED2-3,89:POKED2-1,I+64 1730 B(I)=B(I)+1:POKEP(I)+B(I)*L,43 1740 IFA(I)=1THENA(I)=0:A(25)=A(25)+1:POKEP(25)-(A(25)*L),42 1750 IFFF=1THENFF=0:IFB(0)>0THENFF=3:GOTO1580 1760 IFFF=3ANDDB=1THENDB=0:GOTO640 1770 IFFF=3ANDDB=0THEN390 1775 BM=-1000:GOTO1790 1780 FF=1:BM=-1000 1790 FORX=1TO23:TM=0:IFX+R1>24THEN1860 1800 IFB(X)=0ORA(X+R1)>1THEN1860 1810 TM=TM+50-X:IFB(X)=2THENTM=TM-100 1820 IFB(X+R1)=1ANDX<6THENTM=TM+150 1830 IFB(X+R1)>0THENTM=TM+90 1840 IFB(X)=1THENTM=TM+25:IFB(X+R1)=1THENTM=TM+90 1850 IFTM>BMTHENBM=TM:M1$=CHR$(X)+CHR$(X+R1) 1860 NEXTX 1870 IFFF=1THENFF=0:Y=R1:R1=R2:R2=Y:GOTO1790 1880 IFBM<=-900THEN1920 1890 A$="ONE MOVE ":GOSUB1560:X=USR(X):GOSUB1430 1900 IFDB=1THENDB=0:A$="NEXT MOVE":GOSUB1560:GOTO640 1910 GOTO390 1920 A$="NO MOVE .":FORI=1TO900:NEXT:IFDB=1THEN1900 1930 GOTO390 1940 F1=0:M1=99:M2=99:HM=99 1950 IFR10THENM1=25-R1:X=M1:GOSUB2100 1970 IFB(25-R2)>0THENM2=25-R2:X=M2:GOSUB2100 1980 GOSUB2130:IFM1=99AND25-R1<=HMTHENM1=HM:X=M1:GOSUB2100 1990 GOSUB2130:IFM2=99AND25-R2<=HMTHENM2=HM:X=M2:GOSUB2100 2000 FORX=19TO24:IFB(X)=0ORX+R1>24ORM1<>99THEN2020 2010 IFA(X+R1)<2THENM1=X:Y=X+R1:GOSUB2200 2020 NEXT:FORX=19TO24:IFB(X)=0ORX+R2>24ORM2<>99THEN2035 2030 IFA(X+R2)<2THENM2=X::Y=X+R2:GOSUB2200 2035 NEXT:IF(M1=99ORM2=99)ANDF1=1THENF1=0:GOTO2000 2040 F1=0:IFM1=99THENA$="NO MOVE":GOSUB1560:X=USR(X):GOSUB2400 2050 IFM2=99THENA$="NO MOVE":GOSUB1560:X=USR(X):GOSUB2400 2060 IFDB=1THENDB=0:GOTO1940 2070 GOTO390 2100 A$="READY ":GOSUB1560:I=USR(I):I=-1:B(X)=B(X)-1 2105 Y=25:POKED2-3,X+64:POKED2-1,Y+64 2106 B(26)=B(26)+1:IFB(26)>14THEN2900 2110 GOSUB1520:A$=" ":GOSUB1560:RETURN 2130 HM=0:FORI=18TO24:IFB(I)>0THENHM=I:RETURN 2140 NEXT:RETURN 2200 A$="READY ":GOSUB1560:I=USR(I):GOSUB1450 2205 IFB(26)>14THEN2900 2210 A$=" ":GOSUB2400:RETURN 2400 FORI=1TO400:NEXT:RETURN 2900 A$=">*I WIN<*":GOSUB1560:GOTO3010 3000 A$=">>*YOU WIN*<<":GOSUB1560 3010 INPUT"WANT TO TRY AGAIN";A$:IFLEFT$(A$,1)="Y"THENRUN