home *** CD-ROM | disk | FTP | other *** search
/ ProfitPress Mega CDROM2 …eeware (MSDOS)(1992)(Eng) / ProfitPress-MegaCDROM2.B6I / GRAPHICS / PLOT / SFPLOT1B.ZIP / ICOSA.BAS
Encoding:
BASIC Source File  |  1991-05-22  |  12.3 KB  |  270 lines

  1. 1 KEY OFF
  2. 2 CLS
  3. 3 REM      Lines 4-4998 are reserved for initialization.
  4. 4 DIM POINT.X(12),POINT.Y(12),POINT.Z(12)
  5. 5 DATA -0.4118871,0.9079996,-0.07671904
  6. 6 DATA 0.1384243,-0.3550399,0.9245461
  7. 7 DATA -0.6921797,0.2209025,0.6870876
  8. 8 DATA 0.2536102,0.6783116,0.6896197
  9. 9 DATA -0.2693563,-0.6470865,-0.7132505
  10. 10 DATA -0.5892926,-0.7569793,0.2823415
  11. 11 DATA -0.9513623,0.03821032,-0.3056953
  12. 12 DATA 0.6965288,-0.2344079,-0.6781597
  13. 13 DATA 0.6159785,0.7314981,-0.2923718
  14. 14 DATA -0.1431547,0.3652876,-0.9198216
  15. 15 DATA 0.4155043,-0.9075403,0.06104855
  16. 16 DATA 0.9394635,-0.03937519,0.3403796
  17. 17 FOR VERTEX.NUM%=1 TO 12
  18. 18   READ POINT.X(VERTEX.NUM%),POINT.Y(VERTEX.NUM%),POINT.Z(VERTEX.NUM%)
  19. 19 NEXT VERTEX.NUM%
  20. 4999 GOTO 9769
  21. 5000 REM      Lines 5000-9767 are reserved for defining
  22. 5001 REM INTENSITY=f(LATITUDE,LONGITUDE).
  23. 5002 REM
  24. 5003 REM      Here, INTENSITY is set to the intensity of light observed from 12
  25. 5004 REM evenly spaced points on a transparent sphere when the observer is 1.4
  26. 5005 REM radii from the center of the sphere.
  27. 5006 SPHERE.Z=1.4*SIN(LATITUDE)
  28. 5007 SPHERE.X=1.4*COS(LATITUDE)*SIN(LONGITUDE)
  29. 5008 SPHERE.Y=1.4*COS(LATITUDE)*COS(LONGITUDE)
  30. 5009 INTENSITY=0!
  31. 5010 FOR VERTEX.NUM%=1 TO 12
  32. 5011   TEM.X=SPHERE.X-POINT.X(VERTEX.NUM%)
  33. 5012   TEM.Y=SPHERE.Y-POINT.Y(VERTEX.NUM%)
  34. 5013   TEM.Z=SPHERE.Z-POINT.Z(VERTEX.NUM%)
  35. 5014   INTENSITY=INTENSITY+1!/(TEM.X*TEM.X+TEM.Y*TEM.Y+TEM.Z*TEM.Z)
  36. 5015 NEXT VERTEX.NUM%
  37. 9768 RETURN
  38. 9769 MAX.Y.OUT%=639
  39. 9770 MAX.Z.OUT%=199
  40. 9771 PRINT "                             Three Dimensional Plot"
  41. 9772 PRINT
  42. 9773 PRINT
  43. 9774 PRINT
  44. 9775 LATITUDE.MIN=-2!*ATN(1!)
  45. 9776 LATITUDE.MAX=-LATITUDE.MIN
  46. 9777 LONGITUDE.MIN=0!
  47. 9778 LONGITUDE.MAX=4!*LATITUDE.MAX
  48. 9779 PRINT "Number of divisions for latitude";
  49. 9780 INPUT NUM.LATITUDE.DIVISIONS%
  50. 9781 IF NUM.LATITUDE.DIVISIONS% > 1 THEN 9784
  51. 9782 PRINT "? there must be at least 2 divisions"
  52. 9783 GOTO 9779
  53. 9784 LATITUDE.COUNT%=NUM.LATITUDE.DIVISIONS%+1
  54. 9785 PRINT "Number of divisions for longitude";
  55. 9786 INPUT NUM.LONGITUDE.DIVISIONS%
  56. 9787 IF NUM.LONGITUDE.DIVISIONS% > 1 THEN 9790
  57. 9788 PRINT "? there must be at least 2 divisions"
  58. 9789 GOTO 9785
  59. 9790 LONGITUDE.COUNT%=NUM.LONGITUDE.DIVISIONS%+1
  60. 9791 DIM X.PRIME(LATITUDE.COUNT%*LONGITUDE.COUNT%)
  61. 9792 DIM Y.PRIME(LATITUDE.COUNT%,LONGITUDE.COUNT%)
  62. 9793 DIM Z.PRIME(LATITUDE.COUNT%,LONGITUDE.COUNT%)
  63. 9794 DIM X.DIVISION.INDEX%(LATITUDE.COUNT%*LONGITUDE.COUNT%)
  64. 9795 DIM Y.DIVISION.INDEX%(LATITUDE.COUNT%*LONGITUDE.COUNT%)
  65. 9796 DIM BOX.X%(4),BOX.Y%(4)
  66. 9797   PRINT "Rotation (degrees)";
  67. 9798   INPUT ROTATION
  68. 9799   PRINT "Tilt (degrees)";
  69. 9800   INPUT TILT
  70. 9801   PRINT "After the plot is displayed, press a key to continue."
  71. 9802   PRINT "Evaluating function..."
  72. 9803   RADIANS.PER.DEGREE=ATN(1!)/45!
  73. 9804   RADIANS=TILT*RADIANS.PER.DEGREE
  74. 9805   COS.TILT=COS(RADIANS)
  75. 9806   SIN.TILT=SIN(RADIANS)
  76. 9807   RADIANS=ROTATION*RADIANS.PER.DEGREE
  77. 9808   COS.ROTATION=COS(RADIANS)
  78. 9809   SIN.ROTATION=SIN(RADIANS)
  79. 9810   LATITUDE=LATITUDE.MIN
  80. 9811   LONGITUDE=LONGITUDE.MIN
  81. 9812   GOSUB 5000
  82. 9813   X=INTENSITY*COS(LATITUDE)*SIN(LONGITUDE)
  83. 9814   Y=INTENSITY*COS(LATITUDE)*COS(LONGITUDE)
  84. 9815   Z=INTENSITY*SIN(LATITUDE)
  85. 9816   X.ROTATED=X*COS.ROTATION+Y*SIN.ROTATION
  86. 9817   Y.PRIME.MIN=-X*SIN.ROTATION+Y*COS.ROTATION
  87. 9818   Z.PRIME.MIN=-X.ROTATED*SIN.TILT+Z*COS.TILT
  88. 9819   Y.PRIME.MAX=Y.PRIME.MIN
  89. 9820   Z.PRIME.MAX=Z.PRIME.MIN
  90. 9821   X.PRIME.MAX=X.ROTATED*COS.TILT+Z*SIN.TILT
  91. 9822   DELTA.LATITUDE=NUM.LATITUDE.DIVISIONS%
  92. 9823   DELTA.LATITUDE=(LATITUDE.MAX-LATITUDE.MIN)/DELTA.LATITUDE
  93. 9824   DELTA.LONGITUDE=NUM.LONGITUDE.DIVISIONS%
  94. 9825   DELTA.LONGITUDE=(LONGITUDE.MAX-LONGITUDE.MIN)/DELTA.LONGITUDE
  95. 9826   LATITUDE=LATITUDE.MIN
  96. 9827   NUM.X.PRIMES%=0
  97. 9828   FOR X.DIVISION.NUM%=1 TO LATITUDE.COUNT%
  98. 9829     LONGITUDE=LONGITUDE.MIN
  99. 9830     FOR Y.DIVISION.NUM%=1 TO LONGITUDE.COUNT%
  100. 9831       GOSUB 5000
  101. 9832       X=INTENSITY*COS(LATITUDE)*SIN(LONGITUDE)
  102. 9833       Y=INTENSITY*COS(LATITUDE)*COS(LONGITUDE)
  103. 9834       Z=INTENSITY*SIN(LATITUDE)
  104. 9835       NUM.X.PRIMES%=NUM.X.PRIMES%+1
  105. 9836       X.DIVISION.INDEX%(NUM.X.PRIMES%)=X.DIVISION.NUM%
  106. 9837       Y.DIVISION.INDEX%(NUM.X.PRIMES%)=Y.DIVISION.NUM%
  107. 9838       X.ROTATED=X*COS.ROTATION+Y*SIN.ROTATION
  108. 9839       Y.PRIME(X.DIVISION.NUM%,Y.DIVISION.NUM%)=-X*SIN.ROTATION+Y*COS.ROTATION
  109. 9840       X.PRIME(NUM.X.PRIMES%)=X.ROTATED*COS.TILT+Z*SIN.TILT
  110. 9841       Z.PRIME(X.DIVISION.NUM%,Y.DIVISION.NUM%)=-X.ROTATED*SIN.TILT+Z*COS.TILT
  111. 9842       IF X.PRIME(NUM.X.PRIMES%) <= X.PRIME.MAX THEN 9844
  112. 9843         X.PRIME.MAX=X.PRIME(NUM.X.PRIMES%)
  113. 9844       IF Y.PRIME(X.DIVISION.NUM%,Y.DIVISION.NUM%) >= Y.PRIME.MIN THEN 9846
  114. 9845         Y.PRIME.MIN=Y.PRIME(X.DIVISION.NUM%,Y.DIVISION.NUM%)
  115. 9846       IF Y.PRIME(X.DIVISION.NUM%,Y.DIVISION.NUM%) <= Y.PRIME.MAX THEN 9848
  116. 9847         Y.PRIME.MAX=Y.PRIME(X.DIVISION.NUM%,Y.DIVISION.NUM%)
  117. 9848       IF Z.PRIME(X.DIVISION.NUM%,Y.DIVISION.NUM%) >= Z.PRIME.MIN THEN 9850
  118. 9849         Z.PRIME.MIN=Z.PRIME(X.DIVISION.NUM%,Y.DIVISION.NUM%)
  119. 9850       IF Z.PRIME(X.DIVISION.NUM%,Y.DIVISION.NUM%) <= Z.PRIME.MAX THEN 9852
  120. 9851         Z.PRIME.MAX=Z.PRIME(X.DIVISION.NUM%,Y.DIVISION.NUM%)
  121. 9852       LONGITUDE=LONGITUDE+DELTA.LONGITUDE
  122. 9853     NEXT Y.DIVISION.NUM%
  123. 9854     LATITUDE=LATITUDE+DELTA.LATITUDE
  124. 9855   NEXT X.DIVISION.NUM%
  125. 9856   PRINT "Adjusting perspective..."
  126. 9857   IF Y.PRIME.MAX-Y.PRIME.MIN > Z.PRIME.MAX-Z.PRIME.MIN THEN 9861
  127. 9858   IF Z.PRIME.MAX = Z.PRIME.MIN THEN 9880
  128. 9859   X.EYE=2!*(Z.PRIME.MAX-Z.PRIME.MIN)+X.PRIME.MAX
  129. 9860   GOTO 9862
  130. 9861   X.EYE=2!*(Y.PRIME.MAX-Y.PRIME.MIN)+X.PRIME.MAX
  131. 9862   Y.CENTER=(Y.PRIME.MAX+Y.PRIME.MIN)/2!
  132. 9863   Z.CENTER=(Z.PRIME.MAX+Z.PRIME.MIN)/2!
  133. 9864   NUM.X.PRIMES%=0
  134. 9865   FOR X.DIVISION.NUM%=1 TO LATITUDE.COUNT%
  135. 9866     Y=Y.MIN
  136. 9867     FOR Y.DIVISION.NUM%=1 TO LONGITUDE.COUNT%
  137. 9868       NUM.X.PRIMES%=NUM.X.PRIMES%+1
  138. 9869       X=X.PRIME(NUM.X.PRIMES%)
  139. 9870       Y=Y.PRIME(X.DIVISION.NUM%,Y.DIVISION.NUM%)
  140. 9871       Z=Z.PRIME(X.DIVISION.NUM%,Y.DIVISION.NUM%)
  141. 9872       DELTA.X=X-X.EYE
  142. 9873       DELTA.Y=Y-Y.CENTER
  143. 9874       DELTA.Z=Z-Z.CENTER
  144. 9875       X.PRIME(NUM.X.PRIMES%)=SQR(DELTA.X*DELTA.X+DELTA.Y*DELTA.Y+DELTA.Z*DELTA.Z)
  145. 9876       Y.PRIME(X.DIVISION.NUM%,Y.DIVISION.NUM%)=Y.CENTER+(Y-Y.CENTER)*(X.EYE-X.PRIME.MAX)/(X.EYE-X)
  146. 9877       Z.PRIME(X.DIVISION.NUM%,Y.DIVISION.NUM%)=Z.CENTER+(Z-Z.CENTER)*(X.EYE-X.PRIME.MAX)/(X.EYE-X)
  147. 9878     NEXT Y.DIVISION.NUM%
  148. 9879   NEXT X.DIVISION.NUM%
  149. 9880   PRINT "Sorting points..."
  150. 9881   SORT.LEFT%=NUM.X.PRIMES%\2
  151. 9882   SORT.LEFT%=SORT.LEFT%+1
  152. 9883   SORT.RIGHT%=NUM.X.PRIMES%
  153. 9884   SORT.T1=X.PRIME(1)
  154. 9885   SORT.T2%=X.DIVISION.INDEX%(1)
  155. 9886   SORT.T3%=Y.DIVISION.INDEX%(1)
  156. 9887   IF SORT.RIGHT% <= 1 THEN 9918
  157. 9888     IF SORT.LEFT% <= 1 THEN 9894
  158. 9889       SORT.LEFT%=SORT.LEFT%-1
  159. 9890       SORT.T1=X.PRIME(SORT.LEFT%)
  160. 9891       SORT.T2%=X.DIVISION.INDEX%(SORT.LEFT%)
  161. 9892       SORT.T3%=Y.DIVISION.INDEX%(SORT.LEFT%)
  162. 9893     GOTO 9901
  163. 9894       SORT.T1=X.PRIME(SORT.RIGHT%)
  164. 9895       SORT.T2%=X.DIVISION.INDEX%(SORT.RIGHT%)
  165. 9896       SORT.T3%=Y.DIVISION.INDEX%(SORT.RIGHT%)
  166. 9897       X.PRIME(SORT.RIGHT%)=X.PRIME(1)
  167. 9898       X.DIVISION.INDEX%(SORT.RIGHT%)=X.DIVISION.INDEX%(1)
  168. 9899       Y.DIVISION.INDEX%(SORT.RIGHT%)=Y.DIVISION.INDEX%(1)
  169. 9900       SORT.RIGHT%=SORT.RIGHT%-1
  170. 9901     IF SORT.RIGHT% <= 1 THEN 9918
  171. 9902     KEY.INDEX.2%=SORT.LEFT%
  172. 9903     KEY.INDEX.1%=KEY.INDEX.2%
  173. 9904       KEY.INDEX.2%=2*KEY.INDEX.2%
  174. 9905       IF KEY.INDEX.2% > SORT.RIGHT% THEN 9914
  175. 9906         IF KEY.INDEX.2% = SORT.RIGHT% THEN 9909
  176. 9907           IF X.PRIME(KEY.INDEX.2%) <= X.PRIME(KEY.INDEX.2%+1) THEN 9909
  177. 9908             KEY.INDEX.2%=KEY.INDEX.2%+1
  178. 9909         IF SORT.T1 <= X.PRIME(KEY.INDEX.2%) THEN 9914
  179. 9910           X.PRIME(KEY.INDEX.1%)=X.PRIME(KEY.INDEX.2%)
  180. 9911           X.DIVISION.INDEX%(KEY.INDEX.1%)=X.DIVISION.INDEX%(KEY.INDEX.2%)
  181. 9912           Y.DIVISION.INDEX%(KEY.INDEX.1%)=Y.DIVISION.INDEX%(KEY.INDEX.2%)
  182. 9913     GOTO 9903
  183. 9914     X.PRIME(KEY.INDEX.1%)=SORT.T1
  184. 9915     X.DIVISION.INDEX%(KEY.INDEX.1%)=SORT.T2%
  185. 9916     Y.DIVISION.INDEX%(KEY.INDEX.1%)=SORT.T3%
  186. 9917   GOTO 9887
  187. 9918   X.PRIME(1)=SORT.T1
  188. 9919   X.DIVISION.INDEX%(1)=SORT.T2%
  189. 9920   Y.DIVISION.INDEX%(1)=SORT.T3%
  190. 9921   SCREEN 2
  191. 9922   ASPECT.RATIO=1!/(4!*(200!/640!)/3!)
  192. 9923   Y.OUT.MAX=MAX.Y.OUT%
  193. 9924   Z.OUT.MAX=MAX.Z.OUT%
  194. 9925   IF ASPECT.RATIO*Z.OUT.MAX*(Y.PRIME.MAX-Y.PRIME.MIN) <= Y.OUT.MAX*(Z.PRIME.MAX-Z.PRIME.MIN) THEN 9930
  195. 9926     PIXELS.PER.UNIT=Y.OUT.MAX/(ASPECT.RATIO*(Y.PRIME.MAX-Y.PRIME.MIN))
  196. 9927     Y.OFFSET=0!
  197. 9928     Z.OFFSET=-(Z.OUT.MAX-PIXELS.PER.UNIT*(Z.PRIME.MAX-Z.PRIME.MIN))/2!
  198. 9929   GOTO 9938
  199. 9930     IF ASPECT.RATIO*Z.OUT.MAX*(Y.PRIME.MAX-Y.PRIME.MIN) >= Y.OUT.MAX*(Z.PRIME.MAX-Z.PRIME.MIN) THEN 9935
  200. 9931       PIXELS.PER.UNIT=Z.OUT.MAX/(Z.PRIME.MAX-Z.PRIME.MIN)
  201. 9932       Y.OFFSET=(Y.OUT.MAX-ASPECT.RATIO*PIXELS.PER.UNIT*(Y.PRIME.MAX-Y.PRIME.MIN))/2!
  202. 9933       Z.OFFSET=0!
  203. 9934     GOTO 9938
  204. 9935       PIXELS.PER.UNIT=1!
  205. 9936       Y.OFFSET=Y.OUT.MAX/2!
  206. 9937       Z.OFFSET=-Z.OUT.MAX/2!
  207. 9938   FOR X.PRIME.NUM%=1 TO NUM.X.PRIMES%
  208. 9939     X.DIVISION.NUM%=X.DIVISION.INDEX%(X.PRIME.NUM%)
  209. 9940     IF X.DIVISION.NUM% = LATITUDE.COUNT% THEN 9985
  210. 9941       Y.DIVISION.NUM%=Y.DIVISION.INDEX%(X.PRIME.NUM%)
  211. 9942       IF Y.DIVISION.NUM% = LONGITUDE.COUNT% THEN 9985
  212. 9943         BOX.X%(1)=FIX(Y.OFFSET+PIXELS.PER.UNIT*ASPECT.RATIO*(Y.PRIME(X.DIVISION.NUM%,Y.DIVISION.NUM%)-Y.PRIME.MIN))
  213. 9944         BOX.Y%(1)=FIX(Z.OFFSET+Z.OUT.MAX-PIXELS.PER.UNIT*(Z.PRIME(X.DIVISION.NUM%,Y.DIVISION.NUM%)-Z.PRIME.MIN))
  214. 9945         BOX.X%(2)=FIX(Y.OFFSET+PIXELS.PER.UNIT*ASPECT.RATIO*(Y.PRIME(X.DIVISION.NUM%+1,Y.DIVISION.NUM%)-Y.PRIME.MIN))
  215. 9946         BOX.Y%(2)=FIX(Z.OFFSET+Z.OUT.MAX-PIXELS.PER.UNIT*(Z.PRIME(X.DIVISION.NUM%+1,Y.DIVISION.NUM%)-Z.PRIME.MIN))
  216. 9947         BOX.X%(3)=FIX(Y.OFFSET+PIXELS.PER.UNIT*ASPECT.RATIO*(Y.PRIME(X.DIVISION.NUM%+1,Y.DIVISION.NUM%+1)-Y.PRIME.MIN))
  217. 9948         BOX.Y%(3)=FIX(Z.OFFSET+Z.OUT.MAX-PIXELS.PER.UNIT*(Z.PRIME(X.DIVISION.NUM%+1,Y.DIVISION.NUM%+1)-Z.PRIME.MIN))
  218. 9949         BOX.X%(4)=FIX(Y.OFFSET+PIXELS.PER.UNIT*ASPECT.RATIO*(Y.PRIME(X.DIVISION.NUM%,Y.DIVISION.NUM%+1)-Y.PRIME.MIN))
  219. 9950         BOX.Y%(4)=FIX(Z.OFFSET+Z.OUT.MAX-PIXELS.PER.UNIT*(Z.PRIME(X.DIVISION.NUM%,Y.DIVISION.NUM%+1)-Z.PRIME.MIN))
  220. 9951         BOX.Y.MIN%=BOX.Y%(1)
  221. 9952         BOX.Y.MAX%=BOX.Y.MIN%
  222. 9953         FOR BOX.NUM.1%=2 TO 4
  223. 9954           IF BOX.Y%(BOX.NUM.1%) < BOX.Y.MIN% THEN BOX.Y.MIN%=BOX.Y%(BOX.NUM.1%)
  224. 9955           IF BOX.Y%(BOX.NUM.1%) > BOX.Y.MAX% THEN BOX.Y.MAX%=BOX.Y%(BOX.NUM.1%)
  225. 9956         NEXT BOX.NUM.1%
  226. 9957         FOR BOX.Y1%=BOX.Y.MIN% TO BOX.Y.MAX%
  227. 9958           INTERCEPT.COUNT.MOD.2%=0
  228. 9959           BOX.NUM.2%=2
  229. 9960           FOR BOX.NUM.1%=1 TO 4
  230. 9961             IF BOX.Y%(BOX.NUM.1%) >= BOX.Y1% THEN 9974
  231. 9962               IF BOX.Y1% > BOX.Y%(BOX.NUM.2%) THEN 9975
  232. 9963                 BOX.DELTA.Y=BOX.Y%(BOX.NUM.2%)-BOX.Y%(BOX.NUM.1%)
  233. 9964                 BOX.DELTA.X=BOX.X%(BOX.NUM.2%)-BOX.X%(BOX.NUM.1%)
  234. 9965                 BOX.Y.OFFSET=BOX.Y1%-BOX.Y%(BOX.NUM.1%)
  235. 9966                 BOX.X.INTERCEPT=BOX.X%(BOX.NUM.1%)
  236. 9967                 BOX.X1%=FIX(BOX.DELTA.X*BOX.Y.OFFSET/BOX.DELTA.Y+BOX.X.INTERCEPT)
  237. 9968                 IF INTERCEPT.COUNT.MOD.2% = 0 THEN 9971
  238. 9969                   LINE (BOX.X1%,BOX.Y1%)-(BOX.X2%,BOX.Y1%),0
  239. 9970                 GOTO 9972
  240. 9971                   BOX.X2%=BOX.X1%
  241. 9972                 INTERCEPT.COUNT.MOD.2%=1-INTERCEPT.COUNT.MOD.2%
  242. 9973               GOTO 9975
  243. 9974             IF BOX.Y1% > BOX.Y%(BOX.NUM.2%) THEN 9963
  244. 9975             BOX.NUM.2%=BOX.NUM.2%+1
  245. 9976             IF BOX.NUM.2% > 4 THEN BOX.NUM.2%=1
  246. 9977           NEXT BOX.NUM.1%
  247. 9978         NEXT BOX.Y1%
  248. 9979         BOX.NUM.2%=2
  249. 9980         FOR BOX.NUM.1%=1 TO 4
  250. 9981           LINE (BOX.X%(BOX.NUM.1%),BOX.Y%(BOX.NUM.1%))-(BOX.X%(BOX.NUM.2%),BOX.Y%(BOX.NUM.2%))
  251. 9982           BOX.NUM.2%=BOX.NUM.2%+1
  252. 9983           IF BOX.NUM.2% > 4 THEN BOX.NUM.2%=1
  253. 9984         NEXT BOX.NUM.1%
  254. 9985   NEXT X.PRIME.NUM%
  255. 9986   RESPONSE$=INKEY$
  256. 9987   IF LEN(RESPONSE$) = 0 THEN 9986
  257. 9988   SCREEN 0
  258. 9989   WIDTH 80
  259. 9990   PRINT "                             Three Dimensional Plot"
  260. 9991   PRINT
  261. 9992   PRINT
  262. 9993   PRINT
  263. 9994   PRINT "Again (y or n)? ";
  264. 9995   RESPONSE$=INKEY$
  265. 9996   IF LEN(RESPONSE$) = 0 THEN 9995
  266. 9997   PRINT
  267. 9998   IF ((RESPONSE$ = "Y") OR (RESPONSE$ = "y")) THEN 9797
  268. 9999 END
  269. 
  270.