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 |