home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er
/
64ER_CD.iso
/
91xx
/
9102a.d64
/
paraplot
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
1995-03-30
|
6KB
|
295 lines
1000 REM ******************************
1010 REM * PROGRAMM PARA-PLOT *
1020 REM * V 1.1 *
1030 REM * U. SCHWEBINGHAUS *
1040 REM * ERBSCHLOER STR. 115 *
1050 REM * 5600 WUPPERTAL 21 *
1060 REM * *
1070 REM ******************************
1072 :
1073 REM ****** ERSTSTART ******
1074 :
1075 IF LF=1 THEN 1082
1080 LF=1:LOAD"FRACTAL.OBJ",8,1
1082 FX$="SIN(T*T+T-3)"
1083 FY$="COS(T)":VB=1
1085 SYS 50176,1,2:GOTO 4000
1087 :
1100 REM ******* DEFINITION *********
1105 :
1110 GOSUB 2000
1120 IF A$="M" THEN 4000
1130 PRINT""
1140 PRINT"X(T) = "FX$
1142 PRINT"[145]"TAB(7);:INPUT FX$
1143 PRINT
1145 PRINT"Y(T) = "FY$
1150 PRINT"[145]"TAB(7);:INPUT FY$
1160 GOSUB 2100
1170 IF A$="K" THEN 1130
1200 :
1210 PRINT"[147][149]";
1220 PRINT 4590"XW="FX$
1230 PRINT 5050"XW="FX$
1240 PRINT 4610"YW="FY$
1242 PRINT 5080"YW="FY$
1246 PRINT "FX$="CHR$(34)FX$ CHR$(34)
1247 PRINT "FY$="CHR$(34)FY$ CHR$(34)
1248 PRINT "VB="VB":GOTO 4000"
1250 POKE 198,7
1260 FOR I=1 TO 7
1270 : POKE 630+I,13
1280 NEXT I
1290 PRINT"":END
1300 :
1310 :
2000 REM ****** UPGM-EINSTIEG ******
2010 :
2020 PRINT"[147]"TAB(8)"" MP$(R)
2030 PRINT:PRINT
2040 PRINT TAB(8)"W[146]EITER ODER M[146]ENUE?"
2050 GET A$:IF A$="" THEN 2050
2060 IF A$<>"W" AND A$<>"M" THEN 2050
2070 :
2080 : RETURN
2090 :
2100 REM ****** KORREKTUR ******
2110 :
2120 PRINT TAB(6) "K[146]ORREKTUR ODER W[146]EITER?"
2130 GET A$:IF A$="" THEN 2130
2140 IF A$<>"W" AND A$<>"K" THEN 2130
2160 :
2170 : RETURN
2180 :
2200 REM ****** EINSTIEG/HINWEIS ******
2210 :
2220 PRINT"[147]"TAB(8)"" MP$(R)
2230 PRINT
2240 PRINT"[153] VOM BILD FUEHRT DIE TASTE <M> "
2250 PRINT" INS MENUE ZURUECK!"
2255 PRINT TAB(8)"W[146]EITER ODER M[146]ENUE?"
2260 GET A$:IF A$="" THEN 2260
2270 IF A$<>"W" AND A$<>"M" THEN 2260
2280 :
2290 : RETURN
2300 :
2500 REM ****** INFORMATIONEN ******
2510 :
2520 GOSUB 2000
2530 IF A$="M" THEN RETURN
2540 PRINT"[153]DISKETTE MIT INFOBILD MUSS EINLIEGEN!"
2550 GOSUB 2100
2560 IF A$="K" THEN RETURN
2570 N$="INFOBILD":SYS 50176,1,2
2580 OPEN 2,8,2,N$+",P,R":SYS 50188:CLOSE 2
2590 GOSUB 3580:GOSUB 3740:RETURN
2600 :
3000 REM ****** PARAMETER ******
3010 :
3020 GOSUB 2000
3030 IF A$="M" THEN RETURN
3040 PRINT""
3045 IF PZ=0 THEN PZ=100
3050 PRINT"X MIN = "XU
3060 PRINT"[145]"TAB(8);:INPUT XU
3070 PRINT"X MAX = "XO
3080 PRINT"[145]"TAB(8);:INPUT XO
3090 PRINT"Y MIN = "YU
3100 PRINT"[145]"TAB(8);:INPUT YU
3110 PRINT"Y MAX = "YO
3120 PRINT"[145]"TAB(8);:INPUT YO
3130 PRINT"T MIN = "T1
3140 PRINT"[145]"TAB(8);:INPUT T1
3150 PRINT"T MAX = "T2
3160 PRINT"[145]"TAB(8);:INPUT T2
3170 PRINT"PUNKTEZAHL = "PZ
3180 PRINT"[145]"TAB(14);:INPUT PZ
3185 PRINT"[153]EINGABE VON 0 IN X MIN, X MAX, Y MIN UND"
3186 PRINT"Y MAX ERZIELT ANPASSUNG AN PARAMETER T."
3190 GOSUB 2100
3200 IF A$="K" OR PZ<=0 OR T2-T1<=0 THEN 3040
3210 TX=(T2-T1)/PZ
3220 :
3230 : RETURN
3240 :
3300 REM ****** MODUS ******
3310 :
3320 GOSUB 2000
3330 IF A$="M" THEN RETURN
3340 VB$(0)="NEIN":VB$(1)=" JA "
3350 PRINT""
3355 PRINT"PUNKTE DES GRAPHEN VERBINDEN: "VB$(VB)
3360 GOSUB 2100
3370 IF A$="K" THEN VB=ABS(VB-1):GOTO 3350
3380 :
3390 : RETURN
3400 :
3500 REM ****** BILD ZEIGEN ******
3510 :
3520 GOSUB 2200
3570 IF A$="M" THEN RETURN
3580 SYS 50179,1
3590 GOSUB 2000
3600 SYS 50179,0
3610 :
3620 : RETURN
3630 :
3700 REM ****** BILD LOESCHEN ******
3710 :
3715 GOSUB 2000:IF A$="M" THEN RETURN
3740 SYS 50176,1,2
3750 :
3760 : RETURN
3780 :
3800 REM ****** BILD SPEICHERN ******
3810 :
3820 GOSUB 2000
3830 IF A$="M" THEN RETURN
3832 N$=""
3835 PRINT""
3840 PRINT" BILDNAME: "N$
3850 PRINT"[145]"TAB(16);:INPUT N$
3860 GOSUB 2100
3870 IF A$="K" OR LEN(N$)=0 OR LEN(N$)>16 THEN 3835
3880 OPEN2,8,2,N$+",P,W":SYS 50191:CLOSE 2
3885 :
3890 : RETURN
3895 :
3900 REM ****** BILD LADEN ******
3910 :
3920 GOSUB 2000
3930 IF A$="M" THEN RETURN
3932 N$=""
3935 PRINT""
3940 PRINT" BILDNAME: "N$
3950 PRINT"[145]"TAB(16);:INPUT N$
3960 GOSUB 2100
3970 IF A$="K" OR LEN(N$)=0 OR LEN(N$)>16 THEN 3835
3980 OPEN2,8,2,N$+",P,R":SYS 50188:CLOSE 2
3985 :
3990 : RETURN
3995 :
4000 REM ******* MENUE *******
4010 :
4020 CD$=""
4030 TT$="P A R A M E T E R - P L O T"
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]"
4050 MP$(1)="* INFORMATIONEN *"
4060 MP$(2)="* NEUE VORSCHRIFT *"
4070 MP$(3)="* PARAMETERBEREICH *"
4080 MP$(4)="* ZEICHENMODUS *"
4090 MP$(5)="* GRAPH ZEICHNEN *"
4100 MP$(6)="* BILD ZEIGEN *"
4110 MP$(7)="* BILD LOESCHEN *"
4120 MP$(8)="* BILD SPEICHERN *"
4130 MP$(9)="* BILD LADEN *"
4140 MP$(10)="* PROGRAMM-ENDE *"
4145 :
4150 POKE 53280,9 :POKE 53281,9:REM FARBEN
4160 PRINT"[147]"TAB(7)TT$:PRINT TAB(7)TU$
4170 PRINT
4180 FOR I=1 TO 10:PRINT"[158]"TAB(10) MP$(I):PRINT:NEXT I
4190 PRINT"WAHL MIT CURSOR UP UND DOWN UND RETURN";
4200 IF R=0 THEN R=1
4210 GOSUB 4290
4220 GET A$:IF A$="" THEN 4220
4230 IF A$="" THEN GOSUB 4320
4240 IF A$="[145]" THEN GOSUB 4350
4250 IF A$<>CHR$(13) THEN 4220
4260 IF R=10 THEN PRINT"[147]":END
4265 IF R=2 THEN 1110
4270 ON R GOSUB 2500,1110,3000,3300,4500,3500,3700,3800,3900:GOTO 4160
4280 :
4290 PRINT""LEFT$(CD$,(R-1)*2)TAB(10)""MP$(R):RETURN
4300 PRINT""LEFT$(CD$,(R-1)*2)TAB(10)"[158]"MP$(R):RETURN
4310 :
4320 GOSUB 4300:R=R+1:IF R>10 THEN R=1
4330 GOSUB 4290:RETURN
4340 :
4350 GOSUB 4300:R=R-1:IF R<1 THEN R=10
4360 GOSUB 4290:RETURN
4370 :
4380 :
4500 REM ****** GRAPH ZEICHNEN ******
4510 :
4520 GOSUB 2200
4530 IF A$="M" THEN RETURN
4539 IF TX=0 THEN T1=-3.3:T2=3.3:TX=6.6/100
4540 IF XO-XU<=0 OR YO-YU<=0 THEN GOSUB 5000
4550 SYS 50179,1:SYS 50194
4560 XV=320/(XO-XU):YV=200/(YO-YU)
4570 GOSUB 6000
4580 POKE 768,61:FOR T=T1 TO T2 STEP TX
4590 XW=SIN(T)*EXP(0.1*T)
4600 XB=INT((XW-XU)*XV)
4610 YW=SIN(T)*COS(T)
4620 YB=199-INT((YW-YU)*YV)
4630 IF XB<0 OR XB>319 OR YB<0 OR YB>199 THEN 4700
4640 SYS 50182,XB,YB,1
4650 IF T>T1+0.5*TX AND VB=1 THEN SYS50185,XA,YA,XB,YB,1
4660 XA=XB:YA=YB
4700 NEXT T:POKE 768,139
4710 :
4720 GOSUB 2000:IF A$<>"M"THEN 4720
4730 SYS 50179,0
4800 : RETURN
4810 :
5000 REM ****** AUTOMATISCHE GRENZEN ******
5010 :
5020 PRINT" [153]BITTE WARTEN, X UND Y WERDEN"
5030 PRINT" AN DEN PARAMETER T ANGEPASST!"
5040 POKE 768,61:FOR T=T1 TO T2 STEP TX
5050 XW=SIN(T)*EXP(0.1*T)
5060 IF XW<XU THEN XU=XW
5070 IF XW>XO THEN XO=XW
5080 YW=SIN(T)*COS(T)
5090 IF YW<YU THEN YU=YW
5100 IF YW>YO THEN YO=YW
5110 NEXT T:POKE 768,139
5115 IF XU<0 AND XO>100*(-XU) THEN XO=ABS(XU)
5116 IF XO>0 AND XU<100*(-XO) THEN XU=-XO
5117 IF YU<0 AND YO>100*(-YU) THEN YO=ABS(YU)
5118 IF YO>0 AND YU<100*(-YO) THEN YU=-YO
5120 :
5130 : RETURN
5140 :
6000 REM ****** ACHSEN ZEICHNEN ******
6010 :
6020 XC=INT(-XU*XV)
6030 YC=199-INT(-YU*YV)
6040 IF XC>=0 THEN SYS 50185,XC,0,XC,199,1
6050 IF YC>=0 THEN SYS 50185,0,YC,319,YC,1
6055 GOSUB 6400
6060 EX=1
6070 XB=INT(EX*XV)
6080 IF XB<10 THEN EX=EX*10:GOTO 6070
6085 IF XB>100 THEN EX=EX/10:GOTO 6070
6090 X=XC
6110 IF X>=0 AND X<320 AND YC>2 THEN SYS 50185,X,YC,X,YC-3,1:X=X+XB:GOTO 6110
6115 X=XC-XB
6120 IF X>=0 AND YC>2 THEN SYS 50185,X,YC,X,YC-3,1:X=X-XB:GOTO 6120
6130 :
6160 EY=1
6170 YB=INT(EY*YV)
6180 IF YB<8 THEN EY=EY*10:GOTO 6170
6185 IF YB>80 THEN EY=EY/10:GOTO 6170
6190 Y=YC
6210 IF Y>=0 AND XC<317 THEN SYS 50185,XC,Y,XC+3,Y,1:Y=Y-YB:GOTO 6210
6215 Y=YC+YB
6220 IF Y<200 AND XC<317 THEN SYS 50185,XC,Y,XC+3,Y,1:Y=Y+YB:GOTO 6220
6230 :
6240 :
6250 : RETURN
6260 :
6400 REM ****** PFEILSPITZEN ******
6410 :
6420 IF XC<2 OR XC>317 THEN 6450
6430 SYS 50182,XC-2,2,1:SYS 50182,XC-1,1,1
6440 SYS 50182,XC+1,1,1:SYS 50182,XC+2,2,1
6450 IF YC<2 OR YC>197 THEN RETURN
6460 SYS 50182,317,YC-2,1:SYS 50182,318,YC-1,1
6470 SYS 50182,318,YC+1,1:SYS 50182,317,YC+2,1
6500 :
6510 : RETURN
6520 :