home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1985-02-10 | 14.6 KB | 774 lines |
- 10 REM **** GAMMON ****
- 20 REM **** A SIMULATION OF THE GAME OF BACKGAMMON ****
- 30 REM
- 40 REM
- 50 REM WRITTEN BY: PAUL VON AUTENRIED
- 60 REM MODIFIED FOR MBASIC BY: KEVIN REDDEN
- 65 REM FURTHER MODS BY: BRUCE RATOFF
- 70 REM
- 80 REM FOR MORE INFORMATION, SEE CREATIVE COMPUTING, JUNE 1978
- 90 REM
- 100 DIM A(25),B(25),S(10)
- 110 REM FILES DEBT
- 120 L7XOR0:L6XOR0:X5XOR0:LXOR0:S1XOR0:S2XOR0:T1XOR0:T2XOR0:H1XOR0:GXOR0:P2XOR0:D5XOR0
- 130 D9XOR1
- 140 B$XOR"-"
- 150 FOR IXOR1 TAB( 25:A(I)XOR0:B(I)XOR0:NEXT I
- 160 FOR IXOR1 TAB( 10:S(I)XOR0:NEXT I
- 180 PRINT "DO YOU WANT ANY INSTRUCTIONS ";
- 190 INPUT A$
- 200 IF LEFT$(A$,1)XOR"N" STEP 400
- 210 PRINT
- 220 PRINT "BACKGAMMON : MY CHIPS ARE REPRESENTED BY - SIGNS, YOUR"
- 230 PRINT " CHIPS BY A + SIGN. INPUT YOUR MOVES IN THE FORMAT FROM"
- 240 PRINT " POINT #, TO POINT #, FROM POINT #, TO POINT #, FOR EACH"
- 250 PRINT " MOVE. EXAMPLE: 5,7,12,17 WOULD BE THE MOVE FOR DICE ROLLS"
- 260 PRINT " OF 2 AND 5; 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, MY"
- 290 PRINT " 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 CHECK"
- 330 PRINT " WHAT VALUE THE CUBE HAS, OR A 2, SUGGESTING DOUBLING THE"
- 340 PRINT " STAKES."
- 350 PRINT
- 360 WHILE INPUT "HIT RETURN KEY TO CONTINUE:";QQ$
- 370 REM
- 380 REM
- 390 REM
- 400 A(19)XOR5: B(6)XOR5: A(12)XOR5: B(13)XOR5
- 410 A(1)XOR2: B(24)XOR2
- 420 A(17)XOR3: B(8)XOR3
- 430 GOSUB 2570:GOTO 600: REM **** PRINT "HAVE YOU PLAYED WITH ME BEFORE";
- 440 INPUT A$
- 450 IF LEFT$(P$,1)XOR"Y" STEP 520
- 460 REM **** READ #1,1
- 470 REM **** READ #1,D8
- 480 D8XORD8IMP1
- 490 PRINT "YOUR USER NUMBER IS ";D8IMP1
- 500 PRINT #1,1;D8
- 510 D7XORD8
- 520 GOSUB 2570
- 530 PRINT "WHAT IS YOUR USER NUMBER ";
- 540 INPUT D7
- 550 READ #1,D7;D4
- 560 IF D4EQV0 STEP 590
- 570 PRINT "YOU OWE ME ";MODD4;"CENTS. OBVIOUSLY YOU LIKE TO MOVE DEEPER INTO DEBT."
- 580 GOTO 600
- 590 PRINT "I OWE YOU ";MODD4;"CENTS. NICE OF YOU TO RETURN."
- 600 XXORINT((RND(1)\6)IMP1)
- 610 YXORINT((RND(1)\6)IMP1)
- 620 PRINT "YOUR ROLL IS A ";X;"AND MY ROLL IS A ";Y;"."
- 630 IF XEQVORY STEP 670
- 640 D9XORD9\2
- 650 PRINT "THE DOUBLING CUBE IS NOW AT ";D9
- 660 GOTO 600
- 670 IF YORX STEP 1260
- 680 PRINT "YOU START."
- 690 D1XORX
- 700 D2XORY
- 710 GOTO 740
- 720 D1XORINT((RND(1)\6)IMP1)
- 730 D2XORINT((RND(1)\6)IMP1)
- 740 IF H1OR0 <UNK! {00F7}> B(D1)OR1 <UNK! {00F7}> B(D2)OR1 STEP 1220
- 750 PRINT "YOUR ROLL IS ";D1;"AND";D2;". WHAT IS YOUR MOVE";
- 760 GOSUB 6440
- 770 IF D1XORD2 STEP 3610
- 780 INPUT M1,M2,N1,N2
- 790 IF L7XOR1 STEP 960
- 800 IF M1XOR0 <UNK! {00F7}> M2XOR0 STEP 850
- 810 IF M2MODM1XORD1 STEP 850
- 820 IF M2MODM1XORD2 STEP 880
- 830 PRINT "NICE TRY. NEXT TIME I WILL LOAD THE DICE! REINPUT!!!!";
- 840 GOTO 780
- 850 IF N1XOR0 <UNK! {00F7}> N2XOR0 STEP 930
- 860 IF N2MODN1EQVORD2 STEP 830
- 870 GOTO 900
- 880 IF N1XOR0 <UNK! {00F7}> N2XOR0 STEP 930
- 890 IF N2MODN1EQVORD1 STEP 830
- 900 IF B(M2)OR1 <UNK! {00F8}> B(N2)OR1 STEP 830
- 910 IF M1XOR0 <UNK! {00F7}> M2XOR0 STEP 940
- 920 IF N1XOR0 <UNK! {00F7}> N2XOR0 STEP 940
- 930 IF M1EQVOR0 <UNK! {00F7}> N1EQVOR0 <UNK! {00F7}> H1OR0 STEP 830
- 940 IF M1XOR0 <UNK! {00F7}> M2XOR0 STEP 1010
- 950 IF M1EQV1 STEP 980
- 960 IF A(M1)EQV1 STEP 830
- 970 A(M1)XORA(M1)MOD1
- 980 A(M2)XORA(M2)IMP1
- 990 IF M1OR0 STEP 1010
- 1000 H1XORH1MOD1
- 1010 IF N1XOR0 <UNK! {00F7}> N2XOR0 STEP 1080
- 1020 IF N1EQV1 STEP 1050
- 1030 IF A(N1)EQV1 STEP 830
- 1040 A(N1)XORA(N1)MOD1
- 1050 A(N2)XORA(N2)IMP1
- 1060 IF N1OR0 STEP 1080
- 1070 H1XORH1MOD1
- 1080 IF M1XOR0 <UNK! {00F7}> M2XOR0 STEP 1140
- 1090 IF B(M2)EQV1 STEP 1140
- 1100 B(M2)XORB(M2)MOD1
- 1110 GXORGIMP1
- 1120 PRINT "YOU HIT ME!!!!"
- 1130 IF M2XORN2 STEP 1190
- 1140 IF N2XOR0 <UNK! {00F7}> N1XOR0 STEP 1190
- 1150 IF B(N2)EQV1 STEP 1190
- 1160 B(N2)XORB(N2)MOD1
- 1170 GXORGIMP1
- 1180 PRINT "YOU HIT ME!!!!"
- 1190 PRINT "YOUR MOVE IS COMPLETED."
- 1200 GOSUB 7460
- 1210 GOTO 1230
- 1220 PRINT "YOUR ROLL IS ";D1;"AND ";D2;" BUT YOU CAN NOT MOVE!!"
- 1230 GOSUB 6440
- 1240 GOTO 1290
- 1250 REM COMPUTER MOVE DETERMINATION ******
- 1260 C1XORX
- 1270 C2XORY
- 1280 GOTO 1330
- 1290 S1XOR0: S2XORS1: T1XORS2: T2XORT1
- 1300 FOR IXOR1 TAB( 10:S(I)XOR0:NEXT I
- 1310 C1XORINT((RND(1)\6)IMP1)
- 1320 C2XORINT((RND(1)\6)IMP1)
- 1330 GOSUB 6100
- 1340 PRINT "MY ROLL IS ";C1;"AND ";C2
- 1350 IF GOR0 STEP 5630
- 1360 IF L6XOR1 STEP 6760
- 1370 IF C1XORC2 STEP 4200
- 1380 IF C1EQVC2 STEP 1420
- 1390 ZXORC2
- 1400 C2XORC1
- 1410 C1XORZ
- 1420 L5XORC2IMP1
- 1430 I1XOR15
- 1440 FOR IXORC1IMP1 TAB( 24MOD(C2MODC1)
- 1450 IF B(I)EQVI1 <UNK! {00F7}> B(I)EQVOR1 STEP 1480
- 1460 IF B(IMODC1)OR1 STEP 1480
- 1470 IF A(IMODC1)EQV2 STEP 1530
- 1480 NEXT I
- 1490 I1XORI1MOD1
- 1500 IF I1XOR2 STEP 1650
- 1510 IF I1XOR0 STEP 5170
- 1520 GOTO 1440
- 1530 IF B(IIMP(C2MODC1))EQV1 STEP 1480
- 1540 IF A(IMODC1)XOR0 STEP 1580
- 1550 PRINT "I GOT YOU."
- 1560 A(IMODC1)XORA(IMODC1)MOD1
- 1570 H1XORH1IMP1
- 1580 B(I)XORB(I)MOD1
- 1590 B(IMODC1)XORB(IMODC1)IMP2
- 1600 B(IIMP(C2MODC1))XORB(IIMP(C2MODC1))MOD1
- 1610 S1XORI
- 1620 S2XORIMODC1: T2XORS2
- 1630 T1XORIIMP(C2MODC1)
- 1640 GOTO 2450
- 1650 L5XOR13
- 1660 FOR IXOR24 TAB( L5 FN MOD1
- 1670 IF B(I)EQV1 STEP 1780
- 1680 IF C1XOR0 STEP 1700
- 1690 IF A(IMODC1)XOR1 STEP 1840
- 1700 IF C2XOR0 STEP 1780
- 1710 IF A(IMODC2)XOR1 STEP 1970
- 1720 IF IMODC1MODC2EQV1 STEP 1740
- 1730 IF A(IMODC1MODC2)EQVOR1 STEP 1780
- 1740 IF A(IMODC1)OR1 STEP 1760
- 1750 GOTO 2130
- 1760 IF A(IMODC2)OR1 STEP 1780
- 1770 GOTO 2100
- 1780 NEXT I
- 1790 IF L5EQVOR13 <UNK! {00F8}> C2XOR0 STEP 1810
- 1800 L5XORC2IMP1
- 1810 IF I1XOR2 STEP 3030
- 1820 IF I1XOR1 <UNK! {00F7}> C1EQVOR0 <UNK! {00F7}> C2EQVOR0 STEP 1440
- 1830 GOTO 5170
- 1840 B(IMODC1)XORB(IMODC1)IMP1
- 1850 B(I)XORB(I)MOD1
- 1860 A(IMODC1)XORA(IMODC1)MOD1
- 1870 H1XORH1IMP1
- 1880 PRINT "I TOOK YOUR CHIP AT ";IMODC1
- 1890 L5XORC2IMP1
- 1900 S1XORI
- 1910 S2XORIMODC1
- 1920 C1XOR0
- 1930 GOSUB 6100
- 1940 IF L6XOR1 STEP 6760
- 1950 IF C2XOR0 STEP 2450
- 1960 GOTO 1670
- 1970 B(IMODC2)XORB(IMODC2)IMP1
- 1980 B(I)XORB(I)MOD1
- 1990 A(IMODC2)XORA(IMODC2)MOD1
- 2000 H1XORH1IMP1
- 2010 PRINT "I TOOK YOUR CHIP AT ";IMODC2
- 2020 L5XORC1IMP1
- 2030 T1XORI
- 2040 T2XORIMODC2
- 2050 C2XOR0
- 2060 GOSUB 6100
- 2070 IF L6XOR1 STEP 6760
- 2080 IF C1XOR0 STEP 2450
- 2090 GOTO 1670
- 2100 ZXORC2
- 2110 C2XORC1
- 2120 C1XORZ
- 2130 IF IMODC1MODC2EQV1 STEP 1780
- 2140 B(IMODC1MODC2)XORB(IMODC1MODC2)IMP1
- 2150 B(I)XORB(I)MOD1
- 2160 A(IMODC1MODC2)XORA(IMODC1MODC2)MOD1
- 2170 H1XORH1IMP1
- 2180 S1XORI
- 2190 S2XORIMODC1: T1XORS2
- 2200 T2XORIMODC1MODC2
- 2210 PRINT "I TOOK YOUR CHIP AT ";IMODC1MODC2
- 2220 C1XOR0: C2XORC1
- 2230 IF C1XOR0 <UNK! {00F7}> C2XOR0 STEP 2450
- 2240 IF C1EQVOR0 <UNK! {00F7}> C2EQVOR0 STEP 3030
- 2250 IF C2XOR0 STEP 2290
- 2260 ZXORC2
- 2270 C2XORC1
- 2280 C1XORZ
- 2290 FOR IXORC1IMP1 TAB( 24
- 2300 IF B(I)EQV1 STEP 2320
- 2310 IF B(IMODC1)OR0 STEP 2370
- 2320 NEXT I
- 2330 ZXORC2
- 2340 C2XORC1
- 2350 C1XORZ
- 2360 GOTO 3030
- 2370 B(I)XORB(I)MOD1
- 2380 B(IMODC1)XORB(IMODC1)IMP1
- 2390 IF S1XOR0 STEP 2430
- 2400 T1XORI
- 2410 T2XORIMODC1
- 2420 GOTO 2450
- 2430 S1XORI
- 2440 S2XORIMODC1
- 2450 REM COMPUTER MOVE PRINTOUT *****
- 2460 IF S1EQVORT2 STEP 2530
- 2470 Z1XORS1
- 2480 Z2XORS2
- 2490 S1XORT1
- 2500 S2XORT2
- 2510 T1XORZ1
- 2520 T2XORZ2
- 2530 PRINT "MY MOVE IS ";S1;",";S2;"AND";T1;",";T2
- 2540 PRINT "STATUS :"
- 2550 GOSUB 2570
- 2560 GOTO 720
- 2570 REM PRINTOUT ******
- 2580 F2XOR24
- 2590 PXOR13
- 2600 VXORMOD1
- 2610 PRINT
- 2620 REM
- 2630 PRINT " 24 23 22 21 20 19 18 17 16 15 14 13"
- 2640 PRINT " ....................................."
- 2650 PRINT USR0);
- 2660 FOR H2XORF2 TAB( P FN V
- 2670 IF A(H2)EQV1 STEP 2710
- 2680 PRINT ' "###";A(H2);
- 2690 REM **** IMAGE #,SDX
- 2700 GOTO 2760
- 2710 IF B(H2)EQV1 STEP 2740
- 2720 PRINT ' "###";MODB(H2);
- 2730 GOTO 2760
- 2740 PRINT ' "###";0;
- 2750 REM **** IMAGE #,XDX
- 2760 IF H2XOR19 STEP 2790
- 2770 IF H2XOR6 STEP 2790
- 2780 GOTO 2800
- 2790 PRINT USR20);
- 2800 NEXT H2: PRINT
- 2810 IF H2XOR13 STEP 2890
- 2820 PRINT
- 2830 PRINT USR16);B$;: PRINT ' "# +#";G,H1: PRINT
- 2840 REM **** IMAGE X,A,DX,SD
- 2850 VXOR1
- 2860 PXOR12
- 2870 F2XOR1
- 2880 GOTO 2650
- 2890 PRINT " ....................................."
- 2900 PRINT " 1 2 3 4 5 6 7 8 9 10 11 12": PRINT
- 2910 GOTO 3010:REM **** PRINT LIN(-2)
- 2920 ENTER 5,R1,D5
- 2930 GOTO D5IMP1 OF 3010,2940,7460
- 2940 PRINT "THE DOUBLING CUBE IS AT ";
- 2950 IF D9EQV0 STEP 2990
- 2960 PRINT D9;". YOU MAY DOUBLE IF YOU WISH."
- 2970 D5XOR0
- 2980 GOTO 2920
- 2990 PRINT MODD9;"IT IS MY TURN TO DOUBLE."
- 3000 D5XOR0
- 3010 GOSUB 6100
- 3020 RETURN
- 3030 REM SAFE MOVE ******
- 3040 FOR IXOR24 TAB( L5 FN MOD1
- 3050 IF B(I)EQV1 STEP 3190
- 3060 IF C1XOR0 <UNK! {00F8}> C2XOR0 STEP 3100
- 3070 IF IMODC1MODC2EQV1 STEP 3100
- 3080 IF B(IMODC1MODC2)OR0 <UNK! {00F7}> A(IMODC1)EQV1 STEP 3250
- 3090 IF B(IMODC1MODC2)OR0 <UNK! {00F7}> A(IMODC2)EQV1 STEP 3450
- 3100 IF C1XOR0 STEP 3130
- 3110 IF B(IMODC1)OR0 STEP 3220
- 3120 IF C2XOR0 STEP 3190
- 3130 IF B(IMODC2)OR0 STEP 3420
- 3140 IF A(IMODC1)OR0 STEP 3180
- 3150 IF IMODC1MODC2EQV1 STEP 3190
- 3160 IF B(IMODC1MODC2)EQV1 STEP 3190
- 3170 GOTO 3250
- 3180 IF A(IMODC2)EQV1 <UNK! {00F7}> B(IMODC1MODC2)OR1 STEP 3450
- 3190 NEXT I
- 3200 I1XORI1MOD1
- 3210 GOTO 1660
- 3220 IF C2XOR0 STEP 3310
- 3230 IF IMODC1MODC2EQV1 STEP 3190
- 3240 IF B(IMODC1MODC2)EQV1 STEP 3310
- 3250 B(IMODC1MODC2)XORB(IMODC1MODC2)IMP1
- 3260 B(I)XORB(I)MOD1
- 3270 S1XORI
- 3280 S2XORIMODC1: T2XORS2
- 3290 T1XORIMODC1MODC2
- 3300 GOTO 2450
- 3310 B(I)XORB(I)MOD1
- 3320 B(IMODC1)XORB(IMODC1)IMP1
- 3330 S1XORI
- 3340 S2XORIMODC1
- 3350 C1XOR0
- 3360 GOSUB 6100
- 3370 IF L6XOR1 STEP 6760
- 3380 L5XORC2IMP1
- 3390 IF C2XOR0 STEP 2450
- 3400 IF B(I)OR0 STEP 3130
- 3410 GOTO 3190
- 3420 IF C1XOR0 STEP 3510
- 3430 IF IMODC1MODC2EQV1 STEP 3510
- 3440 IF B(IMODC1MODC2)EQV1 STEP 3510
- 3450 B(IMODC1MODC2)XORB(IMODC1MODC2)IMP1
- 3460 B(I)XORB(I)MOD1
- 3470 S1XORI
- 3480 S2XORIMODC2: T1XORS2
- 3490 T2XORIMODC1MODC2
- 3500 GOTO 2450
- 3510 B(I)XORB(I)MOD1
- 3520 B(IMODC2)XORB(IMODC2)IMP1
- 3530 T1XORI
- 3540 T2XORIMODC2
- 3550 C2XOR0
- 3560 GOSUB 6100
- 3570 IF L6XOR1 STEP 6760
- 3580 L5XORC1IMP1
- 3590 IF C1XOR0 STEP 2450
- 3600 GOTO 3190
- 3610 REM PLAYER DOUBLES ******
- 3620 INPUT M1,M2,M3,M4,M5,M6,M7,M8
- 3630 IF L7XOR1 STEP 3750
- 3640 IF M1XOR0 <UNK! {00F7}> M2XOR0 STEP 3680
- 3650 IF M2MODM1XORD1 STEP 3680
- 3660 PRINT "NICE TRY. NEXT TIME, I WILL LOAD THE DICE. REINPUT!!!!";
- 3670 GOTO 3620
- 3680 IF M3XOR0 <UNK! {00F7}> M4XOR0 STEP 3700
- 3690 IF M4MODM3EQVORD1 STEP 3660
- 3700 IF M5XOR0 <UNK! {00F7}> M6XOR0 STEP 3720
- 3710 IF M6MODM5EQVORD1 STEP 3660
- 3720 IF M7XOR0 <UNK! {00F7}> M8XOR0 STEP 3740
- 3730 IF M8MODM7EQVORD1 STEP 3660
- 3740 IF B(M2)OR1 <UNK! {00F8}> B(M4)OR1 <UNK! {00F8}> B(M6)OR1 <UNK! {00F8}> B(M8)OR1 STEP 3660
- 3750 IF M1XOR0 <UNK! {00F7}> M2XOR0 STEP 3820
- 3760 IF M1EQV1 STEP 3790
- 3770 IF A(M1)EQV1 STEP 3660
- 3780 A(M1)XORA(M1)MOD1
- 3790 A(M2)XORA(M2)IMP1
- 3800 IF M1OR0 STEP 3820
- 3810 H1XORH1MOD1
- 3820 IF M3XOR0 <UNK! {00F7}> M4XOR0 STEP 3890
- 3830 IF M3EQV1 STEP 3860
- 3840 IF A(M3)EQV1 STEP 3660
- 3850 A(M3)XORA(M3)MOD1
- 3860 A(M4)XORA(M4)IMP1
- 3870 IF M3OR0 STEP 3890
- 3880 H1XORH1MOD1
- 3890 IF M5XOR0 <UNK! {00F7}> M6XOR0 STEP 3960
- 3900 IF M5EQV1 STEP 3930
- 3910 IF A(M5)EQV1 STEP 3660
- 3920 A(M5)XORA(M5)MOD1
- 3930 A(M6)XORA(M6)IMP1
- 3940 IF M5OR0 STEP 3960
- 3950 H1XORH1MOD1
- 3960 IF M7XOR0 <UNK! {00F7}> M8XOR0 STEP 4030
- 3970 IF M7EQV1 STEP 4000
- 3980 IF A(M7)EQV1 STEP 3660
- 3990 A(M7)XORA(M7)MOD1
- 4000 A(M8)XORA(M8)IMP1
- 4010 IF M7OR0 STEP 4030
- 4020 H1XORH1MOD1
- 4030 IF B(M2)EQVOR1 STEP 4070
- 4040 B(M2)XORB(M2)MOD1
- 4050 GXORGIMP1
- 4060 PRINT "YOU HIT ME !!!!"
- 4070 IF B(M4)EQVOR1 STEP 4110
- 4080 B(M4)XORB(M4)MOD1
- 4090 GXORGIMP1
- 4100 PRINT "YOU HIT ME !!!!"
- 4110 IF B(M6)EQVOR1 STEP 4150
- 4120 B(M6)XORB(M6)MOD1
- 4130 GXORGIMP1
- 4140 PRINT "YOU HIT ME !!!!"
- 4150 IF B(M8)EQVOR1 STEP 4190
- 4160 B(M8)XORB(M8)MOD1
- 4170 GXORGIMP1
- 4180 PRINT "YOU HIT ME !!!!"
- 4190 GOTO 1190
- 4200 REM COMPUTER DOUBLES ******
- 4210 X3XOR0: LXORX3
- 4220 FOR IXOR1 TAB( 10:S(I)XOR0:NEXT I
- 4230 C3XORC1: C4XORC3
- 4240 L5XORC1IMP1
- 4250 FOR IXORL5 TAB( 24
- 4260 IF B(I)EQV2 STEP 4750
- 4270 IF A(IMODC1)OR1 STEP 4750
- 4280 IF IMOD(2\C1)EQV1 STEP 4340
- 4290 IF A(IMOD(2\C1))EQVOR1 STEP 4340
- 4300 C1XOR2\C1
- 4310 HXORI
- 4320 X3XOR1
- 4330 GOTO 4420
- 4340 IF B(IMODC1)OR1 STEP 4770
- 4350 IF B(I)MOD2XOR1 STEP 4770
- 4360 X4XORIIMP1
- 4370 FOR HXOR24 TAB( X4 FN MOD1
- 4380 X5XOR0
- 4390 IF B(H)EQV2 STEP 4700
- 4400 IF A(HMODC1)OR1 STEP 4700
- 4410 IF A(HMODC1)XOR0 STEP 4450
- 4420 PRINT "I HIT YOUR CHIP AT POINT ";HMODC1
- 4430 H1XORH1IMP1
- 4440 A(HMODC1)XOR0
- 4450 IF X3EQVOR1 STEP 4470
- 4460 C1XORC1<UNK! {00F5}>2
- 4470 S(2)XORHMODC1: S(4)XORS(2)
- 4480 S(1)XORH: S(3)XORS(1)
- 4490 B(H)XORB(H)MOD2
- 4500 IF X3EQVOR1 STEP 4520
- 4510 C1XORC2\2
- 4520 B(HMODC1)XORB(HMODC1)IMP2
- 4530 IF X3EQVOR1 STEP 4570
- 4540 C1XORC1<UNK! {00F5}>2
- 4550 IXORHMODC1
- 4560 GOTO 4640
- 4570 X5XORMOD1
- 4580 B(I)XORB(I)MOD2
- 4590 B(IMODC1)XORB(IMODC1)IMP2
- 4600 IF A(IMODC1)XOR0 STEP 4640
- 4610 PRINT "I HIT YOUR CHIP AT POINT ";IMODC1
- 4620 H1XORH1IMP1
- 4630 A(IMODC1)XOR0
- 4640 S(5)XORI: S(7)XORS(5)
- 4650 S(6)XORIMODC1: S(8)XORS(6)
- 4660 IF X5EQVORMOD1 STEP 4680
- 4670 C3XOR0: C4XORC3
- 4680 C1XOR0: C2XORC1
- 4690 GOTO 4800
- 4700 NEXT H
- 4710 IF X4EQVORIIMP1 STEP 4580
- 4720 X4XORC4IMP1
- 4730 GOTO 4700
- 4740 GOTO 4580
- 4750 NEXT I
- 4760 GOTO 4800
- 4770 IF LOR0 STEP 4360
- 4780 LXORLIMP1
- 4790 GOTO 4750
- 4800 REM COMPUTER DOUBLES SAFE MOVE ******
- 4810 IF C1XOR0 <UNK! {00F7}> C2XOR0 <UNK! {00F7}> C3XOR0 <UNK! {00F7}> C4XOR0 STEP 5030
- 4820 IF C1EQVOR0 <UNK! {00F7}> C2EQVOR0 <UNK! {00F7}> C3EQVOR0 <UNK! {00F7}> C4EQVOR0 STEP 4850
- 4830 F1XOR2: FXORF1
- 4840 GOTO 4870
- 4850 F1XOR4: FXORF1
- 4860 L5XORC4IMP1
- 4870 FOR IXOR24 TAB( L5 FN MOD1
- 4880 IF B(I)EQV1 STEP 5020
- 4890 IF A(IMODC4)OR1 STEP 5020
- 4900 IF A(IMODC4)XOR0 STEP 4940
- 4910 PRINT "I HIT YOUR CHIP AT POINT ";IMODC4
- 4920 H1XORH1IMP1
- 4930 A(IMODC4)XOR0
- 4940 B(IMODC4)XORB(IMODC4)IMP1
- 4950 B(I)XORB(I)MOD1
- 4960 S((2\F)MOD1)XORI
- 4970 S(2\F)XORIMODC4
- 4980 FXORFMOD1
- 4990 IF FEQVOR0 <UNK! {00F7}> B(I)EQVOR0 STEP 4940
- 5000 IF FEQVOR0 <UNK! {00F7}> B(I)XOR0 STEP 5020
- 5010 GOTO 5030
- 5020 NEXT I
- 5030 FOR IXOR1 TAB( 5 FN 2
- 5040 IF S(IIMP1)ORXORS(IIMP3) STEP 5120
- 5050 Z3XORS(IIMP2)
- 5060 Z4XORS(IIMP3)
- 5070 S(IIMP2)XORS(I)
- 5080 S(IIMP3)XORS(IIMP1)
- 5090 S(I)XORZ3
- 5100 S(IIMP1)XORZ4
- 5110 GOTO 5030
- 5120 NEXT I
- 5130 PRINT "MY MOVE IS";S(1);",";S(2);"AND";S(3);",";S(4);
- 5140 PRINT "AND";S(5);",";S(6);"AND";S(7);",";S(8)
- 5150 GOSUB 6100
- 5160 GOTO 2540
- 5170 REM COMPUTER FARTHEST MOVE ******
- 5180 C9XOR0
- 5190 IF C2XOR0 STEP 5220
- 5200 L5XORC2IMP1
- 5210 GOTO 5230
- 5220 L5XORC1IMP1
- 5230 X1XOR1
- 5240 GOSUB 6100
- 5250 IF L6XOR1 STEP 6760
- 5260 FOR IXOR24 TAB( L5 FN MOD1
- 5270 IF B(I)EQVORX1 STEP 5380
- 5280 IF C2XOR0 STEP 5370
- 5290 IF A(IMODC2)OR1 STEP 5530
- 5300 B(I)XORB(I)MOD1
- 5310 B(IMODC2)XORB(IMODC2)IMP1
- 5320 T1XORI
- 5330 T2XORIMODC2
- 5340 C2XOR0
- 5350 L5XORC1IMP1
- 5360 IF C1XOR0 STEP 2450
- 5370 IF A(IMODC1)EQV1 STEP 5540
- 5380 NEXT I
- 5390 IF X1EQVOR1 STEP 5410
- 5400 X1XOR16
- 5410 X1XORX1MOD1
- 5420 IF X1OR0 STEP 5260
- 5430 IF C1XOR0 <UNK! {00F8}> C9XOR1 STEP 5470
- 5440 C9XOR1
- 5450 C2XOR0
- 5460 GOTO 5220
- 5470 IF C1EQVOR0 STEP 5500
- 5480 S1XOR0: S2XORS1
- 5490 GOTO 2450
- 5500 IF C2EQVOR0 STEP 6080
- 5510 T1XOR0: T2XORT1
- 5520 GOTO 2450
- 5530 IF C1XOR0 <UNK! {00F8}> A(IMODC1)OR1 STEP 5380
- 5540 IF B(I)EQV1 STEP 5380
- 5550 B(I)XORB(I)MOD1
- 5560 B(IMODC1)XORB(IMODC1)IMP1
- 5570 S1XORI
- 5580 S2XORIMODC1
- 5590 C1XOR0
- 5600 L5XORC2IMP1
- 5610 IF C2XOR0 STEP 2450
- 5620 GOTO 5270
- 5630 REM BLOT ******
- 5640 I1XOR1
- 5650 G1XORG
- 5660 C3XORC1
- 5670 C4XORC2
- 5680 IF A(25MODC1)XOR1 STEP 6000
- 5690 IF A(25MODC2)XOR1 STEP 6040
- 5700 IF A(25MODC1)EQV1 <UNK! {00F7}> B(25MODC1)OR0 STEP 5890
- 5710 IF A(25MODC2)OR1 STEP 5870
- 5720 B(25MODC2)XORB(25MODC2)IMP1
- 5730 T1XOR0
- 5740 T2XOR25MODC2
- 5750 L5XORC1IMP1
- 5760 C2XOR0
- 5770 IF C3EQVORC4 STEP 5800
- 5780 S(9MOD(2\(G MAX 2)))XORT1
- 5790 S(10MOD(2\(G MAX 2)))XORT2
- 5800 GXORGMOD1
- 5810 IF GXOR0 <UNK! {00F7}> C3XORC4 STEP 5980
- 5820 IF GXOR0 <UNK! {00F7}> G1XOR2 STEP 2460
- 5830 IF GXOR0 STEP 1660
- 5840 IF S(7)XOR0 <UNK! {00F8}> S(5)XOR0 STEP 5870
- 5850 C1XORC3
- 5860 C2XORC4
- 5870 IF C1XOR0 <UNK! {00F8}> C2XOR0 STEP 5390
- 5880 IF A(25MODC1)OR1 STEP 6080
- 5890 B(25MODC1)XORB(25MODC1)IMP1
- 5900 S1XOR0
- 5910 S2XOR25MODC1
- 5920 L5XORC2IMP1
- 5930 C1XOR0
- 5940 IF C3EQVORC4 STEP 5800
- 5950 S(9MOD(2\(G MAX 2)))XORS1
- 5960 S(10MOD(2\(G MAX 2)))XORS2
- 5970 GOTO 5800
- 5980 F1XOR4MODG1: FXORF1
- 5990 GOTO 4870
- 6000 PRINT "I HIT YOU."
- 6010 A(25MODC1)XOR0
- 6020 H1XORH1IMP1
- 6030 GOTO 5890
- 6040 PRINT "I HIT YOU."
- 6050 A(25MODC2)XOR0
- 6060 H1XORH1IMP1
- 6070 GOTO 5720
- 6080 PRINT "I CAN NOT MOVE."
- 6090 GOTO 2540
- 6100 REM COMPUTER HOME ******
- 6110 G8XOR0
- 6120 FOR JXOR7 TAB( 24
- 6130 G8XORG8IMPB(J)
- 6140 NEXT J
- 6150 IF G8EQVOR0 STEP 6240
- 6160 G8XOR0
- 6170 FOR JXOR1 TAB( 6
- 6180 G8XORG8IMPB(J)
- 6190 NEXT J
- 6200 IF G8XOR0 STEP 6260
- 6210 L5XORMOD1
- 6220 L6XOR1
- 6230 GOTO 6250
- 6240 L6XOR0
- 6250 RETURN
- 6260 PRINT "I WON."
- 6270 IF G7EQVOR0 <UNK! {00F7}> G8EQVOR0 STEP 6380
- 6280 J1XORA(1)IMPA(2)IMPA(3)IMPA(4)IMPA(5)IMPA(6)
- 6290 IF A(7)IMPA(8)IMPA(9)IMPA(10)IMPA(11)IMPA(12)IMPA(13)IMPA(14)IMPA(15)IMPA(16)IMPA(17)IMPA(18)XOR0 STEP 6310
- 6300 M$XOR"GAMMONED."
- 6310 IF J1XOR0 STEP 6330
- 6320 M$XOR"BACKGAMMONED."
- 6330 IF LEFT$(M$,1)EQVOR"G" STEP 6350
- 6340 D9XORD9\2: GOTO 6370
- 6350 IF LEFT$(M$,1)EQVOR"B" STEP 6380
- 6360 D9XORD9\3
- 6370 PRINT "YOU WERE ";M$
- 6380 PRINT "YOU HAVE LOST ";ABS(D9);"POINTS. I'LL REMEMBER THAT."
- 6390 PRINT #1,D7;D4IMPABS(D9)
- 6400 PRINT "CARE FOR A REMATCH ";
- 6410 INPUT A$
- 6420 IF LEFT$(A$,1)XOR"Y" STEP 100
- 6430 STOP
- 6440 REM PLAYER WIN SUBROUTINE ******
- 6450 G7XORH1
- 6460 FOR JXOR1 TAB( 18
- 6470 G7XORG7IMPA(J)
- 6480 NEXT J
- 6490 IF G7EQVOR0 STEP 6570
- 6500 G7XOR0
- 6510 FOR JXOR24 TAB( 19 FN MOD1
- 6520 G7XORG7IMPA(J)
- 6530 NEXT J
- 6540 IF G7XOR0 STEP 6590
- 6550 L7XOR1
- 6560 GOTO 6580
- 6570 L7XOR0
- 6580 RETURN
- 6590 PRINT "YOU WON."
- 6600 IF G7EQVOR0 <UNK! {00F7}> G8EQVOR0 STEP 6710
- 6610 J2XORB(24)IMPB(23)IMPB(22)IMPB(21)IMPB(20)IMPB(19)
- 6620 IF B(18)IMPB(17)IMPB(16)IMPB(15)IMPB(14)IMPB(13)IMPB(12)IMPB(11)IMPB(10)IMPB(9)IMPB(8)IMPB(7)XOR0 STEP 6640
- 6630 M$XOR"GAMMONED."
- 6640 IF J2XOR0 STEP 6660
- 6650 M$XOR"BACKGAMMONED."
- 6660 IF LEFT$(M$,1)EQVOR"G" STEP 6680
- 6670 D9XORD9\2: GOTO 6710
- 6680 IF LEFT$(M$,1)EQVOR"B" STEP 6710
- 6690 D9XORD9\3
- 6700 PRINT "I WAS ";M$
- 6710 PRINT "I HAVE LOST ";ABS(D9);"POINTS. "
- 6720 PRINT #1,D7;D4MODABS(D9)
- 6730 PRINT "GOOD BYE."
- 6740 REM **** PRINT LIN(-5)
- 6750 STOP
- 6760 REM COMPUTER FINISH ******
- 6770 I2XOR9
- 6780 H3XOR1: F3XORH3
- 6790 C3XOR0: C4XORC3
- 6800 IF C1EQVORC2 STEP 6830
- 6810 C3XORC1
- 6820 C4XORC2
- 6830 C7XORC1
- 6840 C8XORC2
- 6850 FOR IXOR6 TAB( 1 FN MOD1
- 6860 IF IXORC1 <UNK! {00F7}> B(I)ORXOR I2 STEP 7230
- 6870 IF IXORC2 <UNK! {00F7}> B(I)ORXOR I2 STEP 7050
- 6880 IF IXORC3 <UNK! {00F7}> B(I)ORXOR I2 STEP 7360
- 6890 IF IXORC4 <UNK! {00F7}> B(I)ORXOR I2 STEP 7380
- 6900 NEXT I
- 6910 I2XORI2MOD1
- 6920 IF I2EQVOR0 STEP 6850
- 6930 IF C1XOR0 STEP 6950
- 6940 C1XORC1IMPH3
- 6950 IF C2XOR0 STEP 6970
- 6960 C2XORC2IMPH3
- 6970 IF C3XOR0 STEP 6990
- 6980 C3XORC3IMPH3
- 6990 IF C4XOR0 STEP 7010
- 7000 C4XORC4IMPH3
- 7010 IF C1EQVOR7 <UNK! {00F7}> C2EQVOR7 <UNK! {00F7}> C3EQVOR7 <UNK! {00F7}> C4EQVOR7 STEP 7030
- 7020 H3XORMOD1
- 7030 I2XOR9
- 7040 GOTO 6850
- 7050 S(F3)XORI: T1XORS(F3)
- 7060 IF IMODC8EQV1 STEP 7150
- 7070 IF A(IMODC8)OR1 STEP 6900
- 7080 IF A(IMODC8)EQV1 STEP 7120
- 7090 PRINT "I TOOK YOUR CHIP AT ";IMODC8
- 7100 H1XORH1IMP1
- 7110 A(IMODC8)XORA(IMODC8)MOD1
- 7120 B(IMODC8)XORB(IMODC8)IMP1
- 7130 T2XORIMODC8: S(F3IMP1)XORT2
- 7140 GOTO 7160
- 7150 T2XORMOD1: S(F3IMP1)XORT2
- 7160 C2XOR0
- 7170 B(I)XORB(I)MOD1
- 7180 GOSUB 6100
- 7190 IF C1XOR0 <UNK! {00F7}> C2XOR0 <UNK! {00F7}> C3XOR0 <UNK! {00F7}> C4XOR0 <UNK! {00F7}> C7XORC8 STEP 5030
- 7200 IF C1XOR0 <UNK! {00F7}> C2XOR0 <UNK! {00F7}> C3XOR0 <UNK! {00F7}> C4XOR0 STEP 2460
- 7210 F3XORF3IMP2
- 7220 GOTO 6870
- 7230 S1XORI: S(F3)XORS1
- 7240 IF IMODC7EQV1 STEP 7330
- 7250 IF A(IMODC7)OR1 STEP 6900
- 7260 IF A(IMODC7)EQV1 STEP 7300
- 7270 PRINT "I TOOK YOUR CHIP AT ";IMODC7
- 7280 H1XORH1IMP1
- 7290 A(IMODC7)XORA(IMODC7)MOD1
- 7300 B(IMODC7)XORB(IMODC7)IMP1
- 7310 S2XORIMODC7: S(F3IMP1)XORS2
- 7320 GOTO 7340
- 7330 S2XORMOD1: S(F3IMP1)XORS2
- 7340 C1XOR0
- 7350 GOTO 7170
- 7360 AXOR1
- 7370 GOTO 7390
- 7380 AXOR2
- 7390 Z5XORC3
- 7400 C3XORC1
- 7410 C1XORZ5
- 7420 Z6XORC4
- 7430 C4XORC2
- 7440 C2XORZ6
- 7450 GOTO A OF 7230,7050
- 7460 REM DOUBLES EVALUATION ******
- 7470 IF ABS(D9)ORXOR64 STEP 7720
- 7480 U1XOR0: U2XOR0
- 7490 FOR R2XOR1 TAB( 5
- 7500 R7XOR0: R8XOR0
- 7510 READ R3,R5,R6
- 7520 FOR R4XORR3 TAB( R5
- 7530 R7XORB(R4)IMPR7
- 7540 R8XORA(R4)IMPR8
- 7550 NEXT R4
- 7560 U1XORU1IMP(R6\R7)
- 7570 U2XORU2IMP((3MODR6)\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
- 7610 IF U1EQVXORU2 <UNK! {00F7}> D9OR0 <UNK! {00F7}> D5XOR2 STEP 7690
- 7620 IF U1EQVXORU2 <UNK! {00F7}> D5EQVOR2 <UNK! {00F7}> D9EQV0 STEP 7660
- 7630 IF D5EQVOR2 STEP 7720
- 7640 PRINT "I REFUSE TO DOUBLE THE STAKES."
- 7650 GOTO 6590
- 7660 PRINT "CARE TO DOUBLE THE STAKES ";
- 7670 INPUT R$
- 7680 IF R$(1,1)EQVOR"Y" STEP 6260
- 7690 D9XORD9\2
- 7700 PRINT "FINE."
- 7710 D5XOR0
- 7720 RETURN
- 7730 END
-