= PRINTER1 Program to deal with the IBM 80 CPS printer (Epson MX80)u SOURCE: Creative Computing (May 1982) page 194 FUNCTIONS: Setup printer modes( Report type listings of text files (with page numbers) 2 Issue controls to printer/7 EDITED BY: David C. ReussowL< AUTHOR: Will FastieiF CREATED: 12 DEC 1981P EDITED: 26 JAN 1982 2355U LATEST REVISOR: Ken Eagle 11 May 1983 (302)475-2763V 2304 Rockwell RdW Wilmington Del. 198100X REVISIONS: WY Added margin controlsZ Added provision to avoid bombing on non-existant file name[ Added provision for UPPER/lower case file names,^ NEEDS: Recognition of different "lines/page" for Double Widthr_ Correct breakup of line for non-80 column page widthd NOTE: OPERATES ON CURRENT DISPLAY DEVICE, CURRENT MODEn ----- CONSTANTS ---------------------------------------------&xPROGNAME$ "PRINTER V1.01 26 JAN 1982"6ESC$()bCLRLPT$()()ESC$"F"ESC$"H"PAGEWIDTHP :Default Width = 80 ColumnsLEFTMARGIN  ----- INITAL MENU -------------------------------------------- : : ,,& PROGNAME$ :L "The printer must be online to"m "perform these functions." : "FUNCTIONS:";  );"P - Print a text file"  );"S - Setup printer"  );"R - Reset printer"   );"T - advance paper to Top"1  );"Q - Quit (return to DOS)"P  );"X - eXit to BASIC"f,PLOC  : 6 "ENTER FUNCTION: ",ANSWER$ : ANSWER$"" : ,@  :(Convert ANSWER$ to UPPER case)JX ("PSRTQX",ANSWER$) : X  : ,<T X h, , 8, `, ~, F^ h ----- PRINT PAGINATED LISTING --------------------------------r :Clear screen| PROGNAME$ : "Adjust the paper in the printer so that"1 "the perforation is at the paper bail."T "Put the printer online." : "*****************************************" "* FILES MUST BE ASCII TEXT FILES *" "* NOTE: SAVE`FILE NAME',A *" "*****************************************" :R "No finename extension is assumed, so enter"y "SO ENTER THE FILENAME EXACTLY." "Depress ENTER key to return to menu." "Press ESC key to abort printing." : "FILE TO PRINT: ",ANSWER$  (ANSWER$)  O  :Convert ANSWER$ to UPPER case "LPT1:",PAGEWIDTH :?????????????? x ANSWER$ AS #&PAGENR 0LINENR : () D #, FILELINE$6E ----- CALCULATE # OF PAGE LINES PER FILE LINE ----------------uHNUMCHAR PAGEWIDTH LEFTMARGIN :INSERT  :ADDLINES J (FILELINE$)NUMCHAR FILELINE$(FILELINE$,(FILELINE$)NUMCHAR)LADDLINES ADDLINES NINSERT  :NUMCHAR PAGEWIDTH LEFTMARGIN INSERT;P (FILELINE$) NUMCHAR JdR LINENR ADDLINES 7 LINENR T LINENR   :Print page headingW ----- PRINT LINE + WRAPAROUNDS ------------------------------- XNUMCHAR PAGEWIDTH LEFTMARGIN :INSERT 2ZPAGELINE$ (FILELINE$,NUMCHAR)W\ (LEFTMARGININSET);PAGELINE$^ (FILELINE$)NUMCHAR FILELINE$(FILELINE$,(FILELINE$)NUMCHAR)`INSERT  :NUMCHAR PAGEWIDTH LEFTMARGIN INSERTa FILELINE$ "" Z b ESC$ , v LINENR 6 LINENR 6  :{  ----- CLOSE FILE AND RETURN ----------------------------------   ( ) :Form feed to printer   :Go back for next file to printD! ----- SUBROUTINE TO PRINT PAGE HEADING -----------------------b! PAGENR  ( );z!PAGENR PAGENR ! :! (LEFTMARGIN);();ANSWER$;" ";();! "-- PRINTED ON ";;" AT ";;" -- PAGE";PAGENR! :!=" ----- SETUP PRINTER ------------------------------------------P"  : PROGNAME$x" : "Printer enhancements are:" :"* " DW - Double Width""4 " C - Compressed print ""> " E - Emphasized print ""H " DS - Double Strike" :4#\ "Enter enhancements separated by spaces or commas."L#p :" Examples:" :l# " C E -Illegal"# " -10 CPI, Normal"# " E -10 CPI, Bold"# " DS C -16.5 CPI, Double" $ : " Enter enhancements: ",O$S$ANSWER$O$ :  :O$ANSWER$ :Change ANSWER$ to UPPER caseb$ CLRLPT$;$ (O$,"DW") ();$ (O$,"C") ();$ (O$,"E") ESC$;"E";$ (O$,"DS") ESC$;"G";% :PLOC :  :Clear this line0% "Enter desired line width: ",PAGEWIDTH[%$  PAGEWIDTH PAGEWIDTH  %& "Enter number of spaces for left margin: ",LEFTMARGIN%.%8 ----- RESET PRINTER TO DEFAULTS -----------------------------$&B CLRLPT$; :Set default printer characteristics to normal6&LPAGEWIDTH PI&PLEFTMARGIN O&V&` ----- FORM FEED TO PRINTER ----------------------------------&j ( ); :Form Feed (Top of page)&t'~ ----- RETURN TO DOS -----------------------------------------'$'h' ----- EXIT TO BASIC -----------------------------------------n't'' ----- SUBROUTINE TO CHANGE ANSWER$ TO UPPER CASE ------------' X  (ANSWER$)' XC$ (ANSWER$,X,)/( XC$ "a" XC$ "z" (ANSWER$,X,) ((XC$) )7( X=(( ----- SUBROUTINE TO POSITION AT SPECIFIED LINE & CLEAR IT ---( PLOC,(  (P," ");( PLOC,((( ----- SUBROUTINE TO WAIT FOR ANY KEYSTROKE --(NOT USED ????)-6)2 PRINT "DEPRESS ANY KEY TO CONTINUE..."; 'NOT USED ????o)< GOSUB 1360 'UNECESSARY?????)F RETURN 'UNECESSAYR?????)P ----- SUBROUTINE TO GET A KEYSTROKE INTO ANSWER$ ------------)ZANSWER$ *d ANSWER$ "" Z*n_*x ----- ERROR HANDLING ROUTINES -------------------------------* 5 "File not found; try again." : * "Error #";;" on line"; :