5 FORA=1TO8:(null)A,"":NEXT 6 (null)8,"[218]":(null)1,"[211]" 7 (null)1,15,5:(null)0,7,0:(null)4,7,0 10 CS=202 20 CZ=205 30 CR=55464 40 SC=3072 50 PA=-1024 60 TZ=239 70 TP=1319 80 GOSUB4530 90 DIMS%(30),Z%(30),BZ$(30),LE%(30),TY$(30),UG$(30),BZ%(82) 100 CLOSE2:CLOSE15 110 OPEN15,8,15,"I0" 120 GOSUB150 130 GOTO670 140 : 150 REM *DATEI EINLESEN* 160 GOSUB380 170 PRINT#15,"U1:"2;0;18;0:PRINT#15,"B-P:"2;162:REM ID 180 GET#2,A$:GET#2,B$:ID$=A$+B$ 190 IFID$<>"DD"THENGOSUB390:RETURN 200 RN=663:GOSUB410 210 GOSUB360:GOSUB350 220 INPUT#2,AD,FZ 230 MF=FZ 240 FORA=1TOFZ 250 S%(A)=0:Z%(A)=1+A*2 260 INPUT#2,BZ$(A),LE%(A),TY$(A) 270 NEXT 280 RN=664:GOSUB410 290 GOSUB360:GOSUB350 300 FORA=0TO82:INPUT#2,B$:BZ%(A)=VAL(B$):NEXT 310 GOSUB390 320 RETURN 330 : 340 REM *B-P,U1,U2,OPEN,CLOSE* 350 PRINT#15,"B-P:";2;1:RETURN 360 PRINT#15,"U1:";2;0;RT;RS:RETURN 370 PRINT#15,"U2:";2;0;RT;RS:RETURN 380 OPEN2,8,2,"#":RETURN 390 CLOSE2:RETURN 400 : 410 REM *BLOCKUMRECHNUNG* 420 IFRN<358THENAA=0:BB=22:DD=1:GOTO460 430 IFRN<471THENAA=357:BB=20:DD=19:GOTO460 440 IFRN<580THENAA=471:BB=19:DD=25:GOTO460 450 AA=579:BB=18:DD=31 460 RT=INT(((RN-AA)-1)/(BB-1))+DD:RS=RN-AA-(RT-DD)*BB+(RT-DD-1):RETURN 470 : 480 REM *HASH-ZAHL* 490 HZ$=UG$(1)+"AAAAAA" 500 H1=0:C=0 510 FORA=1TO6 520 H1=ASC(MID$(HZ$,A,1)) 530 H1=(H1ORC)-(H1ANDC) 540 C=((2*H1)AND255)OR(SGN(CAND128)) 550 NEXT 560 HZ=INT(H1*662/255):IFHZ=0THENHZ=1 570 RETURN 580 : 590 REM *MASKENDEFINITION* 600 FORA=1TOFZ 610 S%(A)=0:Z%(A)=1+A*2 620 BZ$(A)=FB$(A):LE%(A)=FL(A):TY$(A)=FT$(A) 630 NEXT 640 MF=FZ 650 RETURN 660 : 670 REM *MENUE* 680 PRINT"[147]" 690 GOSUB1830:PRINT" [146]"; 700 PRINT" AUSWAHLMENUE [146]":PRINT 710 PRINT" D[146] DATENDISKETTE WECHSELN" 720 PRINT" E[146] EINTRAGEN VON DATENSAETZEN" 730 PRINT" S[146] SUCHEN VON DATENSAETZEN" 740 PRINT" A[146] AENDERN VON DATENSAETZEN" 750 PRINT" L[146] LOESCHEN VON DATENSAETZEN" 760 PRINT" B[146] BLAETTERN IN DER DATEI" 770 PRINT" K[146] KOMPLETTE DATEI AUSDRUCKEN" 780 PRINT" N[146] NEUE DATEI AUFBAUEN" 790 PRINT" V[146] VERLASSEN DES PROGRAMMS" 800 PRINT 810 GOSUB1830:PRINT" [146]"; 820 PRINT" KOMMANDO ? [146]"; 830 FR=FRE(0) 840 K$="DESALBKN" 850 GETA$:FORA=1TOLEN(K$) 860 IFA$=MID$(K$,A,1)THEN910 870 IFA$="V"ANDID$="DD"THENGOSUB4370 880 IFA$="V"THENCLOSE15:END 890 NEXT 900 GOTO850 910 IFID$<>"DD"ANDA$<>"N"ANDA$<>"D"THEN850 920 ONAGOSUB3310,1860,2190,3030,3110,3170,3230,3390,4370 930 GOTO670 940 : 950 REM *FUNKTIONSTASTEN* 960 POKECS,0:POKECZ,23:SYSCR 970 PRINT" F1 : DURCHFUEHRUNG DER FUNKTION [146]" 980 PRINT" HELP : RUECKKEHR ZUM AUSWAHLMENUE [146]"; 990 RETURN 1000 : 1010 REM *MASKENAUFBAU/STEUERUNG* 1020 RF=0:REM RETURNFLAG INIT. 1030 FORA=1TOMF 1040 POKECS,S%(A):POKECZ,Z%(A):SYSCR 1050 IFDA=0THENPRINTBZ$(A)"?" 1060 NEXT 1070 ZZ=1 1080 : 1090 : 1100 : 1110 IFDA=1THENPOKECS,S%(ZZ)+LEN(BZ$(ZZ))+1:GOTO1130 1120 POKECS,S%(ZZ)+LEN(BZ$(ZZ))+2 1130 POKECZ,Z%(ZZ):SYSCR 1140 GOSUB1410:REM EINGABEROUTINE 1150 POKEA,PEEK(A)AND127 1160 IFA$="[145]"ANDZZ>1THENZZ=ZZ-1:GOTO1080 1170 IF(A$=""ORASC(A$)=13)ANDZZ"[211]"THEN1080 1200 : 1210 : 1220 : 1230 IFDA<>1THEN1340 1240 DA=0:FORA=1TOMF 1250 UG$(A)="" 1260 SP=40*Z%(A)+S%(A)+LEN(BZ$(A))+SC+1 1270 FORB=SPTOSP+LE%(A)-1 1280 PE=PEEK(B):IFPE<32THENPE=PE+64 1290 UG$(A)=UG$(A)+CHR$(PE) 1300 NEXTB,A 1310 RETURN 1320 : 1330 REM *MASKENFELDER EINLESEN* 1340 FORA=1TOMF 1350 UG$(A)="" 1360 POKECS,10:POKECZ,Z%(A):SYSCR 1370 POKETZ,1:POKETP,13:INPUTUG$(A) 1380 NEXT 1390 RETURN 1400 : 1410 REM *EINGABEROUTINE* 1420 ML=0 1430 A=SC+80 1440 POKEA,PEEK(A)AND127 1450 A=SC+40*PEEK(CZ)+PEEK(CS) 1460 POKEA,PEEK(A)OR128:POKEA+PA,93 1470 GETA$:IFA$=""THEN1470 1480 IFML=LE%(ZZ)THEN1570 1490 IFTY$(ZZ)="A"THEN1520 1500 IFTY$(ZZ)="N"THEN1540 1510 IFTY$(ZZ)="B"THEN1560 1520 IFASC(A$)=34ORA$=":"ORA$=","ORA$<" "ORA$>"Z"THEN1570 1530 ML=ML+1:PRINTA$;:GOTO1440 1540 IFA$>","ANDA$<":"ORA$=" "THENML=ML+1:PRINTA$;:GOTO1440 1550 GOTO1570 1560 IFA$="A"ORA$="N"ORA$=" "THENML=ML+1:PRINTA$;:GOTO1440 1570 IFASC(A$)=20ANDDA=0ANDML>0THENML=ML-1:PRINTA$;:GOTO1440 1580 IFA$="[157]"ANDML>0THENML=ML-1:PRINTA$;:GOTO1440 1590 IFA$=""ANDML"DD"THENRETURN:REM FALSCHE DISKETTE 1880 PRINT"[147]"; 1890 GOSUB1830:PRINT" [146]"; 1900 EF=1:REM EINTR.FLAG SETZEN 1910 GOSUB1680 1920 EF=0:REM EINTR.FLAG LOESCHEN 1930 GOSUB950:GOSUB1010 1940 IFAD=662ORRF=1THENRETURN 1950 AD=AD+1 1960 OPEN2,8,2,"#" 1970 GOSUB480:REM HASH-ZAHL 1980 RN=HZ 1990 PRINT""RN" " 2000 BY=INT((RN-1)/8):BI=RN-1-8*BY 2010 IF(BZ%(BY)AND2^BI)<>0THEN2060 2020 GOSUB410 2030 GOSUB360:GOSUB350 2040 GET#2,A$ 2050 IFA$="[255]"THEN2090 2060 RN=RN+1:IFRN=663THENRN=1 2070 IFRN=HZTHENCLOSE2:RETURN 2080 GOTO1990 2090 GOSUB350 2100 FORA=1TOFZ 2110 IFUG$(A)=""THENUG$(A)="*" 2120 PRINT#2,UG$(A);CHR$(13); 2130 NEXT 2140 BZ%(BY)=BZ%(BY)OR2^BI 2150 GOSUB370:CLOSE2 2160 IFAF=1ORLF=1THENRETURN 2170 GOTO1880 2180 : 2190 REM *SUCHEN* 2200 RF=0:REM RETURNFLAG INIT. 2210 HF=0:REM HILFSFLAG INITIALISIEREN (BLOCKGRENZE UEBERSCHRITTEN?) 2220 PRINT"[147]"; 2230 GOSUB1830:PRINT" [146]"; 2240 GOSUB1680 2250 IFBF=1THEN2280 2260 GOSUB950:GOSUB1010 2270 IFRF=1THENRETURN 2280 OPEN2,8,2,"#" 2290 GOSUB480:REM HASH-ZAHL 2300 RN=HZ:GOSUB2830:REM SUCHABBRUCH 2310 PRINT""RN" " 2320 BY=INT((RN-1)/8):IFBZ%(BY)=0THENRN=8*(BY+1)+1:GOTO2380 2330 BI=RN-1-8*BY:IF(BZ%(BY)AND2^BI)=0THEN2370 2340 GOSUB410 2350 GOSUB360:GOSUB350 2360 GET#2,A$:IFA$<>"[255]"THEN2420 2370 RN=RN+1 2380 IFRN>662THENRN=1:HF=1:REM HF=1:BLOCKGRENZE UEBERSCHRITTEN 2390 IFHF=1THENIFRN>=HZTHENGOSUB1750:RF=1:CLOSE2:RETURN 2400 GETA$:IFA$=""THEN2310 2410 RF=1:CLOSE2:RETURN 2420 GOSUB350 2430 FORA=1TOFZ:INPUT#2,AG$(A):IFAG$(A)="*"THENAG$(A)="" 2440 NEXT 2450 IFBF=1THEN2500 2460 FORB=1TOFZ 2470 IFUG$(B)=""THEN2490 2480 IFLEFT$(AG$(B),LEN(UG$(B)))<>UG$(B)THEN2370 2490 NEXT 2500 PRINT"[147]"; 2510 GOSUB1830:PRINT" [146]"; 2520 GOSUB1680 2530 FORB=1TOFZ 2540 POKECS,0:POKECZ,1+B*2:SYSCR 2550 PRINTBZ$(B)+": ";:PRINTAG$(B) 2560 NEXT 2570 GOSUB2860:REM DRUCKEN? 2580 IFLF=1THENGOSUB2710:REM LOESCHFLAG GESETZT? 2590 IFLF=1ANDA$="J"THENCLOSE2:RETURN 2600 IFUL=1ANDLF=1THENRF=1:CLOSE2:RETURN 2610 IFUL=1THENGOSUB1750:CLOSE2:RETURN 2620 IFKF=1THEN2690 2630 POKECS,0:POKECZ,23:SYSCR 2640 PRINT" WEITERSUCHEN (J/N) ? [146]" 2650 GOSUB1830 2660 GETA$:IFA$<>"J"ANDA$<>"N"THEN2660 2670 IFA$="N"AND(BF=1ORAF=1ORLF=1ORKF=1)THENCLOSE2:RETURN 2680 IFA$="N"THENCLOSE2:GOTO2200 2690 GOSUB2830:GOTO2370 2700 : 2710 REM *SICHERHEITSABFRAGE* 2720 POKECS,0:POKECZ,23:SYSCR 2730 PRINT" LOESCHEN (J/N) ? [146]" 2740 GOSUB1830 2750 GETA$:IFA$<>"J"ANDA$<>"N"THEN2750 2760 IFA$="N"THENRETURN 2770 BZ%(BY)=BZ%(BY)ANDNOT2^BI 2780 GOSUB350:PRINT#2,"[255]":GOSUB370 2790 AD=AD-1:GF=1:REM GELOESCHTFLAG SETZEN 2800 RETURN 2810 : 2820 REM *SUCHABBRUCH* 2830 POKECS,0:POKECZ,23:SYSCR:PRINT" ABBRUCH DER SUCHE MIT BELIEBIGER TASTE[146]" 2840 GOSUB1830:RETURN 2850 : 2860 REM *DRUCKEN* 2870 IFKF=1THEN2920 2880 POKECS,0:POKECZ,23:SYSCR 2890 PRINT" AUSDRUCKEN (J/N) ? [146]":GOSUB1830 2900 GETA$:IFA$<>"J"ANDA$<>"N"THEN2900 2910 IFA$="N"THENRETURN 2920 OPEN4,4 2930 FORB=1TOFZ 2940 IFAG$(B)=""THEN2970 2950 IFKF=1THENPRINT#4,AG$(B)" ";:GOTO2970 2960 PRINT#4,BZ$(B)+" : "AG$(B) 2970 NEXT 2980 IFKF=1THENPRINT#4 2990 PRINT#4 3000 CLOSE4 3010 RETURN 3020 : 3030 REM *AENDERN* 3040 AF=1:REM AENDERNFLAG SETZEN 3050 GOSUB3110:REM LOESCHEN 3060 IFRF=1ORGF=0THENAF=0:RETURN:REM RETURNFLAG GESETZT? 3070 PRINT"";:GOSUB1890:REM EINTRAGEN 3080 AF=0:REM AENDERNFLAG LOESCHEN 3090 RETURN 3100 : 3110 REM *LOESCHEN* 3120 LF=1:REM LOESCHFLAG SETZEN 3130 GOSUB2190:REM SUCHEN 3140 LF=0:REM LOESCHFLAG LOESCHEN 3150 RETURN 3160 : 3170 REM *BLAETTERN* 3180 BF=1:REM BLAETTERNFLAG SETZEN 3190 GOSUB2190:REM SUCHEN 3200 BF=0:REM BLAETTERNFLAG LOESCHEN 3210 RETURN 3220 : 3230 REM *KOMPLETTE DATEI AUSDRUCKEN* 3240 OPEN4,4 3250 A$="*************************************":PRINT#4,A$ 3260 PRINT#4,"*DATAMASTER VERTRIEB:BALOUI SOFTWARE*" 3270 PRINT#4,A$ 3280 FORA=1TO3:PRINT#4:NEXT:CLOSE4 3290 KF=1:GOSUB3170:KF=0:RETURN 3300 : 3310 REM *DATENDISK WECHSELN* 3320 IFID$="DD"THENGOSUB4370 3330 POKECS,0:POKECZ,22:SYSCR 3340 PRINT" BITTE LEGEN SIE EINE DATENDISKETTE EIN [146]"; 3350 PRINT" UND DRUECKEN SIE EINE BELIEBIGE TASTE [146]"; 3360 GETA$:IFA$=""THEN3360 3370 GOSUB150:RETURN 3380 : 3390 REM *DATEIAUFBAU* 3400 IFID$="DD"THENGOSUB4370 3410 PRINT"[147]"; 3420 GOSUB1630 3430 GOSUB950:REM INFOS FUNKTIONSTASTEN 3440 : 3450 REM MASKENDEFINITION 3460 MF=30 3470 FORA=1TO10 3480 POKECS,0:POKECZ,1+2*A:SYSCR 3490 PRINT""A"[157] [146]" 3500 NEXT 3510 IFFZ=0THEN3550 3520 FORA=1TOFZ 3530 FB$(A)=BZ$(A):FL(A)=LE%(A):FT$(A)=TY$(A) 3540 NEXT 3550 FORA=1TO30STEP3 3560 S%(A)=9:Z%(A)=3+2*INT(A/3):BZ$(A)="":LE%(A)=10:TY$(A)="A" 3570 S%(A+1)=24:Z%(A+1)=3+2*INT(A/3):BZ$(A+1)="":LE%(A+1)=2:TY$(A+1)="N" 3580 S%(A+2)=34:Z%(A+2)=3+2*INT(A/3):BZ$(A+2)="":LE%(A+2)=1:TY$(A+2)="B" 3590 NEXT 3600 DA=1:GOSUB1010:DA=0:REM MASKENAUFBAU/STEUERUNG 3610 IFRF=1THENGOSUB590:RETURN 3620 SS=0:FORA=1TO30STEP3:SS=SS+VAL(UG$(A+1)):IFVAL(UG$(A+1))>67THEN3640 3630 NEXT:SS=SS+10:IFSS<255THEN3690 3640 POKECS,0:POKECZ,23:SYSCR 3650 PRINT" FELD- BZW. SATZLAENGE UEBERSCHRITTEN![146]" 3660 PRINT" DRUECKEN SIE EINE TASTE [146]"; 3670 GETA$:IFA$=""THEN3670 3680 GOSUB950:DA=1:GOSUB1070:DA=0:GOTO3610:REM EINSPRG.MASKENSTEUERUNG 3690 FORA=1TO30STEP3 3700 IFUG$(A)=" "THEN3760 3710 IFVAL(UG$(A+1))>0AND(UG$(A+2)="A"ORUG$(A+2)="N")THEN3760 3720 POKECS,0:POKECZ,23:SYSCR 3730 PRINT"IHRE DATEIBESCHREIBUNG IST UNVOLLSTAEN-[146]" 3740 PRINT" DIG BZW. FEHLERHAFT. KORRIGIEREN SIE! [146]";:FORB=1TO3000:NEXTB 3750 GOSUB950:DA=1:GOSUB1070:DA=0:GOTO3610 3760 NEXTA 3770 POKECS,0:POKECZ,23:SYSCR 3780 PRINT" KORREKTUR (J/N) ? [146]" 3790 GOSUB1830 3800 GETA$:IFA$<>"J"ANDA$<>"N"THEN3800 3810 IFA$="N"THEN3850 3820 GOSUB950:REM INFOS DATEIAUFBAU 3830 DA=1:GOSUB1070:DA=0:GOTO3610:REM EINSPRG.MASKENSTEUERUNG 3840 AD=0:REM ANZ.DATENSAETZE INIT. 3850 POKECS,0:POKECZ,23:SYSCR 3860 PRINT" SIND SIE SICHER, DASS SIE EINE NEUE [146]" 3870 PRINT" DATEI AUFBAUEN WOLLEN (J/N) ? [146]"; 3880 GETA$:IFA$<>"J"ANDA$<>"N"THEN3880 3890 IFA$="N"THENGOSUB590:RETURN 3900 FZ=10 3910 FORA=1TO10 3920 FB$(A)=UG$(A*3-2):REM FELDBEZEICHNUNG 3930 FL(A)=VAL(UG$(A*3-1)):REM FELDLAENGE 3940 FT$(A)=UG$(A*3):REM FELDTYP 3950 NEXT 3960 FORA=1TO9 3970 IFFB$(A)<>" "THEN4030 3980 FORB=ATO9 3990 FB$(B)=FB$(B+1):FL(B)=FL(B+1) 4000 FT$(B)=FT$(B+1) 4010 NEXTB 4020 FZ=FZ-1 4030 NEXTA 4040 IFFB$(10)=" "THENFZ=FZ-1 4050 FORA=1TOFZ 4060 S%(A)=0:Z%(A)=1+A*2:BZ$(A)=FB$(A):LE%(A)=FL(A):TY$(A)=FT$(A) 4070 NEXT 4080 FORA=0TO82:BZ%(A)=0:NEXT 4090 AD=0:REM ANZ.DATENSAETZE INIT. 4100 POKECS,0:POKECZ,23:SYSCR 4110 PRINT"BITTE LEGEN SIE EINE LEERE DISKETTE EIN[146]" 4120 PRINT" UND DRUECKEN SIE EINE TASTE [146]"; 4130 GETA$:IFA$=""THEN4130 4140 GOSUB380:PRINT#15,"U1:"2;0;18;0:PRINT#15,"B-P:"2;162 4150 A$="":B$="":GET#2,A$:GET#2,B$:A$=A$+B$ 4160 GOSUB390 4170 IFA$="DD"THEN4100 4180 POKECS,0:POKECZ,23:SYSCR 4190 PRINT" BITTE HABEN SIE GEDULD. DER AUFBAU [146]" 4200 PRINT" DER DATEI BENOETIGT MEHRERE MINUTEN [146]"; 4210 PRINT#15,"N:DATAMASTER-DATEI,DD" 4220 GOSUB380:PRINT#15,"U1:"2;0;18;0 4230 ID$="DD":PRINT#15,"B-P:"2;162:PRINT#2,ID$;:PRINT#15,"U2:"2;0;18;0 4240 PRINT"BLOCKNR.[146]" 4250 FORRN=1TO662 4260 PRINT""RN" [146]" 4270 GOSUB410 4280 GOSUB350 4290 PRINT#2,"[255]" 4300 GOSUB370 4310 NEXTRN 4320 GOSUB390 4330 GOSUB4370:REM MASKE ABSPEICHERN 4340 GOSUB150:REM DATEN EINLESEN 4350 RETURN 4360 : 4370 REM *VERLASSEN* 4380 GOSUB380 4390 RN=663 4400 GOSUB410 4410 GOSUB350 4420 PRINT#2,AD;CHR$(13);FZ 4430 FORA=1TOFZ 4440 PRINT#2,BZ$(A);CHR$(13);LE%(A);CHR$(13);TY$(A) 4450 NEXT 4460 GOSUB370 4470 RN=664:GOSUB410:GOSUB350 4480 FORA=0TO82:PRINT#2,STR$(BZ%(A)):NEXT 4490 GOSUB370:GOSUB390 4500 RETURN 4510 : 4520 REM *TITELBILD* 4530 : 4540 PRINT"[147]" 4550 PRINT" DATAMASTER" 4560 PRINT" ----------" 4570 PRINT" (C) BALOUI SOFTWARE, 1985" 4730 RETURN