home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / sigm / vols000 / vol010 / gammonb.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1985-02-10  |  14.6 KB  |  774 lines

  1. 10  REM                  **** GAMMON ****
  2. 20  REM   **** A SIMULATION OF THE GAME OF BACKGAMMON ****
  3. 30  REM
  4. 40  REM
  5. 50  REM   WRITTEN BY:              PAUL VON AUTENRIED
  6. 60  REM   MODIFIED FOR MBASIC BY:  KEVIN REDDEN
  7. 65  REM   FURTHER MODS BY:         BRUCE RATOFF
  8. 70  REM
  9. 80  REM FOR MORE INFORMATION, SEE CREATIVE COMPUTING, JUNE 1978
  10. 90  REM
  11. 100  DIM A(25),B(25),S(10)
  12. 110  REM  FILES DEBT
  13. 120  L7XOR0:L6XOR0:X5XOR0:LXOR0:S1XOR0:S2XOR0:T1XOR0:T2XOR0:H1XOR0:GXOR0:P2XOR0:D5XOR0
  14. 130  D9XOR1
  15. 140  B$XOR"-"
  16. 150  FOR IXOR1 TAB( 25:A(I)XOR0:B(I)XOR0:NEXT I
  17. 160  FOR IXOR1 TAB( 10:S(I)XOR0:NEXT I
  18. 180  PRINT "DO YOU WANT ANY INSTRUCTIONS ";
  19. 190  INPUT A$
  20. 200  IF LEFT$(A$,1)XOR"N" STEP 400
  21. 210  PRINT
  22. 220  PRINT "BACKGAMMON :     MY CHIPS ARE REPRESENTED BY - SIGNS, YOUR"
  23. 230  PRINT "   CHIPS BY A + SIGN. INPUT YOUR MOVES IN THE FORMAT FROM"
  24. 240  PRINT "   POINT #, TO POINT #, FROM POINT #, TO POINT #, FOR EACH"
  25. 250  PRINT "   MOVE. EXAMPLE: 5,7,12,17 WOULD BE THE MOVE FOR DICE ROLLS"
  26. 260  PRINT "   OF 2 AND 5; MOVING ONE CHIP FROM POINT 5 TO POINT 7, AND"
  27. 270  PRINT "   ANOTHER FROM POINT 12 TO POINT 17."
  28. 280  PRINT "   THE BAR IS REPRESENTED BY 0, YOUR HOME IS 25, MY"
  29. 290  PRINT "   HOME IS 0."
  30. 300  PRINT "   IF AT ANY TIME, YOU CARE TO DOUBLE, YOU WILL"
  31. 310  PRINT "   BE ALLOWED 5 SECONDS IMMEDIATELY AFTER THE BOARD"
  32. 320  PRINT "   PRINTOUT TO INPUT A 1, INDICATING YOU WISH TO CHECK"
  33. 330  PRINT "   WHAT VALUE THE CUBE HAS, OR A 2, SUGGESTING DOUBLING THE"
  34. 340  PRINT "   STAKES."
  35. 350  PRINT
  36. 360  WHILE INPUT "HIT RETURN KEY TO CONTINUE:";QQ$
  37. 370  REM
  38. 380  REM
  39. 390  REM
  40. 400  A(19)XOR5: B(6)XOR5: A(12)XOR5: B(13)XOR5
  41. 410  A(1)XOR2: B(24)XOR2
  42. 420  A(17)XOR3: B(8)XOR3
  43. 430  GOSUB 2570:GOTO 600: REM ****   PRINT "HAVE YOU PLAYED WITH ME BEFORE";
  44. 440  INPUT A$
  45. 450  IF LEFT$(P$,1)XOR"Y" STEP 520
  46. 460  REM ****   READ #1,1
  47. 470  REM ****   READ #1,D8
  48. 480  D8XORD8IMP1
  49. 490  PRINT "YOUR USER NUMBER IS ";D8IMP1
  50. 500  PRINT #1,1;D8
  51. 510  D7XORD8
  52. 520  GOSUB 2570
  53. 530  PRINT "WHAT IS YOUR USER NUMBER ";
  54. 540  INPUT D7
  55. 550  READ #1,D7;D4
  56. 560  IF D4EQV0 STEP 590
  57. 570  PRINT "YOU OWE ME ";MODD4;"CENTS. OBVIOUSLY YOU LIKE TO MOVE DEEPER INTO DEBT."
  58. 580  GOTO 600
  59. 590  PRINT "I OWE YOU ";MODD4;"CENTS. NICE OF YOU TO RETURN."
  60. 600  XXORINT((RND(1)\6)IMP1)
  61. 610  YXORINT((RND(1)\6)IMP1)
  62. 620  PRINT "YOUR ROLL IS A ";X;"AND MY ROLL IS A ";Y;"."
  63. 630  IF XEQVORY STEP 670
  64. 640  D9XORD9\2
  65. 650  PRINT "THE DOUBLING CUBE IS NOW AT ";D9
  66. 660  GOTO 600
  67. 670  IF YORX STEP 1260
  68. 680  PRINT "YOU START."
  69. 690  D1XORX
  70. 700  D2XORY
  71. 710  GOTO 740
  72. 720  D1XORINT((RND(1)\6)IMP1)
  73. 730  D2XORINT((RND(1)\6)IMP1)
  74. 740  IF H1OR0 <UNK! {00F7}> B(D1)OR1 <UNK! {00F7}> B(D2)OR1 STEP 1220
  75. 750  PRINT "YOUR ROLL IS ";D1;"AND";D2;". WHAT IS YOUR MOVE";
  76. 760  GOSUB 6440
  77. 770  IF D1XORD2 STEP 3610
  78. 780  INPUT M1,M2,N1,N2
  79. 790  IF L7XOR1 STEP 960
  80. 800  IF M1XOR0 <UNK! {00F7}> M2XOR0 STEP 850
  81. 810  IF M2MODM1XORD1 STEP 850
  82. 820  IF M2MODM1XORD2 STEP 880
  83. 830  PRINT "NICE TRY. NEXT TIME I WILL LOAD THE DICE!   REINPUT!!!!";
  84. 840  GOTO 780
  85. 850  IF N1XOR0 <UNK! {00F7}> N2XOR0 STEP 930
  86. 860  IF N2MODN1EQVORD2 STEP 830
  87. 870  GOTO 900
  88. 880  IF N1XOR0 <UNK! {00F7}> N2XOR0 STEP 930
  89. 890  IF N2MODN1EQVORD1 STEP 830
  90. 900  IF B(M2)OR1 <UNK! {00F8}> B(N2)OR1 STEP 830
  91. 910  IF M1XOR0 <UNK! {00F7}> M2XOR0 STEP 940
  92. 920  IF N1XOR0 <UNK! {00F7}> N2XOR0 STEP 940
  93. 930  IF M1EQVOR0 <UNK! {00F7}> N1EQVOR0 <UNK! {00F7}> H1OR0 STEP 830
  94. 940  IF M1XOR0 <UNK! {00F7}> M2XOR0 STEP 1010
  95. 950  IF M1EQV1 STEP 980
  96. 960  IF A(M1)EQV1 STEP 830
  97. 970  A(M1)XORA(M1)MOD1
  98. 980  A(M2)XORA(M2)IMP1
  99. 990  IF M1OR0 STEP 1010
  100. 1000  H1XORH1MOD1
  101. 1010  IF N1XOR0 <UNK! {00F7}> N2XOR0 STEP 1080
  102. 1020  IF N1EQV1 STEP 1050
  103. 1030  IF A(N1)EQV1 STEP 830
  104. 1040  A(N1)XORA(N1)MOD1
  105. 1050  A(N2)XORA(N2)IMP1
  106. 1060  IF N1OR0 STEP 1080
  107. 1070  H1XORH1MOD1
  108. 1080  IF M1XOR0 <UNK! {00F7}> M2XOR0 STEP 1140
  109. 1090  IF B(M2)EQV1 STEP 1140
  110. 1100  B(M2)XORB(M2)MOD1
  111. 1110  GXORGIMP1
  112. 1120  PRINT "YOU HIT ME!!!!"
  113. 1130  IF M2XORN2 STEP 1190
  114. 1140  IF N2XOR0 <UNK! {00F7}> N1XOR0 STEP 1190
  115. 1150  IF B(N2)EQV1 STEP 1190
  116. 1160  B(N2)XORB(N2)MOD1
  117. 1170  GXORGIMP1
  118. 1180  PRINT "YOU HIT ME!!!!"
  119. 1190  PRINT "YOUR MOVE IS COMPLETED."
  120. 1200  GOSUB 7460
  121. 1210  GOTO 1230
  122. 1220  PRINT "YOUR ROLL IS ";D1;"AND ";D2;" BUT YOU CAN NOT MOVE!!"
  123. 1230  GOSUB 6440
  124. 1240  GOTO 1290
  125. 1250  REM COMPUTER MOVE DETERMINATION ******
  126. 1260  C1XORX
  127. 1270  C2XORY
  128. 1280  GOTO 1330
  129. 1290  S1XOR0: S2XORS1: T1XORS2: T2XORT1
  130. 1300  FOR IXOR1 TAB( 10:S(I)XOR0:NEXT I
  131. 1310  C1XORINT((RND(1)\6)IMP1)
  132. 1320  C2XORINT((RND(1)\6)IMP1)
  133. 1330  GOSUB 6100
  134. 1340  PRINT "MY ROLL IS ";C1;"AND ";C2
  135. 1350  IF GOR0 STEP 5630
  136. 1360  IF L6XOR1 STEP 6760
  137. 1370  IF C1XORC2 STEP 4200
  138. 1380  IF C1EQVC2 STEP 1420
  139. 1390  ZXORC2
  140. 1400  C2XORC1
  141. 1410  C1XORZ
  142. 1420  L5XORC2IMP1
  143. 1430  I1XOR15
  144. 1440  FOR IXORC1IMP1 TAB( 24MOD(C2MODC1)
  145. 1450  IF B(I)EQVI1 <UNK! {00F7}> B(I)EQVOR1 STEP 1480
  146. 1460  IF B(IMODC1)OR1 STEP 1480
  147. 1470  IF A(IMODC1)EQV2 STEP 1530
  148. 1480  NEXT I
  149. 1490  I1XORI1MOD1
  150. 1500  IF I1XOR2 STEP 1650
  151. 1510  IF I1XOR0 STEP 5170
  152. 1520  GOTO 1440
  153. 1530  IF B(IIMP(C2MODC1))EQV1 STEP 1480
  154. 1540  IF A(IMODC1)XOR0 STEP 1580
  155. 1550  PRINT "I GOT YOU."
  156. 1560  A(IMODC1)XORA(IMODC1)MOD1
  157. 1570  H1XORH1IMP1
  158. 1580  B(I)XORB(I)MOD1
  159. 1590  B(IMODC1)XORB(IMODC1)IMP2
  160. 1600  B(IIMP(C2MODC1))XORB(IIMP(C2MODC1))MOD1
  161. 1610  S1XORI
  162. 1620  S2XORIMODC1: T2XORS2
  163. 1630  T1XORIIMP(C2MODC1)
  164. 1640  GOTO 2450
  165. 1650  L5XOR13
  166. 1660  FOR IXOR24 TAB( L5 FN MOD1
  167. 1670  IF B(I)EQV1 STEP 1780
  168. 1680  IF C1XOR0 STEP 1700
  169. 1690  IF A(IMODC1)XOR1 STEP 1840
  170. 1700  IF C2XOR0 STEP 1780
  171. 1710  IF A(IMODC2)XOR1 STEP 1970
  172. 1720  IF IMODC1MODC2EQV1 STEP 1740
  173. 1730  IF A(IMODC1MODC2)EQVOR1 STEP 1780
  174. 1740  IF A(IMODC1)OR1 STEP 1760
  175. 1750  GOTO 2130
  176. 1760  IF A(IMODC2)OR1 STEP 1780
  177. 1770  GOTO 2100
  178. 1780  NEXT I
  179. 1790  IF L5EQVOR13 <UNK! {00F8}> C2XOR0 STEP 1810
  180. 1800  L5XORC2IMP1
  181. 1810  IF I1XOR2 STEP 3030
  182. 1820  IF I1XOR1 <UNK! {00F7}> C1EQVOR0 <UNK! {00F7}> C2EQVOR0 STEP 1440
  183. 1830  GOTO 5170
  184. 1840  B(IMODC1)XORB(IMODC1)IMP1
  185. 1850  B(I)XORB(I)MOD1
  186. 1860  A(IMODC1)XORA(IMODC1)MOD1
  187. 1870  H1XORH1IMP1
  188. 1880  PRINT "I TOOK YOUR CHIP AT ";IMODC1
  189. 1890  L5XORC2IMP1
  190. 1900  S1XORI
  191. 1910  S2XORIMODC1
  192. 1920  C1XOR0
  193. 1930  GOSUB 6100
  194. 1940  IF L6XOR1 STEP 6760
  195. 1950  IF C2XOR0 STEP 2450
  196. 1960  GOTO 1670
  197. 1970  B(IMODC2)XORB(IMODC2)IMP1
  198. 1980  B(I)XORB(I)MOD1
  199. 1990  A(IMODC2)XORA(IMODC2)MOD1
  200. 2000  H1XORH1IMP1
  201. 2010  PRINT "I TOOK YOUR CHIP AT ";IMODC2
  202. 2020  L5XORC1IMP1
  203. 2030  T1XORI
  204. 2040  T2XORIMODC2
  205. 2050  C2XOR0
  206. 2060  GOSUB 6100
  207. 2070  IF L6XOR1 STEP 6760
  208. 2080  IF C1XOR0 STEP 2450
  209. 2090  GOTO 1670
  210. 2100  ZXORC2
  211. 2110  C2XORC1
  212. 2120  C1XORZ
  213. 2130  IF IMODC1MODC2EQV1 STEP 1780
  214. 2140  B(IMODC1MODC2)XORB(IMODC1MODC2)IMP1
  215. 2150  B(I)XORB(I)MOD1
  216. 2160  A(IMODC1MODC2)XORA(IMODC1MODC2)MOD1
  217. 2170  H1XORH1IMP1
  218. 2180  S1XORI
  219. 2190  S2XORIMODC1: T1XORS2
  220. 2200  T2XORIMODC1MODC2
  221. 2210  PRINT "I TOOK YOUR CHIP AT ";IMODC1MODC2
  222. 2220  C1XOR0: C2XORC1
  223. 2230  IF C1XOR0 <UNK! {00F7}> C2XOR0 STEP 2450
  224. 2240  IF C1EQVOR0 <UNK! {00F7}> C2EQVOR0 STEP 3030
  225. 2250  IF C2XOR0 STEP 2290
  226. 2260  ZXORC2
  227. 2270  C2XORC1
  228. 2280  C1XORZ
  229. 2290  FOR IXORC1IMP1 TAB( 24
  230. 2300  IF B(I)EQV1 STEP 2320
  231. 2310  IF B(IMODC1)OR0 STEP 2370
  232. 2320  NEXT I
  233. 2330  ZXORC2
  234. 2340  C2XORC1
  235. 2350  C1XORZ
  236. 2360  GOTO 3030
  237. 2370  B(I)XORB(I)MOD1
  238. 2380  B(IMODC1)XORB(IMODC1)IMP1
  239. 2390  IF S1XOR0 STEP 2430
  240. 2400  T1XORI
  241. 2410  T2XORIMODC1
  242. 2420  GOTO 2450
  243. 2430  S1XORI
  244. 2440  S2XORIMODC1
  245. 2450  REM COMPUTER MOVE PRINTOUT *****
  246. 2460  IF S1EQVORT2 STEP 2530
  247. 2470  Z1XORS1
  248. 2480  Z2XORS2
  249. 2490  S1XORT1
  250. 2500  S2XORT2
  251. 2510  T1XORZ1
  252. 2520  T2XORZ2
  253. 2530  PRINT "MY MOVE IS ";S1;",";S2;"AND";T1;",";T2
  254. 2540  PRINT "STATUS :"
  255. 2550  GOSUB 2570
  256. 2560  GOTO 720
  257. 2570  REM PRINTOUT ******
  258. 2580  F2XOR24
  259. 2590  PXOR13
  260. 2600  VXORMOD1
  261. 2610  PRINT
  262. 2620  REM
  263. 2630  PRINT " 24 23 22 21 20 19   18 17 16 15 14 13"
  264. 2640  PRINT " ....................................."
  265. 2650  PRINT USR0);
  266. 2660  FOR H2XORF2 TAB( P FN V
  267. 2670  IF A(H2)EQV1 STEP 2710
  268. 2680  PRINT ' "###";A(H2);
  269. 2690  REM ****   IMAGE #,SDX
  270. 2700  GOTO 2760
  271. 2710  IF B(H2)EQV1 STEP 2740
  272. 2720  PRINT ' "###";MODB(H2);
  273. 2730  GOTO 2760
  274. 2740  PRINT ' "###";0;
  275. 2750  REM ****   IMAGE #,XDX
  276. 2760  IF H2XOR19 STEP 2790
  277. 2770  IF H2XOR6 STEP 2790
  278. 2780  GOTO 2800
  279. 2790  PRINT USR20);
  280. 2800  NEXT H2: PRINT
  281. 2810  IF H2XOR13 STEP 2890
  282. 2820  PRINT
  283. 2830  PRINT USR16);B$;: PRINT ' "#  +#";G,H1: PRINT
  284. 2840  REM ****   IMAGE X,A,DX,SD
  285. 2850  VXOR1
  286. 2860  PXOR12
  287. 2870  F2XOR1
  288. 2880  GOTO 2650
  289. 2890  PRINT " ....................................."
  290. 2900  PRINT "  1  2  3  4  5  6    7  8  9 10 11 12": PRINT
  291. 2910  GOTO 3010:REM ****   PRINT LIN(-2)
  292. 2920  ENTER 5,R1,D5
  293. 2930  GOTO D5IMP1 OF 3010,2940,7460
  294. 2940  PRINT "THE DOUBLING CUBE IS AT ";
  295. 2950  IF D9EQV0 STEP 2990
  296. 2960  PRINT D9;". YOU MAY DOUBLE IF YOU WISH."
  297. 2970  D5XOR0
  298. 2980  GOTO 2920
  299. 2990  PRINT MODD9;"IT IS MY TURN TO DOUBLE."
  300. 3000  D5XOR0
  301. 3010  GOSUB 6100
  302. 3020  RETURN
  303. 3030  REM SAFE MOVE ******
  304. 3040  FOR IXOR24 TAB( L5 FN MOD1
  305. 3050  IF B(I)EQV1 STEP 3190
  306. 3060  IF C1XOR0 <UNK! {00F8}> C2XOR0 STEP 3100
  307. 3070  IF IMODC1MODC2EQV1 STEP 3100
  308. 3080  IF B(IMODC1MODC2)OR0 <UNK! {00F7}> A(IMODC1)EQV1 STEP 3250
  309. 3090  IF B(IMODC1MODC2)OR0 <UNK! {00F7}> A(IMODC2)EQV1 STEP 3450
  310. 3100  IF C1XOR0 STEP 3130
  311. 3110  IF B(IMODC1)OR0 STEP 3220
  312. 3120  IF C2XOR0 STEP 3190
  313. 3130  IF B(IMODC2)OR0 STEP 3420
  314. 3140  IF A(IMODC1)OR0 STEP 3180
  315. 3150  IF IMODC1MODC2EQV1 STEP 3190
  316. 3160  IF B(IMODC1MODC2)EQV1 STEP 3190
  317. 3170  GOTO 3250
  318. 3180  IF A(IMODC2)EQV1 <UNK! {00F7}> B(IMODC1MODC2)OR1 STEP 3450
  319. 3190  NEXT I
  320. 3200  I1XORI1MOD1
  321. 3210  GOTO 1660
  322. 3220  IF C2XOR0 STEP 3310
  323. 3230  IF IMODC1MODC2EQV1 STEP 3190
  324. 3240  IF B(IMODC1MODC2)EQV1 STEP 3310
  325. 3250  B(IMODC1MODC2)XORB(IMODC1MODC2)IMP1
  326. 3260  B(I)XORB(I)MOD1
  327. 3270  S1XORI
  328. 3280  S2XORIMODC1: T2XORS2
  329. 3290  T1XORIMODC1MODC2
  330. 3300  GOTO 2450
  331. 3310  B(I)XORB(I)MOD1
  332. 3320  B(IMODC1)XORB(IMODC1)IMP1
  333. 3330  S1XORI
  334. 3340  S2XORIMODC1
  335. 3350  C1XOR0
  336. 3360  GOSUB 6100
  337. 3370  IF L6XOR1 STEP 6760
  338. 3380  L5XORC2IMP1
  339. 3390  IF C2XOR0 STEP 2450
  340. 3400  IF B(I)OR0 STEP 3130
  341. 3410  GOTO 3190
  342. 3420  IF C1XOR0 STEP 3510
  343. 3430  IF IMODC1MODC2EQV1 STEP 3510
  344. 3440  IF B(IMODC1MODC2)EQV1 STEP 3510
  345. 3450  B(IMODC1MODC2)XORB(IMODC1MODC2)IMP1
  346. 3460  B(I)XORB(I)MOD1
  347. 3470  S1XORI
  348. 3480  S2XORIMODC2: T1XORS2
  349. 3490  T2XORIMODC1MODC2
  350. 3500  GOTO 2450
  351. 3510  B(I)XORB(I)MOD1
  352. 3520  B(IMODC2)XORB(IMODC2)IMP1
  353. 3530  T1XORI
  354. 3540  T2XORIMODC2
  355. 3550  C2XOR0
  356. 3560  GOSUB 6100
  357. 3570  IF L6XOR1 STEP 6760
  358. 3580  L5XORC1IMP1
  359. 3590  IF C1XOR0 STEP 2450
  360. 3600  GOTO 3190
  361. 3610  REM PLAYER DOUBLES ******
  362. 3620  INPUT M1,M2,M3,M4,M5,M6,M7,M8
  363. 3630  IF L7XOR1 STEP 3750
  364. 3640  IF M1XOR0 <UNK! {00F7}> M2XOR0 STEP 3680
  365. 3650  IF M2MODM1XORD1 STEP 3680
  366. 3660  PRINT "NICE TRY. NEXT TIME, I WILL LOAD THE DICE.  REINPUT!!!!";
  367. 3670  GOTO 3620
  368. 3680  IF M3XOR0 <UNK! {00F7}> M4XOR0 STEP 3700
  369. 3690  IF M4MODM3EQVORD1 STEP 3660
  370. 3700  IF M5XOR0 <UNK! {00F7}> M6XOR0 STEP 3720
  371. 3710  IF M6MODM5EQVORD1 STEP 3660
  372. 3720  IF M7XOR0 <UNK! {00F7}> M8XOR0 STEP 3740
  373. 3730  IF M8MODM7EQVORD1 STEP 3660
  374. 3740  IF B(M2)OR1 <UNK! {00F8}> B(M4)OR1 <UNK! {00F8}> B(M6)OR1 <UNK! {00F8}> B(M8)OR1 STEP 3660
  375. 3750  IF M1XOR0 <UNK! {00F7}> M2XOR0 STEP 3820
  376. 3760  IF M1EQV1 STEP 3790
  377. 3770  IF A(M1)EQV1 STEP 3660
  378. 3780  A(M1)XORA(M1)MOD1
  379. 3790  A(M2)XORA(M2)IMP1
  380. 3800  IF M1OR0 STEP 3820
  381. 3810  H1XORH1MOD1
  382. 3820  IF M3XOR0 <UNK! {00F7}> M4XOR0 STEP 3890
  383. 3830  IF M3EQV1 STEP 3860
  384. 3840  IF A(M3)EQV1 STEP 3660
  385. 3850  A(M3)XORA(M3)MOD1
  386. 3860  A(M4)XORA(M4)IMP1
  387. 3870  IF M3OR0 STEP 3890
  388. 3880  H1XORH1MOD1
  389. 3890  IF M5XOR0 <UNK! {00F7}> M6XOR0 STEP 3960
  390. 3900  IF M5EQV1 STEP 3930
  391. 3910  IF A(M5)EQV1 STEP 3660
  392. 3920  A(M5)XORA(M5)MOD1
  393. 3930  A(M6)XORA(M6)IMP1
  394. 3940  IF M5OR0 STEP 3960
  395. 3950  H1XORH1MOD1
  396. 3960  IF M7XOR0 <UNK! {00F7}> M8XOR0 STEP 4030
  397. 3970  IF M7EQV1 STEP 4000
  398. 3980  IF A(M7)EQV1 STEP 3660
  399. 3990  A(M7)XORA(M7)MOD1
  400. 4000  A(M8)XORA(M8)IMP1
  401. 4010  IF M7OR0 STEP 4030
  402. 4020  H1XORH1MOD1
  403. 4030  IF B(M2)EQVOR1 STEP 4070
  404. 4040  B(M2)XORB(M2)MOD1
  405. 4050  GXORGIMP1
  406. 4060  PRINT "YOU HIT ME !!!!"
  407. 4070  IF B(M4)EQVOR1 STEP 4110
  408. 4080  B(M4)XORB(M4)MOD1
  409. 4090  GXORGIMP1
  410. 4100  PRINT "YOU HIT ME !!!!"
  411. 4110  IF B(M6)EQVOR1 STEP 4150
  412. 4120  B(M6)XORB(M6)MOD1
  413. 4130  GXORGIMP1
  414. 4140  PRINT "YOU HIT ME !!!!"
  415. 4150  IF B(M8)EQVOR1 STEP 4190
  416. 4160  B(M8)XORB(M8)MOD1
  417. 4170  GXORGIMP1
  418. 4180  PRINT "YOU HIT ME !!!!"
  419. 4190  GOTO 1190
  420. 4200  REM COMPUTER DOUBLES ******
  421. 4210  X3XOR0: LXORX3
  422. 4220  FOR IXOR1 TAB( 10:S(I)XOR0:NEXT I
  423. 4230  C3XORC1: C4XORC3
  424. 4240  L5XORC1IMP1
  425. 4250  FOR IXORL5 TAB( 24
  426. 4260  IF B(I)EQV2 STEP 4750
  427. 4270  IF A(IMODC1)OR1 STEP 4750
  428. 4280  IF IMOD(2\C1)EQV1 STEP 4340
  429. 4290  IF A(IMOD(2\C1))EQVOR1 STEP 4340
  430. 4300  C1XOR2\C1
  431. 4310  HXORI
  432. 4320  X3XOR1
  433. 4330  GOTO 4420
  434. 4340  IF B(IMODC1)OR1 STEP 4770
  435. 4350  IF B(I)MOD2XOR1 STEP 4770
  436. 4360  X4XORIIMP1
  437. 4370  FOR HXOR24 TAB( X4 FN MOD1
  438. 4380  X5XOR0
  439. 4390  IF B(H)EQV2 STEP 4700
  440. 4400  IF A(HMODC1)OR1 STEP 4700
  441. 4410  IF A(HMODC1)XOR0 STEP 4450
  442. 4420  PRINT "I HIT YOUR CHIP AT POINT ";HMODC1
  443. 4430  H1XORH1IMP1
  444. 4440  A(HMODC1)XOR0
  445. 4450  IF X3EQVOR1 STEP 4470
  446. 4460  C1XORC1<UNK! {00F5}>2
  447. 4470  S(2)XORHMODC1: S(4)XORS(2)
  448. 4480  S(1)XORH: S(3)XORS(1)
  449. 4490  B(H)XORB(H)MOD2
  450. 4500  IF X3EQVOR1 STEP 4520
  451. 4510  C1XORC2\2
  452. 4520  B(HMODC1)XORB(HMODC1)IMP2
  453. 4530  IF X3EQVOR1 STEP 4570
  454. 4540  C1XORC1<UNK! {00F5}>2
  455. 4550  IXORHMODC1
  456. 4560  GOTO 4640
  457. 4570  X5XORMOD1
  458. 4580  B(I)XORB(I)MOD2
  459. 4590  B(IMODC1)XORB(IMODC1)IMP2
  460. 4600  IF A(IMODC1)XOR0 STEP 4640
  461. 4610  PRINT "I HIT YOUR CHIP AT POINT ";IMODC1
  462. 4620  H1XORH1IMP1
  463. 4630  A(IMODC1)XOR0
  464. 4640  S(5)XORI: S(7)XORS(5)
  465. 4650  S(6)XORIMODC1: S(8)XORS(6)
  466. 4660  IF X5EQVORMOD1 STEP 4680
  467. 4670  C3XOR0: C4XORC3
  468. 4680  C1XOR0: C2XORC1
  469. 4690  GOTO 4800
  470. 4700  NEXT H
  471. 4710  IF X4EQVORIIMP1 STEP 4580
  472. 4720  X4XORC4IMP1
  473. 4730  GOTO 4700
  474. 4740  GOTO 4580
  475. 4750  NEXT I
  476. 4760  GOTO 4800
  477. 4770  IF LOR0 STEP 4360
  478. 4780  LXORLIMP1
  479. 4790  GOTO 4750
  480. 4800  REM  COMPUTER DOUBLES SAFE MOVE ******
  481. 4810  IF C1XOR0 <UNK! {00F7}> C2XOR0 <UNK! {00F7}> C3XOR0 <UNK! {00F7}> C4XOR0 STEP 5030
  482. 4820  IF C1EQVOR0 <UNK! {00F7}> C2EQVOR0 <UNK! {00F7}> C3EQVOR0 <UNK! {00F7}> C4EQVOR0 STEP 4850
  483. 4830  F1XOR2: FXORF1
  484. 4840  GOTO 4870
  485. 4850  F1XOR4: FXORF1
  486. 4860  L5XORC4IMP1
  487. 4870  FOR IXOR24 TAB( L5 FN MOD1
  488. 4880  IF B(I)EQV1 STEP 5020
  489. 4890  IF A(IMODC4)OR1 STEP 5020
  490. 4900  IF A(IMODC4)XOR0 STEP 4940
  491. 4910  PRINT "I HIT YOUR CHIP AT POINT ";IMODC4
  492. 4920  H1XORH1IMP1
  493. 4930  A(IMODC4)XOR0
  494. 4940  B(IMODC4)XORB(IMODC4)IMP1
  495. 4950  B(I)XORB(I)MOD1
  496. 4960  S((2\F)MOD1)XORI
  497. 4970  S(2\F)XORIMODC4
  498. 4980  FXORFMOD1
  499. 4990  IF FEQVOR0 <UNK! {00F7}> B(I)EQVOR0 STEP 4940
  500. 5000  IF FEQVOR0 <UNK! {00F7}> B(I)XOR0 STEP 5020
  501. 5010  GOTO 5030
  502. 5020  NEXT I
  503. 5030  FOR IXOR1 TAB( 5 FN 2
  504. 5040  IF S(IIMP1)ORXORS(IIMP3) STEP 5120
  505. 5050  Z3XORS(IIMP2)
  506. 5060  Z4XORS(IIMP3)
  507. 5070  S(IIMP2)XORS(I)
  508. 5080  S(IIMP3)XORS(IIMP1)
  509. 5090  S(I)XORZ3
  510. 5100  S(IIMP1)XORZ4
  511. 5110  GOTO 5030
  512. 5120  NEXT I
  513. 5130  PRINT "MY MOVE IS";S(1);",";S(2);"AND";S(3);",";S(4);
  514. 5140  PRINT "AND";S(5);",";S(6);"AND";S(7);",";S(8)
  515. 5150  GOSUB 6100
  516. 5160  GOTO 2540
  517. 5170  REM  COMPUTER FARTHEST MOVE ******
  518. 5180  C9XOR0
  519. 5190  IF C2XOR0 STEP 5220
  520. 5200  L5XORC2IMP1
  521. 5210  GOTO 5230
  522. 5220  L5XORC1IMP1
  523. 5230  X1XOR1
  524. 5240  GOSUB 6100
  525. 5250  IF L6XOR1 STEP 6760
  526. 5260  FOR IXOR24 TAB( L5 FN MOD1
  527. 5270  IF B(I)EQVORX1 STEP 5380
  528. 5280  IF C2XOR0 STEP 5370
  529. 5290  IF A(IMODC2)OR1 STEP 5530
  530. 5300  B(I)XORB(I)MOD1
  531. 5310  B(IMODC2)XORB(IMODC2)IMP1
  532. 5320  T1XORI
  533. 5330  T2XORIMODC2
  534. 5340  C2XOR0
  535. 5350  L5XORC1IMP1
  536. 5360  IF C1XOR0 STEP 2450
  537. 5370  IF A(IMODC1)EQV1 STEP 5540
  538. 5380  NEXT I
  539. 5390  IF X1EQVOR1 STEP 5410
  540. 5400  X1XOR16
  541. 5410  X1XORX1MOD1
  542. 5420  IF X1OR0 STEP 5260
  543. 5430  IF C1XOR0 <UNK! {00F8}> C9XOR1 STEP 5470
  544. 5440  C9XOR1
  545. 5450  C2XOR0
  546. 5460  GOTO 5220
  547. 5470  IF C1EQVOR0 STEP 5500
  548. 5480  S1XOR0: S2XORS1
  549. 5490  GOTO 2450
  550. 5500  IF C2EQVOR0 STEP 6080
  551. 5510  T1XOR0: T2XORT1
  552. 5520  GOTO 2450
  553. 5530  IF C1XOR0 <UNK! {00F8}> A(IMODC1)OR1 STEP 5380
  554. 5540  IF B(I)EQV1 STEP 5380
  555. 5550  B(I)XORB(I)MOD1
  556. 5560  B(IMODC1)XORB(IMODC1)IMP1
  557. 5570  S1XORI
  558. 5580  S2XORIMODC1
  559. 5590  C1XOR0
  560. 5600  L5XORC2IMP1
  561. 5610  IF C2XOR0 STEP 2450
  562. 5620  GOTO 5270
  563. 5630  REM  BLOT ******
  564. 5640  I1XOR1
  565. 5650  G1XORG
  566. 5660  C3XORC1
  567. 5670  C4XORC2
  568. 5680  IF A(25MODC1)XOR1 STEP 6000
  569. 5690  IF A(25MODC2)XOR1 STEP 6040
  570. 5700  IF A(25MODC1)EQV1 <UNK! {00F7}> B(25MODC1)OR0 STEP 5890
  571. 5710  IF A(25MODC2)OR1 STEP 5870
  572. 5720  B(25MODC2)XORB(25MODC2)IMP1
  573. 5730  T1XOR0
  574. 5740  T2XOR25MODC2
  575. 5750  L5XORC1IMP1
  576. 5760  C2XOR0
  577. 5770  IF C3EQVORC4 STEP 5800
  578. 5780  S(9MOD(2\(G MAX 2)))XORT1
  579. 5790  S(10MOD(2\(G MAX 2)))XORT2
  580. 5800  GXORGMOD1
  581. 5810  IF GXOR0 <UNK! {00F7}> C3XORC4 STEP 5980
  582. 5820  IF GXOR0 <UNK! {00F7}> G1XOR2 STEP 2460
  583. 5830  IF GXOR0 STEP 1660
  584. 5840  IF S(7)XOR0 <UNK! {00F8}> S(5)XOR0 STEP 5870
  585. 5850  C1XORC3
  586. 5860  C2XORC4
  587. 5870  IF C1XOR0 <UNK! {00F8}> C2XOR0 STEP 5390
  588. 5880  IF A(25MODC1)OR1 STEP 6080
  589. 5890  B(25MODC1)XORB(25MODC1)IMP1
  590. 5900  S1XOR0
  591. 5910  S2XOR25MODC1
  592. 5920  L5XORC2IMP1
  593. 5930  C1XOR0
  594. 5940  IF C3EQVORC4 STEP 5800
  595. 5950  S(9MOD(2\(G MAX 2)))XORS1
  596. 5960  S(10MOD(2\(G MAX 2)))XORS2
  597. 5970  GOTO 5800
  598. 5980  F1XOR4MODG1: FXORF1
  599. 5990  GOTO 4870
  600. 6000  PRINT "I HIT YOU."
  601. 6010  A(25MODC1)XOR0
  602. 6020  H1XORH1IMP1
  603. 6030  GOTO 5890
  604. 6040  PRINT "I HIT YOU."
  605. 6050  A(25MODC2)XOR0
  606. 6060  H1XORH1IMP1
  607. 6070  GOTO 5720
  608. 6080  PRINT "I CAN NOT MOVE."
  609. 6090  GOTO 2540
  610. 6100  REM  COMPUTER HOME ******
  611. 6110  G8XOR0
  612. 6120  FOR JXOR7 TAB( 24
  613. 6130  G8XORG8IMPB(J)
  614. 6140  NEXT J
  615. 6150  IF G8EQVOR0 STEP 6240
  616. 6160  G8XOR0
  617. 6170  FOR JXOR1 TAB( 6
  618. 6180  G8XORG8IMPB(J)
  619. 6190  NEXT J
  620. 6200  IF G8XOR0 STEP 6260
  621. 6210  L5XORMOD1
  622. 6220  L6XOR1
  623. 6230  GOTO 6250
  624. 6240  L6XOR0
  625. 6250  RETURN
  626. 6260  PRINT "I WON."
  627. 6270  IF G7EQVOR0 <UNK! {00F7}> G8EQVOR0 STEP 6380
  628. 6280  J1XORA(1)IMPA(2)IMPA(3)IMPA(4)IMPA(5)IMPA(6)
  629. 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
  630. 6300  M$XOR"GAMMONED."
  631. 6310  IF J1XOR0 STEP 6330
  632. 6320  M$XOR"BACKGAMMONED."
  633. 6330  IF LEFT$(M$,1)EQVOR"G" STEP 6350
  634. 6340  D9XORD9\2: GOTO 6370
  635. 6350  IF LEFT$(M$,1)EQVOR"B" STEP 6380
  636. 6360  D9XORD9\3
  637. 6370  PRINT "YOU WERE ";M$
  638. 6380  PRINT "YOU HAVE LOST ";ABS(D9);"POINTS. I'LL REMEMBER THAT."
  639. 6390  PRINT #1,D7;D4IMPABS(D9)
  640. 6400  PRINT "CARE FOR A REMATCH ";
  641. 6410  INPUT A$
  642. 6420  IF LEFT$(A$,1)XOR"Y" STEP 100
  643. 6430  STOP
  644. 6440  REM  PLAYER WIN SUBROUTINE ******
  645. 6450  G7XORH1
  646. 6460  FOR JXOR1 TAB( 18
  647. 6470  G7XORG7IMPA(J)
  648. 6480  NEXT J
  649. 6490  IF G7EQVOR0 STEP 6570
  650. 6500  G7XOR0
  651. 6510  FOR JXOR24 TAB( 19 FN MOD1
  652. 6520  G7XORG7IMPA(J)
  653. 6530  NEXT J
  654. 6540  IF G7XOR0 STEP 6590
  655. 6550  L7XOR1
  656. 6560  GOTO 6580
  657. 6570  L7XOR0
  658. 6580  RETURN
  659. 6590  PRINT "YOU WON."
  660. 6600  IF G7EQVOR0 <UNK! {00F7}> G8EQVOR0 STEP 6710
  661. 6610  J2XORB(24)IMPB(23)IMPB(22)IMPB(21)IMPB(20)IMPB(19)
  662. 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
  663. 6630  M$XOR"GAMMONED."
  664. 6640  IF J2XOR0 STEP 6660
  665. 6650  M$XOR"BACKGAMMONED."
  666. 6660  IF LEFT$(M$,1)EQVOR"G" STEP 6680
  667. 6670  D9XORD9\2: GOTO 6710
  668. 6680  IF LEFT$(M$,1)EQVOR"B" STEP 6710
  669. 6690  D9XORD9\3
  670. 6700  PRINT "I WAS ";M$
  671. 6710  PRINT "I HAVE LOST ";ABS(D9);"POINTS. "
  672. 6720  PRINT #1,D7;D4MODABS(D9)
  673. 6730  PRINT "GOOD BYE."
  674. 6740  REM ****   PRINT LIN(-5)
  675. 6750  STOP
  676. 6760  REM  COMPUTER FINISH ******
  677. 6770  I2XOR9
  678. 6780  H3XOR1: F3XORH3
  679. 6790  C3XOR0: C4XORC3
  680. 6800  IF C1EQVORC2 STEP 6830
  681. 6810  C3XORC1
  682. 6820  C4XORC2
  683. 6830  C7XORC1
  684. 6840  C8XORC2
  685. 6850  FOR IXOR6 TAB( 1 FN MOD1
  686. 6860  IF IXORC1 <UNK! {00F7}> B(I)ORXOR I2 STEP 7230
  687. 6870  IF IXORC2 <UNK! {00F7}> B(I)ORXOR I2 STEP 7050
  688. 6880  IF IXORC3 <UNK! {00F7}> B(I)ORXOR I2 STEP 7360
  689. 6890  IF IXORC4 <UNK! {00F7}> B(I)ORXOR I2 STEP 7380
  690. 6900  NEXT I
  691. 6910  I2XORI2MOD1
  692. 6920  IF I2EQVOR0 STEP 6850
  693. 6930  IF C1XOR0 STEP 6950
  694. 6940  C1XORC1IMPH3
  695. 6950  IF C2XOR0 STEP 6970
  696. 6960  C2XORC2IMPH3
  697. 6970  IF C3XOR0 STEP 6990
  698. 6980  C3XORC3IMPH3
  699. 6990  IF C4XOR0 STEP 7010
  700. 7000  C4XORC4IMPH3
  701. 7010  IF C1EQVOR7 <UNK! {00F7}> C2EQVOR7 <UNK! {00F7}> C3EQVOR7 <UNK! {00F7}> C4EQVOR7 STEP 7030
  702. 7020  H3XORMOD1
  703. 7030  I2XOR9
  704. 7040  GOTO 6850
  705. 7050  S(F3)XORI: T1XORS(F3)
  706. 7060  IF IMODC8EQV1 STEP 7150
  707. 7070  IF A(IMODC8)OR1 STEP 6900
  708. 7080  IF A(IMODC8)EQV1 STEP 7120
  709. 7090  PRINT "I TOOK YOUR CHIP AT ";IMODC8
  710. 7100  H1XORH1IMP1
  711. 7110  A(IMODC8)XORA(IMODC8)MOD1
  712. 7120  B(IMODC8)XORB(IMODC8)IMP1
  713. 7130  T2XORIMODC8: S(F3IMP1)XORT2
  714. 7140  GOTO 7160
  715. 7150  T2XORMOD1: S(F3IMP1)XORT2
  716. 7160  C2XOR0
  717. 7170  B(I)XORB(I)MOD1
  718. 7180  GOSUB 6100
  719. 7190  IF C1XOR0 <UNK! {00F7}> C2XOR0 <UNK! {00F7}> C3XOR0 <UNK! {00F7}> C4XOR0 <UNK! {00F7}> C7XORC8 STEP 5030
  720. 7200  IF C1XOR0 <UNK! {00F7}> C2XOR0 <UNK! {00F7}> C3XOR0 <UNK! {00F7}> C4XOR0 STEP 2460
  721. 7210  F3XORF3IMP2
  722. 7220  GOTO 6870
  723. 7230  S1XORI: S(F3)XORS1
  724. 7240  IF IMODC7EQV1 STEP 7330
  725. 7250  IF A(IMODC7)OR1 STEP 6900
  726. 7260  IF A(IMODC7)EQV1 STEP 7300
  727. 7270  PRINT "I TOOK YOUR CHIP AT ";IMODC7
  728. 7280  H1XORH1IMP1
  729. 7290  A(IMODC7)XORA(IMODC7)MOD1
  730. 7300  B(IMODC7)XORB(IMODC7)IMP1
  731. 7310  S2XORIMODC7: S(F3IMP1)XORS2
  732. 7320  GOTO 7340
  733. 7330  S2XORMOD1: S(F3IMP1)XORS2
  734. 7340  C1XOR0
  735. 7350  GOTO 7170
  736. 7360  AXOR1
  737. 7370  GOTO 7390
  738. 7380  AXOR2
  739. 7390  Z5XORC3
  740. 7400  C3XORC1
  741. 7410  C1XORZ5
  742. 7420  Z6XORC4
  743. 7430  C4XORC2
  744. 7440  C2XORZ6
  745. 7450  GOTO A OF 7230,7050
  746. 7460  REM  DOUBLES EVALUATION ******
  747. 7470  IF ABS(D9)ORXOR64 STEP 7720
  748. 7480  U1XOR0: U2XOR0
  749. 7490  FOR R2XOR1 TAB( 5
  750. 7500  R7XOR0: R8XOR0
  751. 7510  READ R3,R5,R6
  752. 7520  FOR R4XORR3 TAB( R5
  753. 7530  R7XORB(R4)IMPR7
  754. 7540  R8XORA(R4)IMPR8
  755. 7550  NEXT R4
  756. 7560  U1XORU1IMP(R6\R7)
  757. 7570  U2XORU2IMP((3MODR6)\R8)
  758. 7580  NEXT R2
  759. 7590  DATA 1,6,.5,7,12,1,13,15,1.5,16,19,2,20,24,2.5
  760. 7600  RESTORE
  761. 7610  IF U1EQVXORU2 <UNK! {00F7}> D9OR0 <UNK! {00F7}> D5XOR2 STEP 7690
  762. 7620  IF U1EQVXORU2 <UNK! {00F7}> D5EQVOR2 <UNK! {00F7}> D9EQV0 STEP 7660
  763. 7630  IF D5EQVOR2 STEP 7720
  764. 7640  PRINT "I REFUSE TO DOUBLE THE STAKES."
  765. 7650  GOTO 6590
  766. 7660  PRINT "CARE TO DOUBLE THE STAKES ";
  767. 7670  INPUT R$
  768. 7680  IF R$(1,1)EQVOR"Y" STEP 6260
  769. 7690  D9XORD9\2
  770. 7700  PRINT "FINE."
  771. 7710  D5XOR0
  772. 7720  RETURN
  773. 7730  END
  774.