home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib23b.dsk / NIBBLE.500.bas < prev    next >
BASIC Source File  |  2023-02-26  |  17KB  |  242 lines

  1. 1  REM **********************
  2. 2  REM *     NIBBLE.500     *
  3. 3  REM *   BY MIKE ROHRER   *
  4. 4  REM * COPYRIGHT (C) 1985 *
  5. 5  REM * BY MICROSPARC, INC *
  6. 6  REM * CONCORD, MA  01742 *
  7. 7  REM **********************
  8. 10  TEXT : HOME : GOSUB 2140
  9. 20  GOSUB 950: GOTO 590
  10. 30  REM *** PADDLE MOVES ***
  11. 40  IF  PEEK(PK% +PD%) >127  THEN SP% = SP% +1: IF SP% >5  THEN SP% = 1
  12. 50  IF  PDL(PD%) <35  THEN X = X -3 -(SP% -3) *(SP% >3): IF X <85  THEN X = 85
  13. 60  IF  PDL(PD%) >230  THEN X = X +3 +(SP% -3) *(SP% >3): IF X >205  THEN X = 205
  14. 70  RETURN 
  15. 80  REM *** KEYBOARD MOVES ***
  16. 90 KEY% =  PEEK(KB%): IF KEY% = 211  THEN  POKE  -16368,0:SP% = SP% +1: IF SP% >5  THEN SP% = 1
  17. 100  IF KEY% = 136  THEN DIR% = 1
  18. 110  IF KEY% = 160  THEN DIR% = 2
  19. 120  IF KEY% = 149  THEN DIR% = 3
  20. 130  ON DIR% GOSUB 140,150,160: RETURN 
  21. 140 X = X -3 -(SP% -3) *(SP% >4): IF X <85  THEN X = 85
  22. 150  RETURN 
  23. 160 X = X +3 +(SP% -3) *(SP% >4): IF X >205  THEN X = 205
  24. 170  RETURN 
  25. 180  REM *** LEVEL 3 ***
  26. 190  HCOLOR= 0: DRAW CTR% +2 AT 110,155: ON CTR% GOSUB 230,240,250,260,280,290: IF CTR% +1 >6  THEN LAP = LAP +1: VTAB 22: HTAB 39: PRINT LAP;:CTR% = 0: IF LAP = 10  THEN  POP : GOTO 780
  27. 200  HCOLOR= 3: DRAW CTR% +3 AT 110,155: ON (CTR% +1) GOSUB 230,240,250,260,280,290: IF CTR% +3 = 8  AND LAP = 8  THEN  DRAW 12 AT 165,12
  28. 210  IF CTR% +3 = 8  AND LAP = 9  THEN  HCOLOR= 0: DRAW 12 AT 165,12: HCOLOR= 3: DRAW 13 AT 165,12
  29. 220  RETURN 
  30. 230  HPLOT 125,159 TO 125,110 TO 105,70 TO 125,3: HPLOT 155,159 TO 155,110 TO 135,70 TO 155,3: DRAW 1 AT  INT( RND(FL) *25) +128,125:FL =   NOT FL: RETURN 
  31. 240  HPLOT 125,159 TO 85,100 TO 85,90 TO 110,50 TO 125,3: HPLOT 155,159 TO 115,100 TO 115,90 TO 140,50 TO 155,3:RDM =  INT( RND(FL) *10) +122: DRAW 2 AT RDM,20: DRAW 2 AT RDM +15,20: DRAW 2 AT RDM -3,28:FL =   NOT FL: RETURN 
  32. 250  HPLOT 125,159 TO 100,120 TO 100,100 TO 150,50 TO 125,3: HPLOT 155,159 TO 130,120 TO 130,100 TO 180,50 TO 155,3: DRAW 1 AT  INT( RND(FL) *20) +103,110 - INT( RND(0) *30):FL =   NOT FL: RETURN 
  33. 260  HPLOT 125,159 TO 125,140 TO 90,90 TO 125,40 TO 125,3: HPLOT 155,159 TO 155,140 TO 190,90 TO 155,40 TO 155,3: HPLOT 140,110 TO 125,90 TO 140,70 TO 155,90 TO 140,110
  34. 270 RDM =  RND(FL): DRAW 1 AT  INT(RDM *25) +128,30: DRAW 1 AT  INT(RDM *10) +102,100: DRAW 1 AT  INT(RDM *10) +150,80:FL =   NOT FL: RETURN 
  35. 280  HPLOT 125,159 TO 150,110 TO 150,100 TO 175,60 TO 125,3: HPLOT 155,159 TO 180,110 TO 180,100 TO 205,60 TO 155,3: DRAW 2 AT  INT( RND(FL) *20) +145,130:FL =   NOT FL: RETURN 
  36. 290  HPLOT 125,159 TO 125,130 TO 100,75 TO 100,50 TO 125,3: HPLOT 155,159 TO 155,130 TO 180,80 TO 180,50 TO 155,3: HPLOT 137,107 TO 125,80 TO 125,50 TO 138,27 TO 150,50 TO 150,80 TO 137,107
  37. 300  DRAW 1 AT  INT( RND(FL) *25) +152,65:FL =   NOT FL: HPLOT 100,61 TO 125,61: FOR I = 0 TO 3: HPLOT 100,50 +I TO 125,50 +I: NEXT 
  38. 310  DRAW 9 AT 90,57: DRAW 10 AT 90,66: DRAW 11 AT 90,75: RETURN 
  39. 320  REM *** LEVEL 2 ***
  40. 330  HCOLOR= 0: DRAW CTR% +2 AT 105,155: ON CTR% GOSUB 370,380,390,400,410: IF CTR% +1 >5  THEN LAP = LAP +1: VTAB 22: HTAB 39: PRINT LAP;:CTR% = 0: IF LAP = 4  THEN  POP : GOTO 780
  41. 340  HCOLOR= 3: DRAW CTR% +3 AT 105,155: ON (CTR% +1) GOSUB 370,380,390,400,410: IF CTR% +3 = 7  AND LAP = 2  THEN  DRAW 12 AT 165,12
  42. 350  IF CTR% +3 = 7  AND LAP = 3  THEN  HCOLOR= 0: DRAW 12 AT 165,12: HCOLOR= 3: DRAW 13 AT 165,12
  43. 360  RETURN 
  44. 370  HPLOT 125,159 TO 122,110 TO 102,70 TO 125,3: HPLOT 155,159 TO 157,110 TO 137,70 TO 155,3: DRAW 1 AT  INT( RND(FL) *25) +125,120:FL =   NOT FL: RETURN 
  45. 380  HPLOT 125,159 TO 165,100 TO 165,60 TO 125,3: HPLOT 155,159 TO 200,100 TO 200,60 TO 155,3: DRAW 2 AT  INT( RND(FL) *27) +167,70:FL =   NOT FL: RETURN 
  46. 390  HPLOT 125,159 TO 97,120 TO 97,95 TO 142,50 TO 125,3: HPLOT 155,159 TO 132,120 TO 132,95 TO 177,50 TO 155,3: DRAW 2 AT  INT( RND(FL) *27) +99,100:FL =   NOT FL: RETURN 
  47. 400  HPLOT 125,159 TO 122,140 TO 87,90 TO 122,40 TO 125,3: HPLOT 155,159 TO 157,140 TO 192,90 TO 157,40 TO 155,3: HPLOT 140,110 TO 125,90 TO 140,70 TO 155,90 TO 140,110: DRAW 1 AT  INT( RND(FL) *27) +124,35:FL =   NOT FL: RETURN 
  48. 410  HPLOT 125,159 TO 87,100 TO 87,90 TO 107,50 TO 125,3: HPLOT 155,159 TO 122,100 TO 122,90 TO 142,50 TO 155,3: DRAW 2 AT  INT( RND(FL) *27) +88,95:FL =   NOT FL: RETURN 
  49. 420  REM *** LEVEL 1 ***
  50. 430  HCOLOR= 0: DRAW CTR% +2 AT 105,155: ON CTR% GOSUB 470,480,490,500: IF CTR% +1 >4  THEN LAP = LAP +1: VTAB 22: HTAB 39: PRINT LAP;:CTR% = 0: IF LAP = 3  THEN  POP : GOTO 780
  51. 440  HCOLOR= 3: DRAW CTR% +3 AT 105,155: ON (CTR% +1) GOSUB 470,480,490,500: IF CTR% +3 = 6  AND LAP = 1  THEN  DRAW 12 AT 165,12
  52. 450  IF CTR% +3 = 6  AND LAP = 2  THEN  HCOLOR= 0: DRAW 12 AT 165,12: HCOLOR= 3: DRAW 13 AT 165,12
  53. 460  RETURN 
  54. 470 RDM =  INT( RND(FL) *22) +119: HPLOT 125,159 TO 120,135 TO 120,25 TO 125,3: HPLOT 155,159 TO 160,135 TO 160,25 TO 155,3: FOR I = 1 TO 3: DRAW 2 AT RDM +I *5,120 -20 *I: NEXT :FL =   NOT FL: RETURN 
  55. 480  HPLOT 125,159 TO 85,100 TO 85,90 TO 105,50 TO 125,3: HPLOT 155,159 TO 125,100 TO 125,90 TO 145,50 TO 155,3: DRAW 2 AT  INT( RND(FL) *25) +86,90:FL =   NOT FL: RETURN 
  56. 490  HPLOT 125,159 TO 95,120 TO 95,100 TO 140,50 TO 125,3: HPLOT 155,159 TO 135,120 TO 135,100 TO 180,50 TO 155,3: DRAW 2 AT  INT( RND(FL) *27) +96,120:FL =   NOT FL: RETURN 
  57. 500  HPLOT 125,159 TO 145,110 TO 145,100 TO 165,60 TO 125,3: HPLOT 155,159 TO 185,110 TO 185,100 TO 205,60 TO 155,3: DRAW 2 AT  INT( RND(FL) *29) +146,105:FL =   NOT FL: RETURN 
  58. 510  REM *** START RACE TRACK ***
  59. 520  HPLOT 125,159 TO 0,159 TO 0,0: FOR I = 0 TO 2: HPLOT 0,I TO 125,I: HPLOT 155,I TO 279,I: NEXT : HPLOT 279,0 TO 279,159 TO 155,159
  60. 530  HPLOT 125,159 TO 125,110 TO 105,70 TO 125,3: HPLOT 155,159 TO 155,110 TO 135,70 TO 155,3: DRAW 3 AT 110,155: RETURN 
  61. 540  HPLOT 125,159 TO 122,110 TO 102,70 TO 125,3: HPLOT 155,159 TO 157,110 TO 137,70 TO 155,3: DRAW 3 AT 105,155: RETURN 
  62. 550  HPLOT 125,159 TO 120,135 TO 120,25 TO 125,3: HPLOT 155,159 TO 160,135 TO 160,25 TO 155,3: DRAW 3 AT 105,155: RETURN 
  63. 560  REM *** OUT OF GAS LOOP ***
  64. 570  VTAB 23: HTAB 7: PRINT " 0.0";: HTAB 22: FLASH : PRINT " OUT OF GAS! ";: FOR I = 1 TO 4000: NEXT : NORMAL :FUEL = 15:SP% = 1:TIME = TIME +90: HTAB 22: CALL  -958: RETURN 
  65. 580  REM *** MAIN LOOP ***
  66. 590  ON MODE% GOSUB 40,90
  67. 600 Y = Y -2 *SP%: IF Y <0  THEN Y = 163: XDRAW 1 AT OX,OY: XDRAW 1 AT X,Y:CTR% = CTR% +1:OX = X:OY = Y: ON A% GOSUB 430,330,190: GOTO 590
  68. 610  IF  PEEK(KB%) = 155  THEN  POKE  -16368,0: TEXT : GOTO 20
  69. 620 TIME = TIME +.2:MIN% =  INT(TIME/60):SEC% =  INT(TIME -(MIN% *60))
  70. 630  VTAB 22: HTAB 25: IF MIN% <10  THEN  PRINT " ";
  71. 640  PRINT MIN%;":";: IF SEC% <10  THEN  PRINT "0";
  72. 650  PRINT SEC%
  73. 660  VTAB 21: HTAB 8: PRINT SP%;
  74. 670 FUEL = FUEL -0.02 *SP%: VTAB 23: HTAB 7: IF FUEL > = 10  THEN  PRINT  INT(10 *FUEL)/10: GOTO 710
  75. 680  IF FUEL > = 1  THEN  PRINT " "; INT(10 *FUEL)/10: GOTO 710
  76. 690  IF FUEL > = 0  THEN  PRINT "  "; INT(10 *FUEL)/10: GOTO 710
  77. 700  GOSUB 570
  78. 710  XDRAW 1 AT OX,OY
  79. 720  XDRAW 1 AT X,Y
  80. 730 OX = X:OY = Y
  81. 740  IF  PEEK(CC%) < >38  THEN  FOR I = 1 TO 4:SND =  PEEK(BZ%): NEXT :TIME = TIME +5:SP% = 1
  82. 750  IF  PEEK(CC%) = 24  AND Y = 53  THEN FUEL = FUEL +35: FOR I = 1 TO 2000: NEXT : IF FUEL >50  THEN FUEL = 50
  83. 760  GOTO 590
  84. 770  REM *** RACE ENDING ***
  85. 780  HGR : TEXT : HOME : VTAB 10: HTAB 16: INVERSE : FOR J = 1 TO 11: PRINT  MID$ (OVER$,J,1);
  86. 790  FOR I = 1 TO 5:SND =  PEEK(BZ%): NEXT : NEXT : NORMAL : FOR I = 1 TO 2000: NEXT 
  87. 800  FOR I = 1 TO 10: CALL  -912: NEXT 
  88. 810  VTAB 1: HTAB 14: INVERSE : PRINT " RACE RESULTS ": NORMAL 
  89. 820 TIME = TIME +.2
  90. 830 MIN% =  INT(TIME/60):SEC% =  INT(TIME -(MIN% *60))
  91. 840  VTAB 5: HTAB 10: PRINT "YOUR TIME WAS ";
  92. 850  IF MIN% <10  THEN  PRINT " ";
  93. 860  PRINT MIN%;":";: IF SEC% <10  THEN  PRINT "0";
  94. 870  PRINT SEC%;"."
  95. 880  VTAB 7: HTAB 10: PRINT "FUEL REMAINING: "; INT(FUEL *10)/10;" GAL."
  96. 890  FOR I = 1 TO 3000: NEXT 
  97. 900  GOSUB 1860
  98. 910  VTAB 23: HTAB 9: PRINT "RUN ANOTHER RACE? (Y/N) ";: GET A$: PRINT A$;: IF A$ = "Y"  THEN 20
  99. 920  IF A$ < >"N"  THEN 910
  100. 930  VTAB 23: HTAB 33: INVERSE : PRINT "BYE";: NORMAL : END 
  101. 940  REM *** INITIALIZING ***
  102. 950  HOME :SP% = 1:TIME = 0:LAP = 0:CTR% = 0:FL = 0:FUEL = 50.0
  103. 960  POKE 32,5: PRINT : VTAB 5: PRINT "PLEASE CHOOSE LEVEL OF PLAY:"
  104. 970  PRINT : PRINT  TAB( 5);"1 - BEGINNER'S TRACK"
  105. 980  PRINT  TAB( 5);"2 - WARM-UP TRACK"
  106. 990  PRINT  TAB( 5);"3 - CHAMPIONSHIP TRACK"
  107. 1000  VTAB 5: HTAB 30: GET A$: PRINT : IF A$ <"1"  OR A$ >"3"  THEN 1000
  108. 1010 A% =  VAL(A$)
  109. 1020  IF A% = 1  THEN FL$ = "BREC"
  110. 1030  IF A% = 2  THEN FL$ = "WUREC"
  111. 1040  IF A% = 3  THEN FL$ = "CREC"
  112. 1050  POKE 32,0: HOME : IF NR = 0  AND A% = T%  THEN  GOSUB 1710: GOTO 1070
  113. 1060  GOSUB 1620
  114. 1070  HGR : HCOLOR= 3: SCALE= 1: ROT= 0:X = 140:Y = 150:OX = 140:OY = 150
  115. 1080  HPLOT 125,159 TO 0,159 TO 0,0: FOR I = 0 TO 2: HPLOT 0,I TO 125,I: HPLOT 155,I TO 279,I: NEXT : HPLOT 279,0 TO 279,159 TO 155,159
  116. 1090  ON A% GOSUB 550,540,520
  117. 1100  VTAB 21: HTAB 1: INVERSE : PRINT "SPEED=";: NORMAL : PRINT " 1": VTAB 23: HTAB 1: INVERSE : PRINT "FUEL=";: NORMAL : PRINT " 50.0";: HTAB 12: PRINT "GAL";
  118. 1110  VTAB 22: HTAB 20: INVERSE : PRINT "TIME=";: NORMAL : PRINT " 0:00";: INVERSE : HTAB 33: PRINT "LAPS=";: NORMAL : PRINT " ";0
  119. 1120  XDRAW 1 AT OX,OY: VTAB 24: HTAB 18: PRINT "<HIT ";: FLASH : PRINT BEG$;: NORMAL : PRINT " TO BEGIN>";: IF MODE% = 2  THEN  VTAB 20: GET A$: PRINT : VTAB 24: HTAB 17: CALL  -958: RETURN 
  120. 1130  IF  PEEK(PK% +PD%) >127  THEN  HTAB 17: CALL  -958: RETURN 
  121. 1140  GOTO 1130
  122. 1150  REM *** INTRO/INSTR ***
  123. 1160  VTAB 8: HTAB 11: INVERSE : PRINT "  THE NIBBLE 500  ": NORMAL 
  124. 1170  PRINT : SPEED= 100: PRINT  TAB( 19)"BY"
  125. 1180  PRINT : PRINT  TAB( 15)"MIKE ROHRER": SPEED= 255
  126. 1190 X = 0:Y = 0:OX = 0:OY = 0:TIME = 0:PK% = 0:PD% = 0:KEY% = 0:KB% = 0:MIN% = 0:SEC% = 0:MODE% = 0:DIR% = 0:CTR% = 0:A% = 0
  127. 1200 KB% =  -16384:BZ% =  -16336:PK% =  -16287:CC% = 234:NAM$ = "  THE NIBBLE 500  ":OVER$ = " GAME OVER ":NBR% = 10:MODE% = 0
  128. 1210 LN$ = "-": FOR I = 1 TO 39:LN$ = LN$ +"-": NEXT 
  129. 1220  PRINT D$"BLOAD RACER.SHAPES"
  130. 1230  POKE 232,0: POKE 233,16
  131. 1240  VTAB 22: PRINT "** COPYRIGHT 1985 BY MICROSPARC, INC. **": VTAB 20: HTAB 3: PRINT "WOULD YOU LIKE INSTRUCTIONS? (Y/N) ";
  132. 1250  GET A$: PRINT : IF A$ = "N"  THEN 1560
  133. 1260  IF A$ < >"Y"  THEN 1250
  134. 1270  HOME : VTAB 1: HTAB 11: INVERSE : PRINT NAM$: NORMAL 
  135. 1280  PRINT "   PLAYERS ARE OFFERED A CHOICE OF THREE";: PRINT "LEVELS OF PLAY.  A 'BEGINNER'S TRACK'": PRINT "HAS WIDE ROADWAYS, SWEEPING TURNS, AND": PRINT "FEW OBSTACLES.  A 'WARM-UP TRACK' OFFERS";
  136. 1290  PRINT "NARROWER ROADWAYS AND A FEW MORE": PRINT "OBSTACLES (POTHOLES AND ABANDONED CARS).";: PRINT "THE 'CHAMPIONSHIP TRACK' HAS NARROWER": PRINT "ROADWAYS, SHARPER TURNS, AND A PIT STOP.";
  137. 1300  PRINT : PRINT "   AT WHATEVER LEVEL YOU CHOOSE TO PLAY,";: PRINT "TRY TO AVOID THE OBSTACLES OR DRIVING": PRINT "INTO THE SIDES OF THE TRACK.  DOING": PRINT "EITHER SLOWS YOU AND COSTS TIME."
  138. 1310  PRINT : PRINT "   A DISPLAY OF FUEL REMAINING WILL": PRINT "APPEAR ON THE SCREEN UNDER ALL LEVELS,": PRINT "BUT WILL NORMALLY ONLY BE A FACTOR ON": PRINT "THE CHAMPIONSHIP TRACK.  USE THE PIT"
  139. 1320  PRINT "STOP TO GET UP TO 35 MORE GALLONS OF": PRINT "FUEL.  DON'T RUN OUT!!!": PRINT : PRINT  TAB( 10);"<ANY KEY FOR MORE>";
  140. 1330  GET A$: HOME 
  141. 1340  PRINT "   THE BEGINNER'S GAME LASTS FOR THREE": PRINT "LAPS THROUGH A SEQUENCE OF FOUR LAYOUTS.";: PRINT "THE WARM-UP GAME TAKES FOUR LAPS THROUGH";: PRINT "A SEQUENCE OF FIVE LAYOUTS.  THE"
  142. 1350  PRINT "CHAMPIONSHIP GAME RUNS FOR TEN LAPS": PRINT "THROUGH A SERIES OF SIX TRACK LAYOUTS.": PRINT 
  143. 1360  PRINT "   YOU MAY USE THE <ESC> KEY TO END A": PRINT "RACE EARLY AND THEN RESTART.": PRINT 
  144. 1370  PRINT "   AT ALL THREE LEVELS, WHEN YOUR RACER": PRINT "IS ABOUT TO BEGIN THE FINAL LAP, A SMALL";: PRINT "WHITE FLAG WILL APPEAR NEAR THE TOP OF"
  145. 1380  PRINT "THE SCREEN.  AND, WHEN THE FINAL LAYOUT": PRINT "OF THE LAST LAP IS REACHED, YOU'LL GET": PRINT "THE CHECKERED FLAG....GAME'S OVER!!!"
  146. 1390  VTAB 22: PRINT  TAB( 10)"<ANY KEY FOR MORE>";
  147. 1400  GET A$: HOME 
  148. 1410  VTAB 1: HTAB 16: INVERSE : PRINT " CONTROLS ": NORMAL 
  149. 1420  PRINT : PRINT "WITH PADDLES:": PRINT : PRINT  TAB( 3)"DIAL   = MOVES RACER LEFT AND RIGHT": PRINT  TAB( 3)"BUTTON = CHANGES SPEED (1 TO 5)"
  150. 1430  PRINT : PRINT "WITH KEYBOARD:": PRINT : PRINT  TAB( 3)"<- ->    = MOVE RACER LEFT AND RIGHT": PRINT  TAB( 3)"<SP BAR> = STOPS LATERAL MOVEMENT": PRINT  TAB( 3)"<S>      = CHANGES SPEED (1 TO 5)"
  151. 1440  PRINT : PRINT LN$;
  152. 1450  POKE 32,3: PRINT : PRINT "A NOTE ON SPEED...": PRINT : PRINT "THE RACER TURNS SHARPER AT SLOWER": PRINT "SPEEDS THAN AT THE FASTER ONES.": PRINT "THIS INCREASES MANEUVERABILITY, BUT": PRINT "ALSO REQUIRES A FINER TOUCH.": POKE 32,0
  153. 1460  PRINT : PRINT  TAB( 10)"<ANY KEY FOR MORE>";
  154. 1470  GET A$: HOME 
  155. 1480  VTAB 1: HTAB 15: INVERSE : PRINT " PENALTIES ": NORMAL 
  156. 1490  PRINT : PRINT "COLLISIONS:  5 SECONDS AND SPEED IS": PRINT  TAB( 14)"RETURNED TO 1."
  157. 1500  PRINT : PRINT "OUT OF GAS:  90 SECONDS, WHILE WAITING": PRINT  TAB( 14)"FOR A 15 GALLON RESUPPLY."
  158. 1510  PRINT : PRINT LN$: HTAB 15: INVERSE : PRINT " REFUELING ": NORMAL : PRINT 
  159. 1520  PRINT "   WHEN ENTERING THE PIT STOP FOR GAS,": PRINT "BE CAREFUL NOT TO HIT THE PIT WALLS.": PRINT "ALSO, DON'T TRY TO SPEED UP TOO SOON"
  160. 1530  PRINT "WHEN LEAVING.  IN EITHER CASE YOU MAY": PRINT "FIND YOUR RACER FAILS TO STOP!!!"
  161. 1540  VTAB 22: PRINT  TAB( 10)"<ANY KEY TO CONTINUE>";
  162. 1550  GET A$
  163. 1560  HOME : VTAB 5: HTAB 10: PRINT "PLEASE CHOOSE CONTROL:": POKE 32,12: PRINT : PRINT "<0> = PADDLE 0": PRINT "<1> = PADDLE 1": PRINT "<K> = KEYBOARD": POKE 32,0
  164. 1570  VTAB 9: HTAB 31: GET A$: PRINT : IF A$ = "0"  THEN MODE% = 1:BEG$ = "BUTTON":PD% = 0: RETURN 
  165. 1580  IF A$ = "1"  THEN MODE% = 1:BEG$ = "BUTTON":PD% = 1: RETURN 
  166. 1590  IF A$ < >"K"  THEN 1570
  167. 1600 MODE% = 2:BEG$ = "ANY KEY": RETURN 
  168. 1610  REM *** RECORD READER ***
  169. 1620  TEXT : HOME 
  170. 1630 T% = A%: REM FLAG, SEE 2090
  171. 1640  PRINT D$;"OPEN "FL$
  172. 1650  PRINT D$;"READ "FL$
  173. 1660  FOR I = 1 TO NBR%
  174. 1670  INPUT OS(I)
  175. 1680  INPUT OS$(I)
  176. 1690  NEXT 
  177. 1700  PRINT D$;"CLOSE "FL$
  178. 1710  POKE 32,10: PRINT 
  179. 1720  VTAB 1: HTAB 3: INVERSE : PRINT NAM$: NORMAL 
  180. 1730  VTAB 3: HTAB 1: PRINT NBR%" TOP SCORES - LEVEL "A%
  181. 1740  FOR I = 1 TO NBR%:I$ = " "
  182. 1750  IF OS(I) = 0  THEN OS$(I) = "---------.V PEEK]$U'S
  183. 1760  IF I <10  THEN I$ = "  "
  184. 1770 MIN(I) =  INT(OS(I)/60):SEC(I) =  INT(OS(I) -(MIN(I) *60))
  185. 1780 MIN$(I) =  STR$(MIN(I)): IF MIN(I) <10  THEN MIN$(I) = " " +MIN$(I)
  186. 1790 SEC$(I) =  STR$(SEC(I)): IF SEC(I) <10  THEN SEC$(I) = "0" +SEC$(I)
  187. 1800  VTAB 4 +I: PRINT I$ + STR$(I) +". " +MIN$(I) +":" +SEC$(I) +"  " +OS$(I)
  188. 1810  NEXT 
  189. 1820  VTAB 24: PRINT "HIT ANY KEY TO CONTINUE";: GET A$
  190. 1830  POKE 32,0: PRINT : HOME 
  191. 1840  RETURN 
  192. 1850  REM *** RECORD UPDATER ***
  193. 1860 TIME =  INT(TIME *10)/10
  194. 1870 NR = 0: REM NEW RECORD FLAG
  195. 1880  FOR I = 1 TO NBR%
  196. 1890  IF TIME >OS(I)  THEN 1990
  197. 1900  IF NR = 1  THEN 2000
  198. 1910 NR = 1:NS(I) = TIME
  199. 1920  PRINT : PRINT LN$
  200. 1930  PRINT : PRINT "*** YOUR SCORE IS ONE OF THE TOP ";NBR%;" ***"
  201. 1940  POKE  -16368,0
  202. 1950  VTAB 14: PRINT  TAB( 5)"PLEASE TYPE YOUR INITIALS AND": PRINT  TAB( 5)"TODAY'S DATE (MMDDYY): ";: VTAB 18: HTAB 6: PRINT "(HIT <RETURN> WHEN FINISHED)"
  203. 1960  VTAB 15: HTAB 28: INPUT "";NS$(I): IF NS$(I) = ""  THEN 1960
  204. 1970  IF  LEN(NS$(I)) >10  THEN  PRINT  CHR$(7): VTAB 15: HTAB 27: CALL  -958: VTAB 17: HTAB 7: INVERSE : PRINT "LIMIT TO 10 LETTERS PLEASE": NORMAL : GOTO 1950
  205. 1980  NEXT : GOTO 2010
  206. 1990 NS(I) = OS(I):NS$(I) = OS$(I): NEXT : GOTO 2010
  207. 2000 NS(I) = OS(I -1):NS$(I) = OS$(I -1): NEXT 
  208. 2010  IF NR = 0  THEN 2100
  209. 2020  PRINT D$;"OPEN "FL$
  210. 2030  PRINT D$;"WRITE "FL$
  211. 2040  FOR I = 1 TO NBR%
  212. 2050  PRINT NS(I)
  213. 2060  PRINT NS$(I)
  214. 2070  NEXT 
  215. 2080  PRINT D$;"CLOSE "FL$
  216. 2090  PRINT : PRINT : PRINT LN$: GOTO 2130
  217. 2100  PRINT : PRINT LN$: FOR I = 1 TO 10:SND =  PEEK(BZ%): NEXT : VTAB 13: PRINT  TAB( 8)"SORRY,": PRINT  TAB( 8)"YOU DIDN'T MAKE THE TOP "NBR%
  218. 2110  PRINT : PRINT : PRINT LN$
  219. 2120  FOR I = 1 TO 1000: NEXT 
  220. 2130  RETURN 
  221. 2140 D$ =  CHR$(4)
  222. 2150  IF  PEEK(104) < >64  THEN  POKE 103,1: POKE 104,64: POKE 16384,0: PRINT D$"RUN NIBBLE.500"
  223. 2160  ONERR  GOTO 2260
  224. 2170  FOR I = 1 TO 3: READ FL$(I): NEXT 
  225. 2180 I = 1
  226. 2190  PRINT D$;"VERIFY ";FL$(I)
  227. 2200 I = 2
  228. 2210  PRINT D$;"VERIFY ";FL$(I)
  229. 2220 I = 3
  230. 2230  PRINT D$;"VERIFY ";FL$(I)
  231. 2240  POKE 216,0
  232. 2250  GOSUB 1160: RETURN 
  233. 2260  CALL  -3288: FOR J = 1 TO 10:NS(J) = 33355:NS$(J) = "#########": NEXT 
  234. 2270  PRINT D$"OPEN "FL$(I)
  235. 2280  PRINT D$"WRITE "FL$(I)
  236. 2290  FOR K = 1 TO 10
  237. 2300  PRINT NS(K)
  238. 2310  PRINT NS$(K)
  239. 2320  NEXT K
  240. 2330  PRINT D$"CLOSE "FL$(I)
  241. 2340  GOTO 2180
  242. 2350  DATA  "BREC","WUREC","CREC"