The program epson allows the formatting characters used by the EPSON printer to be passed to it without requiring the user to commit the codes to memory. The program interacts with the user to print a formatted text file using different spacing, fonts, etc. It does not do any formatting of the text as I use it with a visual editor similar to VEDIT which produces text suitable for printing. I required the program because I wanted to be able to modify the printer driver easily. I also do not have any way to conveniently pass 'direct commands' to the printer because I rarely use an interactive BASIC. Epson incorporates a printer driver for the Morrow Thinker Toy's Multi-IO board. This section of code will have to be modified for other IO boards. If your system has the LST: device incorporated into CBIOS then this code may be replaced with 'write(F, char_variable)' if F is assigned to LST: or a call to @BDOS(5,wrd(char_variable)). After working all of the bugs out of the Pascal printer driver, I have translated it into assembly language and incorporated it into CBIOS. I have included the Pascal printer driver here because the Multi-IO requires a relatively complex driver and others may find it illustrative. The functions which the program epson supports are as follows (the letters inclosed in parenthesis are used inside text to reset the printing parameters during printing): 1) number of lines / inch (#6,8 or 10) 2) page length 3) size of the top and bottom margins 4) compressed or standard number of characters/ line ( CY or CN) 5) Single, double or triple spacing ( S1,2 or 3) 6) letter quality print {strike twice with offset} (LY or LN) 7) srike twice 8) number pages starting at any page number (PY# or PN, where # = starting page number) 9) Go to the top of the next form (T) 10) Overlay - suppress the next line feed so that this line is overlayed by the next one ( O ). 11) Chain to the Next text file (NFile_name ) To change the format of printing from inside a text file a '?' must appear in column 1 of the line. More than one command may be placed on a line but each must be preceeded by the '?'. A '?' can also be used to suppress the printing of a line so that comments can be left in the file and not printed. Each new command must directly follow the '?' with no intervening spaces. New commands may be added by including them in the case statement in procedure spec_act. I keep thinking up new things to do with this little program and plan to use it for generating form letters, graphics, etc. I hope you find it usefull.