10 REM
20 REM-----------------------------------------
30 REM PRINT ANY TEXT FILE
40 REM
42 DEFINT A-Z
44 FALSE = 0: TRUE = NOT FALSE
50 PRTLEN = 80  ' LENGTH OF PRINT LINE
60 PRTMAX = 55  ' NO LINES / PAGE
70 PRTCTRL$ = ""    ' PRINTER FORMAT CTRL CHAR
80 ENDCTRL$ = ""   'END OF PRT LINE CTRL CHAR
90 CLS
94 KEY OFF
96 DRIVEB = FALSE: INFILE$ = ""
98 PRTPAUSE = FALSE: DSKPRINTER = FALSE: SKIP = FALSE
100 LOCATE 5,1,0
120 PRINT "DISPLAY/PRINT ANY TEXT FILE": PRINT: PRINT
140 PRINT
150 PRINT "ENTER THE NAME OF THE FILE, OR"
160 PRINT "ENTER `FILES' (ENTER) FOR DIRECTORIES"
170 PRINT:PRINT "PRESS (ESC) ANYTIME TO END OUTPUT"
180 PRINT
190  INPUT INFILE$
200 IF INFILE$ = "" THEN GOTO 90
220 IF (INFILE$ = "FILES") OR (INFILE$ = "files") THEN FILES : IF DRIVEB = TRUE THEN PRINT: FILES "B:*.*": PRINT: GOTO 140 ELSE GOTO 140
230 PRINT: PRINT "PRINT THE FILE ALSO? (Y OR N) "
240 A$ = INPUT$(1)
250 IF (A$ = "Y") OR (A$ = "y") THEN DSKPRINTER = TRUE ELSE DSKPRINTER = FALSE
260 PRINT:PRINT "PRINTER PAGE OVERFLOW CTRL? (Y OR N)  "
270 A$ = INPUT$(1)
280 IF A$ = "Y" OR A$ = "y" THEN SKIP = TRUE ELSE SKIP = FALSE
290 PRINT: PRINT "PAUSE WHEN SCREEN FULL? (Y OR N) "
300 A$ = INPUT$(1)
310 IF (A$ = "Y") OR (A$ = "y") THEN PRTPAUSE = TRUE ELSE PRTPAUSE = FALSE
320 REM
330 ON ERROR GOTO 630
340 NODISPLINES = 0: NOPRTLINES = 0
350 OPEN INFILE$ FOR INPUT AS #2
360 CLS
370 WHILE NOT EOF(2)
380 A$ = INKEY$: IF A$ = CHR$(27) GOTO 500
390 NODISPLINES = NODISPLINES + 1
400 NOPRTLINES = NOPRTLINES + 1
410 IF NODISPLINES = 24 THEN GOSUB 720  'DISP FULL
420 IF NOPRTLINES = PRTMAX THEN GOSUB 670  'PAGE FULL
430 LINE INPUT#2, L$
440 FOR I = 1 TO LEN(L$)
450 IF MID$(L$,I,1) = CHR$(10) THEN MID$(L$,I,1) = CHR$(0)
460 NEXT I
470 PRINT L$
480 IF DSKPRINTER = TRUE THEN LPRINT PRTCTRL$ + L$ + ENDCTRL$:
490 WEND
500 ' END OF INPUT FILE
590 PRINT: PRINT:PRINT "END OF FILE": PRINT"PRESS (ESC) IF DONE, OR": PRINT "ANY OTHER KEY FOR NEXT FILE  "
592 A$ = INPUT$(1): CLOSE #2
594 IF A$ = CHR$(27) THEN END ELSE GOTO 10
630 'CHECK FOR PRINTER TIMEOUT
640 IF ERR = 24 AND ERL = 570 THEN RESUME 580 ELSE IF ERR = 24 THEN RESUME
650 IF ERR = 27 THEN PRINT: PRINT "TURN PRINTER ON" : PRINT "PRESS ANY KEY WHEN READY": A$ = INPUT$(1): RESUME
660 ON ERROR GOTO 0: RESUME
670 REM FULL PAGE
680 IF (DSKPRINTER = TRUE) AND (SKIP = TRUE) THEN LPRINT CHR$(12)
690 NOPRTLINES = 0
700 RETURN 370
710 REM DISP FULL
720 WHILE PRTPAUSE = TRUE
730 LOCATE 25,1,0
740 PRINT "PRESS (ESC) TO QUIT, OR (SPACE BAR)";
750 A$ = INPUT$(1)
760 CLS
770 NODISPLINES = 0
780 IF A$ = CHR$(27) THEN CLOSE #2: RETURN 560
790 RETURN 370
800 WEND
810 RETURN 370
820 REM