0 SCREEN,0:PRINT:PRINT" CFRJMK N2.0 by James Main Kenney 1997":PRINT" Distribute exact copies freely":PRINT:PRINT"At (letter) prompts press return key fordefault; ESC for Menu":PRINT:MAXFILES=3:CLEAR1061:DEFSTRA-I:DEFINTJ-Z:GOTO40 1 IFA>""THENIFEOF(1)ORIK=CHR$(27)THENRETURNELSEP=ASC(INPUT$(1,1))ELSEIFP=13THENP=10ELSEP=ASC(INPUT$(1)):IFP=27THENRETURN 2 N=(P+224)AND255:IFTTHENT=1+(N-1)\90:N=N-(T-1)*90ELSEIFN>94THEN1 3 M=N:IFTTHENIFT<>UTHENM=90+T 4 FORJL=0TOKMODSL:GOSUB20:NEXT:NC=NC+1:M=(L+K-M)MODL:Q=M+32:IFT=0THENIFM>90THENU=M-90:GOTO1ELSEQ=(Q+(U-1)*90)AND255:P=Q 5 IFC>""THENPRINT#3,CHR$(Q); 6 IFTTHENIFT<>UTHENU=T:GOTO3 7 Y=Y+1:SP=(SP+P)MODL:IK=INKEY$:IFS=1THEN1ELSEIFS=0THENPRINTCHR$(P);:GOTO1ELSELOCATE17,5:PRINTSTR$(Y);:IFS=2THENPSET(KMOD240,K\240)ELSEIFS=3THENPSET(KMODL+144,YMOD19+44):IFYMODL<62THENPSET(KMODL+1,YMODL+1)ELSEPSET(KMODL+144,YMODL-61) 8 IFS<4THEN10ELSEM!=M!+M:N!=N!+N:Q!=Q!+M^2:R!=R!+N^2:P!=P!+M*N:IFN<62THENPSET(M+1,N+1)ELSEPSET(M+144,N-61) 9 IFRCORIK>""OREOF(1)THENU!=SQR((Y*Q!-M!^2)*(Y*R!-N!^2)):IFU!THENLOCATE17,6:PRINTCSNG((Y*P!-M!*N!)/U!)" 10 IFIK=" "THENCLS:GOTO1ELSE1 20 IFUATHENK=K+SP 21 IFRGTHENK=K+INT(L*RND(1)) 22 IFXTHENIFEOF(2)THENGOSUB30 23 IFXTHENK=K+ASC(INPUT$(1,2)):R=R+1 24 IFWTHENK=K+ASC(MID$(G,ZMODW+1,1)):K=K+ASC(MID$(G,KMODW+1,1)):G=LEFT$(G,ZMODW)+CHR$(KMODL+32)+RIGHT$(G,W-ZMODW-1) 25 IFF>""THENK=K+ASC(MID$(F,KMODL+1,1)):J=KMOD(L-ZMODL)+1:I=MID$(F,J,1):F=LEFT$(F,J-1)+RIGHT$(F,L-J)+I:K=K+ASC(I)+J 26 K=KAND8191:Z=(ZAND16383)+1:RETURN 30 CLOSE2:OPENBFORINPUTAS2:X=X+1:RM=R:R=0:RETURN 40 ONERRORGOTO100:L=95:E=CHR$(27):ER=E+"p ":EN=E+"q":P$="Plaintext":CT="Ciphertext":H="crypt":PRINT"(E)n"H" or (D)e"H;:I="DdEe":GOSUB80:IFJTHENCLS:IFJ>2THENT=1:D=P$:E=CT:H=" en"+HELSED=CT:E=P$:H=" de"+HELSEBEEP:GOTO40 41 FILES:FL=" file ":PRINTD;FL"to"H"? ";:LINEINPUTA:CLS:IFA>""THENOPENAFORINPUTAS1ELSEIFT=0THENERROR49 42 G="To change, edit line 42 in the ASCII version of this program and replace this statement with random characters (247 max; no double quotes), or replace temporarily (or add to) from a file. Do not alter length if editing after program is compiled. 43 CLS:PRINT"Resident keytext: "G:PRINT" (C)ut (A)dd (S)ub (N)o reskey";:I="CASN=casn":GOSUB80:J=JMOD5:IFJ=1THENW=LEN(G):PRINT" Cut from"W"chrs to";:INPUTW:G=LEFT$(G,W):GOTO43ELSECLS:IFJ>2THENG=" 44 IFJ=2ORJ=3THENFILES:LINEINPUT"Resident keytext file? ";B:IFB=""THEN42ELSEOPENBFORINPUTAS2:FORJ=1TO255:IFEOF(2)ORLEN(G)=255THENCLOSE2:GOTO43ELSEG=G+INPUT$(1,2):NEXT:GOTO43 45 FILES:FK="Keyfile":PRINTFK"? ";:LINEINPUTB:FS="Fontstring":IFB=""THENCLS:GOTO49ELSESK=0:INPUT" Skip 0 chrs";SK:PRINT" (F)or "FS" only";:I="FfYy":GOSUB80:O=J 46 IFT=0THEN48ELSEINPUT" Add 0 random chrs";M:IFM=0THEN48ELSEOPENBFORAPPENDAS2:PRINT" Tap keys randomly; (ESC) ends":F=INPUT$(1):FORN=1TOM 47 J=(J+INT(L*RND(1))MOD95:PRINTCHR$(J+32);:I=INKEY$:IFI=""THEN47ELSEIFASC(I)<>27THENW=(W+J+ASC(I))MODL:F=CHR$(W+32):PRINT#2,F;:PRINTER;F;EN;:NEXT 48 GOSUB30:GOSUB90:CLS 49 FILES:PRINTE" file? ";:LINEINPUTC:IFC>""THENOPENCFOROUTPUTAS3ELSEIFTTHENERROR49 50 PRINT"(N)o autokey";:I="Nn":GOSUB80:UA=J:PRINT"(U)se pseudorandom gen";:I="UuYy":GOSUB80:RG=J:INPUT"Security level 1";SL:IFSL<1THENSL=1 51 IFA>""THENPRINT"Display "P$" or: (B)lank screen":PRINT" (O)ut-In (K)ey (T)ime-Key";:I="BKTO=bkto":GOSUB80:S=JMOD5:IFS=4THENPRINT" (C)ont correlation";:I="CcYy":GOSUB80:IFJTHENRC=1 52 N=0:K=0:LINEINPUT"Passwords? ";F:V=LEN(F):IFVTHENFORJ=1TOV:M=ASC(MID$(F,J,1)):N=M+NAND16383:K=M*(1+(JAND63))+KAND16383:NEXT:PRINTV"chrs; chk:"N;K;CHR$(NMODL+32);CHR$(KMODL+32)" (R)edo";:I="RrYy":GOSUB80:IFJTHEN52 53 IFG=""THENG=F 54 W=LEN(G):M=W:IFV=0THENF=G:V=WELSEIFV>WTHENM=V 55 IFMTHENPRINT"Keystring: ";:FORJ=1TOM:K=K+ASC(MID$(G,JMODW+1,1))+ASC(MID$(F,JMODV+1,1)):K=K+ASC(MID$(F,KMODV+1,1)):K=K+ASC(MID$(G,KMODW+1,1)):I=CHR$(KMODL+32):GF=GF+I:PRINTI;:K=(K+ASC(MID$(GF,KMODJ+1,1)))AND8191:NEXT:W=M:G=GF:GF="":F=" 56 IFMTHENPRINT:PRINT" (F)or "FS" only";:I="FfYy":GOSUB80:IFJTHEN58ELSEUF=1 57 IFO=0THENPRINT"(N)o "FS;:I="Nn":GOSUB80:IFJTHEN61 58 FORJ=32TO126:F=F+CHR$(J):NEXT:PRINTFS": "F:P=3:INPUT" 3 permutations";P:IFP=0THEN61 59 FORN=1TOP:PRINT"Pmt"N"of"STR$(P)": ";:Q=0:FORV=1TOL:GOSUB20:PRINTI;:U=SGN(ASC(I)-PA):PA=ASC(I):IFV>1ANDU<>PSTHENQ=Q+1:PS=U 60 NEXT:PRINT:PRINTQ"runs";:PA=0:PS=0:T!=T!+Q:IFN>1THENM!=T!/N:S!=S!+(Q-M!)^2:PRINT"; mean:"M!" ssd:"CSNG(SQR(S!/(N-1))):NEXTELSEPRINT:NEXT 61 IFXTHENX=0:IFO=0THENGOSUB30:GOSUB90 62 U=1:W=W*UF:Z=0:IFSTHENCLSELSEPRINTP$;:IFA=""THENBEEP:PRINT"? (ESC) ends"ELSEPRINT": 63 IFS>2THENFORM=0TO1:FORN=0TO1:FORJ=0TO77:PSET(M*143+J+J\4,N*63):NEXT:FORJ=0TO50:PSET(M*143+N*96,J+(J+1+M)\4+1-M):NEXT:NEXT:NEXT 64 PRINT:BE=TIME$:GOSUB1:EE=TIME$:BEEP:IFSORC=""THENI=INPUT$(1) 65 CLOSE:PRINT:PRINT:PRINT"Began"H"ion "BE:PRINT"Ended"H"ion "EE 66 PRINTY;P$" chrs; check:"SP+32;CHR$(SP+32):PRINTNC;CT" chrs":IFXTHENPRINTFK" "B" used to":PRINT" chr"R"on cycle"X:IFX>1THENPRINTFK" size:"RM"chrs"ELSERM=R 67 IFA>""THENPRINT"(O)verwrite "D;FL;A;:IFINSTR(A,".")=0THENA=A+".DO 68 I="OoYy":GOSUB80:IFJ=0THEN70ELSEPRINTER"Wait "EN:OPENAFOROUTPUTAS1:FORJ=1TONC:PRINT#1," ";:NEXT:CLOSE:KILLA:IFC=""THEN70ELSEIFINSTR(C,".")=0THENC=C+".DO 69 PRINT"(R)ename "E;FL;C:PRINTTAB(21)"as "A;:I="RrYy":GOSUB80:IFJTHENNAMEC$ASA 70 IFX=0THENMENUELSEPRINT"(O)verwrite "FK" "B;:IFINSTR(B,".")=0THENB=B+".DO 71 I="OoYy":GOSUB80:IFJTHENPRINTER"Wait "EN:OPENBFOROUTPUTAS2:FORJ=1TORM:PRINT#2," ";:NEXT:CLOSE:KILLB:MENUELSEMENU 80 PRINT"? ";:CH=INPUT$(1):PRINTCH:J=INSTR(I,CH):IFCH=CHR$(27)THENMENUELSERETURN 90 IFSK=0THENRETURNELSEPRINTER"Wait "EN:FORJ=1TOSK:IFEOF(2)THENGOSUB30 91 I=INPUT$(1,2):R=R+1:NEXT:RETURN 100 BEEP:IFERR=6THENPRINTER">32767 "EN:RESUMEELSECLS:IFERR=7THENPRINTER"Out of memory "EN:RESUME65ELSEIFERR=49THENPRINTER"Need "CT;FL;ENELSEIFERR>50ANDERR<56THENPRINTER"Name error"ERR;EN 101 IFERL=30ORERL=46THENRESUME45ELSEIFERL=41THENRESUME41ELSEIFERL=44THENRESUME44ELSEIFERL=49THENRESUME49ELSEPRINTER"Error"ERR"in line"ERL;EN:RESUME