home *** CD-ROM | disk | FTP | other *** search
- CPRINT.EXE IS A PROGRAM SOURCE CODE AND ASCII FILE PRINTING UTILITY.
-
- CPRINT can INTELLIGENTLY handle a print request for MULTIPLE files such
- that the files are CORRECTLY printed on BOTH sides (optional) of the
- paper. This is great for printing hardcopy of large documents (eg.
- PROCOMM.DOC) or many small files (eg. source code for your 200
- function C lib). The resulting output is arranged just like a book -
- page 1 & 2 of the first file are on opposite sides of the same piece of
- paper.
-
- CPRINT will page break when the default line count is reached (/L
- switch) or when it encounters an ASCII form feed in the file. You can
- add a top margin (great for EPSON printers). You can print or not
- print the files date & time info as a page header. You can add a left
- margin to all lines of the file (allows 3 hole punch without punching
- through text).
-
-
- File List
- ---------
-
- The distribution files are:
-
- CPRINT.DOC - this documentation file.
-
- CPRINT.EXE - the executable program.
-
-
- Program Usage
- -------------
-
- cprint [filespec] [switches]
-
-
- OPTIONAL COMMAND LINE SWITCHES: ( where "xx" equals a number)
-
- /Ixxx[,xxx,xxx....] decimal printer initialization code(s).
- (ex: /I027,013,070 -or- /I027,064 etc.)
-
- /Mxx defines left margin to add to every print line (default=0).
-
- /Wxx defines total maximum line width (default=80).
-
- /Cxx defines number of copies to print (default=1).
-
- /H do NOT print file's date/time info as page header.
- useful for printing pre-formatted documents.
-
- /Txx defines top margin to add (default=0).
-
- /Lxx defines maximum print lines per page in addition to
- the top margin (default=54 (66 if /H used)).
-
- /Ofile send output to a file rather than the printer
- (Ex: /Ostuff will send the output to the file STUFF)
-
- /1 print pages which go on front side of paper (see NOTES).
-
- /2 print pages which go on back side of paper (see NOTES).
-
- /S split such that each file is on a unique set of pages.
- (do NOT print the first page of a new file on the back
- of the last page of the previous file.)
-
-
- NOTES:
-
- Filespec may contain pathnames & wildcards.
-
- To print on both sides of paper:
- print with /1, turn the paper over, re-print with /2.
-
- /S only applies to /1 and /2.
-
- /C is disabled by /1 and /2.
-
- /O output is appended to the file if it already exists, otherwise
- the file is created.
-
-
- WARNING:
- --------
-
- If the /O option is used to re-route the output to a file for the
- purpose of editing or viewing the output prior to printing, some
- cautions are in order. Because of the way some printers handle the
- formfeed character, CPRINT always follows a formfeed character with a
- carriage return character. Be sure your edit or view program will
- retain/display this character combination or you may get/see incorrect
- results. Also ensure that your editor will not change or discard any
- other printer control codes which might be in the text or you may get
- incorrect results when the output is printed. For example, the control
- code sequence to put my printer into Diablo 630 emulation mode is ESC
- CR P (27 13 80 decimal). When my editor reads a file starting with
- this sequence it interprets the CR as a command and immediately
- backspaces - erasing the ESC and leaving only the P. Another example
- would be a line which ENDS with a formfeed. CPRINT puts this line out
- terminated with a single CR (no linefeed). Some editors will execute
- the CR upon reading the file and effectively delete the line. Also
- some file view programs will execute the CR and then display the
- following line over the top of the line ending with the formfeed-CR
- (effectively preventing it from being displayed). BE CAREFUL.
-
-
- Some Examples
- -------------
-
- Print files with file date & time info as page heading, 54
- text lines per page, using front of paper only (all defaults).
-
- CPRINT D:\LC\USER\SRC\*.C
-
-
- Same as above but add an 8 character left margin and print on both
- sides of the paper (put your printer in 12 CPI mode first).
-
- CPRINT D:\LC\USER\SRC\*.C /M8 /W88 /1
-
- when 1st pass printout is completed flip paper over then
- enter:
-
- CPRINT D:\LC\USER\SRC\*.C /M8 /W88 /2
-
-
- Notice in the second example I told CPRINT to use an 88 character line
- width. The default width is 80. If the total print width (left margin
- + text) is greater than the /W parameter CPRINT will break the line,
- linefeed, space over by the left margin amount, then print the balance
- of the line. Since we put the printer in 12 CPI mode we needed to tell
- CPRINT that 88 characters would fit on the print line so that input
- lines longer than 72 characters would not be needlessly split. This
- effectively centers an 80 character wide line on the 96 character wide
- page with 8 character left and right margins.
-
-
- The /I switch
- -------------
-
- This switch can be very useful when printing on both sides of the
- paper. For instance, I use a text formatter which puts a string of
- printer intialization codes at the beginning of the document to put
- the printer in LETTER QUALITY mode. When the printer is turned off
- in order to turn the paper over prior to printing the back side it
- goes back into DRAFT mode. The /I switch can be used during the
- second pass to put the printer back in LETTER QUALITY mode (since page
- one and the control codes it contains won't be printed during the
- second pass).
-
-
- The /S switch
- -------------
-
- This switch can be used in conjunction with /1 and /2 to control the
- interleaving of multiple files when printing on both sides of the
- paper. Suppose we have two files - FILEA containing 3 pages of data and
- FILEB containing 2 pages of data. If we wish to print on both sides of
- the paper we can print the files with or without interleaving:
-
- Without /S
- ----------
-
- CPRINT FILE? /1
- then
- CPRINT FILE? /2
-
- This will produce the following page layout:
-
- sheet 1 front side - page 1 of FILEA
- sheet 1 back side - page 2 of FILEA
-
- sheet 2 front side - page 3 of FILEA <--- files
- sheet 2 back side - page 1 of FILEB <--- interleaved
-
- sheet 3 front side - page 2 of FILEB
- sheet 3 back side - blank
-
- Notice that page 3 of FILEA and page 1 of FILEB are printed on
- opposite sides of the same piece of paper.
-
- With /S
- -------
-
- CPRINT FILE? /S /1
- then
- CPRINT FILE? /S /2
-
- This will produce the following page layout:
-
- sheet 1 front side - page 1 of FILEA
- sheet 1 back side - page 2 of FILEA
-
- sheet 2 front side - page 3 of FILEA <--- files
- sheet 2 back side - blank <--- split
-
- sheet 3 front side - page 1 of FILEB
- sheet 3 back side - page 2 of FILEB
-
- Notice that each file is printed on a unique set of sheets when /S
- is used.
-
-
- Line Length
- -----------
-
- CPRINT will start a new print line whenever a Carriage Return/Line Feed
- sequence is encountered in the input file OR the line length (as
- set by the /W switch) is reached. The program attempts to account for
- non-printing characters when making these decisions (embedded printer
- control codes). This is critical only when an input line's length
- exceeds the /W line length due to embedded control codes. CPRINT does
- NOT count any of the following as printed characters when calculating
- printed line length:
-
- - Characters less than ASCII Space (32)
-
- - ANY single character immediately following an
- ASCII Escape (27)
-
- For instance, if the physical line length is 84, the /W length is 80,
- and the line contains two 2 character long printer control sequences -
- the last four characters will NOT be printed on the next line because
- CPRINT understands that 4 of the characters were control codes and did
- not move the printhead. However, if the 84 character long line does
- not contain any control codes then it will be split and the last 4
- characters will be printed by themselves on the next line. There is
- one situation where this falls flat - some printers have control
- sequences composed of an ESCAPE CHARACTER FOLLOWED BY TWO OR MORE
- NON-CONTROL CODE CHARACTERS. For example:
-
- ESC A H
-
- This will be considered TWO non-printed characters (ESC + single
- character following it - A). Therefore CPRINT will think the printhead
- has moved right one character more than it actually has (due to the H).
- The /W switch can be used to compensate accordingly. I have found it
- virtually impossible to build a program capable of interpreting all of
- the various control code sequences used by all of the printer
- manufacturers. I do not see this as a significant problem given the
- programs intent - to print source code and on-line documentation files.
-
-
- Programmers Example
- -------------------
-
- Given the following inputs:
-
- CPRINT PTD*.C /M8 /W88 /1
-
- then
-
- CPRINT PTD*.C /M8 /W88 /2
-
- CPRINT printed 40 some files encompassing 115 pages with page breaks,
- left margins for 3 hole punch, descriptive file information as page
- headers, and correctly interleaved on both sides of the 58 sheets of
- paper. Just like a book. Need I say more?
-
-
- Restrictions
- ------------
-
- o MS-DOS Version 2.0 or later is required for versions thru 4.6.
-
- o OS/2 Version 1.0 or later is required for version 5.0.
-
- o MS-DOS Version 2.0 or later -OR- OS/2 Version 1.0 or later is
- required for version 5.02 and above.
-
-
- CPRINT is supplied for personal, private use. Feel free to
- distribute CPRINT given these restrictions:
-
- o the program shall be supplied in its original, unmodified
- form, which includes this documentation and all other
- files in the distribution list.
-
- o no fee is charged.
-
- o commmercial use is prohibited.
-
- o the program may NOT be included - or bundled - with other
- goods or services.
-
- If you are using CPRINT and find it of value, any contribution
- would be greatly appreciated ($10 suggested).
-
- I would like to thank all of the users who have provided feedback
- and bug reports. I never dreamed how many strange character and
- format combinations appear in many of the text files floating around
- out there. I am sure that we have not yet uncovered and addressed
- all of them. Keep the feedback coming and I'll keep trying to
- improve CPRINT.
-
-
- Contributions and problem reports may be sent to:
-
-
- Larry I. Smith
- 808 Shenandoah Dr.
- Plano, Texas 75023
-
-
- Revision History
- ----------------
-
- o v3.9 - First public release.
-
- o v4.0 - Added support for embedded printer codes.
-
- o v4.1 - Corrected logic to handle lines containing an
- embedded CR. Some formatters use this method
- to emulate bold and underlining.
-
- o v4.2 - Internal housekeeping.
-
- o v4.3 - Corrected a bug associated with lines which
- start with a CR and contain more than the CR.
-
- o v4.4 - Replaced fopen/fprintf function calls with
- open/write function calls. Some pc clones
- running versions of MS-DOS 2.x do not always
- write to the printer correctly using fopen/fprintf.
-
- - Added CPRINTS.EXE to the archive. This is
- CPRINT.EXE with the full screen editor input
- feature for page layout info (/P switch) removed
- so that users with non IBM compatible pc's won't
- crash their system trying to use the full screen
- mode.
-
- o v4.5 - Corrected a logic error that caused the page
- break for page 2 to be calculated incorrectly
- for some files. This only affected files which
- used CR's rather than FF's to space pages.
-
- - Added the /O option to allow routing of output
- to a file rather than the printer.
-
- o v4.6 - Added the /I option to allow sending printer
- initialization codes.
-
- - Deleted CPRINT from the archive and renamed CPRINTS
- to CPRINT. The full screen editor option (/P switch)
- in the original CPRINT just caused too many problems
- with too many PC clones.
-
- o v5.0 - OS/2 Protected mode only version.
-
- o v5.02 - Merged OS/2 and MS-DOS versions into one Family
- API program which can run under either operating
- system. Now requires Microsoft C v5.10 or higher
- and the OS/2 Programmers Tool Kit to compile.