Programm 6 - CAS PrePro

Bei dieses Programm scheiterte mein wav2X2cas.
Dafür ließ es sich mit wav2cas konvertieren. Mal sehen, was die Fehleranalyse bringt.

Das Basic-Programm ist ein Zeichenprogramm für Funktions-Graphen.
Es scheint sich hierbei um die Weiterentwicklung (meines Bruders) eines von mir geschriebenen Progammes zu handeln. Ich kann mich daran erinnern, dass mein Programm nicht so schön nummeriert war und das User-Interface war nur rudimentär vorhanden. Aber die Grundfunktionen und vor allem die Formeln kommen mir sehr bekannt vor.

0 GOTO 20
1 REM GRAPHEN-ZEICHNEN
2 Y=EXP(X)*(X^2):RETURN
3 Y=EXP(X)*(X^2-1):RETURN
4 Y=EXP(X)*(X^2-2):RETURN
5 Y=EXP(X)*(X^2-5):RETURN
6 Y=EXP(X)*(X^2+1):RETURN
7 Y=EXP(X)*(X^2+2):RETURN
8 Y=EXP(X)*(X^2+5):RETURN
9 Y=EXP(X)*(X^2-10):RETURN
10 Y=EXP(X)*(X^2+10):RETURN
11 Y=EXP(X)*(X^2):RETURN
12 Y=EXP(X)*(X^2):RETURN
13 Y=EXP(X)*(X^2):RETURN
14 Y=EXP(X)*(X^2):RETURN
15 Y=EXP(X)*(X^2):RETURN
16 Y=EXP(X)*(X^2):RETURN
17 Y=EXP(X)*(X^2):RETURN
18 Y=EXP(X)*(X^2):RETURN
19 Y=EXP(X)*(X^2):RETURN
20 GOSUB 100
30 GOSUB 200
40 GOTO 30
100 PRINT CHR$(125)
110 OPEN #1,4,0,"K:"
120 FY=1:FX=1
130 XD=-200:YD=-200
140 GENAU=1:G=1
150 XS=0:X=1:SPAL=40
160 FO=1:DV=0:XSR=0:YSR=184
170 DIM TXT$(45)
180 TXT$=" START-Taste = zurueck zum Untermenue !"
185 POKE 755,0
190 RETURN
200 PRINT CHR$(125):PRINT :PRINT :PRINT "   HAUPTMENUE"
210 PRINT "   "
220 POSITION 2,10
230 PRINT "Beenden des Programmes      -1"
240 PRINT "Eingabe von Funktionswerten -2"
250 PRINT "Ausgabe des Graphes         -3"
260 PRINT :PRINT "  Eingabe :";
270 GET #1,WE:PRINT CHR$(WE)
280 IF WE<49 OR WE>51 THEN GOTO 200
290 I=VAL(CHR$(WE))
300 ON I GOSUB 1000,2000,3000
310 RETURN
1000 PRINT CHR$(125)
1010 GRAPHICS 33
1020 SETCOLOR 1,5,0
1030 SETCOLOR 2,5,0
1040 SETCOLOR 3,5,0
1050 SETCOLOR 4,5,0
1060 SETCOLOR 0,1,6
1070 POSITION 4,7
1080 PRINT #6;"ENDE"
1090 POSITION 6,9
1100 PRINT #6;"DES"
1110 POSITION 6,13
1120 PRINT #6;"PROGRAMMES"
1130 CLOSE #1
1140 END
2000 PRINT CHR$(125)
2010 PRINT :PRINT :PRINT "   EINGABE VON FUNKTIONSWERTEN"
2020 PRINT :PRINT
2030 PRINT "Beenden der Eingaben            -1"
2040 PRINT "Eingabe des Wertebereiches      -2"
2050 PRINT "Anweisung - Punkte verbinden    -3"
2060 PRINT "Eingabe des Genauigkeitsfaktors -4"
2070 PRINT "Eingabe der Anzahl der Formeln  -5"
2080 PRINT "Anweisung fuer Vergroesswrungen -6"
2090 PRINT :PRINT "  Eingabe :";
2100 GET #1,WE:PRINT CHR$(WE)
2110 IF WE<49 OR WE>54 THEN GOTO 2000
2120 I=VAL(CHR$(WE))
2130 ON I GOTO 2150,2200,2300,2400,2600,2500
2150 RETURN
2200 PRINT CHR$(125)
2210 POSITION 2,4
2220 PRINT "Eingabe des Wertebereiches [ Nach Eingabe RETURN druecken ]"
2230 POSITION 4,7
2240 PRINT "Anfangswert ";
2250 INPUT XS
2260 POSITION 4,8
2270 PRINT "Endwert     ";
2280 INPUT XE
2290 GOTO 2000
2300 PRINT CHR$(125)
2310 POSITION 2,5
2320 PRINT "Anweisung - Punkte verbinden"
2330 PRINT :PRINT "   Punkte verbinden       -1"
2340 PRINT "   Punkte nicht verbinden -2"
2345 PRINT :PRINT " Eingabe :";
2350 GET #1,DV:PRINT CHR$(DV)
2360 IF DV<49 OR DV>50 THEN GOTO 2300
2370 DV=VAL(CHR$(DV))
2380 GOTO 2000
2400 PRINT CHR$(125)
2410 POSITION 2,5
2420 PRINT "Eingabe des Genauigkeitsfaktors"
2430 PRINT :PRINT "Geben Sie ein,um wievielmal genauer der Graph gezeichnet werden soll."
2440 PRINT " Nach der Eingabe RETURN druecken !"
2450 PRINT :PRINT "   Eingabe ";
2460 INPUT G
2470 GENAU=1/G
2480 GOTO 2000
2500 PRINT CHR$(125)
2510 POSITION 2,5
2520 PRINT "Eingabe fuer Vergroesserungen"
2530 PRINT :PRINT " Nach den Eingaben RETURN druecken"
2540 PRINT :PRINT "Um wieviel soll der X-Wert vergroessert werden ";
2550 INPUT FX
2560 PRINT "Um wieviel soll der Y-Wert vergroessert werden ";
2570 INPUT FY
2580 GOTO 2000
2600 PRINT CHR$(125)
2610 POSITION 2,5
2620 PRINT "Eingabe der Anzahl der Formeln"
2630 PRINT :PRINT "  Eingabe ";
2640 INPUT FO
2650 IF FO<1 THEN GOTO 2600
2660 GOTO 2000
3000 PRINT CHR$(125)
3010 POSITION 2,5
3020 PRINT "AUSGABE DER GRAPHEN"
3030 PRINT :PRINT " Ausgabe der Graphen mit KOS  -1"
3040 PRINT " Ausgabe der Graphen ohne KOS -2"
3050 PRINT " Zurueck zum Hauptmenue       -3"
3060 PRINT :PRINT "  Eingabe :";
3070 GET #1,WE:PRINT CHR$(WE)
3080 IF WE<49 OR WE>51 THEN GOTO 3000
3090 I=VAL(CHR$(WE))
3095 IF I=3 THEN GOTO 3120
3100 GRAPHICS 8+16:SETCOLOR 1,0,0
3105 ON I GOSUB 3200,3300
3110 GOTO 3000
3120 GRAPHICS 0:RETURN 
3200 COLOR 1:FOR PR=1 TO 6
3210 READ P1,P2,D1,D2
3220 PLOT P1,P2:DRAWTO D1,D2
3230 NEXT PR
3240 FOR PR=1 TO 320 STEP 20
3250 PLOT PR,94:DRAWTO PR,98
3260 NEXT PR
3270 FOR PR=16 TO 192 STEP 20
3280 PLOT 158,PR:DRAWTO 162,PR
3290 NEXT PR
3300 COLOR 1:FOR FZ=1 TO FO
3310 FOR X=XS TO XE STEP GENAU
3320 GOSUB FZ+1
3330 YV=Y*FY:XV=X*FX
3340 IF XV<-160 OR XV>159 THEN GOTO 3410
3350 IF YV<-96 OR YV>95 THEN GOTO 3410
3360 PLOT 160+XV,96+YV
3365 IF DV=2 THEN GOTO 3410
3366 IF X=XS THEN GOTO 3410
3367 IF X=XE THEN GOTO 3410
3370 IF XD<-160 OR XD>159 THEN GOTO 3400
3380 IF YD<-96 OR YD>95 THEN GOTO 3400
3390 DRAWTO 160+XD,96+YD
3400 XD=XV:YD=YV
3410 NEXT X
3420 NEXT FZ
3425 GOSUB 3500
3430 IF PEEK(53279)<>6 THEN GOTO 3430
3435 RESTORE 
3440 RETURN 
3445 DATA 0,96,319,96
3450 DATA 319,96,310,91
3460 DATA 319,96,310,101
3470 DATA 160,0,160,191
3480 DATA 160,0,155,10
3490 DATA 160,0,165,10
3500 COLOR 1:SA=PEEK(89)*256+PEEK(88)
3510 ANF=SA+YSR*SPAL+XSR
3520 FOR E1=1 TO LEN(TXT$)
3530 GOSUB 3700
3540 ZEICH=PEEK(756)*256
3550 ZEICH=ZEICH+E3*8
3560 FOR E2=7 TO 0 STEP -1
3570 POKE ANF+E2*SPAL,PEEK(ZEICH+E2)
3580 NEXT E2
3590 XSR=XSR+1
3600 ANF=ANF+1
3610 NEXT E1
3620 RETURN 
3700 E3=ASC(TXT$(E1,E1))
3710 IF (E3<32) OR (E3>127 AND E3<160) THEN E3=E3+64:RETURN 
3720 IF E3>31 AND E3<96 THEN E3=E3-32
3730 RETURN

Download der Datei als CAS-File (bitte im Atari mit CLOAD laden):