10 REM ******************************** 20 REM * FUNKTIONENHILFE FUER DEN C64 * 30 REM * MICHAEL SUHR * 40 REM * 5160 DUEREN WERNERSTR. 10 * 50 REM * TEL: 02421/14666 * 60 REM * ZEILEN-70 BITTE LOESCHEN!! * 70 REM ******************************** 100 RUN900 110 : 120 REM ** ZEITKRITISCHE U-PROGRAMME *** 130 : 140 REM ** STEIGUNG *** 150 : 160 Y=(FNX(X+H)-FNX(X-H))/H 170 RETURN 180 : 190 REM ** NULLSTELLEN *** 200 : 210 GOSUB8140 220 POKEH4,H8:IF FNX(RND(TI)*5)=FNX(RND(H8)*5)ANDST=H8THEN330 230 HH=1E-31:H=H2:Z=-EN:SW=.2+H 240 Z=Z+SW:X=Z:ZE=H8:PRINTINT(X)"[157] [145]":GETA$:IFA$="_"THENRETURN 250 POKEH4,H8 260 Y1=FNX(X):IFABS(Y1)>ENANDZSW/2 OR ZE>24 OR (ST<>H8 AND DE<>2) THEN320 290 IF ABS(Y1)>=H3 ORZE<20 THEN 250 300 IFST=H8 ORDE=2THENX=INT(X*1E5+.5)/1E5:LZ=LZ+1:DE(LZ)=X:IFFUTHENDE$(LZ)="F" 310 IFABS(DE(LZ))<5E-2THENDE(LZ)=H8 320 IF ZEN OR ABS(Y)>2 OR ST<>H8 OR(Y=H8 ANDZE=H8)) AND ZSW/2 ORZE>24THEN550 490 IFST<>H8THEN550 500 IFABS(Y1)>=H2ORZE<22THEN430 510 X=INT(X*H5+.5)/H5 520 IFABS(X)<5E-2THENX=H8 530 GOSUB4340 540 IFABS(DE(LZ))0THENGOSUB8660 580 IFLZ=H8ORDE$(1)=""THENDE$(1)="[203]EINE"+CHR$(160)+"[197]XTREMWERTE":DE(1)=-50:LZ=1 590 RETURN 600 : 610 REM ** ZUR STRINGVERARBEITUNG *** 620 : 630 Q$=MID$(E$,F,H9):RETURN 640 : 650 Q$=MID$(E$,F,2):RETURN 660 : 670 Q$=MID$(E$,F,3):RETURN 680 : 690 REM ** LINIEN ZIEHEN *** 700 : 710 Y1=INT(Y1+.5):Y2=INT(Y2+.5) 720 IFY1160THENY1=160 740 IFY2160THENY2=160 760 : 770 FORZA=Y1 TO Y2 STEP SGN(Y2-Y1) 780 SYSS1,X1,ZA 790 NEXT 800 RETURN 810 : 820 REM ** DEF'LUECKE ZEICHNEN *** 830 : 840 IF LZ<>H8THEN FOR ZA=H8TO159:SYSS1,X1+SW,ZA:NEXT:RETURN 850 FORZA=H9+GE TO 160+GE STEP 2 860 SYSS1,X1,ZA 870 NEXT 880 RETURN 890 : 900 REM ** START *** 910 : 920 GOSUB7400:REM STARTWERTE 930 GOSUB4430:REM EINGABE 940 GOSUB9220:REM BERECHNEN 950 GOSUB7790:REM ENTSCHEIDUNG 960 GOTO 930 970 : 980 REM ** DEF'LUECKEN *** 990 : 1000 GOSUB8240:REM INIT 1010 GOSUB1140:REM SUCHE 1020 GOSUB8490:REM SORTIEREN 1030 GOSUB9330:REM GLEICHE STELLEN 1040 LE=7:GOSUB1970:REM VEREINFACHEN 1050 GOSUB2570:REM VERKUERZEN 1060 GOSUB9150:REM FUNKT.INIT 1070 IFPL=H8THENGOSUB 9440:GOTO1120:REM NORMALAUSGABE 1080 GOSUB8870:REM GRAPHIK EIN 1090 GOSUB2710:REM DEF'ZEICHNEN 1100 GOSUB2790:REM DEF'IN GRAPHIK 1110 GOSUB8930:REM GRAPHIK AUS 1120 DE=H9:RETURN 1130 : 1140 REM ** FUNKTIONEN ** 1150 GOSUB9680 1160 PRINTF$(16) 1170 DE$(1)="[196](X)=[167][210]":DE(1)=-50:LZ=H9:DE=2:FE=H8 1180 FORF=H9TOLEN(E$) 1190 IFMID$(E$,F,1)=CHR$(188)ORMID$(E$,F,1)=CHR$(186)THENGOSUB1430:REM (LOG+SQR) 1200 IFMID$(E$,F,H9)=CHR$(174)THENGOSUB1520:REM (^) 1210 NEXT 1220 : 1230 REM ** BRUECHE *** 1240 : 1250 FORF=H9TOLEN(E$) 1260 IFMID$(E$,F,H9)=CHR$(173)THENGOSUB1350:REM (/) 1270 NEXT 1280 GOSUB 9150:IFLZ<>H9THEN1310 1290 IFLZ=H9THENGOSUB8140:POKEH4,H8:Y=FNX(RND(TI)*EN):GOSUB8190:IFST<>H8THEN1320 1300 RETURN 1310 DE$(H9)=DE$(H9)+CHR$(160)+"OHNE":GOSUB9330:GOSUB1730 1320 IFLZ=H9THENDE$(H9)="[206]ICHT DEFINIERT!" 1330 RETURN 1340 : 1350 REM ** BRUCH GEFUNDEN *** 1360 : 1370 PRINTF$(17) 1380 GOSUB8990 1390 GOSUB9080 1400 FU=H9:GOSUB190:FU=H8 1410 RETURN 1420 : 1430 REM ** LOG+SQR FINDEN *** 1440 : 1450 LL=LZ:PRINTF$(18) 1460 GOSUB8990 1470 GOSUB9080 1480 IF MID$(E$,F,H9)<>CHR$(186)THENFU=H9:REM SQR 1490 GOSUB190:FU=H8:REM NULLSTELLEN 1500 RETURN 1510 : 1520 REM ** ^ FINDEN *** 1530 : 1540 PRINTF$(19) 1550 GOSUB8990 1560 GOSUB9080 1570 LL=LZ 1580 GOSUB 8140 1590 IF INT(FNX(.345))<>FNX(.543) OR FNX(.345234)<=H8THEN1610 1600 RETURN:REM KEINE LUECKE 1610 A=H8:FS=F:ZA=F-H9 1620 F=F-H9 1630 IFMID$(E$,F,H9)="("THENA=A+1 1640 IFMID$(E$,F,H9)=")"THENA=A-1 1650 IFA<>H8THEN1620 1660 F=F-H9 1670 GOSUB9080 1680 GOSUB190 1690 GOSUB9150 1700 F=FS 1710 RETURN 1720 : 1730 REM ** BEREICHE *** 1740 : 1750 PRINTF$(20) 1760 GOSUB8140 1770 ZE=H9 1780 ZE=ZE+H9:A$="" 1790 X=DE(ZE):IF DE$(ZE)="F"THEN A$="=":LU=LU+H9:LU(LU)=DE(ZE) 1800 POKEH4,H8 1810 Y=FNX(X+.101) 1820 IFST<>H8THEN1870 1830 Y=FNX(X-.101) 1840 IF ZE=2ANDST<>H8THENDE$(ZE)="[ X<"+A$+STR$(DE(ZE))+"]":GOTO1930 1850 IF ST=H8THENDE$(ZE)="["+STR$(DE(ZE))+"]":LU=LU+1:LU(LU)=DE(ZE) 1860 GOTO1930 1870 POKEH4,H8:Y=FNX(X-.101) 1880 IFST<>H8THENFORF=ZETOLZ:DE(F)=DE(F+1):NEXT:LZ=LZ-1:IFLZ>H9THEN1770 1890 DE$(ZE)="["+STR$(DE(ZE))+"<"+A$+"X" 1900 IFZE>=LZTHEN1920 1910 DE$(ZE)=DE$(ZE)+"<"+A$+STR$(DE(ZE+1))+"]":ZE=ZE+1:DE$(ZE)="DEF":GOTO1930 1920 IF ZE=LZTHENDE$(ZE)=DE$(ZE)+"]" 1930 IFZE"9"THEN2120 2050 H=VAL(MID$(A$,ZA)):B$=STR$(H):ZE=LEN(B$) 2060 IFMID$(B$,H9,H9)=" "THENB$=MID$(B$,2):ZE=LEN(B$) 2070 H=INT(H*H6+.5)/H6:IFINT(H)=HTHENB$=STR$(H) 2080 IF INT(H)<>H THEN GOSUB2170 2090 IFLEN(B$)>LE THENB$=LEFT$(B$,LE) 2100 IFB$=""ORH=0THENB$="":GOTO2120 2110 H$=MID$(A$,(ZA+ZE)):A$=LEFT$(A$,ZA-H9)+B$:ZA=LEN(A$):A$=A$+H$ 2120 IFZAHHTHEN2320 2240 IFS=H9OR S=-H9THEN2280 2250 B$=STR$(S)+"PI" 2260 IFD<>1THENB$=B$+"/"+MID$(STR$(D),2) 2270 RETURN 2280 IFS=H9ANDD=H9THENB$="PI":RETURN 2290 IFS=-H9ANDD=H9THENB$="-PI":RETURN 2300 IFS=H9THENB$="PI/"+STR$(D):RETURN 2310 IFS=-H9THENB$="-PI/"+STR$(D):RETURN 2320 NEXT:NEXT 2330 : 2340 S=H9 2350 S=S+H9 2360 X=H*S:X=INT(X*H7+.5)/H7 2370 IFX=INT(X)THENB$=STR$(X)+"/"+MID$(STR$(S),2):RETURN 2380 IFS<20THEN2350 2390 : 2400 FORD=H9TO4 2410 FORS=2TO12 2420 X=(1/D)*SQR(S):X=INT(X*A+.5)/A 2430 IFD=H9ANDABS(H-X)" "THEN2660 2650 IFZE>2ANDZE<>9ANDZE<>6THENA$=MID$(A$,H9,ZE-H9)+MID$(A$,ZE+H9):ZE=ZE-H9 2660 NEXT 2670 DE$(ZA)=A$ 2680 NEXT 2690 RETURN 2700 : 2710 REM ** DEF'ZEICHNEN *** 2720 : 2730 FORF=H9TOLZ 2740 X=DE(F):X1=FA*(EN+X):IFX1ENTHEN3250 3150 X=X+SW 3160 GOTO3090 3170 X=X+SW:X1=FA*(EN+X):GE=(GE=H8) 3180 GETA$:IFA$="_"ORA$=CHR$(13)THEN3250 3190 Y1=Y:IFST<>H8THENY1=FA*(EN-FNX(X)) 3200 POKEH4,H8 3210 Y=FA*(EN-FNX(X)):Y2=Y 3220 IFST=H8THENGOSUB690 3230 IFST<>H8THENGOSUB820 3240 IFXCHR$(182)ANDQ$<>CHR$(186)THENF=F-H9 4020 GOSUB630 4030 IF Q$=CHR$(173)THENGOSUB8990:F=ZA+H9:REM (/) 4040 IFQ$=CHR$(188)ORQ$=CHR$(189)ORQ$=CHR$(180)THEN 4090:REM LN,EXP,SGN 4050 IFQ$=CHR$(186)ORQ$=CHR$(182)THENGOSUB8990:GOSUB9080:GOSUB190:REM ABS;SQR 4060 IFF=H9THEN 4080 4070 IFQ$<>CHR$(172)THEN4090:REM (*) 4080 GOSUB8990:GOSUB9080:GOSUB190 4090 NEXT:RETURN 4100 : 4110 REM ** DE IN DE$ *** 4120 : 4130 IFLZ=H8THEN4170 4140 FORZA=H9TOLZ:DE$(ZA)="[206]ULLST.:"+STR$(DE(ZA)):NEXT:GOSUB8490 4150 GOSUB9330 4160 IFLU>0THENGOSUB8660 4170 IFLZ=H8THEN DE$(1)="[203]EINE"+CHR$(160)+"[206]ULLSTELLEN":DE(1)=-50:LZ=H9 4180 RETURN 4190 : 4200 REM ** EXTREMAS *** 4210 : 4220 GOSUB8240:REM INIT 4230 GOSUB360:REM SUCHE 4240 IFA$="_"THENRETURN 4250 LE=6:GOSUB1970:REM VEREINFACHEN 4260 GOSUB2570:REM VERKUERZEN 4270 IFPL=H8THENGOSUB9440:GOTO4320:REM NORMALAUSGABE 4280 GOSUB8870:REM GRAPHIK EIN 4290 GOSUB 8490:REM SORTIEREN 4300 GOSUB2790:REM EXTREMA IN GRAPHIK 4310 GOSUB8930:REM GRAPHIK AUS 4320 RETURN 4330 : 4340 REM ** MINIMA ODER MAXIMA *** 4350 : 4360 Y=FNX(X):Y=INT(Y*H5+.5)/H5 4370 IFABS(Y)M AND L>M THENLZ=LZ+H9:DE$(LZ)="[205]IN.:"+STR$(X)+";"+STR$(Y):DE(LZ)=X 4410 RETURN 4420 : 4430 REM ** EINGABEROUTINE *** 4440 : 4450 GOSUB4650:REM EINGABE 4460 GOSUB4950:REM SYNTAXKONTROLLE 4470 GOSUB7010:REM BETRAEGE 4480 GOSUB6890:REM PI SUCHE 4490 GOSUB5760:REM MALZEICHEN 4500 GOSUB5670:REM POTENZEN 4510 GOSUB5890:REM KLAMMERN1 4520 GOSUB7220:REM TAN 4530 GOSUB6010:REM KLAMMERN2 4540 GOSUB6110:REM KLAMMERN3 4550 GOSUB6300:REM KLAMMERN4 4560 GOSUB6210:REM LOG+LN 4570 GOSUB6460:REM EULERISCHE ZAHL 4580 GOSUB6550:REM TOKENS 4590 GOSUB5290:REM LETZTE SYNTAXKONTROLLE 4600 GOSUB5590:REM FEHLERMELDUNGEN 4610 IF FE THEN4450 4620 GOSUB6800:REM SPEICHERN 4630 RETURN 4640 : 4650 REM ** EINGABETEIL *** 4660 : 4670 PRINTF$(23):SYS46374 4680 FE=H8:FL=H8:LL=H8:HI=H8 4690 PRINT""ES$"_[145]":E$=ES$ 4700 GETA$:IFA$=""THEN4700 4710 A=ASC(A$):IFA=20ANDLEN(E$)=H8THEN4700 4720 IF(A$="[200]"ORA$="H")ANDFL=H8THENES$=E$:GOSUB9790:GOTO4650 4730 IF PEEK(211)>34ANDPEEK(211)<40ORPEEK(211)>74ANDA<>20THENA=20 4740 IFA$="[194]"THENA$="[221]":A=221:BE=BE+H9 4750 PRINT 4760 IFA<>13ORE$=""THEN 4820 4770 IF FL<>H8THEN4810 4780 ES$=E$:E$=E$+":" 4790 B$=""+ES$+CHR$(13)+F$(24):GOSUB8050:IFA$="[136]"THENRETURN 4800 GOTO4650:REM NEUE EINGABE 4810 IF RIGHT$(E$,3)<>" [157][145]"THENE$=E$+"":FL=H8 4820 IF E$=""THEN4890 4830 IFA$="^"ANDFL=0ANDRIGHT$(E$,1)<>""THENE$=E$+" [157][145]":FL=H9:GOTO4910 4840 IFA<>20THEN4900 4850 IFRIGHT$(E$,H9)=""THENE$=LEFT$(E$,LEN(E$)-1):FL=H9 4860 IFRIGHT$(E$,3)=" [157][145]"THENE$=LEFT$(E$,LEN(E$)-3):FL=H8 4870 IFRIGHT$(E$,H9)="[221]"THENBE=BE-1 4880 E$=LEFT$(E$,LEN(E$)-H9) 4890 IFA$="^"ANDE$=""THEN4910 4900 IF(A>32ANDA<96)ORA=186ORA=222ORA=221THENE$=E$+A$ 4910 E$=E$+"[145] [157][157]_ [157][157][157][157] [145]":PRINT"[145]"E$;:E$=LEFT$(E$,LEN(E$)-18) 4920 IFFL=H9THENPRINT""; 4930 GOTO4700 4940 : 4950 REM ** SYNTAX 1 *** 4960 : 4970 PRINTF$(25) 4980 A=H8:FORF=H9TOLEN(E$) 4990 GOSUB630 5000 IFQ$="("THENA=A+1 5010 IFQ$=")"THENA=A-1 5020 IFQ$="X"THENLL=LL+1 5030 NEXT 5040 IFA<>H8THENFE=1:GOSUB9740:RETURN 5050 IFLL=H8THENFE=8192:GOSUB9740:RETURN 5060 A=H8:FORF=H9TOLEN(E$) 5070 GOSUB630 5080 IFQ$="["THENA=A+1 5090 IFQ$="]"THENA=A-1 5100 NEXT 5110 IFA<>H8THENFE=2:GOSUB9740 5120 FORF=H9TOLEN(E$) 5130 GOSUB630 5140 IFQ$<>"/"THEN 5180 5150 F=F+H9:GOSUB630 5160 IF (Q$<"0" OR Q$>"9") AND (Q$<>"("AND Q$<>"["AND Q$ <>"X") THENFE=2048 5170 IFFETHENGOSUB9740:RETURN 5180 NEXT 5190 FORF=H9TOLEN(E$) 5200 GOSUB630:IFQ$="("ORQ$=")"ORQ$="]"ORQ$="["THEN5230 5210 IFQ$>="0"ANDQ$<="9"THEN5230 5220 A$=Q$:F=F+H9:GOSUB630:F=F-H9:IFA$=Q$THENFE=4096:GOSUB9740:RETURN 5230 GOSUB630:IFQ$<>"*"ANDQ$<>"("THEN 5260 5240 F=F+H9:GOSUB630:F=F-H9 5250 IFQ$="*"ORQ$="/"ORQ$="+"ORQ$=")"THENFE=4096:GOSUB9740:RETURN 5260 NEXT 5270 RETURN 5280 : 5290 REM ** LETZTE SYNTAXKONTROLLE *** 5300 : 5310 IFFETHEN RETURN 5320 PRINTF$(26) 5330 FORF=2TOLEN(E$)-H9 5340 GOSUB630 5350 A=ASC(Q$):IFA<45AND(A<40ORA=44)OR(A=>58ANDA<170ANDA<>88)THENFE=8 5360 IFFETHENPRINT"'"Q$"[146]'":RETURN 5370 NEXT 5380 FORF=2TOLEN(E$)-H9 5390 GOSUB630 5400 IFQ$<>"("THEN5440 5410 F=F+1:GOSUB630 5420 A=ASC(Q$):IFA=172OR A=173 ORA=174 THENFE=4096:RETURN 5430 F=F-1:GOSUB630 5440 GOSUB650:IFQ$=")("THENFE=32:RETURN 5450 IFQ$="X)"THENF=F+2:GOSUB630:F=F-2:IF(Q$<"[167]"ORQ$>"[174]")ANDQ$>":"THENFE=64 5460 IFFETHENRETURN 5470 GOSUB630:IFQ$<="X"ORQ$=CHR$(255)THEN5520 5480 F=F+H9:GOSUB630:IFQ$<>"("ANDQ$<>":"ANDASC(Q$)<170THENFE=4096:RETURN 5490 IFQ$="[174]"THENF=F-1:GOSUB630:F=F+1:IFQ$>"9"ANDASC(Q$)<>255THENFE=4:RETURN 5500 F=F-H9:GOSUB630 5510 IFQ$>"[180]"ANDQ$<"[192]"THENF=F+1:GOSUB630:F=F-1:IFQ$<>"("THENFE=128:RETURN 5520 IFQ$<>")"THEN5550 5530 F=F+H9:GOSUB630:F=F-H9 5540 A=ASC(Q$):IF(A<170ORA>174)AND(A<>58)AND(A<>41)THENFE=512:RETURN 5550 NEXT 5560 IFLEN(E$)>79THENFE=256 5570 RETURN 5580 : 5590 REM ** FEHLERMELDUNGEN *** 5600 : 5610 IFFE=H8THENRETURN 5620 HI=LOG(FE)/LOG(2)+1 5630 PRINTF$(HI):GOSUB7970 5640 IFA$="[200]"ORA$="H"THENGOSUB9790:HI=0 5650 RETURN 5660 : 5670 REM ** POTENZEN IN KLAMMERN *** 5680 : 5690 IFFETHENRETURN 5700 PRINTF$(27) 5710 FORF=H9TOLEN(E$) 5720 IF MID$(E$,F,3)=" [157][145]"THENE$=LEFT$(E$,F-1)+"^("+RIGHT$(E$,LEN(E$)-F-2) 5730 IF MID$(E$,F,H9)=""THENE$=LEFT$(E$,F-1)+")"+RIGHT$(E$,LEN(E$)-F) 5740 NEXT:RETURN 5750 : 5760 REM ** MAL ZEICHEN SETZEN *** 5770 : 5780 IFFETHENRETURN 5790 PRINTF$(28):F=H8 5800 F=F+H9 5810 GOSUB630 5820 A=ASC(Q$):IF(A<64ORA>90)AND(A<>255ANDA<>40ANDA<>186)THEN5860 5830 IFF<>1THENF=F-H9:GOSUB630 5840 A=ASC(Q$):IFA<48ORA>57THENF=F+H9:GOTO5860 5850 IFA>47ANDA<58THENE$=LEFT$(E$,F)+"*"+RIGHT$(E$,LEN(E$)-F):F=F+2 5860 IFF47ANDA<58)ORA=46THENGOSUB6400 6380 IFF47ANDA<58)ORA=46THEN6410 6440 E$=LEFT$(E$,F-H9)+")"+RIGHT$(E$,LEN(E$)-F+1):RETURN 6450 : 6460 REM ** E WANDELN *** 6470 : 6480 IFFETHENRETURN 6490 F=H8 6500 F=F+H9 6510 GOSUB630:IFQ$="E"THENE$=LEFT$(E$,F-1)+"EXP(1)"+RIGHT$(E$,LEN(E$)-F):F=F+3 6520 IFF0ORBE=0THENRETURN 7040 PRINTF$(36) 7050 FL=H8:A=H8:S=H8:F=H8 7060 F=F+H9:GOSUB630:IFQ$="[221]"THENA=A+H9 7070 IF(Q$="/"ORQ$="*"ORQ$="+"ORQ$="-")ANDA=2THENZA=F:GOSUB7120:A=H8:S=ZA:F=ZA 7080 IFF2THENFE=1024:RETURN 7130 F=S:FL=H8 7140 F=F+H9 7150 GOSUB630 7160 IFQ$="[221]"THENFL=FL+H9:IFFL=3THENFL=1 7170 IFQ$="[221]"ANDFL=H9THENE$=LEFT$(E$,F-1)+"ABS("+RIGHT$(E$,LEN(E$)-F) 7180 IFFL=2ANDQ$="[221]"THENE$=LEFT$(E$,F-1)+")"+RIGHT$(E$,LEN(E$)-F) 7190 IFF"TAN"THEN7370 7290 A=H8:S=F-H9:F=F+2:Q$="" 7300 F=F+H9 7310 GOSUB 630 7320 IFQ$="("THENA=A+H9 7330 IFQ$=")"THENA=A-H9 7340 IFA<>H8THEN7300 7350 Q$=MID$(E$,S+4,F-S-3) 7360 E$=LEFT$(E$,S)+"(SIN"+Q$+")/(COS"+Q$+")"+RIGHT$(E$,LEN(E$)-F) 7370 IF FH8THENPRINTF$(42) 7840 IFPL<>H8THENPRINTF$(43) 7850 PRINTF$(44) 7860 PRINTF$(45) 7870 PRINTF$(46) 7880 GOSUB7970 7890 IFA$="[133]"THENPL=0:DE=0:NU=0:EX=0:LZ=0:LU=0:GE=0:RETURN 7900 IFPL<>H8ANDA$="[134]"THEN GOSUB8870:GOSUB7970:GOSUB8930:GOTO7790 7910 IFPL<>H8ANDA$="[135]"THENGOSUB 7480:GOTO7790 7920 IFA$="[136]"THENLZ=H8:GOSUB9220:GOTO7790 7930 IFA$="[137]"THENPL=0:DE=0:NU=0:EX=0:LZ=0:LU=0:GOSUB 9220:GOTO7790 7940 IFA$="[140]"THENPRINT"[147][193]UF [215]IEDERSEHEN!":SYS64738 7950 GOTO7880 7960 : 7970 REM ** AUF TASTENDRUCK WARTEN *** 7980 : 7990 PRINTF$(15) 8000 GETA$:IFA$<>""THEN8000 8010 GETA$:IFA$=""THEN8010 8020 PRINTF$(62) 8030 RETURN 8040 : 8050 REM ** ENTSCHEIDUNG *** 8060 : 8070 PRINT"[147]"B$"" 8080 PRINTF$(48) 8090 PRINTF$(49) 8100 GOSUB7970:REM WARTEN 8110 IFA$<>"[133]"ANDA$<>"[136]"THEN8100 8120 RETURN 8130 : 8140 REM ** FEHLERMELDUNG ABSCHALTEN *** 8150 : 8160 POKE768,188:POKE769,2 8170 RETURN 8180 : 8190 REM ** FEHLERMELDUNG EINSCHALTEN *** 8200 : 8210 POKE768,139:POKE769,227 8220 RETURN 8230 : 8240 REM ** INITIALISIERUNG DER FKT. *** 8250 : 8260 DEF FNX(X)=X: 8270 A=256*PEEK(79)+PEEK(78) 8280 POKE A,232:POKE A+H9,195 8290 RETURN 8300 : 8310 REM ** INTERVALL *** 8320 : 8330 PRINT"[147] [198](X)="ES$ 8340 PRINTF$(50) 8350 PRINTF$(51) 8360 PRINTF$(52) 8370 PRINTF$(53) 8380 PRINTF$(54) 8390 GOSUB7970:REM WARTEN 8400 IFA$="[133]"THEN X=-4 8410 IFA$="[134]"THEN X=-8 8420 IFA$="[135]"THEN X=-16 8430 IFA$="[136]"THEN X=-32 8440 IFA$<"[133]"ORA$>"[136]"THEN8390 8450 EN=-X 8460 FA=-80/X 8470 RETURN 8480 : 8490 REM ** SORTIEREN *** 8500 : 8510 FORZA=H9TOLZ 8520 FORZE=H9TOLZ 8530 IFDE(ZA)=>DE(ZE)THEN8550 8540 A=DE(ZA):A$=DE$(ZA):DE(ZA)=DE(ZE):DE$(ZA)=DE$(ZE):DE(ZE)=A:DE$(ZE)=A$:ZE=1 8550 NEXT 8560 NEXT:ZA=H8 8570 ZA=ZA+H9 8580 IF DE$(ZA)<>""THEN8630 8590 FORZE=ZA TOLZ 8600 DE(ZE)=DE(ZE+H9):DE$(ZE)=DE$(ZE+H9) 8610 NEXT 8620 LZ=LZ-H9:ZA=H9 8630 IFZAH1 OR LZ=H8 THEN8720 8710 FORF=ZETOLZ:DE(F)=DE(F+H9):DE$(F)=DE$(F+1):NEXT:LZ=LZ-H9:ZE=H9:GOTO8680 8720 NEXT:NEXT:RETURN 8730 : 8740 REM ** GITTER *** 8750 : 8760 FOR ZE=H8 TO 160 STEP 20 8770 FORZA=H8TO160STEP4:SYSS1,ZA,ZE:SYSS1,ZE,ZA:NEXT 8780 NEXT 8790 FORZA=160TO0STEP-2:SYSS1,ZA,80:SYSS1,80,ZA:NEXT:RETURN 8800 : 8810 REM ** RAHMEN *** 8820 : 8830 FORZA=H8TO319:SYSS1,ZA,H8:SYSS1,ZA,199:NEXT 8840 FORZA=H8TO199:SYSS1,H8,ZA:SYSS1,319,ZA:NEXT 8850 RETURN 8860 : 8870 REM ** GRAPHIK EIN *** 8880 : 8890 POKE53265,59:POKE53272,104:POKE56576,2:REM GRAPHIK EIN 8900 IFPL<>H8THENV=53248:POKEV+21,1:POKEV+39,11:POKE23544,116:REM SPRITE EIN 8910 RETURN 8920 : 8930 REM ** GRAPHIK AUS *** 8940 : 8950 POKE53265,155:POKE53272,21:POKEV+21,H8:POKE56576,3 8960 PRINTCHR$(14) 8970 RETURN 8980 : 8990 REM ** ARGUMENT FINDEN (DEF'L) *** 9000 : 9010 A=H8:ZA=F:FL=H8 9020 ZA=ZA+H9 9030 IFMID$(E$,ZA,H9)="("THENA=A+1:FL=H9 9040 IFMID$(E$,ZA,H9)=")"THENA=A-1 9050 IFA<>H8 OR FL=H8THEN9020 9060 RETURN 9070 : 9080 REM ** ARGUMENT INITIALISIEREN *** 9090 : 9100 FORZE=H9TOZA-F 9110 POKE49152+999+ZE,ASC(MID$(E$,ZE+F,H9)) 9120 NEXT:POKEZE+49152+999,ASC(":") 9130 RETURN 9140 : 9150 REM ** FUNKTION REINITIALISIEREN *** 9160 : 9170 FORZE=H9TOLEN(E$) 9180 POKE49152+999+ZE,ASC(MID$(E$,ZE,H9)) 9190 NEXT:POKEZE+49152+999,ASC(":") 9200 RETURN 9210 : 9220 REM ** HAUPTPROGRAMM BERECHNEN *** 9230 : 9240 IFPL=H8ANDDE=H8ANDNU=H8ANDEX=H8THENGOSUB8310:REM STARTWERTE 9250 IFPL=H8THENB$=F$(55):GOSUB8050:IFA$="[136]"THENDE=0:NU=0:EX=0:LU=0:GOSUB2880 9260 IF BE THEN RETURN:REM BETRAEGE 9270 IFDE=H8THENB$=F$(56):GOSUB8050:IFA$="[136]"THENGOSUB980 9280 IFDE=H8THENRETURN 9290 IFNU=H8THENB$=F$(57):GOSUB8050:IFA$="[136]"THENGOSUB3790 9300 IFEX=H8THENB$=F$(58):GOSUB8050:IFA$="[136]"THENGOSUB4200 9310 RETURN 9320 : 9330 REM ** GLEICHE STELLEN PRUEFEN *** 9340 : 9350 IFLZ=H9THENRETURN 9360 GOSUB8140:FORZA=H9-(DE=2)TOLZ-H9 9370 IF ABS(DE(ZA)-DE(ZA+1))>.2ORLZ<=H9-(DE=2)THEN9410 9380 IFNU=1AND(ABS(FNX(DE(ZA)))"DEF"THENPRINTA$ 9500 NEXT 9510 GOSUB 7970 9520 RETURN 9530 : 9540 REM ** GUELTIGKEIT *** 9550 : 9560 PRINTF$(61) 9570 GOSUB8140 9580 FOR ZA= H9 TO LZ:POKEH4,H8:Y=FNX(DE(ZA)) 9590 IF ST=H8THEN9630 9600 POKEH4,H8:Y=FNX(DE(ZA)+H1):IFST=H8THEN9630 9610 POKEH4,H8:Y=FNX(DE(ZA)-H1):IFST=H8THEN9630 9620 IFLZ>H8THENGOTO9640 9630 IF ABS(Y)<.5ORLZ=H8THEN9650 9640 FORF=ZATOLZ:DE$(F)=DE$(F+H9):DE(F)=DE(F+H9):NEXT:LZ=LZ-H9:GOTO9580 9650 NEXT 9660 GOSUB8190:RETURN 9670 : 9680 REM ** LOESCHEN *** 9690 : 9700 FORF=H9TO50 9710 DE(F)=H8:DE$(F)="" 9720 NEXT :RETURN 9730 : 9740 REM ** SYNTAXFEHLER MARKIEREN *** 9750 : 9760 ES$=LEFT$(ES$,F-1)+"_"+MID$(ES$,F) 9770 RETURN 9780 : 9790 REM ** HILFSMELDUNGEN *** 9800 : 9810 A$=MID$(STR$(HI),2)+"HILFE" 9820 OPEN8,8,8,A$ 9830 INPUT#8,A$ 9840 IFA$<>"WARTE"THENPRINTA$ 9850 IFA$="WARTE"THENGOSUB7970 9860 IFST<>64ANDA$<>"_"THEN9830 9870 CLOSE8:HI=0 9880 RETURN 10000 OPEN15,8,15,"S:HPRO*":CLOSE15:SAVE"HPROGRAMM",8:VERIFY"HPROGRAMM",8