0 PLAIN$ = "TOBEORNOTTOBEORTOBEORNOT" 10 GOSUB 200"ENCODE PLAIN$ 20 FOR I = 1 TO LEN (ENCODE$) STEP 2 30 PRINT S$ ASC ( MID$ (ENCODE$,I)) + 256 * ASC ( MID$ (ENCODE$,I + 1)); 40 LET S$ = " " 50 NEXT 60 PRINT 70 GOSUB 300"DECODE ENCODE$ 80 PRINT PLAIN$; 90 END 100 FOR C = 0 TO 1E9 STEP 0 110 IF I > S THEN RETURN 120 FOR D = 1 TO L - 1 130 IF W$ < > DICT$(D) THEN NEXT D 140 IF D > = L THEN RETURN 150 LET I = I + 1 160 LET W$ = W$ + MID$ (PLAIN$,I,1) 170 LET C = D 180 NEXT C 190 RETURN REM ENCODE PLAIN$ RETURN ENCODE$ 200 IF NOT DI THEN DIM DICT$(4095) 210 FOR I = 0 TO 255:DICT$(I) = CHR$ (I): NEXT 220 LET DI = 1 : L = I : S = LEN (PLAIN$):ENCODE$ = "" 230 LET W$ = LEFT$ (PLAIN$,1) 240 FOR I = 1 TO 1E9 STEP 0 250 GOSUB 100 260 LET DICT$(L) = W$:L = L + 1:W$ = RIGHT$ (W$,1) 270 LET C% = C / 256:ENCODE$ = ENCODE$ + CHR$ (C - C% * 256) + CHR$ (C%) 280 IF I < = S THEN NEXT I 290 RETURN REM DECODE ENCODE$ RETURN PLAIN$ 300 IF NOT DI THEN DIM DICT$(4095) 310 FOR I = 0 TO 255:DICT$(I) = CHR$ (I): NEXT 320 LET DI = 1 : L = I 330 FOR I = L TO 4095:DICT$(I) = "": NEXT 340 LET C = ASC (ENCODE$) + 256 * ASC ( MID$ (ENCODE$,2)) 350 LET W$ = DICT$(C) 360 LET PLAIN$ = W$ 370 LET S = LEN (ENCODE$) 380 IF S < 4 THEN RETURN 400 FOR I = 3 TO S STEP 2 410 LET C = ASC ( MID$ (ENCODE$,I)) + 256 * ASC ( MID$ (ENCODE$,I + 1)) 420 IF C < L THEN T$ = DICT$(C) 430 IF C > = L THEN T$ = W$ + LEFT$ (W$,1) 440 LET PLAIN$ = PLAIN$ + T$ 450 LET DICT$(L) = W$ + LEFT$ (T$,1) 460 LET L = L + 1 470 LET W$ = T$ 480 NEXT 490 RETURN