home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib38a.dsk / DECEMBER.1989 / TREASURE.DIVE.bas < prev   
BASIC Source File  |  2023-02-26  |  10KB  |  151 lines

  1. 10  REM  *************************
  2. 20  REM  * TREASURE.DIVE         *
  3. 30  REM  * BY JOHN ROMERO AND    *
  4. 40  REM  * ROBERT LAVELOCK       *
  5. 50  REM  * COPYRIGHT (C) 1989    *
  6. 60  REM  * MINDCRAFT PUBL. CORP. *
  7. 70  REM  * CONCORD, MA 01742     *
  8. 80  REM  *************************
  9. 90  LOMEM: 27000:DRW = 32768:SOUND = 32786:FA$ =  CHR$(21):BA$ =  CHR$(8)
  10. 100  FOR I = 785 TO 788: READ J$: POKE I, ASC(J$) +128: NEXT : DATA W,S,J,K
  11. 110  PRINT  CHR$(21): POKE 769,203: POKE 771,1: POKE 770,101:SD = 3
  12. 120 D$ =  CHR$(4): IF  PEEK(772) = 111  THEN 160
  13. 130  POKE 772,111
  14. 140  GOSUB 1150
  15. 150  PRINT D$"BLOAD TDIVE.BIN": PRINT D$"BLOAD TDIVE.SHAPES"
  16. 160  ONERR  GOTO 180
  17. 170  PRINT D$"VERIFY TDSCORES": GOTO 190
  18. 180  ON  PEEK(222) = 4 GOTO 1510: PRINT D$"OPEN TDSCORES": PRINT D$"WRITE TDSCORES": FOR I = 1 TO 10: PRINT 0: PRINT "???": PRINT 0: NEXT : PRINT D$"CLOSE"
  19. 190  POKE 216,0: PRINT D$"OPENTDSCORES": PRINT D$"READ TDSCORES": FOR I = 1 TO 10: INPUT S(I): INPUT N$(I): INPUT L(I): NEXT : PRINT D$"CLOSE"
  20. 200  GOSUB 970: HOME 
  21. 210  HOME : VTAB 21: PRINT "TREASURE DIVE BY JOHN & ROB (C) 1989": INVERSE : PRINT "USE ARROWS TO SELECT, RETURN TO ACCEPT ": NORMAL : PRINT "( ) PLAY  ( ) SCORE ( ) FIX   ( ) QUIT";:H = 2
  22. 220  HTAB H: GET A$: IF A$ = FA$  THEN H = H +10: IF H >32  THEN H = 2
  23. 230  IF A$ = BA$  THEN H = H -10: IF H <2  THEN H = 32
  24. 240  IF A$ < > CHR$(13)  THEN 220
  25. 250  IF H = 12  THEN  GOSUB 940: GET A$: HOME : CALL  -3100: GOTO 210
  26. 260  IF H = 22  THEN 1220
  27. 270  IF H = 32  THEN  TEXT : HOME : VTAB 3: PRINT "BYE. TYPE 'RUN' TO PLAY.": END 
  28. 280 LV = 1:LL = LV: POKE 779,3: POKE 780,0: POKE 781,0: POKE 768,1:MN = 0:MM = 10
  29. 290  FOR I = 0 TO 9: POKE 35603 +I,0: NEXT 
  30. 300  POKE 784,8: POKE 783,8
  31. 310  GOSUB 890: POKE 773,0: POKE 774,35: POKE 775,5: CALL DRW: FOR I = 1 TO 19: POKE 773,I -1: CALL DRW: POKE 773,I: CALL DRW: CALL SOUND: NEXT 
  32. 320  IF LL = 5  THEN MN = 1
  33. 330  IF   NOT MN  THEN 410
  34. 340  FOR I = 0 TO 9: POKE 35603 +I,0: IF I <MN  THEN  POKE 35603 +I,1
  35. 350  IF I =  >MN  THEN 400
  36. 360 MX =  RND(1) *35:MY =  RND(1) *70 +60: POKE 35583 +I,MX: POKE 35593 +I,MY
  37. 370  POKE 773,MX: POKE 774,MY: POKE 775,6: CALL DRW
  38. 380  HCOLOR= 3: HPLOT MX *7 +5,MY +6 TO MX *7 +5,144
  39. 390  POKE 35616 +I,MX *7 +5: POKE 35626 +I,MY +6
  40. 400  NEXT 
  41. 410  FOR I = 0 TO 19:X =  RND(1) *38:Y =  RND(1) *72 +60:AS = 3 + INT( RND(1) *1.7): POKE 35348 +I,X: POKE 35368 +I,Y: POKE 35408 +I,AS: POKE 35328 +I,0: IF I <LV  THEN  POKE 35328 +I,1
  42. 420  IF I =  >LV  THEN 460
  43. 430  POKE 35388 +I,255: IF AS = 3  THEN  POKE 35388 +I,1
  44. 440 SP =  RND(1) *6 +1: POKE 35428 +I,SP: POKE 35448 +I,SP
  45. 450  POKE 773,X: POKE 774,Y: POKE 775,AS: CALL DRW
  46. 460  NEXT 
  47. 470  POKE 775,2:CX =  RND(1) *38: POKE 777,CX: POKE 773,CX: POKE 774,137: POKE 778,137: CALL DRW
  48. 480  GOSUB 920: CALL 32771
  49. 490  POKE 770,SD *50 -49
  50. 500  POKE 784,10: FOR I = 1 TO 50: POKE 783,I: CALL SOUND: NEXT 
  51. 510  CALL 32780: CALL 32774
  52. 520 RCODE =  PEEK(776): IF RC < >1  THEN 610
  53. 530  FOR I = 50 TO 1  STEP  -1: POKE 783,I: CALL SOUND: NEXT 
  54. 540  CALL 32777: CALL 32783
  55. 550  POKE 784,6: POKE 783,10
  56. 560  POKE 774,35: POKE 775,5: FOR I = 20 TO 40: POKE 773,I -1: CALL DRW: POKE 773,I: CALL DRW: CALL SOUND: NEXT : CALL DRW
  57. 570 LV = LV +1:LL = LL +1: IF LV >20  THEN LV = 20
  58. 580  IF MN  THEN MN = MN +1: IF MN >MM  THEN MN = MM
  59. 590  HOME : VTAB 21: HTAB 16: PRINT "READY??": FOR I = 1 TO 1000: NEXT 
  60. 600  GOTO 310
  61. 610  IF RC < >3  THEN 650
  62. 620  HOME : VTAB 21: INVERSE : PRINT "YOU QUIT????!!";: NORMAL : POKE 784,5: FOR I = 1 TO 10: FOR J = 10 TO 1  STEP  -1: POKE 783,J: CALL SOUND: NEXT J,I: GET A$: HOME 
  63. 630  POKE 773, PEEK(777): POKE 774, PEEK(778): POKE 775,2: CALL DRW: POKE 773,19: POKE 774,35: POKE 775,5: CALL DRW
  64. 640  CALL 32777: CALL 32783: GOTO 210
  65. 650  POKE 779,0: CALL 32780
  66. 660  VTAB 23: HTAB 1: CALL  -868: HTAB 15: PRINT "GAME OVER."
  67. 670  POKE 774,35: POKE 775,5: FOR I = 20 TO 41: POKE 773,I -1: CALL DRW: POKE 773,I: CALL DRW: FOR J = 1 TO 100: NEXT J,I
  68. 680  IF  PEEK(782)  THEN 700
  69. 690  POKE 773, PEEK(777): POKE 774, PEEK(778): POKE 775,2: CALL DRW
  70. 700  VTAB 21: HTAB 1: CALL  -868: INVERSE : PRINT "DOWN TO DAVY JONE'S LOCKER FOR YOU!": NORMAL : PRINT : PRINT "MANY LEAGUES OF TREASURE REMAIN LOST...";: GET A$
  71. 710  HOME : CALL 32777: CALL 32783
  72. 720 SC = 0: CALL 32780
  73. 730  VTAB 22:LOC = 6 + PEEK(40) + PEEK(41) *256: FOR I = 0 TO 3:SC = SC +( PEEK(LOC +I) -176) *(10 ^(3 -I)): NEXT 
  74. 740  FOR I = 1 TO 10: IF SC >S(I)  THEN FL = I:I = 10: NEXT : GOTO 760
  75. 750  NEXT : GOTO 210
  76. 760  FOR I = 10 TO FL  STEP  -1:S(I) = S(I -1):N$(I) = N$(I -1):L(I) = L(I -1): NEXT 
  77. 770  GOSUB 940: VTAB 1: HTAB 1: CALL  -868: PRINT "YOU GOT A HIGH SCORE !!!"
  78. 780  VTAB 17: HTAB 1: CALL  -868: PRINT "TYPE YOUR NAME IN (OR WHATEVER) !!!"
  79. 790  VTAB FL +4: HTAB 5 - LEN( STR$(SC)): PRINT SC;: HTAB 7: CALL  -868: HTAB 32: PRINT LL;: HTAB 6: PRINT ">";: HTAB 28: PRINT "<";
  80. 800  HTAB 7: INPUT "";N$(FL): IF  LEN(N$(FL)) >21  THEN  PRINT  CHR$(7): GOTO 790
  81. 810  VTAB 4 +FL: HTAB 32: PRINT LL
  82. 820 L(FL) = LL:S(FL) = SC: VTAB 20: HTAB 1: PRINT "IS THIS CORRECT? (Y/N):";: GET A$: IF A$ = "N"  THEN  HTAB 1: CALL  -868: GOTO 790
  83. 830  ONERR  GOTO 860
  84. 840  PRINT : PRINT D$"DELETE TDSCORES": PRINT D$"OPEN TDSCORES": PRINT D$"WRITE TDSCORES": FOR I = 1 TO 10: PRINT S(I): PRINT N$(I): PRINT L(I): NEXT : PRINT D$"CLOSE"
  85. 850  HOME : CALL  -3100: POKE 216,0: GOTO 210
  86. 860  VTAB 21: HTAB 1: INVERSE : PRINT "I/O ERROR!";: NORMAL : PRINT " INSERT DISK & PRESS SPACE TO TRY": PRINT "AGAIN OR 'C' TO CONTINUE:";: GET A$: VTAB 21: HTAB 1: CALL  -958: IF A$ < >" "  AND A$ < >"C"  THEN 860
  87. 870  IF A$ = " "  THEN 840
  88. 880  IF A$ = "C"  THEN 850
  89. 890  HOME : HTAB 15: INVERSE : VTAB 21: PRINT ":        " SPC( LL >9)" :": HTAB 15: PRINT "  LEVEL "LL; SPC( LL <10); SPC( LL >9)" ": HTAB 15: PRINT ":        " SPC( LL >9)" :"
  90. 900  IF LL/5 - INT(LL/5) = 0  THEN  NORMAL : HTAB 14: PRINT  SPC( LL >9)"FREE FROGMAN!";: POKE 779, PEEK(779) +1
  91. 910  NORMAL : RETURN 
  92. 920  HOME : VTAB 21: PRINT "FROGMEN:" TAB( 20)"LEVEL:": PRINT "SCORE:"
  93. 930  RETURN 
  94. 940  TEXT : HOME : PRINT "FAMOUS UNDERWATER VOYAGERS:": PRINT : PRINT "SCORE   WHODUNNIT" TAB( 32)"LEVEL": PRINT "-----   ---------" TAB( 32)"-----"
  95. 950  FOR I = 1 TO 10: PRINT "0000";: HTAB 5 - LEN( STR$(S(I))): PRINT S(I)"  "N$(I); TAB( 32);L(I): NEXT 
  96. 960  PRINT : PRINT : PRINT "CAN YOU GET ON THIS LIST? JUST TRY!:";: RETURN 
  97. 970  TEXT : HOME : POKE 230,32: CALL 62450: HTAB 9: VTAB 11: INVERSE : PRINT ":                    :": HTAB 9: PRINT "     TREASURE DIVE    ": HTAB 9: PRINT ":                    :": NORMAL : REM  20,5,1,4,and 20 spaces
  98. 980  POKE 230,64: HCOLOR= 5: HPLOT 0,0: CALL 62454: POKE 230,32
  99. 990  HCOLOR= 6: HPLOT 0,45 TO 279,45
  100. 1000  HCOLOR= 3: FOR I = 0 TO 49:X =  RND(1) *254:Y =  RND(1) *40: HPLOT X,Y: POKE 35481 +I,X +1: POKE 35531 +I,Y: NEXT 
  101. 1010  PRINT : PRINT : HTAB 7: PRINT "CONCEPT BY ROBERT LAVELOCK"
  102. 1020  HCOLOR= 7: FOR I = 0 TO 6.283  STEP .1: HPLOT  COS(I) *9 +260, SIN(I) *8 +20 TO 260,20: NEXT 
  103. 1030  HTAB 7: PRINT "PROGRAMMING BY JOHN ROMERO"
  104. 1040  HCOLOR= 4: FOR I = 0 TO 6.283  STEP .1: HPLOT  COS(I) *9 +265, SIN(I) *8 +20 TO 260,20: NEXT 
  105. 1050  HCOLOR= 7
  106. 1060  PRINT : HTAB 11: PRINT "COPYRIGHT (C) 1989"
  107. 1070  FOR I = 0 TO 50:Y =  RND(1) *8 +152:X =  RND(1) *279: HPLOT X,Y: NEXT 
  108. 1080  HTAB 10: PRINT "MINDCRAFT PUBL. CORP.
  109. 1090  HCOLOR= 5: HPLOT 1,147
  110. 1100  FOR I = 0 TO 50  STEP .5:X = I *5.58:Y =  SIN(I) *1.5 +147: HPLOT  TO X,Y: NEXT 
  111. 1110  POKE  -16368,0
  112. 1120  VTAB 24: HTAB 8: PRINT "PRESS RETURN TO CONTINUE:";: GET A$
  113. 1130  CALL  -3100
  114. 1140  RETURN 
  115. 1150  TEXT : HOME : PRINT "INITIALIZING..."
  116. 1160 LOC = 24576:CO = 0: FOR H = 0 TO 2:BYTE = 31: FOR I = 0 TO 3:BYTE = BYTE +1: FOR J = 0 TO 1: FOR K = 0 TO 7: POKE LOC +CO,BYTE +(4 *K):CO = CO +1: NEXT : NEXT : NEXT : NEXT 
  117. 1170  POKE LOC +CO,255:CO = CO +1: IF CO <256  THEN 1170
  118. 1180 BYTE = 0: GOSUB 1210:BYTE = 40: GOSUB 1210:BYTE = 80: GOSUB 1210
  119. 1190  POKE LOC +CO,255:CO = CO +1: IF CO <512  THEN 1190
  120. 1200  RETURN 
  121. 1210  FOR I = 0 TO 3: FOR J = 0 TO 1: FOR K = 0 TO 7: POKE LOC +CO,BYTE:CO = CO +1: NEXT :BYTE = BYTE +128: NEXT :BYTE = BYTE -256: NEXT : RETURN 
  122. 1220  HOME : VTAB 21: INVERSE : PRINT "USE ARROWS TO SELECT, RETURN TO ACCEPT": NORMAL : PRINT "SKILL LEVEL:1...2...3...4...5";
  123. 1230 H = ( PEEK(770) +49)/50:H = H -1:H = 13 +(H *4)
  124. 1240  HTAB H: GET A$: IF A$ = FA$  THEN H = H +4: IF H >29  THEN H = 13
  125. 1250  IF A$ = BA$  THEN H = H -4: IF H <13  THEN H = 29
  126. 1260  IF A$ < > CHR$(13)  THEN 1240
  127. 1270 SD =  ABS((9 -H)/4): POKE 770,SD *50 -49
  128. 1280  VTAB 22: HTAB 1: CALL  -868: PRINT "SOUND:( ) ON   ( ) OFF";:H = 8: IF   NOT  PEEK(771)  THEN H = 17
  129. 1290  HTAB H: GET A$: IF A$ = FA$  THEN H = H +9: IF H >17  THEN H = 8
  130. 1300  IF A$ = BA$  THEN H = H -9: IF H <8  THEN H = 17
  131. 1310  IF A$ < > CHR$(13)  THEN 1290
  132. 1320  POKE 771,1: IF H = 17  THEN  POKE 771,0
  133. 1330  VTAB 22: HTAB 1: CALL  -868: PRINT "CONTROLS:( ) JOYSTICK  ( ) KEYBOARD";:H = 11: IF  PEEK(769) = 203  THEN H = 25
  134. 1340  HTAB H: GET A$: IF A$ = FA$  THEN H = H +14: IF H >25  THEN H = 11
  135. 1350  IF A$ = BA$  THEN H = H -14: IF H <11  THEN H = 25
  136. 1360  IF A$ < > CHR$(13)  THEN 1340
  137. 1370  POKE 769,203: IF H = 11  THEN  POKE 769,202: GOTO 1440
  138. 1380  HOME : VTAB 21: HTAB 1: INVERSE : PRINT "DEFINE KEY CONTROLS BY TYPING THE KEY": NORMAL : PRINT "UP  :" TAB( 20)"LEFT :": PRINT "DOWN:" TAB( 20)"RIGHT:"
  139. 1390  VTAB 22: HTAB 6: GET A$: POKE 785, ASC(A$) +128: GOSUB 1450
  140. 1400  VTAB 23: HTAB 6: GET A$: POKE 786, ASC(A$) +128: GOSUB 1450
  141. 1410  VTAB 22: HTAB 26: GET A$: POKE 787, ASC(A$) +128: GOSUB 1450
  142. 1420  VTAB 23: HTAB 26: GET A$: POKE 788, ASC(A$) +128: GOSUB 1450
  143. 1430  FOR I = 1 TO 1000: NEXT 
  144. 1440  HOME : GOTO 210
  145. 1450  IF A$ = BA$  THEN  PRINT "LA": RETURN 
  146. 1460  IF A$ = FA$  THEN  PRINT "RA": RETURN 
  147. 1470  IF A$ =  CHR$(10)  THEN  PRINT "DA": RETURN 
  148. 1480  IF A$ =  CHR$(11)  THEN  PRINT "UA": RETURN 
  149. 1490  IF A$ =  CHR$(13)  THEN  PRINT "CR": RETURN 
  150. 1500  PRINT A$: RETURN 
  151. 1510  HOME : PRINT "THIS DISK IS WRITE-PROTECTED": PRINT : PRINT "PLEASE REMOVE WRITE-PROTECTION": PRINT "AND TYPE RUN": END