home *** CD-ROM | disk | FTP | other *** search
/ 64'er / 64ER_CD.iso / 91xx / 9102a.d64 / paraplot (.txt) < prev    next >
Commodore BASIC  |  1995-03-30  |  6KB  |  295 lines

  1. 1000 REM ******************************
  2. 1010 REM *    PROGRAMM PARA-PLOT      *
  3. 1020 REM *         V 1.1              *
  4. 1030 REM *    U. SCHWEBINGHAUS        *
  5. 1040 REM *    ERBSCHLOER STR. 115     *
  6. 1050 REM *    5600 WUPPERTAL 21       *
  7. 1060 REM *                            *
  8. 1070 REM ******************************
  9. 1072 :
  10. 1073 REM ****** ERSTSTART ******
  11. 1074 :
  12. 1075 IF LF=1 THEN 1082
  13. 1080 LF=1:LOAD"FRACTAL.OBJ",8,1
  14. 1082 FX$="SIN(T*T+T-3)"
  15. 1083 FY$="COS(T)":VB=1
  16. 1085 SYS 50176,1,2:GOTO 4000
  17. 1087 :
  18. 1100 REM ******* DEFINITION *********
  19. 1105 :
  20. 1110 GOSUB 2000
  21. 1120 IF A$="M" THEN 4000
  22. 1130 PRINT""
  23. 1140 PRINT"X(T) =   "FX$
  24. 1142 PRINT"[145]"TAB(7);:INPUT FX$
  25. 1143 PRINT
  26. 1145 PRINT"Y(T) =   "FY$
  27. 1150 PRINT"[145]"TAB(7);:INPUT FY$
  28. 1160 GOSUB 2100
  29. 1170 IF A$="K" THEN 1130
  30. 1200 :
  31. 1210 PRINT"[147][149]";
  32. 1220 PRINT 4590"XW="FX$
  33. 1230 PRINT 5050"XW="FX$
  34. 1240 PRINT 4610"YW="FY$
  35. 1242 PRINT 5080"YW="FY$
  36. 1246 PRINT "FX$="CHR$(34)FX$ CHR$(34)
  37. 1247 PRINT "FY$="CHR$(34)FY$ CHR$(34)
  38. 1248 PRINT "VB="VB":GOTO 4000"
  39. 1250 POKE 198,7
  40. 1260 FOR I=1 TO 7
  41. 1270 :   POKE 630+I,13
  42. 1280 NEXT I
  43. 1290 PRINT"":END
  44. 1300 :
  45. 1310 :
  46. 2000 REM ****** UPGM-EINSTIEG ******
  47. 2010 :
  48. 2020 PRINT"[147]"TAB(8)"" MP$(R)
  49. 2030 PRINT:PRINT
  50. 2040 PRINT TAB(8)"W[146]EITER ODER M[146]ENUE?"
  51. 2050 GET A$:IF A$="" THEN 2050
  52. 2060 IF A$<>"W" AND A$<>"M" THEN 2050
  53. 2070 :
  54. 2080 :         RETURN
  55. 2090 :
  56. 2100 REM ****** KORREKTUR ******
  57. 2110 :
  58. 2120 PRINT TAB(6) "K[146]ORREKTUR ODER W[146]EITER?"
  59. 2130 GET A$:IF A$="" THEN 2130
  60. 2140 IF A$<>"W" AND A$<>"K" THEN 2130
  61. 2160 :
  62. 2170 :         RETURN
  63. 2180 :
  64. 2200 REM ****** EINSTIEG/HINWEIS ******
  65. 2210 :
  66. 2220 PRINT"[147]"TAB(8)"" MP$(R)
  67. 2230 PRINT
  68. 2240 PRINT"[153]    VOM BILD FUEHRT DIE TASTE <M>  "
  69. 2250 PRINT"        INS MENUE ZURUECK!"
  70. 2255 PRINT TAB(8)"W[146]EITER ODER M[146]ENUE?"
  71. 2260 GET A$:IF A$="" THEN 2260
  72. 2270 IF A$<>"W" AND A$<>"M" THEN 2260
  73. 2280 :
  74. 2290 :         RETURN
  75. 2300 :
  76. 2500 REM ****** INFORMATIONEN ******
  77. 2510 :
  78. 2520 GOSUB 2000
  79. 2530 IF A$="M" THEN RETURN
  80. 2540 PRINT"[153]DISKETTE MIT INFOBILD MUSS EINLIEGEN!"
  81. 2550 GOSUB 2100
  82. 2560 IF A$="K" THEN RETURN
  83. 2570 N$="INFOBILD":SYS 50176,1,2
  84. 2580 OPEN 2,8,2,N$+",P,R":SYS 50188:CLOSE 2
  85. 2590 GOSUB 3580:GOSUB 3740:RETURN
  86. 2600 :
  87. 3000 REM ****** PARAMETER ******
  88. 3010 :
  89. 3020 GOSUB 2000
  90. 3030 IF A$="M" THEN RETURN
  91. 3040 PRINT""
  92. 3045 IF PZ=0 THEN PZ=100
  93. 3050 PRINT"X MIN =   "XU
  94. 3060 PRINT"[145]"TAB(8);:INPUT XU
  95. 3070 PRINT"X MAX =   "XO
  96. 3080 PRINT"[145]"TAB(8);:INPUT XO
  97. 3090 PRINT"Y MIN =   "YU
  98. 3100 PRINT"[145]"TAB(8);:INPUT YU
  99. 3110 PRINT"Y MAX =   "YO
  100. 3120 PRINT"[145]"TAB(8);:INPUT YO
  101. 3130 PRINT"T MIN =   "T1
  102. 3140 PRINT"[145]"TAB(8);:INPUT T1
  103. 3150 PRINT"T MAX =   "T2
  104. 3160 PRINT"[145]"TAB(8);:INPUT T2
  105. 3170 PRINT"PUNKTEZAHL =   "PZ
  106. 3180 PRINT"[145]"TAB(14);:INPUT PZ
  107. 3185 PRINT"[153]EINGABE VON 0 IN X MIN, X MAX, Y MIN UND"
  108. 3186 PRINT"Y MAX ERZIELT ANPASSUNG AN PARAMETER T."
  109. 3190 GOSUB 2100
  110. 3200 IF A$="K" OR PZ<=0 OR T2-T1<=0 THEN 3040
  111. 3210 TX=(T2-T1)/PZ
  112. 3220 :
  113. 3230 :       RETURN
  114. 3240 :
  115. 3300 REM ****** MODUS ******
  116. 3310 :
  117. 3320 GOSUB 2000
  118. 3330 IF A$="M" THEN RETURN
  119. 3340 VB$(0)="NEIN":VB$(1)=" JA "
  120. 3350 PRINT""
  121. 3355 PRINT"PUNKTE DES GRAPHEN VERBINDEN: "VB$(VB)
  122. 3360 GOSUB 2100
  123. 3370 IF A$="K" THEN VB=ABS(VB-1):GOTO 3350
  124. 3380 :
  125. 3390 :      RETURN
  126. 3400 :
  127. 3500 REM ****** BILD ZEIGEN ******
  128. 3510 :
  129. 3520 GOSUB 2200
  130. 3570 IF A$="M" THEN RETURN
  131. 3580 SYS 50179,1
  132. 3590 GOSUB 2000
  133. 3600 SYS 50179,0
  134. 3610 :
  135. 3620 :     RETURN
  136. 3630 :
  137. 3700 REM ****** BILD LOESCHEN ******
  138. 3710 :
  139. 3715 GOSUB 2000:IF A$="M" THEN RETURN
  140. 3740 SYS 50176,1,2
  141. 3750 :
  142. 3760 :        RETURN
  143. 3780 :
  144. 3800 REM ****** BILD SPEICHERN ******
  145. 3810 :
  146. 3820 GOSUB 2000
  147. 3830 IF A$="M" THEN RETURN
  148. 3832 N$=""
  149. 3835 PRINT""
  150. 3840 PRINT"     BILDNAME:    "N$
  151. 3850 PRINT"[145]"TAB(16);:INPUT N$
  152. 3860 GOSUB 2100
  153. 3870 IF A$="K" OR LEN(N$)=0 OR LEN(N$)>16 THEN 3835
  154. 3880 OPEN2,8,2,N$+",P,W":SYS 50191:CLOSE 2
  155. 3885 :
  156. 3890 :        RETURN
  157. 3895 :
  158. 3900 REM ****** BILD LADEN ******
  159. 3910 :
  160. 3920 GOSUB 2000
  161. 3930 IF A$="M" THEN RETURN
  162. 3932 N$=""
  163. 3935 PRINT""
  164. 3940 PRINT"     BILDNAME:    "N$
  165. 3950 PRINT"[145]"TAB(16);:INPUT N$
  166. 3960 GOSUB 2100
  167. 3970 IF A$="K" OR LEN(N$)=0 OR LEN(N$)>16 THEN 3835
  168. 3980 OPEN2,8,2,N$+",P,R":SYS 50188:CLOSE 2
  169. 3985 :
  170. 3990 :        RETURN
  171. 3995 :
  172. 4000 REM ******* MENUE *******
  173. 4010 :
  174. 4020 CD$=""
  175. 4030 TT$="P A R A M E T E R - P L O T"
  176. 4040 TU$="[184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184]"
  177. 4050 MP$(1)="*  INFORMATIONEN   *"
  178. 4060 MP$(2)="* NEUE VORSCHRIFT  *"
  179. 4070 MP$(3)="* PARAMETERBEREICH *"
  180. 4080 MP$(4)="*   ZEICHENMODUS   *"
  181. 4090 MP$(5)="*  GRAPH ZEICHNEN  *"
  182. 4100 MP$(6)="*   BILD ZEIGEN    *"
  183. 4110 MP$(7)="*  BILD LOESCHEN   *"
  184. 4120 MP$(8)="*  BILD SPEICHERN  *"
  185. 4130 MP$(9)="*   BILD LADEN     *"
  186. 4140 MP$(10)="*  PROGRAMM-ENDE   *"
  187. 4145 :
  188. 4150 POKE 53280,9 :POKE 53281,9:REM FARBEN
  189. 4160 PRINT"[147]"TAB(7)TT$:PRINT TAB(7)TU$
  190. 4170 PRINT
  191. 4180 FOR I=1 TO 10:PRINT"[158]"TAB(10) MP$(I):PRINT:NEXT I
  192. 4190 PRINT"WAHL MIT CURSOR UP UND DOWN UND RETURN";
  193. 4200 IF R=0 THEN R=1
  194. 4210 GOSUB 4290
  195. 4220 GET A$:IF A$="" THEN 4220
  196. 4230 IF A$="" THEN GOSUB 4320
  197. 4240 IF A$="[145]" THEN GOSUB 4350
  198. 4250 IF A$<>CHR$(13) THEN 4220
  199. 4260 IF R=10 THEN PRINT"[147]":END
  200. 4265 IF R=2 THEN 1110
  201. 4270 ON R GOSUB 2500,1110,3000,3300,4500,3500,3700,3800,3900:GOTO 4160
  202. 4280 :
  203. 4290 PRINT""LEFT$(CD$,(R-1)*2)TAB(10)""MP$(R):RETURN
  204. 4300 PRINT""LEFT$(CD$,(R-1)*2)TAB(10)"[158]"MP$(R):RETURN
  205. 4310 :
  206. 4320 GOSUB 4300:R=R+1:IF R>10 THEN R=1
  207. 4330 GOSUB 4290:RETURN
  208. 4340 :
  209. 4350 GOSUB 4300:R=R-1:IF R<1 THEN R=10
  210. 4360 GOSUB 4290:RETURN
  211. 4370 :
  212. 4380 :
  213. 4500 REM ****** GRAPH ZEICHNEN ******
  214. 4510 :
  215. 4520 GOSUB 2200
  216. 4530 IF A$="M" THEN RETURN
  217. 4539 IF TX=0 THEN T1=-3.3:T2=3.3:TX=6.6/100
  218. 4540 IF XO-XU<=0 OR YO-YU<=0 THEN GOSUB 5000
  219. 4550 SYS 50179,1:SYS 50194
  220. 4560 XV=320/(XO-XU):YV=200/(YO-YU)
  221. 4570 GOSUB 6000
  222. 4580 POKE 768,61:FOR T=T1 TO T2 STEP TX
  223. 4590 XW=SIN(T)*EXP(0.1*T)
  224. 4600 XB=INT((XW-XU)*XV)
  225. 4610 YW=SIN(T)*COS(T)
  226. 4620 YB=199-INT((YW-YU)*YV)
  227. 4630 IF XB<0 OR XB>319 OR YB<0 OR YB>199 THEN 4700
  228. 4640 SYS 50182,XB,YB,1
  229. 4650 IF T>T1+0.5*TX AND VB=1 THEN SYS50185,XA,YA,XB,YB,1
  230. 4660 XA=XB:YA=YB
  231. 4700 NEXT T:POKE 768,139
  232. 4710 :
  233. 4720 GOSUB 2000:IF A$<>"M"THEN 4720
  234. 4730 SYS 50179,0
  235. 4800 :            RETURN
  236. 4810 :
  237. 5000 REM ****** AUTOMATISCHE GRENZEN ******
  238. 5010 :
  239. 5020 PRINT"     [153]BITTE WARTEN, X UND Y WERDEN"
  240. 5030 PRINT"     AN DEN PARAMETER T ANGEPASST!"
  241. 5040 POKE 768,61:FOR T=T1 TO T2 STEP TX
  242. 5050 XW=SIN(T)*EXP(0.1*T)
  243. 5060 IF XW<XU THEN XU=XW
  244. 5070 IF XW>XO THEN XO=XW
  245. 5080 YW=SIN(T)*COS(T)
  246. 5090 IF YW<YU THEN YU=YW
  247. 5100 IF YW>YO THEN YO=YW
  248. 5110 NEXT T:POKE 768,139
  249. 5115 IF XU<0 AND XO>100*(-XU) THEN XO=ABS(XU)
  250. 5116 IF XO>0 AND XU<100*(-XO) THEN XU=-XO
  251. 5117 IF YU<0 AND YO>100*(-YU) THEN YO=ABS(YU)
  252. 5118 IF YO>0 AND YU<100*(-YO) THEN YU=-YO
  253. 5120 :
  254. 5130 :        RETURN
  255. 5140 :
  256. 6000 REM ****** ACHSEN ZEICHNEN ******
  257. 6010 :
  258. 6020 XC=INT(-XU*XV)
  259. 6030 YC=199-INT(-YU*YV)
  260. 6040 IF XC>=0 THEN SYS 50185,XC,0,XC,199,1
  261. 6050 IF YC>=0 THEN SYS 50185,0,YC,319,YC,1
  262. 6055 GOSUB 6400
  263. 6060 EX=1
  264. 6070 XB=INT(EX*XV)
  265. 6080 IF XB<10 THEN EX=EX*10:GOTO 6070
  266. 6085 IF XB>100 THEN EX=EX/10:GOTO 6070
  267. 6090 X=XC
  268. 6110 IF X>=0 AND X<320 AND YC>2 THEN SYS 50185,X,YC,X,YC-3,1:X=X+XB:GOTO 6110
  269. 6115 X=XC-XB
  270. 6120 IF X>=0 AND YC>2 THEN SYS 50185,X,YC,X,YC-3,1:X=X-XB:GOTO 6120
  271. 6130 :
  272. 6160 EY=1
  273. 6170 YB=INT(EY*YV)
  274. 6180 IF YB<8 THEN EY=EY*10:GOTO 6170
  275. 6185 IF YB>80  THEN EY=EY/10:GOTO 6170
  276. 6190 Y=YC
  277. 6210 IF Y>=0 AND XC<317 THEN SYS 50185,XC,Y,XC+3,Y,1:Y=Y-YB:GOTO 6210
  278. 6215 Y=YC+YB
  279. 6220 IF Y<200 AND XC<317 THEN SYS 50185,XC,Y,XC+3,Y,1:Y=Y+YB:GOTO 6220
  280. 6230 :
  281. 6240 :
  282. 6250 :       RETURN
  283. 6260 :
  284. 6400 REM ****** PFEILSPITZEN ******
  285. 6410 :
  286. 6420 IF XC<2 OR XC>317 THEN 6450
  287. 6430 SYS 50182,XC-2,2,1:SYS 50182,XC-1,1,1
  288. 6440 SYS 50182,XC+1,1,1:SYS 50182,XC+2,2,1
  289. 6450 IF YC<2 OR YC>197 THEN RETURN
  290. 6460 SYS 50182,317,YC-2,1:SYS 50182,318,YC-1,1
  291. 6470 SYS 50182,318,YC+1,1:SYS 50182,317,YC+2,1
  292. 6500 :
  293. 6510 :       RETURN
  294. 6520 :
  295.