home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib14.dsk / DOTS-ELLO.bas < prev    next >
BASIC Source File  |  2023-02-26  |  22KB  |  349 lines

  1. 1  REM     **********************
  2. 2  REM     *    DOTS - ELLO     *
  3. 3  REM     *    BY JUN SHAO     *
  4. 4  REM     * COPYRIGHT (C) 1983 *
  5. 5  REM     * BY MICROSPARC, INC *
  6. 6  REM     * LINCOLN, MA. 01773 *
  7. 7  REM     **********************
  8. 10  IF  PEEK(104) = 64  THEN 30
  9. 20  POKE 103,1: POKE 104,64: POKE 16384,0: PRINT  CHR$(4);"RUN DOTS-ELLO"
  10. 30  HIMEM: 37888:S =  -16336: TEXT : HOME 
  11. 40  DIM HD(11,11),VD(11,11),SD(11,11)
  12. 50  VTAB 7: HTAB (12)
  13. 60  HTAB (12): PRINT " *---*---*---*---*"
  14. 70  HTAB (12): PRINT " 1               1"
  15. 80  HTAB (12): PRINT " 1   DOTS-ELLO   1"
  16. 90  HTAB (12): PRINT " 1               1"
  17. 100  HTAB (12): PRINT " *---*---*---*---*"
  18. 110  VTAB 16: HTAB (15): PRINT " BY JUN SHAO"
  19. 120  VTAB 18: PRINT "** COPYRIGHT 1983 BY MICROSPARC, INC. **"
  20. 130  REM  SET UP SHAPE TABLE
  21. 140  POKE 232,0: POKE 233,3
  22. 150  FOR I = 0 TO 238
  23. 160  READ A: POKE 768 +I,A: NEXT I
  24. 170  VTAB 22: HTAB 4: PRINT "WANT INSTRUCTIONS (Y OR N)? ";: GET A$: IF A$ = "Y"  THEN  GOSUB 3240
  25. 180  HOME 
  26. 190  FOR H = 1 TO 2: VTAB (H +5): PRINT  TAB( 2)"NAME OF PLAYER "H"-";: GOSUB 3320
  27. 200 NA$(H) =  LEFT$(A$,10): NEXT 
  28. 210 PT = 0:QT = 0: REM   INITIALIZE TOTAL SCORES
  29. 220 V = 0: VTAB 21: PRINT "PLAYERS TAKES TURNS?";: GET A$: PRINT A$
  30. 230  IF A$ = "Y"  THEN  VTAB 21: HTAB 1: PRINT "PLEASE WAIT...         ": GOTO 260
  31. 240  HTAB 1: VTAB 23: PRINT "THEN WHOEVER ";: FLASH : PRINT "ADDS NEW POINTS";: NORMAL : PRINT " MUST ": PRINT "CONTINUE":V = 1
  32. 250  FOR H = 1 TO 500: NEXT : REM  TIME TO READ INSTRUCTION
  33. 260 MT = 5:FT = 0:ST = 0:FC = 0:SC = 0:F = 0:TMP = 150:OT = 0
  34. 270  FOR I = 0 TO 11: FOR J = 0 TO 11:HD(I,J) = 0:VD(I,J) = 0:SD(I,J) = 0: NEXT : NEXT 
  35. 280  REM  SET UP GAME BOARD
  36. 290  HGR : POKE  -16302,0: HCOLOR= 6
  37. 300  GOSUB 2970
  38. 310  HCOLOR= 5: SCALE= 1: ROT= 0
  39. 320  POKE  -16368,0
  40. 330 Y = 80:C = 0:X = 15: GOSUB 2930:X = 270: GOSUB 2930
  41. 340 T = (1  AND MT)
  42. 350 X = 128:Y = 84:DIR = 1: REM  CURSOR STARTS IN THE MIDDLE OF BOARD
  43. 360  XDRAW 3 AT 15,60: XDRAW 4 AT 270,60
  44. 370  IF F = 0  AND T = 1  THEN T = 1: FOR H = 1 TO 10:SO =  PEEK(S) - PEEK(S) + PEEK(S): NEXT : FOR H = 1 TO 1250: NEXT : XDRAW 4 AT 270,60:F = 1: REM  READY TO GO
  45. 380  IF OT = 1  THEN  XDRAW 3 AT 15,60: XDRAW 4 AT 270,60:OT = 0: REM  FOR PLAYER SCORES MUST CONTINUE
  46. 390  PRINT  CHR$(7): IF T = 0  THEN  PRINT  CHR$(7)
  47. 400  XDRAW 1 AT X,Y: FOR H = 1 TO TMP: NEXT :SO =  PEEK(S) - PEEK(S)
  48. 410  XDRAW 1 AT X,Y: FOR H = 1 TO TMP: NEXT 
  49. 420 R =  PEEK( -16384): POKE  -16368,0
  50. 430  IF (R -128) = 32  THEN 560
  51. 440 X = X +DIR *28
  52. 450  IF X >240  AND DIR >0  THEN Y = Y +26:X = 44: GOTO 520
  53. 460  IF X = 16  AND DIR <0  THEN Y = Y -26:X = 240: GOTO 530
  54. 470  IF (R -128) = 21  THEN DIR = 1
  55. 480  IF (R -128) = 8  THEN DIR =  -1
  56. 490  IF (R -128) = 65  THEN X = 44:Y = 6:DIR = 1: GOTO 400
  57. 500  IF (R -128) = 90  THEN X = 240:Y = 188:DIR =  -1
  58. 510  GOTO 400
  59. 520  IF Y >188  AND DIR >0  THEN Y = 6: GOTO 400
  60. 530  IF Y <0  AND DIR <0  THEN Y = 188
  61. 540  GOTO 400
  62. 550  REM  SPACE BAR PRESSED. FIND DIRCTION FOR CONNECTION
  63. 560  HCOLOR= 7: SCALE= 1:DF = 0:PW = 1
  64. 570  ON PW GOTO 580,600,620,640
  65. 580  IF X = 240  THEN DF = DF +1: GOTO 600
  66. 590  GOTO 650
  67. 600  IF Y = 188  THEN DF = DF +1: GOTO 620
  68. 610  GOTO 650
  69. 620  IF X = 44  THEN DF = DF +1: GOTO 640
  70. 630  GOTO 650
  71. 640  IF Y = 6  THEN DF = DF +1: GOTO 580
  72. 650  ROT= (PW -1) *16: XDRAW 2 AT X,Y: FOR H = 1 TO 5: NEXT : XDRAW 2 AT X,Y
  73. 660 R =  PEEK( -16384): POKE  -16368,0
  74. 670  IF (R -128) = 13  THEN 720
  75. 680  IF (R -128) = 27  THEN 440: REM  PRESS ESC KEY TO CHANGE MIND BEFORE DRAW A LINE
  76. 690  IF (R -128) = 32  THEN DF = DF +1
  77. 700 PW =  INT((DF/4 - INT(DF/4)) *4 +.55) +1
  78. 710  GOTO 570
  79. 720 J = (X -44)/28 +2:K = (Y -6)/26 +2
  80. 730  ROT= 0:PR = 4:ER = 3: HCOLOR= 1: IF T = 1  THEN PR = 3:ER = 4: HCOLOR= 4
  81. 740  ON PW GOTO 750,770,790,810
  82. 750  IF HD(J,K) = 1  THEN 830
  83. 760 HD(J,K) = 1: GOTO 850: REM  RIGHTWARD
  84. 770  IF VD(J,K) = 1  THEN 830
  85. 780 VD(J,K) = 1: GOTO 1210: REM  DOWNWARD
  86. 790  IF HD(J -1,K) = 1  THEN 830
  87. 800 HD(J -1,K) = 1: GOTO 1090: REM  LEFTWARD
  88. 810  IF VD(J,K -1) = 1  THEN 830
  89. 820 VD(J,K -1) = 1: GOTO 970: REM   UPWARD
  90. 830  PRINT  CHR$(7): GOTO 440: REM  ILLEGAL -  LINE ALREADY EXISTS
  91. 840  REM  RIGHTWARD
  92. 850  HCOLOR= 0: HPLOT X,Y -1 TO X +28,Y -1: HCOLOR= 3: HPLOT X,Y TO X +28,Y
  93. 860  GOSUB 1460: GOSUB 1490: GOSUB 1580: GOSUB 1610: REM  UP RIGHT,DOWN RIGHT,UP MID,DOWN MID
  94. 870  IF HD(J,K) +HD(J,K -1) +VD(J,K -1) +VD(J +1,K -1) < >4  THEN 910
  95. 880  IF SD(J,K -1) = ER  THEN  XDRAW ER AT X +14,Y -13: GOSUB 2660
  96. 890  IF SD(J,K -1) < >PR  THEN  XDRAW PR AT X +14,Y -13: FOR H = 1 TO 20:SO =  PEEK(S) - PEEK(S): NEXT : GOSUB 2700
  97. 900 SD(J,K -1) = PR
  98. 910  IF HD(J,K) +HD(J,K +1) +VD(J,K) +VD(J +1,K) < >4  THEN 950
  99. 920  IF SD(J,K) = ER  THEN  XDRAW ER AT X +14,Y +13: GOSUB 2660
  100. 930  IF SD(J,K) < >PR  THEN  XDRAW PR AT X +14,Y +13: FOR H = 1 TO 15:SO =  PEEK(S) - PEEK(S) + PEEK(S) - PEEK(S): NEXT : GOSUB 2700
  101. 940 SD(J,K) = PR
  102. 950  GOTO 1310
  103. 960  REM  UPWARD
  104. 970  HCOLOR= 0: HPLOT X,Y TO X,Y -26: HCOLOR= 3: HPLOT X,Y TO X,Y -26
  105. 980  GOSUB 1460: GOSUB 1520: GOSUB 1640: GOSUB 1670: REM  UP RIGHT,UP LEFT,RIGHT MID,LEFT MID
  106. 990  IF HD(J,K) +HD(J,K -1) +VD(J,K -1) +VD(J +1,K -1) < >4  THEN 1030
  107. 1000  IF SD(J,K -1) = ER  THEN  XDRAW ER AT X +14,Y -13: GOSUB 2660
  108. 1010  IF SD(J,K -1) < >PR  THEN  XDRAW PR AT X +14,Y -13: FOR H = 1 TO 20:SO =  PEEK(S) - PEEK(S) + PEEK(S): NEXT : GOSUB 2700
  109. 1020 SD(J,K -1) = PR
  110. 1030  IF HD(J -1,K) +HD(J -1,K -1) +VD(J,K -1) +VD(J -1,K -1) < >4  THEN 1070
  111. 1040  IF SD(J -1,K -1) = ER  THEN  XDRAW ER AT X -14,Y -13: GOSUB 2660
  112. 1050  IF SD(J -1,K -1) < >PR  THEN  XDRAW PR AT X -14,Y -13: FOR H = 1 TO 25:SO =  PEEK(S) - PEEK(S) + PEEK(S) - PEEK(S): NEXT : GOSUB 2700
  113. 1060 SD(J -1,K -1) = PR
  114. 1070  GOTO 1310
  115. 1080  REM  LEFTWARD
  116. 1090  HCOLOR= 0: HPLOT X,Y -1 TO X -28,Y -1: HCOLOR= 3: HPLOT X,Y TO X -28,Y
  117. 1100  GOSUB 1520: GOSUB 1550: GOSUB 1580: GOSUB 1610: REM  UP LEFT,DOWN LEFT,UP MID,DOWN MID
  118. 1110  IF HD(J -1,K) +HD(J -1,K -1) +VD(J -1,K -1) +VD(J,K -1) < >4  THEN 1150
  119. 1120  IF SD(J -1,K -1) = ER  THEN  XDRAW ER AT X -14,Y -13: GOSUB 2660
  120. 1130  IF SD(J -1,K -1) < >PR  THEN  XDRAW PR AT X -14,Y -13: FOR H = 1 TO 10:SO =  PEEK(S) - PEEK(S) + PEEK(S) - PEEK(S): NEXT : GOSUB 2700
  121. 1140 SD(J -1,K -1) = PR
  122. 1150  IF HD(J -1,K) +HD(J -1,K +1) +VD(J -1,K) +VD(J,K) < >4  THEN 1190
  123. 1160  IF SD(J -1,K) = ER  THEN  XDRAW ER AT X -14,Y +13: GOSUB 2660
  124. 1170  IF SD(J -1,K) < >PR  THEN  XDRAW PR AT X -14,Y +13: FOR H = 1 TO 15:SO =  PEEK(S) - PEEK(S): NEXT : GOSUB 2700
  125. 1180 SD(J -1,K) = PR
  126. 1190  GOTO 1310
  127. 1200  REM  DOWNWARD
  128. 1210  HCOLOR= 0: HPLOT X,Y TO X,Y +26: HCOLOR= 3: HPLOT X,Y TO X,Y +26
  129. 1220  GOSUB 1550: GOSUB 1490: GOSUB 1640: GOSUB 1670: REM  DOWN LEFT,DOWN RIGHT,RIGHT MID,LEFT MID
  130. 1230  IF HD(J,K) +HD(J,K +1) +VD(J,K) +VD(J +1,K) < >4  THEN 1270
  131. 1240  IF SD(J,K) = ER  THEN  XDRAW ER AT X +14,Y +13: GOSUB 2660
  132. 1250  IF SD(J,K) < >PR  THEN  XDRAW PR AT X +14,Y +13: FOR H = 1 TO 20:SO =  PEEK(S) - PEEK(S) + PEEK(S) - PEEK(S) + PEEK(S): NEXT : GOSUB 2700
  133. 1260 SD(J,K) = PR
  134. 1270  IF HD(J -1,K) +HD(J -1,K +1) +VD(J -1,K) +VD(J,K) < >4  THEN 1310
  135. 1280  IF SD(J -1,K) = ER  THEN  XDRAW ER AT X -14,Y +13: GOSUB 2660
  136. 1290  IF SD(J -1,K) < >PR  THEN  XDRAW PR AT X -14,Y +13: FOR H = 1 TO 10:SO =  PEEK(S) - PEEK(S) + PEEK(S) - PEEK(S) + PEEK(S): NEXT : GOSUB 2700
  137. 1300 SD(J -1,K) = PR
  138. 1310 X = 15:Y = 80:C = FT: GOSUB 2930
  139. 1320 X = 270:Y = 80:C = ST: GOSUB 2930
  140. 1330  IF ((FC < >FT)  OR (SC < >ST))  AND V = 1  THEN MT = 5 -MT:OT = 1: REM   FOR OPTION THAT PLAYER SCORES MUST CONTINUE 
  141. 1340 FT = FC:ST = SC: REM  SAVE CURRENT SCORE FOR ERASE NEXT TIME
  142. 1350 X = 15:Y = 80:C = FC: GOSUB 2930
  143. 1360 X = 270:Y = 80:C = SC: GOSUB 2930
  144. 1370  IF FC +SC >4  AND FC +SC <8  THEN TMP = 140
  145. 1380  IF FC +SC >8  AND FC +SC <10  THEN TMP = 135
  146. 1390  IF FC +SC >12  AND FC +SC <15  THEN TMP = 120
  147. 1400  IF FC +SC >18  AND FC +SC <20  THEN TMP = 100
  148. 1410  IF FC +SC >24  AND FC +SC <30  THEN TMP = 95
  149. 1420  IF FC +SC >30  THEN TMP = 90
  150. 1430  IF FC +SC = 49  THEN 2730
  151. 1440 MT = 5 -MT: GOTO 340
  152. 1450  REM  CHK UP RIGHT 4 SQUARES
  153. 1460  IF HD(J,K) +HD(J,K -2) +HD(J +1,K -2) +HD(J +1,K) +VD(J,K -1) +VD(J,K -2) +VD(J +2,K -1) +VD(J +2,K -2) < >8  THEN  RETURN 
  154. 1470  GOSUB 1700: GOSUB 1760: RETURN : REM  UP RIGHT 4 SQUARES
  155. 1480  REM  CHK DOWN RIGHT 4 SQUARES
  156. 1490  IF HD(J,K) +HD(J,K +2) +HD(J +1,K) +HD(J +1,K +2) +VD(J,K) +VD(J,K +1) +VD(J +2,K) +VD(J +2,K +1) < >8  THEN  RETURN 
  157. 1500  GOSUB 1930: GOSUB 2000: RETURN 
  158. 1510  REM  CHK UP LEFT 4 SQUARES
  159. 1520  IF HD(J -1,K) +HD(J -2,K) +HD(J -1,K -2) +HD(J -2,K -2) +VD(J,K -1) +VD(J,K -2) +VD(J -2,K -1) +VD(J -2,K -2) < >8  THEN  RETURN 
  160. 1530  GOSUB 1820: GOSUB 1880: RETURN : REM  UP LEFT 4 SQUARES
  161. 1540  REM  CHK DOWN LEFT
  162. 1550  IF HD(J -1,K) +HD(J -2,K) +HD(J -1,K +2) +HD(J -2,K +2) +VD(J,K) +VD(J,K +1) +VD(J -2,K) +VD(J -2,K +1) < >8  THEN  RETURN 
  163. 1560  GOSUB 2060: GOSUB 2120: RETURN 
  164. 1570  REM  CHK UP MID
  165. 1580  IF HD(J,K) +HD(J -1,K) +HD(J,K -2) +HD(J -1,K -2) +VD(J +1,K -1) +VD(J +1,K -2) +VD(J -1,K -1) +VD(J -1,K -2) < >8  THEN  RETURN 
  166. 1590  GOSUB 2180: GOSUB 2230: RETURN : REM  UP MID 4 SQUARES
  167. 1600  REM  CHK DOWN MID
  168. 1610  IF HD(J,K) +HD(J -1,K) +HD(J -1,K +2) +HD(J,K +2) +VD(J +1,K) +VD(J +1,K +1) +VD(J -1,K) +VD(J -1,K +1) < >8  THEN  RETURN 
  169. 1620  GOSUB 2300: GOSUB 2360: RETURN 
  170. 1630  REM   RIGHT MID  
  171. 1640  IF HD(J,K +1) +HD(J +1,K +1) +HD(J,K -1) +HD(J +1,K -1) +VD(J,K) +VD(J +2,K) +VD(J +2,K -1) +VD(J,K -1) < >8  THEN  RETURN 
  172. 1650  GOSUB 2420: GOSUB 2480: RETURN : REM  RIGHT MID 4 SQUARES
  173. 1660  REM  LEFT MID
  174. 1670  IF HD(J -1,K +1) +HD(J -2,K +1) +HD(J -1,K -1) +HD(J -2,K -1) +VD(J,K) +VD(J,K -1) +VD(J -2,K) +VD(J -2,K -1) < >8  THEN  RETURN 
  175. 1680  GOSUB 2540: GOSUB 2600: RETURN : REM  LEFT MID 4 SQUARES
  176. 1690  REM  ERASE UP RIGHT 4 SQUARES
  177. 1700  IF SD(J,K -1) = ER  THEN  XDRAW ER AT X +14,Y -13: GOSUB 2660
  178. 1710  IF SD(J,K -2) = ER  THEN  XDRAW ER AT X +14,Y -39: GOSUB 2660
  179. 1720  IF SD(J +1,K -1) = ER  THEN  XDRAW ER AT X +42,Y -13: GOSUB 2660
  180. 1730  IF SD(J +1,K -2) = ER  THEN  XDRAW ER AT X +42,Y -39: GOSUB 2660
  181. 1740  RETURN 
  182. 1750  REM  DRAW UP RIGHT 4 SQUARES
  183. 1760  IF SD(J,K -1) < >PR  THEN  XDRAW PR AT X +14,Y -13: FOR H = 1 TO 10:SO =  PEEK(S) - PEEK(S) + PEEK(S) - PEEK(S) + PEEK(S) - PEEK(S): NEXT : GOSUB 2700
  184. 1770  IF SD(J,K -2) < >PR  THEN  XDRAW PR AT X +14,Y -39: FOR H = 1 TO 5:SO =  PEEK(S) - PEEK(S) + PEEK(S) - PEEK(S): NEXT : GOSUB 2700
  185. 1780  IF SD(J +1,K -1) < >PR  THEN  XDRAW PR AT X +42,Y -13: FOR H = 1 TO 15:SO =  PEEK(S) - PEEK(S): NEXT : GOSUB 2700
  186. 1790  IF SD(J +1,K -2) < >PR  THEN  XDRAW PR AT X +42,Y -39: FOR H = 1 TO 8:SO =  PEEK(S) - PEEK(S) + PEEK(S) - PEEK(S) + PEEK(S) - PEEK(S): NEXT : GOSUB 2700
  187. 1800 SD(J,K -1) = PR:SD(J,K -2) = PR:SD(J +1,K -1) = PR:SD(J +1,K -2) = PR: RETURN 
  188. 1810  REM  ERASE UP LEFT 4 SQUARE
  189. 1820  IF SD(J -2,K -2) = ER  THEN  XDRAW ER AT X -42,Y -39: GOSUB 2660
  190. 1830  IF SD(J -1,K -2) = ER  THEN  XDRAW ER AT X -14,Y -39: GOSUB 2660
  191. 1840  IF SD(J -2,K -1) = ER  THEN  XDRAW ER AT X -42,Y -13: GOSUB 2660
  192. 1850  IF SD(J -1,K -1) = ER  THEN  XDRAW ER AT X -14,Y -13: GOSUB 2660
  193. 1860  RETURN 
  194. 1870  REM  DRAW UP LEFT 4 SQUARES
  195. 1880  IF SD(J -2,K -2) < >PR  THEN  XDRAW PR AT X -42,Y -39: FOR H = 1 TO 5:SO =  PEEK(S) - PEEK(S) + PEEK(S) - PEEK(4): NEXT : GOSUB 2700
  196. 1890  IF SD(J -1,K -2) < >PR  THEN  XDRAW PR AT X -14,Y -39: FOR H = 1 TO 3:SO =  PEEK(S) - PEEK(S): NEXT : GOSUB 2700
  197. 1900  IF SD(J -2,K -1) < >PR  THEN  XDRAW PR AT X -42,Y -13: FOR H = 1 TO 7:SO =  PEEK(S) - PEEK(S) + PEEK(S) - PEEK(S) + PEEK(S): NEXT : GOSUB 2700
  198. 1910  IF SD(J -1,K -1) < >PR  THEN  XDRAW PR AT X -14,Y -13: FOR H = 1 TO 5:SO =  PEEK(S) - PEEK(S): NEXT : GOSUB 2700
  199. 1920 SD(J -2,K -2) = PR:SD(J -1,K -2) = PR:SD(J -2,K -1) = PR:SD(J -1,K -1) = PR: RETURN 
  200. 1930  REM  ERASE DOWN RIGHT 4 SQUARES
  201. 1940  IF SD(J,K) = ER  THEN  XDRAW ER AT X +14,Y +13: GOSUB 2660
  202. 1950  IF SD(J +1,K) = ER  THEN  XDRAW ER AT X +42,Y +13: GOSUB 2660
  203. 1960  IF SD(J,K +1) = ER  THEN  XDRAW ER AT X +14,Y +39: GOSUB 2660
  204. 1970  IF SD(J +1,K +1) = ER  THEN  XDRAW ER AT X +42,Y +39: GOSUB 2660
  205. 1980  RETURN 
  206. 1990  REM  DRAW DOWN RIGHT 4 SQUARES
  207. 2000  IF SD(J,K) < >PR  THEN  XDRAW PR AT X +14,Y +13: FOR H = 1 TO 8:SO =  PEEK(S) - PEEK(S) + PEEK(S): NEXT : GOSUB 2700
  208. 2010  IF SD(J +1,K) < >PR  THEN  XDRAW PR AT X +42,Y +13: FOR H = 1 TO 3:SO =  PEEK(S) + PEEK(S) - PEEK(S) + PEEK(S): NEXT : GOSUB 2700
  209. 2020  IF SD(J,K +1) < >PR  THEN  XDRAW PR AT X +14,Y +39: FOR H = 1 TO 4:SO =  PEEK(S) - PEEK(S): NEXT : GOSUB 2700
  210. 2030  IF SD(J +1,K +1) < >PR  THEN  XDRAW PR AT X +42,Y +39: FOR H = 1 TO 9:SO =  PEEK(S) - PEEK(S) + PEEK(S) - PEEK(S): NEXT : GOSUB 2700
  211. 2040 SD(J,K) = PR:SD(J +1,K) = PR:SD(J,K +1) = PR:SD(J +1,K +1) = PR: RETURN 
  212. 2050  REM  ERASE DOWN LEFT 4 SQUARES
  213. 2060  IF SD(J -2,K) = ER  THEN  XDRAW ER AT X -42,Y +13: GOSUB 2660
  214. 2070  IF SD(J -2,K +1) = ER  THEN  XDRAW ER AT X -42,Y +39: GOSUB 2660
  215. 2080  IF SD(J -1,K) = ER  THEN  XDRAW ER AT X -14,Y +13: GOSUB 2660
  216. 2090  IF SD(J -1,K +1) = ER  THEN  XDRAW ER AT X -14,Y +39: GOSUB 2660
  217. 2100  RETURN 
  218. 2110  REM  DRAW DOWN LEFT 4 SQUARES
  219. 2120  IF SD(J -2,K) < >PR  THEN  XDRAW PR AT X -42,Y +13: FOR H = 1 TO 3:SO =  PEEK(S) - PEEK(S) + PEEK(S) - PEEK(S) + PEEK(S) - PEEK(S): NEXT : GOSUB 2700
  220. 2130  IF SD(J -2,K +1) < >PR  THEN  XDRAW PR AT X -42,Y +39: FOR H = 1 TO 5:SO =  PEEK(S) - PEEK(S) + PEEK(S): NEXT : GOSUB 2700
  221. 2140  IF SD(J -1,K) < >PR  THEN  XDRAW PR AT X -14,Y +13: FOR H = 1 TO 8:SO =  PEEK(S) - PEEK(S) + PEEK(S) - PEEK(S) + PEEK(S): NEXT : GOSUB 2700
  222. 2150  IF SD(J -1,K +1) < >PR  THEN  XDRAW PR AT X -14,Y +39: FOR H = 1 TO 6:SO =  PEEK(S) - PEEK(S) + PEEK(S) - PEEK(S) + PEEK(S) - PEEK(S): NEXT : GOSUB 2700
  223. 2160 SD(J -2,K) = PR:SD(J -2,K +1) = PR:SD(J -1,K) = PR:SD(J -1,K +1) = PR: RETURN 
  224. 2170  REM  ERASE UP MID 4 SQUARES
  225. 2180  IF SD(J -1,K -2) = ER  THEN  XDRAW ER AT X -14,Y -39: GOSUB 2660
  226. 2190  IF SD(J -1,K -1) = ER  THEN  XDRAW ER AT X -14,Y -13: GOSUB 2660
  227. 2200  IF SD(J,K -2) = ER  THEN  XDRAW ER AT X +14,Y -39: GOSUB 2660
  228. 2210  IF SD(J,K -1) = ER  THEN  XDRAW ER AT X +14,Y -13: GOSUB 2660
  229. 2220  RETURN 
  230. 2230  REM  DRAW UP MID 4 SQUARES
  231. 2240  IF SD(J -1,K -2) < >PR  THEN  XDRAW PR AT X -14,Y -39: FOR H = 1 TO 3:SO =  PEEK(S) - PEEK(S): NEXT : GOSUB 2700
  232. 2250  IF SD(J -1,K -1) < >PR  THEN  XDRAW PR AT X -14,Y -13: FOR H = 1 TO 8:SO =  PEEK(S) - PEEK(S) + PEEK(S): NEXT : GOSUB 2700
  233. 2260  IF SD(J,K -2) < >PR  THEN  XDRAW PR AT X +14,Y -39: FOR H = 1 TO 3:SO =  PEEK(S) - PEEK(S): NEXT : GOSUB 2700
  234. 2270  IF SD(J,K -1) < >PR  THEN  XDRAW PR AT X +14,Y -13: FOR H = 1 TO 3:SO =  PEEK(S) - PEEK(S) + PEEK(S) - PEEK(S): NEXT : GOSUB 2700
  235. 2280 SD(J -1,K -2) = PR:SD(J -1,K -1) = PR:SD(J,K -2) = PR:SD(J,K -1) = PR: RETURN 
  236. 2290  REM  ERASE DOWN MID 4 SQUARES
  237. 2300  IF SD(J -1,K) = ER  THEN  XDRAW ER AT X -14,Y +13: GOSUB 2660
  238. 2310  IF SD(J -1,K +1) = ER  THEN  XDRAW ER AT X -14,Y +39: GOSUB 2660
  239. 2320  IF SD(J,K) = ER  THEN  XDRAW ER AT X +14,Y +13: GOSUB 2660
  240. 2330  IF SD(J,K +1) = ER  THEN  XDRAW ER AT X +14,Y +39: GOSUB 2660
  241. 2340  RETURN 
  242. 2350  REM  DRAW DOWN MID 4 SQUARES
  243. 2360  IF SD(J -1,K) < >PR  THEN  XDRAW PR AT X -14,Y +13: FOR H = 1 TO 6:SO =  PEEK(S) - PEEK(S) + PEEK(S) - PEEK(S) + PEEK(S): NEXT : GOSUB 2700
  244. 2370  IF SD(J -1,K +1) < >PR  THEN  XDRAW PR AT X -14,Y +39: FOR H = 1 TO 4:SO =  PEEK(S) - PEEK(S) + PEEK(S): NEXT : GOSUB 2700
  245. 2380  IF SD(J,K) < >PR  THEN  XDRAW PR AT X +14,Y +13: FOR H = 1 TO 5:SO =  PEEK(S) - PEEK(S) + PEEK(S): NEXT : GOSUB 2700
  246. 2390  IF SD(J,K +1) < >PR  THEN  XDRAW PR AT X +14,Y +39: FOR H = 1 TO 4:SO =  PEEK(S) - PEEK(S) + PEEK(S) - PEEK(S) + PEEK(S) - PEEK(S): NEXT : GOSUB 2700
  247. 2400 SD(J -1,K) = PR:SD(J -1,K +1) = PR:SD(J,K) = PR:SD(J,K +1) = PR: RETURN 
  248. 2410  REM  ERASE RIGHT MID 4 SQUARES
  249. 2420  IF SD(J,K -1) = ER  THEN  XDRAW ER AT X +14,Y -13: GOSUB 2660
  250. 2430  IF SD(J +1,K -1) = ER  THEN  XDRAW ER AT X +42,Y -13: GOSUB 2660
  251. 2440  IF SD(J,K) = ER  THEN  XDRAW ER AT X +14,Y +13: GOSUB 2660
  252. 2450  IF SD(J +1,K) = ER  THEN  XDRAW ER AT X +42,Y +13: GOSUB 2660
  253. 2460  RETURN 
  254. 2470  REM  DRAW RIGHT MID 4 SQUARES
  255. 2480  IF SD(J,K -1) < >PR  THEN  XDRAW PR AT X +14,Y -13: FOR H = 1 TO 7:SO =  PEEK(S) - PEEK(S): NEXT : GOSUB 2700
  256. 2490  IF SD(J +1,K -1) < >PR  THEN  XDRAW PR AT X +42,Y -13: FOR H = 1 TO 3:SO =  PEEK(S) - PEEK(S) + PEEK(S) - PEEK(S) + PEEK(S): NEXT : GOSUB 2700
  257. 2500  IF SD(J,K) < >PR  THEN  XDRAW PR AT X +14,Y +13: FOR H = 1 TO 8:SO =  PEEK(S) - PEEK(S) + PEEK(S): NEXT : GOSUB 2700
  258. 2510  IF SD(J +1,K) < >PR  THEN  XDRAW PR AT X +42,Y +13: FOR H = 1 TO 4:SO =  PEEK(S) - PEEK(S) + PEEK(S) - PEEK(S) + PEEK(S): NEXT : GOSUB 2700
  259. 2520 SD(J,K -1) = PR:SD(J +1,K -1) = PR:SD(J,K) = PR:SD(J +1,K) = PR: RETURN 
  260. 2530  REM  ERASE LEFT MID 4 SQUARES
  261. 2540  IF SD(J -2,K -1) = ER  THEN  XDRAW ER AT X -42,Y -13: GOSUB 2660
  262. 2550  IF SD(J -1,K -1) = ER  THEN  XDRAW ER AT X -14,Y -13: GOSUB 2660
  263. 2560  IF SD(J -2,K) = ER  THEN  XDRAW ER AT X -42,Y +13: GOSUB 2660
  264. 2570  IF SD(J -1,K) = ER  THEN  XDRAW ER AT X -14,Y +13: GOSUB 2660
  265. 2580  RETURN 
  266. 2590  REM  DRAW LEFT MID 4 SQUARES
  267. 2600  IF SD(J -2,K -1) < >PR  THEN  XDRAW PR AT X -42,Y -13: FOR H = 1 TO 8:SO =  PEEK(S) - PEEK(S): NEXT : GOSUB 2700
  268. 2610  IF SD(J -1,K -1) < >PR  THEN  XDRAW PR AT X -14,Y -13: FOR H = 1 TO 3:SO =  PEEK(S) - PEEK(S) + PEEK(S) - PEEK(S) + PEEK(S): NEXT : GOSUB 2700
  269. 2620  IF SD(J -2,K) < >PR  THEN  XDRAW PR AT X -42,Y +13: FOR H = 1 TO 4:SO =  PEEK(S) - PEEK(S): NEXT : GOSUB 2700
  270. 2630  IF SD(J -1,K) < >PR  THEN  XDRAW PR AT X -14,Y +13: FOR H = 1 TO 5:SO =  PEEK(S) - PEEK(S) + PEEK(S) - PEEK(S) + PEEK(S) - PEEK(S): NEXT : GOSUB 2700
  271. 2640 SD(J -2,K -1) = PR:SD(J -1,K -1) = PR:SD(J -2,K) = PR:SD(J -1,K) = PR: RETURN 
  272. 2650  REM  SUB CHIP COUNT WHEN ERASE DRAWING
  273. 2660  IF ER = 3  THEN FC = FC -1: REM  FIRST PLAYER
  274. 2670  IF ER = 4  THEN SC = SC -1: REM  SECOND PLAYER
  275. 2680  RETURN 
  276. 2690  REM  ADD CHIP COUNT WHEN DRAWING        
  277. 2700  IF PR = 3  THEN FC = FC +1: REM  FIRST PLAYER
  278. 2710  IF PR = 4  THEN SC = SC +1: REM  SECOND PLAYER
  279. 2720  RETURN 
  280. 2730  REM  GAME OVER
  281. 2740 PT = PT +FC: REM  UPDATE PLAYER 1 TOTAL
  282. 2750 QT = QT +SC: REM  UPDATE PLAYER 2 TOTAL
  283. 2760  IF T = 0  THEN  XDRAW 3 AT 15,60
  284. 2770  IF T = 1  THEN  XDRAW 4 AT 270,60
  285. 2780  FOR H = 1 TO 10: PRINT  CHR$(7): NEXT : FOR H = 1 TO 1500: NEXT 
  286. 2790  IF FC >SC  THEN  XDRAW 4 AT 270,60: ROT= 16: XDRAW 4 AT 270,60: FOR H = 1 TO 1500: NEXT 
  287. 2800  IF SC >FC  THEN  XDRAW 3 AT 15,60: ROT= 16: XDRAW 3 AT 15,60: FOR H = 1 TO 1500: NEXT 
  288. 2810  TEXT : HOME : RESTORE 
  289. 2820  VTAB 8: HTAB 13: PRINT "TOTAL SCORES:"
  290. 2830  VTAB 10: HTAB 13: PRINT NA$(1)"--"PT;: HTAB 26: PRINT NA$(2)"--"QT
  291. 2840  POKE  -16368,0: REM  RESET KBD
  292. 2850  VTAB 15: PRINT "PLAY AGAIN?";: GET A$: PRINT A$
  293. 2860  IF A$ < >"Y"  THEN 2910
  294. 2870  POKE  -16368,0: PRINT "CHANGE PLAYER?(Y/N) ";: GET A$: PRINT A$
  295. 2880  IF A$ = "Y"  THEN 180
  296. 2890  IF A$ < >"N"  THEN 2870
  297. 2900  HOME : GOTO 220
  298. 2910  HOME : END 
  299. 2920  REM  ROUTINE FOR ERASE OR DRAW SCORE
  300. 2930 C$ =  STR$(C): FOR J = 1 TO  LEN(C$)
  301. 2940  XDRAW  VAL( MID$ (C$,J,1)) +5 AT (X -7) +(J *7),Y
  302. 2950  NEXT J
  303. 2960  RETURN 
  304. 2970  REM  DRAW GAME BOARD
  305. 2980  FOR X = 44 TO 240  STEP 28
  306. 2990  FOR Y = 5 TO 188  STEP 10
  307. 3000  HPLOT X,Y TO X,Y +3
  308. 3010  NEXT : NEXT 
  309. 3020 X = 13312: GOSUB 3100
  310. 3030 X = 15744: GOSUB 3100
  311. 3040 X = 10112: GOSUB 3100
  312. 3050 X = 11560: GOSUB 3100
  313. 3060 X = 13992: GOSUB 3100
  314. 3070 X = 15440: GOSUB 3100
  315. 3080 X = 9808: GOSUB 3100
  316. 3090 X = 12240: GOSUB 3100
  317. 3100  FOR I = X +7 TO X +34  STEP 2
  318. 3110  POKE I,170
  319. 3120  NEXT : RETURN 
  320. 3130  REM  SHAPE TABLE
  321. 3140  DATA    14,0,30,0,44,0,58,0,94,0,131,0,145,0,153,0,163,0,175,0,185,0,197,0,208,0,217, 0,228,0,58,36,45,54,62,63,36,36,45,45,54,54,6,0: REM  TOTAL 44
  322. 3150  DATA   46,44,46,44,46,44,46,36,172,46,62,62,54,0: REM  TOTAL 14
  323. 3160  DATA   32,36,63,36,45,45,54,191,210,63,191,54,37,44,45,45,44,45,21,54,39,60,63,54,54,54,45,62,255,63,44,37,36,36,4,0: REM  TOTAL 36
  324. 3170  DATA  36,8,24,56,191,23,110,48,13,24,24,77,40,46,14,254,48,158,58,247,104,9,23,63,94,49,23,23,23,79,37,12,53,173,63,55,0 : REM  TOTAL 37
  325. 3180  DATA   12,37,28,63,23,54,46,30,14,45,5,36,4,0,36,188,150,18,45,28,36,0 : REM  TOTAL 22
  326. 3190  DATA   101,228,63,23,150,241,46,45,37,0,12,12,60,63,183,146,21,45,12,228,7,0 : REM  TOTAL 22
  327. 3200  DATA  58,39,12,12,12,54,174,55,62,0,56,39,44,45,245,170,54,23,63,28,4,0
  328. 3210  DATA   117,246,63,28,36,229,12,12,45,6,0,12,12,60,63,183,82,30,46,0 : REM  TOTAL 20
  329. 3220  DATA   231,100,45,21,246,14,246,63,28,36,0,231,100,45,21,54,119,30,30,63,4,0 : REM  TOTAL 22
  330. 3230  REM  INSTRUCTIONS
  331. 3240  HOME : VTAB 3: PRINT "ON A 7 X 7 CHECKER BOARD OF DASH LINES, CONNECT DOTS INTO SQUARES.  WHEN A LINE COMPLETES A UNIT SQUARE ,OR SQUARE THAT CONTAINS FOUR UNIT SQUARES,  THE PLAYER OCCUPIES ALL THE SQUARES ENCLOSED.": PRINT 
  332. 3250  PRINT "THE PLAYERS MAY WISH TO TAKE TURNS."
  333. 3260  PRINT "OR THE RULE IS WHOEVER INCREASES POINTS MUST KEEP ON GOING.": PRINT : PRINT 
  334. 3270  PRINT "THE DIRECTION OF THE TRACING CURSOR IS  CONTROLLED BY ARROW KEYS. KEY 'A' MOVES CURSOR TO HOME POSITION. KEY 'Z' TO LOW RIGHT CORNER. KEY 'SPACE BAR' TO SELECT DIRECTION TO FORM THE LINE."
  335. 3280  INVERSE : VTAB 23: PRINT "PRESS RETURN TO CONTINUE": NORMAL 
  336. 3290 K =  PEEK(49152): IF K <128  THEN 3290
  337. 3300 K =  PEEK(49168): RETURN 
  338. 3310  REM  GET PLAYER'S NAME 
  339. 3320 A$ = ""
  340. 3330  GET B$
  341. 3340  IF B$ =  CHR$(13)  AND  LEN(A$) = 0  THEN 3330
  342. 3350  IF B$ =  CHR$(13)  THEN  PRINT : RETURN 
  343. 3360  IF B$ =  CHR$(8)  THEN 3390
  344. 3370  IF B$ < CHR$(91)  OR B$ > CHR$(64)  THEN A$ = A$ +B$: PRINT B$;: GOTO 3330
  345. 3380  GOTO 3420
  346. 3390  IF  LEN(A$) = 0  THEN 3330
  347. 3400  PRINT B$" "B$;: IF  LEN(A$) = 1  THEN A$ = "": GOTO 3330
  348. 3410 A$ =  LEFT$(A$, LEN(A$) -1): GOTO 3330
  349. 3420  PRINT  CHR$(7): GOTO 3330