1 REM Ins{nt av 1183 10 REM +----------------------------------------------------+ 20 REM ! SC.BAC textfile scrambler ! 30 REM ! ver 1.0 ! 40 REM ! (c) H.Schimmer, Karlstad 1983,- ! 50 REM ! ABC-80 32Kb 80tkn FD-2 ! 60 REM ! ! 70 REM ! input-files must be ASCII ! 80 REM ! ver 1.0 (1983-12-03) update : $$$$-$$-$$ ! 90 REM +----------------------------------------------------+ 100 ; INP(4) 110 ; CHR$(12) 120 Z=0 : Q%=0 130 DIM A$=253,B$=253,Q0$=255 140 RANDOMIZE 150 A=INT(RND*100) : B=INT(RND*100) 160 L1$=STRING$(80,45) 170 ; CUR(0,0)L1$ 180 ; CUR(1,0)'HS-System Textfile scrambler' 190 ; CUR(2,0)L1$ 200 DIM A$=100,B$=100 210 ; CUR(12,0)SPACE$(80) 220 ; CUR(12,0)'Access-code:'; 230 FOR T=1 TO 4 : GET V$ : PRINT "*"; : X$=X$+V$ : NEXT T 240 IF Q%=2 THEN ; CHR$(12) : CHAIN '' : END 250 IF X$<>"5405" THEN X$="" : Q%=Q%+1 : GOTO 210 260 ; CUR(12,0)SPACE$(80) 270 ; CUR(12,0)'Bypass random offset (Y/N)'; : GET V$ 280 IF V$="Y" OR V$="y" THEN S1%=-1 : GOTO 310 290 IF V$="N" OR V$="n" THEN S1%=0 : GOTO 310 300 GOTO 270 310 ; CUR(12,0)SPACE$(80) 320 IF S1%=0 GOTO 350 330 ; CUR(12,0)"Set offset (format 'X,X' min=1, max=999) "; : INPUT A,B 340 ; CUR(12,0)SPACE$(80) 350 ; CUR(5,0)'Input-file :' 360 ; CUR(8,0)'Output-file :' 370 ; CUR(12,0)'Scramble or Descramble (S/D) :' 380 ; CUR(20,0)L1$ : ; CUR(21,0)'Message:' 390 ; CUR(5,15); : INPUTLINE F1$ : F1$=LEFT$(F1$,LEN(F1$)-2) 400 IF F1$="e" OR F1$="E" THEN END 410 ; CUR(8,15); : INPUTLINE F2$ : F2$=LEFT$(F2$,LEN(F2$)-2) 420 IF F2$="e" OR F2$="E" THEN 390 430 ONERRORGOTO 730 440 OPEN F1$ ASFILE 1 450 PREPARE F2$ ASFILE 2 460 ONERRORGOTO 0 470 ; CUR(12,30); : GET Q$ 480 IF Q$="S" OR Q$="s" OR Q$="D" OR Q$="d" THEN 500 490 GOTO 470 500 IF Q$="D" OR Q$="d" THEN S=-1 ELSE S=1 510 F4$=LEFT$(F1$,LEN(F1$)-4) 520 REM 530 IF S=-1 AND S1%=0 THEN OPEN F4$+".src" ASFILE 3 : GOSUB 840 540 IF S=1 AND S1%=0 THEN GOSUB 930 550 ; CUR(14,0)'Processing file ';F1$ 560 ONERRORGOTO 790 : REM EOF 570 INPUTLINE #1,A$ 580 FOR I=1 TO LEN(A$) 590 X=ASC(MID$(A$,I,1)) 600 IF X=13 THEN B$=B$+CHR$(10)+CHR$(X) : GOTO 660 610 X=X+A*S+I*B*S 620 IF X>126 THEN X=X-(126-32) : GOTO 620 630 IF X<32 THEN X=X+(126-32) : GOTO 630 640 B$=B$+CHR$(X) 650 NEXT I 660 C=C+(I-1) 670 Z=Z+1 680 ; #2,B$; 690 B$="" 700 ; CUR(21,35)'Offset:'A,B 710 ; CUR(21,10)'# of lines:'Z 720 GOTO 570 730 REM -------------------- file not found error ----------------- 740 ; CHR$(7); : ; CUR(21,15)'Invalid input/output. Press return! '; : GET V$ 750 ; CUR(21,15)' ' 760 ; CUR(5,15)' ' 770 ; CUR(8,15)' ' 780 GOTO 390 790 REM ------------------------- end of input-file -------------------- 800 CLOSE 1 : CLOSE 2 : ; CHR$(12) : ; CUR(12,0)'Scrambler terminated.' 810 ; CUR(14,0)'# of lines :';Z 820 ; CUR(15,0)'# of characters :';C 830 END 840 REM -------------------- get offset ---------------------------- 850 ONERRORGOTO 0 870 Z%=CALL(28666,3%)+CALL(28668,1%) : A$=LEFT$(Q0$,10) 880 Z%=CALL(28666,3%)+CALL(28668,2%) : B$=LEFT$(Q0$,10) 890 A=VAL(A$) : A$="" : B=VAL(B$) : B$="" 900 CLOSE 3 910 ONERRORGOTO 0 920 RETURN 930 REM ------------------- set offset ------------------------------ 940 REM 950 F4$=LEFT$(F2$,LEN(F2$)-4) 960 PREPARE F4$+'.src' ASFILE 3 970 A$=NUM$(A) : B$=NUM$(B) 980 FOR Y=LEN(A$) TO 10 : A$=A$+CHR$(32) : NEXT Y 990 FOR Y=LEN(B$) TO 10 : B$=B$+CHR$(32) : NEXT Y 1000 Z%=CALL(28666,3%) : Q0$=A$ : Z%=CALL(28670,1%) 1010 Z%=CALL(28666,3%) : Q0$=B$ : Z%=CALL(28670,2%) 1020 A$="" : B$="" 1030 CLOSE 3 1040 RETURN