home *** CD-ROM | disk | FTP | other *** search
/ Softdisk G-S 119 / SGDS 119.2mg / SDGS.119 / A / MYSTERY (.txt) < prev    next >
Encoding:
Applesoft BASIC Source Code  |  1991-08-05  |  5.9 KB  |  151 lines  |  [FC] Applesoft BASIC Program (0x0801)

  1. 1  LOMEM: 31232:GS = 0:BA = 1
  2. 3  TEXT : PRINT  CHR$(21)
  3. 10 D$ =  CHR$(4): HGR : HGR2 : GOTO 1000
  4. 19  REM draw a tree at x,y coordinate
  5. 20  POKE 2,X: POKE 3,Y: POKE 1,0
  6. 30  POKE 0,S: CALL ML +9: RETURN 
  7. 50  POKE  -16299,0: POKE 230,64: POKE 0,P: CALL ML +12
  8. 60 P =  PEEK(0): IF P = 1  THEN  GOSUB 4000: GOTO 50
  9. 65  HGR : POKE  -16302,0
  10. 70  IF P = 2  THEN  POP :QT = 0: GOTO 1040
  11. 71  IF   NOT P  THEN  RETURN 
  12. 75  RETURN 
  13. 90  VTAB 24: HTAB 1: PRINT "    Press ESC to quit, '?' for help.    ": RETURN 
  14. 99  REM show and draw on page 1
  15. 100  POKE  -16300,0: POKE 230,32: RETURN 
  16. 600  REM PANACEA INPUT ANYTHING
  17. 601  FOR I = 0 TO  LEN(IN$):IN$(I) =  MID$ (IN$,I +1,1): PRINT IN$(I);: NEXT :T$ = IN$
  18. 602  FOR IN = 11 TO  LEN(IN$)  STEP  -1:IN$(IN) = " ": NEXT :IN = IN +1
  19. 620  POKE 50,63 +192 *( PEEK(50) = 63): PRINT IN$(IN) CHR$(8);:T =  PEEK(49152): IF T <128  THEN 620
  20. 630  NORMAL : PRINT IN$(IN) CHR$(8);:T = T -128: POKE 49168,0: IF T >31  AND T <127  THEN IN$(IN) =  CHR$(T -32 *(T >96  AND T <123)): PRINT IN$(IN);:IN = IN +1: IF IN = 11  THEN IN = 10: PRINT  CHR$(8);
  21. 640  IF (T = 8  OR T = 4  OR T = 127)  AND (IN >0)  THEN IN$(IN) = " ":IN = IN -1: PRINT " " CHR$(8) CHR$(8);
  22. 650  IF T = 27  THEN IN$ = T$: RETURN 
  23. 660  ON T < >13 GOTO 620:IN$ = "": FOR I = 0 TO IN:IN$ = IN$ +IN$(I): NEXT : IF IN = 0  THEN IN$ = "": RETURN 
  24. 670 IN$ =  LEFT$(IN$, LEN(IN$) -1)
  25. 672  IF  LEFT$(IN$,1) = " "  AND  LEN(IN$) >1  THEN IN$ =  RIGHT$(IN$, LEN(IN$) -1): GOTO 672
  26. 675  IF  RIGHT$(IN$,1) = " "  AND  LEN(IN$) >1  THEN IN$ =  LEFT$(IN$, LEN(IN$) -1): GOTO 675
  27. 700  RETURN 
  28. 999  REM main
  29. 1000  DIM HS$(5,5),HS(5,5),MS$(2),NM$(99),SC(99,2,2),IN$(99),P%(99)
  30. 1001 ML = 25859:MS$(0) = "Small ":MS$(1) = "Medium":MS$(2) = "Large "
  31. 1005  GOSUB 100
  32. 1020  PRINT D$"bloadMM7.SHP,a$6000": PRINT D$"-MM7": POKE 48688, PEEK(0): POKE 48689, PEEK(1)
  33. 1021  GOTO 20000:TR = NR
  34. 1025  GOSUB 6000
  35. 1040  GOSUB 7000
  36. 1045  GOSUB 3000
  37. 1050  GOSUB 5000: GOSUB 90
  38. 1060  POKE ML,(BA = 1): POKE ML +1,GS: POKE  -16299,0: POKE 230,64
  39. 1070  CALL ML +15: GOSUB 50
  40. 1400 :
  41. 1410 S1 =  PEEK(7) *1000 + PEEK(5) *100 + PEEK(3) *10 + PEEK(1)
  42. 1415 S2 =  PEEK(8) *1000 + PEEK(6) *100 + PEEK(4) *10 + PEEK(2)
  43. 1430  IF S1 = 0  THEN 1040
  44. 1440 IN$ = P1$: GOSUB 2000: IF   NOT (IN)  THEN NR = NR +1:RC = NR:IN = NR:NM$(IN) = IN$: GOTO 1451
  45. 1450  PRINT D$"openmm7.hs,l128": PRINT D$"readmm7.hs,r"IN: INPUT NM$: FOR I = 0 TO 2: FOR J = 0 TO 2: INPUT SC(IN,I,J): NEXT : NEXT : PRINT D$"close"
  46. 1451  IF S1 <S2  THEN SC(IN,GS,1) = SC(IN,GS,1) +1
  47. 1452 SC(IN,GS,2) = SC(IN,GS,2) +S1
  48. 1453  IF S1 =  >S2  THEN SC(IN,GS,0) = SC(IN,GS,0) +1
  49. 1454  PRINT D$"open mm7.hs,l128": PRINT D$"write mm7.hs,r0": PRINT NR: PRINT D$"write mm7.hs,r"IN: PRINT IN$: FOR I = 0 TO 2: FOR J = 0 TO 2: PRINT SC(IN,I,J): NEXT : NEXT : PRINT D$"close"
  50. 1460 IN$ = P2$: GOSUB 2000: IF   NOT (IN)  THEN NR = NR +1:RC = NR:IN = NR:NM$(IN) = IN$: FOR I = 0 TO 2: FOR J = 0 TO 2:SC(IN,I,J) = 0: NEXT : NEXT : GOTO 1471
  51. 1470  PRINT D$"open mm7.hs,l128": PRINT D$"read mm7.hs,r"IN: INPUT NM$: FOR I = 0 TO 2: FOR J = 0 TO 2: INPUT SC(IN,I,J): NEXT : NEXT : PRINT D$"close"
  52. 1471  IF S2 <S1  THEN SC(IN,GS,1) = SC(IN,GS,1) +1
  53. 1472 SC(IN,GS,2) = SC(IN,GS,2) +S2
  54. 1473  IF S2 =  >S1  THEN SC(IN,GS,0) = SC(IN,GS,0) +1
  55. 1474  PRINT D$"open mm7.hs,l128": PRINT D$"write mm7.hs,r0": PRINT NR: PRINT D$"write mm7.hs,r"IN: PRINT IN$: FOR I = 0 TO 2: FOR J = 0 TO 2: PRINT SC(IN,I,J): NEXT : NEXT : PRINT D$"close"
  56. 1480  GOTO 1040
  57. 1999  REM high score stuff
  58. 2000 IN = 0: FOR I = 1 TO NR: IF NM$(I) = IN$  THEN IN = I:I = NR
  59. 2010  NEXT : RETURN 
  60. 2500 :
  61. 2505  PRINT  CHR$(20): PRINT  CHR$(12): VTAB 1: HTAB 10: PRINT "The Best Quadrilators"
  62. 2506  VTAB 24: HTAB 9: PRINT "Press a key to continue": POKE 35,23
  63. 2510  PRINT D$"open mm7.hs,l128": PRINT D$"read mm7.hs,r0": INPUT NR: IF   NOT NR  THEN 2700
  64. 2515  VTAB 5: HTAB 1: PRINT "Name" SPC( 10)"W/L" SPC( 4)"pct" SPC( 2)"Average points": POKE 34,5
  65. 2520  FOR K = 1 TO NR: PRINT D$"read mm7.hs,r"K: INPUT NM$(K): FOR I = 0 TO 2: FOR J = 0 TO 2: INPUT SC(K,I,J): NEXT : NEXT 
  66. 2530  NEXT : PRINT D$"close"
  67. 2540  FOR K = 0 TO 2: PRINT  CHR$(12): VTAB 3: HTAB 12: PRINT "Grid size: "MS$(K)
  68. 2543  FOR I = 1 TO NR:A = SC(I,K,0) +SC(I,K,1): IF A = 0  THEN A = 1
  69. 2545 P%(I) = SC(I,K,0)/A *1000: NEXT 
  70. 2550  FOR L = 1 TO 15:M =  -1:W =  -1E6: FOR J = 1 TO NR: IF P%(J) >M  THEN M = P%(J):N = J
  71. 2560  NEXT : VTAB L +5: HTAB 1: PRINT NM$(N);:A$ = "     " + STR$(SC(N,K,0)): HTAB 11: PRINT  RIGHT$(A$,5)"/"SC(N,K,1) SPC( 3 +(P%(N) <1000) +(P%(N) <100) +(P%(N) <10))P%(N);
  72. 2565 A = SC(N,K,0) +SC(N,K,1): IF A = 0  THEN A = 1
  73. 2570 A = SC(N,K,2)/A:A = A *100:A =  INT(A):A = A/100: PRINT  SPC( 5 +(A <1000) +(A <100) +(A <10))A
  74. 2580 P%(N) =  -100: IF L = NR  THEN L = 15
  75. 2590  NEXT : GET A$: PRINT  CHR$(12): NEXT 
  76. 2600  GOTO 2710
  77. 2700  PRINT D$"close": VTAB 10: HTAB 9: PRINT "There are no scores yet!": GET A$
  78. 2710  PRINT  CHR$(20) CHR$(12): GOTO 7000
  79. 2999  REM GET PLAYER NAMES
  80. 3000  VTAB 17: HTAB 26: PRINT " "
  81. 3010  VTAB 17: HTAB 8: PRINT "Player 1's name: ";:IN$ = P1$: GOSUB 600:P1$ = IN$
  82. 3015  IF BA = 2  AND P2$ = "P ROKITSKI"  THEN P2$ = ""
  83. 3020  IF BA = 2  THEN  VTAB 18: HTAB 8: PRINT "Player 2's name: ";:IN$ = P2$: GOSUB 600:P2$ = IN$
  84. 3030  IF BA = 1  THEN P2$ = "P ROKITSKI"
  85. 3040  POKE 0, RND(1) *2: RETURN 
  86. 3999  REM instructions
  87. 4000  POKE 230,32: PRINT  CHR$(20) CHR$(12): POKE  -16300,0
  88. 4010  PRINT " Play tiles to overlap as many squares  as possible. ALL overlapping squares    must match colors. You get 1 point for"
  89. 4015  PRINT "overlapping one square, 2 for two, 4 forthree and 16 for all four. These values are increased as the game progresses."
  90. 4020  PRINT " To move, use:": HTAB 14: PRINT "   A    &    8": HTAB 14: PRINT "  % #  % #  4 6": HTAB 14: PRINT "   Z or $ or 2"
  91. 4030  PRINT " Move up and down to highlight a piece  at the right; move left to put it onto  the board. If you move a piece all the  way right, you can pick a new piece."
  92. 4044  PRINT : PRINT " When the piece is where you want it,   press SPACE to drop it. If you get a    beep, you can't drop it there!"
  93. 4045  PRINT : PRINT " You may pass any turn by pressing 'P.' The game ends when both players pass    consecutively."
  94. 4046  VTAB 24: HTAB 8: PRINT "Press any key to continue."
  95. 4050  POKE 49168,0
  96. 4060  IF  PEEK(49152) <128  THEN 4060
  97. 4070  POKE 49168,0: GOSUB 6000: GOTO 90
  98. 4999  REM DRAW THE BOARD
  99. 5000  RETURN 
  100. 5999  REM TITLE PAGE
  101. 6000  GOSUB 100: PRINT  CHR$(20) CHR$(12): HTAB 5: VTAB 1: PRINT "[";: FOR I = 1 TO 30: PRINT "\";: NEXT : PRINT "]"
  102. 6001  FOR I = 2 TO 21: VTAB I: HTAB 5: PRINT "}";: HTAB 36: PRINT "^";: NEXT 
  103. 6002  VTAB 22: HTAB 5: PRINT "{";: FOR I = 1 TO 30: PRINT "`";: NEXT : PRINT "_"
  104. 6005  POKE 32,5: POKE 33,30: POKE 34,1: POKE 35,21: PRINT  CHR$(12)
  105. 6006  HCOLOR= 6: HPLOT 35,86 TO 244,86
  106. 6008  FOR I = 5 TO 34  STEP 4: POKE 2,I: POKE 3,57: POKE 0, RND(1) *4: CALL ML +9
  107. 6009  POKE 2,I: POKE 3,70: POKE 0, RND(1) *4: CALL ML +9: NEXT 
  108. 6020  VTAB 3: HTAB 10: PRINT "Quadrilation": HTAB 15: PRINT "by": HTAB 9: PRINT "Peter Rokitski"
  109. 6025  PRINT : PRINT "  Original by DAVE JOHANNSEN": PRINT : PRINT 
  110. 6030  PRINT : PRINT : HTAB 1: PRINT "Copyright 1991 Softdisk, Inc.": HTAB 5: PRINT "All rights reserved."
  111. 6040  HTAB 6: PRINT "Published on  119.": HTAB 1: PRINT "Subscriptions: 1-800-831-2694"
  112. 6050  PRINT : HTAB 1: PRINT "Changing this notice is quite": HTAB 6: PRINT "illegal, you know."
  113. 6060  PRINT : HTAB 4: PRINT "Press a key to continue."
  114. 6070  IF  PEEK(49152) <128  THEN 6070
  115. 6080  POKE 49168,0: POKE 34,0: POKE 35,24: POKE 32,0: POKE 33,40
  116. 6090  RETURN 
  117. 6999  REM MAIN MENU
  118. 7000  GOSUB 100: GOSUB 90: PRINT  CHR$(20): HTAB 5: VTAB 1: PRINT "[";: FOR I = 1 TO 30: PRINT "\";: NEXT : PRINT "]"
  119. 7001  FOR I = 2 TO 21: VTAB I: HTAB 5: PRINT "}";: HTAB 36: PRINT "^";: NEXT 
  120. 7002  VTAB 22: HTAB 5: PRINT "{";: FOR I = 1 TO 30: PRINT "`";: NEXT : PRINT "_"
  121. 7005  POKE 32,5: POKE 33,30: POKE 34,3: POKE 35,21: PRINT  CHR$(12): POKE 32,13: POKE 33,22: PRINT  CHR$(12)
  122. 7006  VTAB 3: HTAB 2: PRINT "Quadrilation"
  123. 7008  VTAB 7: PRINT "  Main Menu": VTAB 17: PRINT "Which number?
  124. 7010  VTAB 10: PRINT "1. Players: "BA: PRINT "2. Mat Size: "MS$(GS): PRINT "3. Play": PRINT "4. High Scores": PRINT "5. Quit"
  125. 7020 P =  PEEK(49152): IF P <128  THEN 7020
  126. 7025  POKE 49168,0
  127. 7040  IF P = 191  OR P = 175  THEN  PRINT  CHR$(20): GOSUB 4000: GOTO 7000
  128. 7050  IF P = 177  THEN BA = BA +1: IF BA = 3  THEN BA = 1
  129. 7065  IF P = 181  OR P = 155  THEN  PRINT  CHR$(20): GOSUB 8000: GOTO 7000
  130. 7066  IF P = 179  THEN  PRINT  CHR$(20): RETURN 
  131. 7067  IF P = 180  THEN  GOTO 2500
  132. 7070  IF P < >178  THEN 7010
  133. 7080 GS = GS +1: IF GS = 3  THEN GS = 0
  134. 7090  GOTO 7010
  135. 7999  REM QUIT
  136. 8000  POKE 34,23: PRINT  CHR$(12): VTAB 24: HTAB 8: PRINT "Do you want to quit? (Y/N)": POKE 49168,0
  137. 8010 P =  PEEK(49152): IF P <128  THEN 8010
  138. 8020  POKE 34,1: POKE 49168,0: IF P = 206  OR P = 238  THEN  GOTO 90
  139. 8030  IF P < >217  AND P < >249  THEN 8010
  140. 8040  PRINT D$"bye"
  141. 20000  REM READ HIGH SCORES
  142. 20010 NR = 0: ONERR  GOTO 20060
  143. 20020  PRINT D$"open mm7.HS,L128": PRINT D$"READ mm7.HS,R0": INPUT NR: IF   NOT NR  THEN 20060
  144. 20025  IF RC  THEN  PRINT D$"READ mm7.HS,R"RC: INPUT NM$: FOR I = 0 TO 2: FOR J = 0 TO 2: INPUT SC(I,J): NEXT : NEXT : GOTO 20060
  145. 20030  FOR I = 1 TO NR: PRINT D$"READ mm7.HS,R"I: INPUT NM$(I): NEXT 
  146. 20060  PRINT D$"CLOSE": POKE 216,0: IF NR  THEN 1025
  147. 30000  REM WRITE HIGH SCORES
  148. 30010  ONERR  GOTO 30050
  149. 30020  PRINT D$"OPEN mm7.HS,L128": PRINT D$"WRITE mm7.HS,R0": PRINT "0"
  150. 30030  PRINT D$"CLOSE": GOTO 1025
  151. 30050  POKE 216,0: PRINT D$"close": GOTO 1025