580 LOCATE 8,10:INPUT "ENTER NAME OF FILE TO PROCESS";PF$
590 IF PF$="" THEN 580
600 OPEN D$+PF$ FOR INPUT AS #2
610 LOCATE 10,10:INPUT "WOULD YOU LIKE TO SAVE THE RESULTS";P$
620 P$=LEFT$(P$,1):IF P$="Y" OR P$="y" THEN GOSUB 920
630 LOCATE 14,10:INPUT "DO YOU WANT TO PRINT THE FILE";P$
640 P$=LEFT$(P$,1):IF P$="Y" OR P$="y" THEN PRNTR=-1 ELSE PRNTR=0
650 GOSUB 1190
660 CLS
670 WIDTH LPTR$,255
680 OPEN LPTR$ AS #1
690 IF SIZE=1 THEN PRINT #1,CHR$(18)+CHR$(27)+CHR$(50) ELSE PRINT #1,CHR$(15)+CHR$(27)+CHR$(49)
700 'THIS IS THE MAIN PROGRAM LOOP
710 IF UNCOMP THEN GOSUB 1060:GOTO 740
720 IF EOF(2) THEN 750
730 TCH$=INPUT$(1,#2):GOSUB 1060
740 GOTO 710
750 CLOSE:END
760 'GET THE NEXT RECEIVED CHARACTER AND DISPLAY IT
770 B$=CHR$(BAU):IF BAU > 31 OR BAU=7 OR BAU=10 OR BAU=13 THEN 790 ELSE 900
780 'B$ CONTAINS THE ASCII CHARACTER
790 IF PRNTR THEN IF BAU<>7 THEN PRINT#1,B$;
800 CURIN=ASC(B$)
810 IF NOT COMP THEN 850
820 IF BFILE THEN IF CURIN=LASTIN THEN RCNT=RCNT+1:GOTO 850 ELSE IF LASTIN<>10 AND LASTIN<>13 THEN IF RCNT=1 THEN PRINT#3,CMP$;:GOTO 840 ELSE IF RCNT=2 THEN PRINT#3,CMP$;CMP$;:GOTO 840
830 IF BFILE THEN IF LASTIN<>10 AND LASTIN<>13 THEN IF RCNT=26 THEN PRINT#3,CMP$;CHR$(255);CHR$(25);CMP$; ELSE PRINT#3,CHR$(255);CHR$(RCNT);CMP$;
840 IF BFILE THEN CMP$=B$:RCNT=1
850 IF BFILE THEN IF CURIN=13 AND (LASTIN=10 OR LASTIN=13) THEN PRINT#3,
860 IF BFILE THEN IF CURIN=10 OR CURIN=13 THEN PRINT#3,CHR$(CURIN+10); ELSE IF LASTIN=10 OR LASTIN=13 THEN PRINT#3,
870 IF BFILE AND NOT COMP AND CURIN<>10 AND CURIN<>13 THEN PRINT#3,B$;
880 LASTIN = CURIN
890 GOSUB 1000:'PUT CHARACTER ON SCREEN
900 RETURN
910 'SEND RECEIVED CHARACTERS TO SPECIFIED FILE
920 BFILE=0
930 LOCATE 11,10:INPUT "ENTER NAME OF NEW FILE";BF$
940 IF BF$="" THEN 980
950 OPEN BF$ FOR APPEND AS #3
960 BFILE=-1:LOCATE 12,10:INPUT "DO YOU WANT COMPRESSION (Y/N) ";P$
970 P$=LEFT$(P$,1):IF P$="Y" OR P$="y" THEN COMP=-1 ELSE COMP=0
980 RETURN
990 'PUT RECEIVED CHARACTER ON SCREEN
1000 RCH=ASC(B$):IF RCH=13 THEN LOCATE CSRLIN,1,0:RETURN
1010 IF RCH=7 THEN RETURN 'DONT SEND BEEP CHAR TO SCREEN
1020 PRINT B$;
1030 RETURN
1040 REM $PAGE
1050 'PUT CHAR TO SEND ON SCREEN
1060 TCH=ASC(TCH$):IF UNCOMP THEN TCNT=TCNT-1:TCH=UTCH:TCH$=UTCH$:IF TCNT=0 THEN UNCOMP=0:GOTO 1120 ELSE GOTO 1120
1070 IF UCNT THEN UCNT=0:UNCOMP=-1:UTCH=TCH:IF TCH=13 THEN UTCH$=CHR$(23):RETURN ELSE UTCH$=TCH$:RETURN
1080 IF USTRT THEN USTRT=0:UCNT=-1:TCNT=TCH:RETURN
1090 IF CRLF THEN CRLF=0:IF TCH=10 THEN LTCH=10:RETURN
1100 IF QBL THEN QBL=0:IF TCH=7 THEN LTCH=7:RETURN
1110 IF TCH=255 THEN USTRT=-1:RETURN
1120 IF TCH=13 OR TCH=10 THEN IF LTCH=20 OR LTCH=23 THEN RETURN ELSE TCH$=CHR$(TCH+10)
1130 IF TCH=20 OR TCH=23 THEN BAU=TCH-10 ELSE BAU=TCH
1140 GOSUB 770
1150 LTCH=TCH
1160 IF TCH=13 THEN TCH=10:CRLF=-1:GOTO 1130
1170 IF QBEL AND TCH=39 THEN TCH=7:QBL=-1:GOTO 1130