home *** CD-ROM | disk | FTP | other *** search
- '
- '
- ' <<<<< M S - C O D E 2 . 1 5 3 >>>>>
- '
- '
- ' * * * * * * * * * * * * * * * * * * * *
- ' * *
- ' * COPYRIGHT 1984 by *
- ' * Richard Nolen Colvard *
- ' * Freeware Distribution OK *
- ' * Public Domain use OK *
- ' * *
- ' * WARNING: This Program must be *
- ' * COMPILED with MIcrosoft *
- ' * BASCOM/T/O/N *
- ' * Donot use BASICA *
- ' * *
- ' * Highly recommend 8087 link libs *
- ' * *
- ' * * * * * * * * * * * * * * * * * * * *
- '
- '
- DIM B#(37), C#(99), CONS!(7), CONS#(6), IX%(256)
- DIM BCNT%(37), CCNT%(99), CHNO%(256), SAV%(256)
- CONS!(1)=8: CONS!(2)=131072! : CONS!(3)=8192: CONS!(4)=128
- CONS!(5)=2: CONS!(6)=32 : CONS!(7)=2048 : L0% = 95 : K0% = L0% * 2
- CONS#(1)=1: CONS#(2)=128 : CONS#(3)=32768# : CONS#(4)=8388608#
- CONS#(5)=4096 : CONS#(6)=1048576# : ACNT! = 0
- M%=7: N%=17: YY# = 999991! : MU# = 16807 : MD# = 2147483647#
- SAME1! = 0 : SAME2! = 0 : TOT! = 0 : CL% = 0 : IBM% = 0
- WH$="V1.53 MS-CODE2"
- WZ$="P C C o m p u t e r S e c u r i t y " + WH$
- HDR$=WH$ + " ENCODED " + DATE$ + " " + TIME$
- DOTS$ = STRING$(78,46)
- FOR J%=1 TO 37 : BCNT%(J%)=0 : NEXT J%
- FOR J%=1 TO 99 : CCNT%(J%)=0 : NEXT J%
- FOR J%=1 TO 256 : CHNO%(J%)=0 : SAV%(J%)=J% : NEXT J%
- YES% = ASC("Y") : NO% = ASC("N")
- PRINT WZ$ : PRINT : PRINT
- GOSUB 6590
- PRINT : PRINT
- YES% = ASC("Y") : NO% = ASC("N")
- PRINT "Debug Statistics will slow down program execution"
- PRINT "Do You Wish Debuging Statistics";
- GOSUB 8300 : BUG% = REPLY%
- PRINT : PRINT
- PRINT "Do You Wish to Load KEYS from a FILE";
- GOSUB 8300 : IF REPLY% = 1% THEN GOSUB 6810 : GOTO 2550
- GOSUB 8190
- FOR J%=10 TO 15
- ' IF CL%= 1% THEN COLOR J%,9,1
- PRINT "P C - C O D E 2 ......Textual SuperEncipherment......"
- NEXT J%
- ' IF CL% = 1% THEN COLOR 15,9,1
- PRINT: PRINT : PRINT : PRINT : PRINT
- YES% = ASC("N") : NO% = ASC("A")
- PRINT " Enter the type of KEY desired"
- PRINT " Numeric; Number Only key ";
- ' IF CL% = 1% THEN COLOR 13,0,0: PRINT "N" : COLOR 15,9,1
- IF CL% = 0% THEN PRINT "N"
- PRINT " Alphabetic; alphanumeric ";
- ' IF CL% = 1% THEN COLOR 13,0,0: PRINT "A" : COLOR 15,9,1
- IF CL% = 0% THEN PRINT "A"
- GOSUB 8300 : TY% = REPLY% : IF REPLY% = 0% THEN 3880
- '
- '
- '
- GOSUB 8190
- PRINT " There are two(2) levels of Security HIGH and LOW"
- PRINT " Enter H for HIGH or L for LOW";
- YES% = ASC("H") : NO% = ASC("L")
- GOSUB 8300 : IF REPLY% = 1% THEN 1980
- '
- ' ----------- LOW level of SECURITY -------------
- '
- PRINT " LOW Level of Security Selected"
- PRINT
- PRINT " You must now enter SEVEN (7) KEY numbers as indicated:"
- PRINT
- GOSUB 4090
- GOTO 2550
- '
- '
- '
- 1980 PRINT
- PRINT " You have Selected HIGH security"
- PRINT
- PRINT " You must enter ";1+N%+M%;" key numbers between 1 and 2,147,483,646"
- 2020 INPUT " A(1) ? "; A#
- A#=FIX(A#)
- IF A# < 1 OR A# >= MD# THEN GOSUB 2400: GOTO 2020
- PRINT
- '
- '
- FOR J%=1 TO M%
- 2090 PRINT " B(";J%;") ";
- INPUT B#(J%)
- B#(J%)=FIX(B#(J%))
- IF B#(J%) < 1 OR B#(J%) >= MD# THEN GOSUB 2400: GOTO 2090
- NEXT J%
- GOSUB 8190
- '
- '
- FOR J%=1 TO N%
- 2180 PRINT " C(";J%;") ";
- INPUT C#(J%)
- C#(J%)=FIX(C#(J%))
- IF C#(J%) < 1 OR C#(J%) >= MD# THEN GOSUB 2400: GOTO 2180
- IF J% = 18 THEN GOSUB 8190
- IF J% = 36 THEN GOSUB 8190
- NEXT J%
- '
- GOTO 2550
- '
- '
- '
- 2300 PRINT "[";X%;"] ";
- INPUT "Enter a NUMBER between 1 and 9,999,999 "; K2!
- IF K2! < 1 OR K2! > 9999999! THEN GOSUB 2400: GOTO 2300
- Z!=K2!
- GOSUB 2490
- S!=Z!
- RETURN
- '
- '
- ' ---------- ERROR Messages ----------
- '2400 IF CL% = 1% THEN COLOR 4+16,0,0
- 2400 PRINT " ERROR: Number RANGE must be 1 to 9,999,999"
- ' IF CL% = 1% THEN COLOR 15,1,9
- RETURN
- '
- '
- ' ------ scaling ---------
- 2490 Z! = Z! / 100.00!
- IF Z! > 1.00! THEN 2490
- RETURN
- '
- '
- '
- 2550 GOSUB 8190 : PRINT
- PRINT "Possible Output files:"
- PRINT " 'A:FILE.EXT' 'B:FILE.EXT' 'LPT1:' 'CON:' 'CAS1:'"
- PRINT " for FILES the input and Output must be different"
- PRINT
- INPUT "Enter Output file name (Full name): "; U$
- IF U$ = "con:" THEN U$="CON:"
- IF U$ <> "CON:" THEN OPEN "O",2,U$
- PRINT: PRINT
- PRINT "Possible Input files:"
- PRINT " 'A:FILE.EXT' 'B:FILE.EXT' 'C:FILE.EXT' 'CON:' 'CAS1:'"
- PRINT
- INPUT "Enter Input FILE (full name): "; F1$
- IF F1$= "con:" THEN F1$="CON:"
- IF F1$ <> "CON:" THEN OPEN "I",1,F1$
- PRINT
- PRINT
- PRINT "Encode or Decode";
- YES% = ASC("E") : NO% = ASC("D")
- GOSUB 8300 : EN% = REPLY%
- IF EN%= 1% AND U$ <> "CON:" THEN PRINT #2, HDR$
- IF EN% <> 0% THEN 2870
- IF F1$="CON:" THEN 2870
- LINE INPUT #1, HDR$
- IF LEFT$(HDR$,14) = WH$ THEN 2870
- PRINT "* * * File was never Encoded by "; WH$
- PRINT " file header = "; HDR$
- END
- 2870 GOSUB 8190
- ' IF CL% = 1% THEN COLOR 4+16,0,0
- ' IF CL% = 0% THEN COLOR 7+16,0
- PRINT " * * * R U N N I N G * * *"
- ' IF CL% = 1% THEN COLOR 15,9,1
- ' IF CL% = 0% THEN COLOR 7,0
- PRINT
- IF F1$="CON:" THEN PRINT "--> Terminate Console Input with use '//END'"
- IF EN% = 0% AND F1$ <> "CON:" THEN PRINT "File Header: "; HDR$
- PRINT
- 2970 IF F1$ = "CON:" THEN 3010
- IF EOF(1) <> 0 THEN 3590
- LINE INPUT #1, M$
- GOTO 3030
- 3010 LINE INPUT M$
- IF M$ = "//END" OR M$ = "//end" OR M$ = CHR$(26) THEN 3590
- 3030 L%=LEN(M$)
- IF L% = 0 THEN 3390
- FOR JJ%=1 TO L%
- IX%(JJ%)=JJ%
- NEXT JJ%
- L9%=INT(L%/2)
- GOSUB 5990
- IF EN% = 0% THEN GOSUB 6270
- FOR J%=1 TO L%
- H%=ASC( MID$(M$,J%,1))
- H% = H% - 32
- S#=A#
- L=M%
- GOSUB 3450
- A#=S#
- B%=O%
- L=N%
- S#=B#(B%)
- BCNT%(B%) = BCNT%(B%) + 1%
- GOSUB 3450
- B#(B%)=S#
- B%=O%
- S#=C#(B%)
- CCNT%(B%) = CCNT%(B%) + 1%
- L=L0%
- GOSUB 3450
- C#(B%)=S#
- IF EN% = 1% THEN H% = H% + O% ELSE H% = K0% + (H% - O%)
- H% = H% MOD L0%
- H% = H% + 32%
- CHNO%(H%) = CHNO%(H%) + 1%
- MID$(M$,J%,1)=CHR$(H%)
- NEXT J%
- IF EN% = 1% THEN GOSUB 6270
- 3390 IF U$ <> "CON:" THEN PRINT #2, M$
- IF U$ = "CON:" THEN PRINT M$
- IF U$ = "CON:" AND F1$ = "CON:" THEN PRINT
- GOTO 2970
- '
- '
- ' -------- RANDOM NUMBER GENERATOR (1) ------
- 3450 S#=S# * MU#
- S#=S# - (MD# * INT(S# / MD#) )
- O%=1 + FIX(L * (S# / MD#) )
- RETURN
- '
- '
- ' -------- RANDOM NUMBER GENERATOR (2) ------
- 3520 S!=(S! + 1.352968) ^ 1.256973
- S!=S! - FIX(S!)
- O%=1 + FIX(L * S!)
- RETURN
- '
- '
- '
- 3590 PRINT
- IF U$ <> "CON:" THEN CLOSE 2
- IF F1$ <> "CON:" THEN CLOSE 1
- '
- '
- ' ------- CLEAR MEMORY & STOP --------
- PRINT "Wish to Save newly Computed KEYS to a FILE";
- YES% = ASC("Y") : NO% = ASC("N")
- GOSUB 8300 : IF REPLY% = 1% THEN GOSUB 7040
- PRINT "Wish to Save Log Statistics for keys used";
- GOSUB 8300 : IF REPLY% = 1% THEN GOSUB 7690
- Z!=0: A#=0# : M$=SPACE$(128): S! = 0 : S# = 0#
- FOR J%=1 TO M%
- B#(J%)=0# : BCNT%(J%)=0%
- NEXT J%
- FOR J%=1 TO N%
- C#(J%)=0# : CCNT%(J%)=0%
- NEXT J%
- FOR J%=1 TO 256
- IX%(J%)=0%
- NEXT J%
- ' IF CL% = 1% THEN COLOR 7,0,0
- ' IF IBM% = 1% THEN CLS
- END
- '
- ' ----------- ALPHANUMERIC KEYS -----------
- '
- 3880 GOSUB 8190
- PRINT " There are two(2) levels of Security HIGH and LOW"
- PRINT " Enter H for HIGH or L for LOW ";
- YES% = ASC("H") : NO% = ASC("L")
- GOSUB 8300 : IF REPLY% = 1% THEN 5190
- '
- ' ----------- LOW level of SECURITY -------------
- '
- PRINT " LOW Level of Security Selected"
- PRINT
- PRINT " You must now enter SEVEN (7) key Alphanumerics as indicated:"
- PRINT
- GOSUB 4090
- GOTO 2550
- '
- '
- ' ---------- KEY 1 ---------
- 4090 X%=1% : M% = 11% : N% = 47%
- IF TY% = 0% THEN GOSUB 5340 ' Alpha
- IF TY% = 1% THEN GOSUB 2300 ' Numeric
- GOSUB 3520
- GOSUB 3520
- A#=FIX((1# - S!) * MD#)
- '
- '
- ' ---------- KEY 2 ----------
- X%=2
- IF TY% = 0% THEN GOSUB 5340 ' Alpha
- IF TY% = 1% THEN GOSUB 2300 ' Numeric
- GOSUB 3520
- L=4
- FOR J%=1 TO M%
- GOSUB 3520
- O2% = O%
- FOR K%=1 TO O2%
- GOSUB 3520
- NEXT K%
- GOSUB 3520
- B#(J%)=FIX((1# - S!) * MD#)
- NEXT J%
- '
- '
- ' ---------- KEY 3 -----------
- X%=3
- IF TY% = 0% THEN GOSUB 5340 ' Alpha
- IF TY% = 1% THEN GOSUB 2300 ' Numeric
- GOSUB 3520
- L=3
- FOR J%=1 TO N%
- GOSUB 3520
- O2% = O%
- FOR K%=1 TO O2%
- GOSUB 3520
- NEXT K%
- GOSUB 3520
- C#(J%)=FIX((1# - S!) * MD#)
- NEXT J%
- '
- '
- ' ---------- KEY 4 -------------
- X%=4
- IF TY% = 0% THEN GOSUB 5340 ' Alpha
- IF TY% = 1% THEN GOSUB 2300 ' Numeric
- GOSUB 3520
- L=INT(N%/2)
- GOSUB 3520
- K%=O% + 1
- L=N%
- FOR J%=1 TO K%
- GOSUB 3520
- L%=O%
- GOSUB 3520
- C#(L%)=FIX(S! * MD#)
- NEXT J%
- '
- '
- ' ----------- KEY 5 ---------------
- X%=5
- IF TY% = 0% THEN GOSUB 5340 ' Alpha
- IF TY% = 1% THEN GOSUB 2300 ' Numeric
- GOSUB 3520
- L=INT(M%/2)
- GOSUB 3520
- K%=O% + 1
- L=M%
- FOR J%=1 TO K%
- GOSUB 3520
- L%=O%
- GOSUB 3520
- B#(L%)=FIX(S! * MD#)
- NEXT J%
- '
- '
- ' ------------ KEY 6 ---------------
- X%=6
- IF TY% = 0% THEN GOSUB 5340 ' Alpha
- IF TY% = 1% THEN GOSUB 2300 ' Numeric
- GOSUB 3520
- L=M%
- FOR J%=1 TO M%
- GOSUB 3520
- D#=B#(O%)
- B#(O%)=B#(J%)
- B#(J%)=D#
- NEXT J%
- '
- '
- ' ------------- KEY 7 --------------
- X%=7
- IF TY% = 0% THEN GOSUB 5340 ' Alpha
- IF TY% = 1% THEN GOSUB 2300 ' Numeric
- GOSUB 3520
- L=N%
- FOR J%=1 TO N%
- GOSUB 3520
- D#=C#(O%)
- C#(O%)=C#(J%)
- C#(J%)=D#
- NEXT J%
- '
- GOSUB 7440 ' Display generated keys
- '
- RETURN
- '
- ' ---------- end of LOW security ------------
- '
- '
- 5190 GOSUB 8190
- PRINT " You must enter 3 long PASSWORDS of alphanumeric data"
- X%=1
- GOSUB 5530
- X%=M%
- GOSUB 5530
- X%=N%
- GOSUB 5530
- '
- GOSUB 7440 ' Display generated keys
- '
- GOTO 2550
- '
- '
- '
- ' --------- alphanumeric password to RND ------------
- 5340 PRINT "[";X%;"] Enter Password: ";
- LINE INPUT P$
- L%=LEN(P$)
- IF L% < 6% THEN PRINT " *** password too short; not > 5": GOTO 5340
- IF X%=1 THEN K# = 0
- FOR J%=1 TO L%
- C%=ASC( MID$(P$,J%,1) )
- LL%=J%
- IF LL% > 7% THEN LL% = LL% MOD 7% : LL% = LL% + 1%
- K# = K# + (CONS!(LL%) * C%)
- NEXT J%
- Z! = K#
- GOSUB 2490
- K# = K# - (YY# * INT( K# / YY#))
- S! = Z!
- RETURN
- '
- '
- '
- ' ------- alphanumeric to DECIMAL --------
- 5530 X2%=X% * 6
- X3% = X2% : X4% = 0
- IF X%=1 THEN PRINT " (A) Enter Password of at least (MIN) ";X2%;" Chars"
- IF X%=M% THEN PRINT " (B) Enter Password of at least (MIN) ";X2%;" Chars"
- IF X2% > 60 THEN X3% = 60: X4% = X2% - 60 : GOSUB 8190
- IF X%=N% THEN PRINT " (C) Enter Password of at least (MIN) ";X2%;" Chars"
- W1$="123456789012345678901234567890123456789012345678901234567890"
- W2$=" 1 2 3 4 5 6"
- W3$=".........+.........+.........+.........+.........+.........+"
- W4$=" 7 8 9 10 11 12"
- PRINT: PRINT
- PRINT " "; LEFT$(W2$,X3%)
- PRINT " "; LEFT$(W1$,X3%)
- PRINT " "; LEFT$(W3$,X3%)
- PRINT "Password:";
- LINE INPUT P$
- PRINT
- IF X4% = 0 THEN 5740
- PRINT: PRINT
- PRINT " "; LEFT$(W4$,X4%)
- PRINT " "; LEFT$(W1$,X4%)
- PRINT " "; LEFT$(W3$,X4%)
- PRINT "Password:";
- LINE INPUT P2$
- P$ = P$ + P2$
- 5740 L%=LEN(P$)
- IF L% < X2% THEN PRINT " *** Password TOO SHORT reenter ": GOTO 5530
- T%=INT(L%/X%)
- K#=0
- FOR K%=1 TO X%
- P2$=LEFT$(P$,T%)
- L%=L%-T%
- IF L% < 1 THEN 5830
- P$=RIGHT$(P$,L%)
- 5830 FOR J%=1 TO T%
- LL%=J%
- IF LL% > 6% THEN LL% = LL% MOD 6% : LL% = LL% + 1%
- C% = ASC( MID$(P2$,J%,1) )
- K# = K# + (CONS#(LL%) * C%)
- NEXT J%
- IF X%=1 THEN A#=K#
- IF X%=M% THEN B#(K%) = K#
- IF X%=N% THEN C#(K%) = K#
- K# = K# - (MD# * INT( K# / MD# ))
- NEXT K%
- RETURN
- '
- '
- ' ------ TRANSPOSITION -------
- '
- 5990 FOR JJ%=1 TO L%
- L=M%
- S#=A#
- GOSUB 3450
- A#=S#
- B%=O%
- L=N%
- S#=B#(B%)
- GOSUB 3450
- B#(B%)=S#
- B%=O%
- S#=C#(B%)
- L=L%
- GOSUB 3450
- C#(B%)=S#
- IS% = IX%(JJ%)
- IX%(JJ%) = IX%(O%)
- IX%(O%) = IS%
- NEXT JJ%
- IF BUG% = 0% THEN 6230
- FOR JJ%=1 TO L% : B% = IX%(JJ%)
- IF SAV%(JJ%) = B% THEN SAME1! = SAME1! + 1
- SAV%(JJ%) = B%
- IF B% = JJ% THEN SAME2! = SAME2! + 1
- NEXT JJ%
- TOT! = TOT! + L%
- 6230 RETURN
- '
- '
- '
- 6270 FOR JJ%=1 TO L9%
- G1%=IX%(JJ%)
- G2%=IX%(JJ%+L9%)
- G1$=MID$(M$,G1%,1)
- G2$=MID$(M$,G2%,1)
- MID$(M$,G1%,1)=G2$
- MID$(M$,G2%,1)=G1$
- NEXT JJ%
- RETURN
- '
- '
- '
- ' ------ Help / Instructions -----
- 6400 OPEN "I",3,"MS-CODE2.DOC"
- 6420 GOSUB 8190
- JJ%=1
- '6450 IF EOF(3) <> 0 THEN 6540
- 6450 IF EOF(3) <> 0 THEN 6550
- LINE INPUT #3, M$
- PRINT M$
- JJ%=JJ%+1
- IF JJ% < 19 THEN 6450
- PRINT "======================="
- PRINT "Wish More Documentation";
- YES% = ASC(" ") : NO% = ASC("N")
- GOSUB 8300 : IF REPLY% = 1% THEN 6420 ELSE 6550
- '6540 GOSUB 7230 ' Pause
- 6550 GOSUB 8190
- CLOSE 3
- RETURN
- '
- '
- '
- 6590 PRINT: PRINT
- YES% = ASC("Y") : NO% = ASC("N")
- ' PRINT "Does your Terminal Support IBM Clear (CLS) screen";
- ' GOSUB 8300 : IBM% = REPLY%
- ' PRINT : PRINT
- ' PRINT "Do you have COLOR installed on your PC";
- ' GOSUB 8300 : CL% = REPLY%
- ' IF CL%= 0% THEN 6700
- ' SCREEN 0,1
- ' COLOR 15,9,1
- ' GOSUB 8190
- '6700 PRINT : PRINT
- PRINT "Do you wish some instructions/Help";
- GOSUB 8300 : IF REPLY% = 1% THEN GOSUB 6400
- RETURN
- '
- '
- '
- 6810 INPUT "Enter the Fully Qualified Input Key FILE name: "; F$
- OPEN "I", 5, F$
- LINE INPUT #5, P$
- IF LEFT$(P$,1) <> "*" THEN A#=VAL(P$): GOTO 6880
- INPUT #5, T%, M%, N%
- INPUT #5, A#
- 6872 IF T% <> 1 THEN PRINT "ERROR: Bad Key File ": END
- 6880 A# = ABS( FIX( A# ) )
- IF A# = 0 THEN T% = 99 : GOTO 6872
- FOR J%=1 TO M% : INPUT #5, B#(J%)
- B#(J%) = ABS( FIX( B#(J%) ) ) : NEXT J%
- FOR J%=1 TO N% : INPUT #5, C#(J%)
- C#(J%) = ABS( FIX( C#(J%) ) ) : NEXT J%
- IF EOF(5) <> 0 THEN PRINT "*** ERROR *** Reading Key File": END
- T% = M% + N% + 1
- PRINT "*** Loaded "; T% ;" Keys from "; F$; " Successfully"
- ' GOSUB 7230 ' Pause
- CLOSE 5
- RETURN
- '
- '
- '
- 7040 INPUT "Enter the Fully Qualified Output Key File Name: "; F$
- OPEN "O", 5, F$
- PRINT #5, "* HDR MS-CODE2 saved KEYS "
- WRITE #5, 1, M%, N%
- PRINT #5, A#
- FOR J%=1 TO M% : PRINT #5, B#(J%)
- NEXT J%
- FOR J%=1 TO N% : PRINT #5, C#(J%)
- NEXT J%
- PRINT #5, "* Keys computed on " + DATE$ + " " + TIME$ + " " + WH$
- T% = M% + N% + 1
- PRINT "*** Saved "; T% ;" Keys to "; F$; " Successfully"
- ' GOSUB 7230 ' Pause
- CLOSE 5
- RETURN
- '
- '
- '
- ' ------- Delay function -------
- '7230 PRINT : PRINT
- ' PRINT " <PAUSE> Press Enter to Continue ";
- ' LINE INPUT Z$
- ' RETURN
- '
- '
- '
- ' ----- Generated Key Seeds display ------
- 7440 GOSUB 8190
- PRINT "The following Numeric Keys/Seeds were generated:"
- PRINT : PRINT
- P$=SPACE$(15)
- PRINT " ( A ): "; A#
- PRINT
- PRINT " ( B ):"
- FOR J%=1 TO M%
- IF (J% MOD 5) = 0 THEN PRINT
- PRINT LEFT$(STR$(B#(J%))+P$,15);
- NEXT J%
- PRINT : PRINT
- PRINT " ( C ):"
- FOR J%=1 TO N%
- IF (J% MOD 5) = 0 THEN PRINT
- PRINT LEFT$(STR$(C#(J%))+P$,15);
- NEXT J%
- PRINT: PRINT
- PRINT " --- To Print this screen depress 'Shift PrtSc' ---"
- ' GOSUB 7230 ' Pause
- RETURN
- '
- '
- '
- '
- '
- ' ---- Save Log Statistics for Keys used -----
- 7690 PRINT "Enter Stat Log File Name or 'LPT1:' or default of blank"
- F$ = " "
- INPUT "Enter Log File Name: "; F$
- IF LEN(F$)=0 OR LEFT$(F$,1)=" " THEN F$="MS-STAT2.LOG"
- OPEN "O", 6, F$
- FOR J%=1 TO M% : ACNT! = ACNT! + BCNT%(J%) : NEXT J%
- PRINT #6, " "
- PRINT #6, " <<<<< MS-CODE2 Statistics for Keys Used >>>>>"
- PRINT #6, " " : PRINT #6, " "
- PRINT #6, " Date and Time Stamp = "; DATE$ + " " + TIME$
- PRINT #6, " Keys Setup (B) size = "; M%
- PRINT #6, " Keys Setup (C) size = "; N%
- PRINT #6, " Total Characters processed = "; ACNT!
- PRINT #6, " "
- PRINT #6, " ----- Key Utilitization/Balance -----"
- PRINT #6, " " : PRINT #6, " "
- PRINT #6, " * For Key Group (B)"
- PRINT #6, " "
- PRINT #6, " KEY Count"
- FOR J%=1 TO M%
- PRINT #6, USING " ### ####### "; J%, BCNT%(J%)
- NEXT J%
- PRINT #6, " " : PRINT #6, " "
- PRINT #6, " * For Key Group (C)"
- PRINT #6, " "
- PRINT #6, " KEY Count"
- FOR J%=1 TO N%
- PRINT #6, USING " ### ####### "; J%, CCNT%(J%)
- NEXT J%
- PRINT #6, " " : PRINT #6, " "
- PRINT #6, " * Output Character Set Statistics:"
- PRINT #6, " "
- PRINT #6, " CHR$ Char Count"
- PRINT #6, " Num ---- Occur"
- FOR J%=0 TO 255
- IF CHNO%(J%)=0 THEN 8040
- IF J% > 31 AND J% < 127 THEN P$=CHR$(J%) ELSE P$=" "
- PRINT #6, USING " #### ! ####### "; J%, P$, CHNO%(J%)
- 8040 NEXT J%
- PRINT #6, " "
- IF BUG% = 0% THEN 8130
- PRINT #6, " ": PRINT #6, " * Debuging Statistics": PRINT #6, " "
- PRINT #6, " "
- PRINT #6, " Transposition count: "; TOT!, " 100%"
- PRINT #6, " coincidences T1 "; SAME1!, 100 * (SAME1!/TOT!);"%"
- PRINT #6, " coincidences T2 "; SAME2!, 100 * (SAME2!/TOT!);"%"
- PRINT #6, " ": PRINT #6, " "
- 8130 PRINT #6, " *** END of STATISTICAL LOG ***"
- PRINT " *** Saved Stat Log file to "; F$; " ***"
- CLOSE 6
- RETURN
- '
- '
- ' C L E A R S C R E E N
- 8190 IF IBM% = 0% THEN PRINT : PRINT DOTS$ : PRINT : GOTO 8200
- ' CLS
- 8200 PRINT WZ$
- PRINT : PRINT
- RETURN
- '
- '
- '
- '
- ' Y E S / N O Prompt Subroutine
- 8300 IF YES% <> 32% THEN PRINT " (";CHR$(YES%);" or ";CHR$(NO%);") ";
- IF YES% = 32% THEN PRINT " ( ";CHR$(NO%);" or <CR> ) ";
- Z$=" "
- INPUT Z$
- IF Z$ = "" AND YES% = 32 THEN REPLY% = 1% : GOTO 8400
- IF Z$ = "" THEN 8300
- REPLY% = 99%
- ANS% = ASC(Z$)
- IF ANS% > 90% THEN ANS% = ANS% - 32%
- IF ANS% = YES% THEN REPLY% = 1%
- IF ANS% = NO% THEN REPLY% = 0%
- IF REPLY% <> 99% THEN 8400
- PRINT " ERROR: Re-enter as follows: ";
- GOTO 8300
- 8400 RETURN
- '
- '
- ' END