home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Club Amiga de Montreal - CAM
/
CAM_CD_1.iso
/
files
/
443.lha
/
pcl2english_v2.0
/
README
< prev
next >
Wrap
Text File
|
1990-12-02
|
10KB
|
251 lines
PCL2ENGLISH
Version 2.0
Author: Allen Norskog
September 15, 1990
PUBLIC DOMAIN NOTICE
This program is placed in Public Domain. It may be freely copied.
I developed this program to suit my own needs. I hope it will be
useful to others. The source is included so that you can make
modifications to suit your own needs. I would appreciate any
comments or bug reports.
DESCRIPTION
Pcl2english was designed to help debug and understand printouts that
use the Hewlett Packard Printer Control Language (PCL). For example,
when pcl2english encounters the "escape sequence" for setting the
margins, it will print out the escape sequence that was
used and a brief English translation of what it means.
I have frequently done this process by hand and its quite tedious.
First one (typically) prints the characters out in hex so that
the "escape" character, 1B (hex), can be seen. By slowly going back
and forth between the hex printout and the printer manual, you can
decode the escape sequences and start to determine what the printer
was asked to do.
Pcl2english was designed to reduce the tedium and chance for errors
with this formerly manual process. You will still need to use your
printer manual to more clearly understand page size, margin settings,
font selection and your printer's capabilities. But hopefully, you
can quickly answer questions such as: Why did part of my print out
come out on the second page?
It has been my experience that each program seems to have its own
philosophy of how to print. Pcl2english is a tool to understand
these "philosophies" and give insight as to when you can get a program
to do something you want (say print in landscape) and when you can't.
I have personally used a number of the Hewlett-Packard printers:
ThinkJet, DeskJet, PaintJet, LaserJet+, and the LaserJet IIP. The
program handles the escape sequences used by these printers and also
the LaserJet 500+, DeskJet+, and LaserJet IID. Pcl2english does
not handle new features introduced with the LaserJet III.
REVISION HISTORY
Version 1.x: Internal development versions.
Version 2.0: First release of pcl2english.
RUNNING PCL2ENGLISH
Pcl2english is strictly a "text" based program. The command format is:
pcl2english [options] infile [outfile]
options:
-e print escape sequences and certain control codes only. Normal
text sequences are not printed, though they are used to keep
track of where the "cursor" is.
-v print version number on the first output line.
-x print hexadecimal equivalents. After the escape sequence, special
character, or line of text is printed, a line is printed that
contains the hex values for each character.
infile: "pcl" input file. This should be a capture of the exact
data being sent to the printer. That is, any data
translation ("cooking") should have already been done.
Methods to get this will vary with machine/operating system.
outfile: optional output file. If not given, output is sent to stdout.
The output is plain ASCII text.
PCL2ENGLISH OUTPUT
A short example to illustrate various features follows:
<Esc>(s10h1T
<Esc>(s10h primary font characters per inch = 10
<Esc>(s1T primary font typeface = Pica
<Esc>&d@
<Esc>&d@ Disable Underline
<Esc>(sbS
<Esc>(sb primary font weight = Medium (0)
<Esc>(sS primary font style = Upright
<Esc>9
<Esc>9 Reset Left and Right Margins to default settings.
<Esc>&l002e062F
<Esc>&l002e Top margin = 2 lines. Text length defaults to:
page_length - top_margin - half_inch
<Esc>&l062F Text length = 62 lines
1<LF>2<LF>3<LF>4<LF>
Added 4 more lines.
<Form feed> Move to first line at top of next page
while maintaining current column at 4.
<LF>
Added 1 more lines.
----------------------------------------------------------------------
Special characters are enclosed in <>'s such as the escape and form feed.
Each new group of special characters is printed starting at the left edge.
Multiple escape commands can be grouped together. The actual
decoding for each "sub" command is done on subsequent indented
lines following the command group listing. The <Esc>(sbS command
above is an example of this.
Text is condensed to fit on a single line. This is done by printing
up to 20 characters. If more than 20 characters were encountered,
the first and last 10 characters are printed separated by " ... ".
Special characters are printed between <>'s. A space at the beginning
or the end will be printed as <SP> so that it does not get "lost".
The program counts the number of line feeds encountered in a text
section. If any are seen, it will print the number of lines added.
This number includes any <LF>'s that may be visible in the text line.
A form feed causes the present page to be ejected. However, the
cursor is not automatically moved over to the left margin on the
next page. Thus, a "current column" is maintained and printed when
a form feed is encountered. This column is affected by left and
right margin settings, tabs, returns, and standard characters.
However, pcl2english isn't smart about proportional fonts and some
of the cursor positioning commands. Thus, the current column value is
really only a help, and not to be relied upon when doing fancy stuff.
The "-x" hex option will print out a line of hex equivalents, as can
be seen in the following example. Here, the second line repeats the
first line, but in hex. The other lines are like in the example above.
<Esc>(s10h1T
1B 28 73 31 30 68 31 54
<Esc>(s10h primary font characters per inch = 10
<Esc>(s1T primary font typeface = Pica
In many cases, you can interchange printer drivers. Often, you can
use a LaserJet driver on a DeskJet, or a DeskJet driver on a LaserJet.
However, there are differences between the various printers that
could cause differences in the printout. For example, the DeskJet
is restricted in its ability to move the page back up. Thus, a
LaserJet command to move the cursor (paper) back could be ignored
on a DeskJet. Pcl2english was designed to recognize commands for
a wide variety of printers, rather than be specific to one particular
printer. Thus, if you decode something with pcl2english, and it
doesn't seem that your printer is responding properly to a particular
escape sequence, check in your printer manual to see if that sequence
is indeed supported.
ERRORS
Below are a couple examples of error messages that one could get.
Basically, these escape sequences are undefined, though they could
be used on a future printer. If you encounter one of these, check
your printer manual.
<Esc>A
<Esc>A WARNING!!! Improper/unknown escape sequence.
<Esc>&d5D
<Esc>&d5D Underline control = ???
COMPILING NOTES
Pcl2english was developed on an Amiga. However it does not take
advantage of any Amiga specific features, and should be able to
run on a variety of machines. You will need to make changes in
the compile options in the makefile to match your compiler. The
one feature that this program does take advantage of is prototypes
that are defined in ANSI C.
MISCELLANEOUS
Included with this program are two files called "chart" and "pcl_good".
"chart" is a reference sheet that lists escape sequences in
alphabetical order. "pcl_good" is a test file of all escape sequences
handled by pcl2english. This was one of the files used to test
the program. You can test the program by running:
pcl2english -e pcl_good
I should mention that my employer is Hewlett-Packard. Though I have
used a variety of HP printers, I do not design/build printers for HP.
My main motivation for this program comes as an owner and user.
AMIGA NOTES
There are three "printer devices" on the Amiga: PRT:, PAR:, and SER:.
The PRT: device will route output to the appropriate parallel or
serial port (PAR: or SER:) based on your Preferences setting. The
PRT: device also "cooks" its input by converting "generic" escape
sequences to the proper escape sequences used by your printer. These
conversions are handled in the printer driver that is selected in
Preferences. (For example, the HP_DeskJet or HP_LaserJet printer
drivers.) What pcl2english wants is the PCL data being sent to PAR:
(or SER: if you connect your printer to the serial port.)
A program called CMD is available for capturing exactly this data.
It is in the Utilities drawer for the Workbench 1.3 release. It is
also on Fred Fish Disk #95. You need to be sure that if Preferences
wants to send printer output to the parallel port, that you specify
"parallel" in CMD. Similarly if you use the serial port. You will
want to decide where you want to create the new file. For short cases,
you may want to use ram memory since it is fast. For example,
you might want FILE=RAM:CMD_file. For longer outputs, or something
you want to save, you may give a hard disk or floppy file name.
After the file(s) has been created, you can run pcl2english on it
to see the escape sequences. Running CMD a second time will turn
off the re-direction, and allow you to send to the printer again.
You can now send the file captured by CMD to the printer by saying:
copy file PAR: (or SER:). The file is already "cooked", so you
want to send it directly to PAR: rather than PRT:.
To run pcl2english, you will need to open up a CLI or Shell window.
Then type in the command as shown above. If pcl2english is not
in one of your "path" directories, then you will also need to specify
the path to it so the computer can find it.
Pcl2english was developed on the Manx Aztec C 5.0c compiler using
32 bit ints.
--------------------------
Allen Norskog
900 Whaler's Way
Fort Collins, CO 80525
--------------------------