| 10 |
AUTOGOTO 40 |
| 40 |
"A"IF FP GOTO 6000 |
| 50 |
IF F6 OR F7 GOSUB 7490 :CHAIN "X:SORTADB.CHN" |
| 60 |
IF F1=0 OR F2=0 GOSUB 7490 :CHAIN "X:TRANSADB.CHN |
| 70 |
GOSUB 7490 :CHAIN "X:ADBCHN.PRG",70 |
| 5710 |
PRINT "ACHTUNG: Fehlerhafter Decodierungsversuch be- wirkt Datenverlust !" |
| 5720 |
GOSUB 6300 :RESTORE 5800 :GOTO 7290 |
| 5730 |
PRINT "Datei "; |
| 5740 |
IF FP PRINT "decodieren:":GOTO 5760 |
| 5750 |
PRINT "codieren" |
| 5760 |
PRINT "1. Password:":GOSUB 6110 |
| 5770 |
P$(0)=M$(0):PRINT "2. Password:":GOSUB 6110 :IF M$(0)=P$(0)BEEP 1,255,100:GOTO 5770 |
| 5780 |
FOR I=1 TO 2:P$(0)=P$(0)+P$(0):M$(0)=M$(0)+M$(0):NEXT I |
| 5800 |
DATA 0,1,"Abbruch",120,"o.k.",5730 |
| 5810 |
Z=0:D=7*(G+1):USING "####.#":PRINT 0;" % "; |
| 5812 |
IF FP PRINT "decodiert":GOTO 5820 |
| 5815 |
PRINT "codiert |
| 5820 |
T$(0)="":FOR I=1 TO 24 |
| 5830 |
A=ASC MID$ (P$(0),I,1):B=ASC MID$ (M$(0),I,1) |
| 5840 |
T$(0)=T$(0)+CHR$ (AOR BAND NOT (AAND B)) |
| 5850 |
NEXT I:M$(0)="":P$(0)=T$(0) |
| 5860 |
FOR I=0 TO G:FOR J=0 TO 6 |
| 5870 |
IF D$(I,J)=""GOTO 5930 |
| 5880 |
T$(0)="" |
| 5890 |
FOR K=1 TO LEN D$(I,J) |
| 5900 |
A=ASC MID$ (P$(0),K,1):B=ASC MID$ (D$(I,J),K,1) |
| 5910 |
T$(0)=T$(0)+CHR$ (A OR B AND NOT (A AND B)) |
| 5920 |
NEXT K:D$(I,J)=T$(0) |
| 5930 |
Z=I*7+J:CURSOR 0,0:PRINT Z/D*100 |
| 5940 |
NEXT J:NEXT I |
| 5950 |
M$(0)="":P$(0)="":T$(0)="":FP=ABS (FP-2):USING |
| 5960 |
IF FP RESTORE 5990 :GOTO 7290 |
| 5970 |
GOTO 40 |
| 5990 |
DATA 0,1,"Codiert sichern",4170,"ENDE",120 |
| 6000 |
ON FP GOTO 6010 ,5710 |
| 6010 |
PRINT "Password:":FOR I=1TO 3:GOSUB 6110 :CLS |
| 6020 |
IF M$(0)=P$(0) LET I=3:FP=0:GOTO 6040 |
| 6030 |
BEEP 1,255,100:PRINT I;" falsches Password !" |
| 6040 |
NEXT I |
| 6050 |
ON FP+1 GOTO 6060 ,160 |
| 6060 |
RESTORE 6080 :GOTO 7290 |
| 6080 |
DATA 1,"Passwordschutz",1,"erhalten",6090,"beenden",6100 |
| 6090 |
FP=1:GOTO 50 |
| 6100 |
P$(0)="":GOTO 50 |
| 6110 |
M$(0)="":PRINT "?" |
| 6120 |
T=ASC INKEY$ :IF T=0 GOTO 6120 |
| 6130 |
BEEP 1,1,25 |
| 6140 |
IF T=13 GOTO 6200 |
| 6150 |
IF T=15 AND LEN M$(0)>0 LET M$(0)=LEFT$ (M$(0),LEN M$(0)-1):GOTO 6120 |
| 6160 |
IF T=2 CLS :PRINT "neue Eingabe !":GOTO 6110 |
| 6170 |
IF T<32 OR T>122 AND T<>251 AND T<>252 BEEP 1,255,100:GOTO 6120 |
| 6180 |
M$(0)=M$(0)+CHR$ T |
| 6190 |
IF LEN M$(0)<16 GOTO 6120 |
| 6200 |
CLS :IF LEN M$(0)<6 BEEP 1,255,100:PRINT "Password zu kurz !":GOTO 6110 |
| 6210 |
IF FP=1 RETURN |
| 6220 |
PRINT "Kontrolleingabe:":PRINT "?":FOR I=1 TO LEN M$(0) |
| 6230 |
T=ASC INKEY$ :IF T=0 GOTO 6230 |
| 6240 |
BEEP 1,1,25 |
| 6250 |
IF T=15 LET I=I-1:GOTO 6230 |
| 6260 |
IF T=2 LET I=1:PRINT "neue Eingabe !":GOTO 6230 |
| 6270 |
IF T<>ASC MID$ (M$(0),I,1) BEEP 1,255,100:PRINT "Fehler !":I=16:NEXT I:GOSUB 6300 :CLS :GOTO 6110 |
| 6280 |
NEXT I:CLS :RETURN |
| 6300 |
WAIT :CURSOR 17,3:PRINT CHR$ 91;"ENTER";CHR$ 93:WAIT 0:BEEP 1,1,25:CLS :RETURN |
| 7290 |
CLS :WAIT 0:READ F0:IF F0 READ M$(0):PRINT M$(0) |
| 7300 |
X=0:Y=F0:READ N:Q=INT (N/(4-F0)):S=16-4*Q |
| 7310 |
FOR I=0 TO N:J=INT (I/(4-F0)):CURSOR J*S,I-(4-F0)*J+F0:READ M$(0),Z(I) |
| 7320 |
PRINT " ";LEFT$ (M$(0),S+6-8*SGN Q):NEXT I |
| 7330 |
K=Y-F0+(4-F0)*X:IF K>N LET X=Q:Y=F0+N-(4-F0)*X:K=N |
| 7340 |
CURSOR X*S,Y:PRINT "->" |
| 7350 |
T=ASC INKEY$ :IF T=0 GOTO 7350 |
| 7360 |
BEEP 1,1,25 |
| 7370 |
IF T=5 CURSOR X*S,Y:PRINT " ":Y=Y+1:IF Y>3 LET Y=F0:X=X+1:IF X>Q CLEAR X |
| 7380 |
IF T=4 CURSOR X*S,Y:PRINT " ":Y=Y-1:IF Y<F0 LET Y=3:X=X-1:IF -X CLEAR X |
| 7390 |
IF T=14 CURSOR X*S,Y:PRINT " ":X=X+1:IF X>Q CLEAR X |
| 7400 |
IF T=15 CURSOR X*S,Y:PRINT " ":X=X-1:IF X<0 LET X=Q |
| 7410 |
IF T=13 CLS :CLEAR X,Y:GOTO Z(K) |
| 7420 |
GOTO 7330 |
| 7490 |
RESTORE 7500 :GOTO 7290 |
| 7500 |
DATA 1,"Externer Programmteil !",1,"CE-140F o.k.",7510,"Abbruch",7520 |
| 7510 |
RETURN |
| 7520 |
CLS :END |