10 REM ------------------------------ 20 REM -- -- 30 REM -- DEMONSTRATIONSPROGRAMM -- 40 REM -- FUER RELATIVE DATEIEN -- 50 REM -- -- 60 REM -- (W) 1989 JOERG NEBEL -- 70 REM -- UND MATTHIAS ULLMANN -- 80 REM -- -- 90 REM ------------------------------ 100 : 110 REM *** INITIALISIEREN *** 120 : 130 POKE 53280,6:POKE 53281,6:POKE 646,7:PRINT CHR$(147)CHR$(142)CHR$(8) 140 SYS 57812 "REL-TOOL",8,1:POKE 780,0:SYS 62629 : SYS 49155 150 DM=100 : DIM I$(DM) : NU$=CHR$(0):CR$=CHR$(13):PI$=CHR$(255) 160 SYS 49152,1,3,"DEMOPROGRAMM FUER RELATIVE DATEIEN" 170 SYS 49152,2,2,"------------------------------------" 180 SYS 49152,21,1," F1 [146] DATEIEN ZEIGEN  F3 [146] DATEI ANLEGEN" 190 SYS 49152,22,1," F5 [146] DATEI LOESCHEN  F7 [146] PROGRAMMSTART" 200 GOSUB 7400:IF TA=8 THEN 8000 210 IF TA<1 OR TA>4 THEN 200 220 SYS 49155,5,20:IF TA>1 THEN GOSUB 500 230 ON TA GOTO 300,800,250,700 240 : 250 SYS 49152,7,3,"SIND SIE SICHER ? (J/N)" 260 GOSUB 7400:IF TA$<>"J" AND TA$<>"N" THEN 260 270 SYS 49155,5,7:IF TA$="N" THEN 200 280 OPEN 1,8,15,"S0:"+DN$:PRINT#1,"S0:"+IN$:GOSUB 7050:CLOSE 1:SYS 49155,5 290 : 300 GOSUB 400:OPEN 1,8,15,"M-E"+CHR$(34)+CHR$(235):CLOSE 1:GOTO 200 310 : 380 REM *** DATEIEN ZEIGEN *** 390 : 400 OPEN 1,8,0,"$:*=R":POKE 781,1:SYS 65478 410 GET A$,A$,A$,A$:SYS 49152,5,7,"0 "; 420 FOR I=1 TO 28:GET A$:PRINT A$;:NEXT:PRINT CR$SPC(6); 430 GET A$,A$,A$,B$:IF ST THEN SYS 65484:CLOSE 1:RETURN 440 PRINT ASC(A$+NU$)+256*ASC(B$+NU$);:GOTO 420 450 : 480 REM *** DATEIANGABEN HOLEN *** 490 : 500 NA$="":SYS 49152,5,3,"DATEINAME ";:INPUT NA$:IF LEN(NA$)>14 THEN 500 510 IF NA$="" THEN TA=1:SYS 49155,5:RETURN 520 FOR I=1 TO LEN(NA$):A$=MID$(NA$,I,1) 530 IF A$="*" OR A$="?" OR A$="." THEN 500 540 NEXT I:DN$=NA$+".D":IN$=NA$+".I":IF TA>2 THEN RETURN 550 OPEN 1,8,15:OPEN 2,8,2,DN$:GOSUB 7050:CLOSE 2:CLOSE 1:IF EN=0 THEN 500 560 SYS 49152,7,3:INPUT"SATZLAENGE ";SL 570 IF SL<2 OR SL>254 THEN 560 580 SYS 49152,9,3:INPUT"SATZANZAHL ";SM 590 AF=1:SI=1:OPEN 1,8,15:OPEN 2,8,2,DN$+",L,"+CHR$(SL):GOSUB 7050 600 GOSUB 6510:CLOSE 2:CLOSE 1:SYS 49155,5,9:RETURN 610 : 680 REM *** HAUPTPROGRAMM *** 690 : 700 OPEN 1,8,15:OPEN 2,8,2,DN$:GOSUB 7050:CLOSE 2:CLOSE 1 710 IF EN=62 THEN SYS 49152,7,3,"DATEI NICHT VORHANDEN !";:GOTO 200 720 : 800 PRINT CHR$(147)CHR$(14)CHR$(8):SYS 49152,1,12,"[196]ATEI BEARBEITEN" 810 SYS 49152,2,11,"------------------" 820 GOSUB 6000:GOSUB 5000 830 SYS 49152,19,1," [198]1 [146] [194]LAETTERN (+)  [198]2 [146] [194]LAETTERN (-)" 840 SYS 49152,20,1," [198]3 [146] [211]ATZ EINGEBEN  [198]4 [146] [211]ATZ LOESCHEN" 850 SYS 49152,21,1," [198]5 [146] [206]AME SUCHEN  [198]6 [146] [211]ATZ AENDERN" 860 SYS 49152,22,1," [198]7 [146] [215]EITER SUCHEN  [198]8 [146] [208]ROGRAMMENDE" 870 GOSUB 7400:IF TA<1 OR TA>8 THEN 870 880 BF=0:IF (TA=6 OR TA=7) AND (SN=0 OR I$(SN)=PI$) THEN 870 890 ON TA GOSUB 1000,2000,4000,4500,1000,3000,2010,8000:GOTO 870 900 REM TASTEN: ,,,,,,, 910 : 980 REM *** BLAETTERN *** 990 : 1000 IF TA=1 THEN SN=SN+1:IF SN>SM THEN SN=1:BF=BF+1 1010 IF TA=5 THEN SN=SN-1:IF SN<1 THEN SN=SM:BF=BF+1 1020 IF BF=2 THEN SYS 49152,5,1,"[206]OCH KEIN [196]ATENSATZ VORHANDEN !";:RETURN 1030 IF I$(SN)=PI$ THEN 1000 1040 GOTO 5010 1050 : 1980 REM *** SATZ EINGEBEN/AENDERN *** 1990 : 2000 SU$=PI$:AS=1:GOSUB 7500:IF SN=0 THEN GOSUB 6500 2010 D0$=D1$:GOSUB 7300:IF TA=2 THEN GOSUB 5040 2020 SYS 49152,8,10:INPUT D1$:IF D1$="" THEN 2020 2030 SYS 49152,10,10:INPUT D2$ 2040 SYS 49152,12,10:INPUT D3$ 2050 SYS 49152,14,10:INPUT D4$ 2060 SYS 49152,16,10:INPUT D5$ 2070 DA$=D1$+CR$+D2$+CR$+D3$+CR$+D4$+CR$+D5$:DL=LEN(DA$)+1 2080 GOSUB 7000:PRINT#2,DA$:GOSUB 7050 2090 IF EN=51 THEN SYS 49152,5,1,"[196]ATENSATZ UM";DL-SL;"[157] [218]EICHEN ZU LANG !"; 2100 IF EN=51 THEN GOSUB 5050:GOSUB 7300:GOTO 2020 2110 I$(SN)=D1$:IF D0$<>D1$ THEN DF=1 2120 IF I$(SN)=PI$ THEN D1$="[198]REIER [196]ATENSATZ" 2130 GOTO 5000 2140 : 2980 REM *** SATZ LOESCHEN *** 2990 : 3000 SYS 49152,5,1,"[211]IND [211]IE SICHER ? ([202]/[206])"; 3010 GOSUB 7400:IF TA$="N" THEN 5040 3020 IF TA$<>"J" THEN 3010 3030 GOSUB 7300:DF=1:D1$=PI$ 3040 SYS 49155,5:GOTO 2070 3050 : 3980 REM *** SUCHEN *** 3990 : 4000 SU$="":SYS 49155,5:INPUT" [211]UCHKRITERIUM ";SU$:IF SU$="" THEN 4000 4010 AS=1:GOSUB 7500 4020 IF SN=0 THEN SYS 49152,5,1,"[196]ATENSATZ NICHT VORHANDEN !";:RETURN 4030 GOTO 5010 4040 : 4480 REM *** WEITER SUCHEN *** 4490 : 4500 IF SN=0 OR SU$="" OR SU$=PI$ THEN RETURN 4510 AS=SN+1:IF AS>SM THEN SN=0:SYS 49152,5,1,"[196]ATEIENDE ERREICHT !";:RETURN 4520 GOSUB 7500:IF SN>0 THEN 5010 4530 SYS 49152,5,1,"[203]EIN WEITERER [211]ATZ VORHANDEN !";:RETURN 4540 : 4980 REM *** SATZ ANZEIGEN *** 4990 : 5000 SYS 49152,5,1,"[211]TATUS ";EN$;:GOTO 5050 5010 SYS 49155,6,18:GOSUB 7000 5020 INPUT#2,D1$,D2$,D3$,D4$,D5$ 5030 IF D1$=PI$ THEN D1$="[198]REIER [196]ATENSATZ" 5040 SYS 49152,5,1,"[196]ATENSATZ [206]UMMER ";SN;"[157] [146]"; 5050 SYS 49152,8,1,"[206]AME ";D1$; 5060 SYS 49152,10,1,"[214]ORNAME ";D2$; 5070 SYS 49152,12,1,"[211]TRASSE ";D3$; 5080 SYS 49152,14,1,"[208][204][218]/[207]RT ";D4$; 5090 SYS 49152,16,1,"[212]ELEFON ";D5$; 5100 RETURN 5110 : 5980 REM *** DATEIEN OEFFNEN *** 5990 : 6000 OPEN 1,8,15:OPEN 2,8,2,DN$:GOSUB 7050 6010 IF AF=1 THEN AF=0:RETURN 6020 SYS 49155,5:OPEN 3,8,3,IN$+",S,R" 6030 INPUT#3,SM$,SL$:SM=VAL(SM$):SL=VAL(SL$):IF SM>DM THEN 6530 6040 FOR I=1 TO SM:INPUT#3,I$(I):NEXT 6050 CLOSE 3:RETURN 6060 : 6480 REM *** DATEI ANLEGEN/ERWEITERN *** 6490 : 6500 SM=SM+1:SI=SM 6510 SM=INT(254*INT((SM*SL+253)/254)/SL) 6520 IF SM<=DM THEN 6560 6530 LF=1:SYS 49155,5,18:SYS 49152,5,3,"[196]IMENSIONIERUNG AUF";SM;"ANPASSEN !"; 6540 GOSUB 7400:IF AF=1 THEN CLOSE 2:PRINT#1,"S0:"+DN$:GOTO 8060 6550 SM=SI-1:GOTO 8000 6560 SN=SM:GOSUB 7000:PRINT#2,PI$ 6570 FOR I=SI TO SM:I$(I)=PI$:NEXT 6580 SN=SI:DF=1:RETURN 6590 : 6980 REM *** POSITIONIEREN *** 6990 : 7000 HB=INT(SN/256):LB=SN-HB*256 7010 PRINT#1,"P"+CHR$(2)+CHR$(LB)+CHR$(HB)+CHR$(1) 7020 : 7030 REM *** FEHLERKANAL *** 7040 : 7050 INPUT#1,EN,EN$,ET,ES 7060 IF EN=0 OR EN=50 OR EN=51 OR EN=62 THEN RETURN 7070 SYS 49155,5:SYS 49152,5,1," STATUS [146] ";EN;EN$;ET;ES;:IF EN<20 THEN 7400 7080 CLOSE 3:CLOSE 2:CLOSE 1:END 7090 : 7100 REM *** EINZEILER *** 7200 : 7300 D1$="":D2$="":D3$="":D4$="":D5$="":DA$="":RETURN 7400 POKE 198,0:WAIT 198,1:GET TA$:TA=ASC(TA$)-132:RETURN 7500 P%=0:SYS 49158,SU$,I$(AS),I$(SM),P%:SN=P%:RETURN 7600 : 7980 REM *** PROGRAMMENDE *** 7990 : 8000 IF DF=0 THEN 8060 8010 SYS 49155,5,18:SYS 49152,5,7,"[196]ATEIEN WERDEN GESICHERT !" 8020 PRINT#1,"S0:"+IN$ 8030 OPEN 3,8,3,IN$+",S,W" 8040 PRINT#3,STR$(SM)+CR$+STR$(SL) 8050 FOR I=1 TO SM:PRINT#3,I$(I):NEXT 8060 CLOSE 3:CLOSE 2:CLOSE 1:SYS 49155 8070 PRINT CHR$(142)CHR$(9) 8080 IF LF=1 THEN LIST 150