100 REMDES          TXTPRINT
110 REMDES
120 REMDES     THIS PROGRAM PRINTS TEXT ON THE PRINTER FROM
130 REMDES     A DISK FILE.
140 REMDES     WHEN AT THE TOP OF THE PAGE, IT SKIPS THREE
150 REMDES     LINES, PRINTS THE DATE, THE NAME OF THE FILE,
160 REMDES     AND THE PAGE NUMBER.
170 REMDES     THEN, IT SKIPS 6 LINES, STARTS PRINTING TEXT.
180 REMDES     AFTER 50 LINES OF TEXT, IT SKIPS 6 LINES IN
190 REMDES     ORDER TO GET TO THE TOP OF THE NEXT PAGE.
200 REMDES
280 REM --------------------------------------------------
290 CLEAR 300
300 ON ERROR GOTO 5000     ' HANDLE UNKNOWN FILE SITUATION
310 GOSUB 1000          ' INITIALIZE
320 GOSUB 1500          ' GET TEXT NAME
330 GOSUB 2000          ' PRINT THE TEXT
340 GOSUB 3200          ' EJECT THE LAST PAGE OF THE LISTING
350 GOSUB 2500          ' SEE IF OPERATOR HAS MORE TEXT
360 IF M=1 THEN 320
370 END
390 REM --------------------------------------------------
990 REM .................................................
1000 REMSUB          ' INITIALIZE
1010 PRINT"PLEASE MOVE PAPER TO THE TOP OF THE PAGE AND"
1020 PRINT"PRESS ";CHR$(34);"ENTER";CHR$(34);" WHEN READY."
1030 K$=INKEY$ : IF K$="" THEN 1030
1040 IF ASC(K$)<>13 THEN 1030
1050 F%=66     'TOTAL LINES ON A PAGE
1060 L%=0      'NUMBER OF ANY LINES ALREADY PRINTED
1070 P%=0      'PAGE NUMBER
1080 T%=50     'NUMBER OF TEXT LINES ON A PAGE
1090 T1%=0     'NUMBER OF TEXT LINES ALREADY PRINTED
1100 RETURN
1190 REM ..................................................
1200 REM
1490 REM ..................................................
1500 REMSUB          GET THE DESIRED FILE NAME TO BE PRINTED
1510 PRINT"WHAT IS THE NAME OF THE FILE TO BE PRINTED";
1520 INPUT PROG$
1530 IF INSTR(PROG$,"/TXT")<>0 THEN 1560
1540 PRINT"FILE MUST BE IN ASCII FORMAT: EXTENSION TXT"
1550 GOTO 1510
1560 P%=0     ' RESET PAGE COUNTER FOR NEW TEXT
1570 RETURN
1590 REM ...................................................
1990 REM ....................................................
2000 REMSUB          PRINT TEXT ON LINE PRINTER
2010 OPEN"I",1,PROG$     ' OPEN DISK FILE TO GET TEXT
2015 GOSUB 3000          ' PRINT HEADER ON FIRST PAGE
2020 IF EOF(1) THEN 2080
2030 LINE INPUT#1,T$     ' GET ONE LINE FROM DISK FILE
2040 LPRINT T$           ' PRINT IT ON LINE PRINTER
2050 L%=L%+1 : T1%=T1%+1 ' COUNT THE LINE
2060 IF T1%>=T% THEN GOSUB 3000  ' DO HEADERS IF NECESSARY
2070 GOTO 2020
2080 CLOSE 1             ' CLOSE THE DISK FILE. FINISHED.
2090 PRINT"FILE ";PROG$;" IS CLOSED."    ' INFORM OPERATOR
2100 RETURN
2190 REM ....................................................
2490 REM ....................................................
2500 REMSUB          ' WANT MORE FILES PRINTED?
2510 PRINT"DO YOU WANT ANY MORE FILES PRINTED?"
2520 GOSUB 4000
2530 RETURN
2590 REM ....................................................
2990 REM ....................................................
3000 REMSUB          ' PRINT HEADER AT TOP OF PAGE
3020 GOSUB 3200            ' GO TO TOP OF PAGE
3040 LPRINT STRING$(3,138)         ' PRINT 3 BLANK LINES
3060 LPRINT TIME$;STRING$(20,32);PROG$;     ' PRINT DATE, NAME
3070 LPRINT STRING$(20,32);"PAGE ";P%     ' PRINT PAGE NUMBER
3080 LPRINT STRING$(6,138)         ' PRINT 6 BLANK LINES
3090 L%=L%+10     ' 10 LINES HAVE BEEN PRINTED ON THIS PAGE
3100 RETURN
3120 REM ....................................................
3190 REM ....................................................
3200 REMSUB          ADVANCE TO THE TOP OF THE PAGE
3210 P%=P%+1     ' INCREMENT PAGE COUNTER
3220 T1%=0         ' ZERO THE TEXT LINE COUNTER
3230 IF L%>0 THEN LPRINT STRING$(F%-L%,138)  ' TOP OF PAGE
3240 L%=0          ' ZERO COUNT OF TOTAL LINES
3250 RETURN
3290 REM ....................................................
3990 REM ....................................................
4000 REMSUB          ' CHECK FOR YES OR NO FROM KEYBOARD
4010 M=0             ' M=0 IF NO,  M=1 IF YES
4020 K$=INKEY$ : IF K$="" THEN 4020
4030 IF K$<>"Y" THEN 4050
4040 M=1 : GOTO 4060
4050 IF K$<>"N" THEN 4020
4060 RETURN
4090 REM ....................................................
5000 REMERR     HANDLE INABILITY TO FIND THE DESIRED FILE
5010 IF ERR/2+1=54 THEN 5020
5015 PRINT"ERROR NUMBER ";ERR/2+1:ON ERROR GOTO 0
5020 PRINT:PRINT"SORRY, I CAN'T FIND ";PROG$;" ON THIS DISK."
5030 PRINT"PLEASE TRY AGAIN."
5040 PRINT
5050 RESUME 320
5090 REM --------------------------------------------------
29990 REM **************************************************
30000 REMVAR               LIST OF VARIABLES
30010 REMVAR
30020 REMVAR     F%     NUMBER OF LINES ON A FULL PAGE (66)
30030 REMVAR     I%     TEMPORARY COUNTER FOR LOOPS, ETC.
30040 REMVAR     L%     # OF LINES ALREADY PRINTED ON THIS PAGE
30050 REMVAR     P%     PAGE NUMBER
30060 REMVAR     T%     NUMBER OF TEXT LINES ALLOWED ON PAGE
30070 REMVAR     T1%    # OF TEXT LINES ALREADY PRINTED
30200 REMVAR     K$     USED FOR KEYBOARD RESPONSE (REAL TIME)
30210 REMVAR     T$     HOLDS ONE LINE OF TEXT
31990 REM ---------------------------------------------------
31999 END
32000 REMEND               END OF PROGRAM
