DEFINT A-Z CONST FALSE = 0 CONST TRUE = -1 InFile$ = COMMAND$ CharsPerLine = 64 IF InFile$ = "" THEN PRINT "YENC infile > outfile" SYSTEM END IF OPEN InFile$ FOR BINARY ACCESS READ AS #1 filesize$ = LTRIM$(RTRIM$(STR$(LOF(1)))) linesize$ = LTRIM$(RTRIM$(STR$(CharsPerLine))) PRINT "=ybegin line=" + linesize$ + " size=" + filesize$ + " name=" + InFile$ Remaining& = LOF(1) DO IF Remaining& > 4096 THEN ThisPass = 4096 ELSE ThisPass = Remaining& END IF A$ = SPACE$(ThisPass) GET #1, , A$ FOR P = 1 TO LEN(A$) C = ASC(MID$(A$, P, 1)) 'source byte C = (C + 42) MOD 256 'do the magic SELECT CASE C CASE 0, 9, 10, 13, 32, 46, 61 'escape NUL,TAB,LF,CR,=,. C = (C + 64) MOD 256 B$ = B$ + "=" + CHR$(C) IF LEN(B$) >= CharsPerLine THEN LineReady = TRUE CASE ELSE B$ = B$ + CHR$(C) IF LEN(B$) = CharsPerLine THEN LineReady = TRUE END SELECT IF LineReady THEN PRINT B$ B$ = "" Lines& = Lines& + 1 LineReady = FALSE END IF NEXT P Remaining& = Remaining& - ThisPass LOOP UNTIL Remaining& = 0 IF B$ <> "" THEN PRINT B$ PRINT "=yend size=" + filesize$ CLOSE #1 SYSTEM