'=========================================================================== ' Subject: QUICK TEXT EDITOR/(DE)CODER Date: 02-02-98 (23:33) ' Author: Michael G. Stewart Code: QB, QBasic, PDS ' Origin: mikegs@juno.com Packet: TEXT.ABC '=========================================================================== DECLARE SUB Decode (fl!) DECLARE SUB codeit () DECLARE FUNCTION encode$ (text$) DECLARE FUNCTION uncode$ (text$) DECLARE FUNCTION SINPUT$ (instring$, old$) DECLARE SUB KPRINT (text$, col!, hicol!, bacol!) CLS COLOR 15, 4 PRINT SPACE$(80) LOCATE 1 PRINT " QuikTEED v1.0 - Quick Text Editor/Encoder/Decoder "; : COLOR 14: PRINT "by Mike Stewart" VIEW PRINT 2 TO 25 main: COLOR 15, 0 CLS PRINT "Options:" KPRINT " ^Edit File", 15, 2, 0 KPRINT " ^Decode File", 15, 2, 0 KPRINT " En^Code File", 15, 2, 0 KPRINT " ^Quit", 15, 2, 0 COLOR 15, 0 INPUT "Your Choice: (E D C Q) ", choice$ SELECT CASE UCASE$(choice$) CASE "E" CHDIR "C:\" file$ = SINPUT$("File Name: (CurDir=C:\) ", file$) PRINT "Loading MS-DOS Editor..."; com$ = "edit " + file$ SHELL com$ PRINT "Done!" PRINT "Press Any Key!" WHILE INKEY$ = "": WEND GOTO main CASE "D" CHDIR "C:\" file$ = SINPUT$("File Name: (CurDir=C:\) ", file$) INPUT "Password: ", pass1$ PRINT "Preparing to Decode File..."; ON ERROR GOTO oops OPEN file$ FOR INPUT AS #1 ON ERROR GOTO 0 LINE INPUT #1, in$ IF LEFT$(in$, 8) <> "QuikTEED" THEN CLOSE #1 COLOR 4, 0 BEEP PRINT : PRINT "Error: File Not in QuikTEED Format, or Corrupt!" COLOR 15, 0 PRINT "Press Any Key To Continue" WHILE INKEY$ = "": WEND GOTO main END IF fl = VAL(MID$(in$, 9, 5)) ed$ = MID$(in$, 14, 10) et$ = MID$(in$, 24, 8) pass$ = uncode$(MID$(in$, 32, 10)) IF LEFT$(pass1$, 10) <> RTRIM$(pass$) THEN CLOSE #1 COLOR 4, 0 BEEP PRINT : PRINT "Error: Incorrect Password!" COLOR 15, 0 PRINT "Press Any Key To Continue" WHILE INKEY$ = "": WEND GOTO main END IF PRINT "Done!" PRINT "Length of File:"; fl; " Encoded Date: "; ed$; " Encoded Time: "; et$ PRINT "Decoding File..."; Decode fl PRINT "Done!" PRINT "Writing File..."; OPEN file$ FOR OUTPUT AS #2 OPEN "Temp.tmp" FOR INPUT AS #1 DO WHILE NOT EOF(1) LINE INPUT #1, in$ PRINT #2, in$ LOOP CLOSE #1 CLOSE #2 KILL "temp.tmp" PRINT "Done!" PRINT "Press Any Key!" WHILE INKEY$ = "": WEND GOTO main CASE "C" CHDIR "C:\" file$ = SINPUT$("File Name: (CurDir=C:\) ", file$) INPUT "Password to Use: ", pass$ PRINT "Coding File..."; ON ERROR GOTO oops OPEN file$ FOR INPUT AS #1 ON ERROR GOTO 0 OPEN "temp.tmp" FOR OUTPUT AS #2 codeit CLOSE #1 CLOSE #2 PRINT "Done!" PRINT "Writing File..."; OPEN file$ FOR OUTPUT AS #2 OPEN "temp.tmp" FOR INPUT AS #1 flen$ = LEFT$(RTRIM$(LTRIM$(STR$(fl))) + SPACE$(5), 5) pass$ = encode$(LEFT$(pass$ + SPACE$(10), 10)) head$ = "QuikTEED" + flen$ + DATE$ + TIME$ + pass$ PRINT #2, head$ DO WHILE NOT EOF(1) LINE INPUT #1, in$ PRINT #2, in$ LOOP CLOSE #1 CLOSE #2 KILL "temp.tmp" PRINT "Done!" PRINT "Press Any Key To Continue" WHILE INKEY$ = "": WEND GOTO main CASE "Q" END END SELECT BEEP COLOR 4, 0 PRINT "Error: Invaled Command!" COLOR 15, 0 PRINT "Press Any Key To Continue!" WHILE INKEY$ = "": WEND GOTO main oops: BEEP COLOR 4, 0 PRINT "Error: File Not Found!" COLOR 15, 0 PRINT "Press Any Key To Continue" WHILE INKEY$ = "": WEND RUN SUB codeit SHARED fl fl = 0 DO WHILE NOT EOF(1) LINE INPUT #1, in$ cc$ = cc$ + encode$(in$) + CHR$(27) DO WHILE LEN(cc$) > 80 IF LEN(cc$) > 80 THEN PRINT #2, LEFT$(cc$, 80) cc$ = MID$(cc$, 81) fl = fl + 80 END IF LOOP LOOP fl = fl + LEN(cc$) PRINT #2, cc$ cc$ = "" END SUB SUB Decode (fl) OPEN "temp.tmp" FOR OUTPUT AS #2 FOR a = 1 TO fl STEP 80 pct = a / fl IF pct MOD 10 = 0 THEN PRINT "."; LINE INPUT #1, in$ FOR b% = 1 TO LEN(in$) s$ = MID$(in$, b%, 1) IF s$ = CHR$(27) THEN o$ = uncode$(cc$) PRINT #2, o$ cc$ = "" ELSE cc$ = cc$ + s$ END IF NEXT b% NEXT a CLOSE #2 CLOSE #1 END SUB FUNCTION encode$ (text$) FOR a% = 1 TO LEN(text$) s = ASC(MID$(text$, a%, 1)) IF s > 250 THEN s = s - 219 ELSE s = s + 5 cc$ = cc$ + CHR$(s) NEXT a% encode$ = cc$ END FUNCTION SUB KPRINT (text$, col, hicol, bacol) FOR a% = 1 TO LEN(text$) s$ = MID$(text$, a%, 1) IF s$ = "^" THEN hi = 1 ELSE IF hi = 1 THEN hi = 0 COLOR hicol, bacol: PRINT s$; ELSE COLOR col, bacol: PRINT s$; END IF END IF NEXT a% PRINT END SUB FUNCTION SINPUT$ (instring$, old$) row = CSRLIN PRINT instring$; old$ LOCATE row, LEN(instring$) + 1 INPUT "", return$ IF return$ = "" THEN return$ = old$ SINPUT$ = return$ END FUNCTION FUNCTION uncode$ (text$) FOR a% = 1 TO LEN(text$) s = ASC(MID$(text$, a%, 1)) IF s < 38 THEN s = s + 219 ELSE s = s - 5 IF s = 256 THEN s = 32 done$ = done$ + CHR$(s) NEXT a% uncode$ = done$ END FUNCTION