home *** CD-ROM | disk | FTP | other *** search
- 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: <F1>,<F3>,<F5>,<F7>,<F2>,<F4>,<F6>,<F8>
- 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
-