100 REM - CREATE SPECIAL TRANSLATE TABLES FOR ENCODE/DECODE 105 RANDOMIZE 110 STRSIZ 100 120 DIM X(256), Y(256) 121 ! ----- PREFILL TABLE 122 FOR I = 1 TO 256 123 Y(I) = I - 1 124 NEXT I 125 KKK = 256 129 ! ----- RANDOMIZE 130 PRINT "GENERATING ENCODE TABLE" 131 FOR I = 1 TO 256 140 Z = INT(KKK*RND(Z))+1 150 X(I) = Y(Z) 155 KKK = KKK - 1 160 FOR K = Z TO KKK 170 Y(K) = Y(K+1) 180 NEXT K 200 ! PRINT I, X(I) 210 NEXT I 215 ! ----- VALIDATE 219 PRINT "VALIDATING ENCODE TABLE (PLEASE BE PATIENT)" 220 FOR I = 0 TO 255 221 XC = 0 222 FOR J = 1 TO 256 223 IF I = X(J) THEN XC = XC + 1 224 NEXT J 225 IF XC <> 1 THEN YC = YC + 1 : PRINT I; " APPEARS "; XC; " TIMES" 227 NEXT I 228 IF YC <> 0 THEN GOTO 910 235 ! ----- CROSS REFERENCE 236 PRINT "CROSS REFERENCING TO CREATE DECODE TABLE" 240 FOR I = 1 TO 256 250 Z = X(I) 260 Y(Z+1) = I - 1 265 NEXT I 266 ! ----- DISPLAY BOTH 270 PRINT "OUTPUTING ASSEMBLER SOURCE TO 'TBLS.M68'" 272 LOOKUP "TBLS.M68",X 273 IF X <> 0 THEN KILL "TBLS.M68" 274 OPEN #10, "TBLS.M68", OUTPUT 280 PRINT #10 "; encode table" 281 PRINT #10 "TBL1:"; 290 FOR I = 1 TO 256 300 Z = X(I) 310 GOSUB 500 320 NEXT I 328 PRINT #10 " EVEN" 329 PRINT #10 330 PRINT #10 "; decode table" 332 PRINT #10 "TBL2:"; 340 FOR I = 1 TO 256 350 Z = Y(I) 360 GOSUB 500 370 NEXT I 375 PRINT #10 " EVEN" 376 PRINT "DONE" 380 GOTO 900 500 IF COL = 0 THEN PRINT #10 USING " BYTE ##Z.", Z; 510 IF COL <> 0 THEN PRINT #10 USING ",##Z.", Z; 520 COL = COL + 1 530 IF COL <> 8 THEN RETURN 540 PRINT #10 550 COL = 0 560 RETURN 900 CLOSE #10 910 END