30 lines
662 B
Plaintext
30 lines
662 B
Plaintext
PROGRAM CAESAR
|
|
|
|
!$INCLUDE="PC.LIB"
|
|
|
|
PROCEDURE CAESAR(TEXT$,KY%->CY$)
|
|
LOCAL I%,C%
|
|
FOR I%=1 TO LEN(TEXT$) DO
|
|
C%=ASC(MID$(TEXT$,I%))
|
|
IF (C% AND $1F)>=1 AND (C% AND $1F)<=26 THEN
|
|
C%=(C% AND $E0) OR (((C% AND $1F)+KY%-1) MOD 26+1)
|
|
CHANGE(TEXT$,I%,CHR$(C%)->TEXT$)
|
|
END IF
|
|
END FOR
|
|
CY$=TEXT$
|
|
END PROCEDURE
|
|
|
|
BEGIN
|
|
RANDOMIZE(TIMER)
|
|
PLAINTEXT$="Pack my box with five dozen liquor jugs"
|
|
PRINT(PLAINTEXT$)
|
|
|
|
KY%=1+INT(25*RND(1)) ! generates random between 1 and 25
|
|
CAESAR(PLAINTEXT$,KY%->CYPHERTEXT$)
|
|
PRINT(CYPHERTEXT$)
|
|
|
|
CAESAR(CYPHERTEXT$,26-KY%->DECYPHERED$)
|
|
PRINT(DECYPHERED$)
|
|
|
|
END PROGRAM
|