home *** CD-ROM | disk | FTP | other *** search
- HP_DeskJet500 version 6
- =======================
-
- © Copyright 1991, 1992. All rights reserved.
-
- Lance Kibblewhite
- 1413 Bluemont Court
- Herndon, VA 22070-3524
- (703)787-8153
-
- Bix: lkibblewhite
-
-
- This is an Amiga Printer driver for the HP DeskJet 500 printer. It will not
- work with either the original DeskJet or the DeskJet Plus, since it uses various
- escape sequences that were first introduced with the DeskJet 500. It may or may
- not work with HP LaserJet printers.
-
- This printer is small and fast. It is written in hand-crafted assembler, and
- occupies around 3-4K. It was developed on DOS 2.03, with a 68030, but my
- assembler tells me it really is 68000 compatible, and as of V4, this is now
- verifed as been the case. It would be nice (and a lot faster) if I could have
- used 68030 opcodes and addressing modes, but that would have limited the
- audience. It also works with DOS 1.3.
-
- The examples in the RKM are, well, not too precise, and while necessary, are
- certainly not sufficient. After much testing, I have discovered many of the
- hidden rules.
-
- The driver has been tested successfully with AmigaDOS 2.04.
-
- Update History
- ==============
-
- July 1, 1991 V1 Original release
-
- July 9, 1991 V2 Added special 'shifted origin' mode for use with
- Professional Page. See below in the section on
- Professional Page for more details.
-
- This feature seems to work very well, but I know it will
- fail if you try to mix text and graphics an the same
- page. Fortunately, PPage does not do this.
-
- July 14, 1991 V3 Corrected some anomolies that caused problems when using
- Excellence! with Draft or NLQ mode.
-
-
- August 4, 1991 V4 Corrected the problems that prevented the driver from
- running on a 68000. It was using a couple of MOVE.L's
- where the destination may not have been word-aligned.
-
-
- September 12, 1991 V5 Corrected two problems.
- (1) The COMMA that appear when UNDERLINE was turned on.
- (2) Super/Subscript behaviour was incorrect.
-
- February 14, 1992 V6 When RENDER with a code of 5 was called with a null
- IODRPReq value, which happens on the very first call,
- the printer extended data was been set up for density 1,
- rather then the maximum values. The only application
- that had a problem with this was the PLT: handler.
- This driver now works correctly with this handler.
-
-
-
- Distribution
- ============
-
- The driver may be distributed anywhere, by anyone, as long as the following
- rules are obeyed.
-
- o This document and the driver must be distributed together, and neither may
- be changed.
-
- o Extra documents and other files may be included should the distributor
- determine it appropriate.
-
- o If the driver is included with any commercial product, including any form
- of distribution that demands a fee, I would appreciate the courtesy of
- being informed.
-
- Use
- ===
-
- The HP_DeskJet500 driver may be used by anyone. There is no license fee, but
- you are welcome to send me anything you may desire in return, that you believe I
- might appreciate. Money comes to mind, but demos, utilities, and perhaps
- something of your own creation would be suitable. It is always nice to get
- a return on ones handiwork, but I do have a day job.
-
-
- Liability
- =========
-
- Absolutley none. I have tested the driver to the best that my resources will
- allow, and find it to operate most satisfactorily in the situations in which I
- need to use. I can assume no liability should it cause any problems in any
- other situation.
-
- If you do find a problem, or have any suggestions however, I will be most
- willing to listen, and if resources permit, I may even be able to address them.
-
-
- Installation
- ============
-
- Copy HP_DeskJet500 to DEVS:Printers and modify Printer Preferences to select it.
-
-
- Features
- ========
-
- The main feature of this driver is that it uses the compressed graphics modes
- when sending graphics to the printer. It will dynamically switch modes, on a
- line by line basis if necessary, with the optimization goal being the sending of
- the minimum number of characters to the printer. I have found that mode 2
- (TIFF) and Mode 3 (Delta) to used most of the time, but occassionally, mode 0
- and mode 1 are used.
-
-
- Character Sets
- ==============
-
- The driver assumes that the Amiga character set, which is the ECMA-94 Latin 1
- Character set, is also the character set selected on your DeskJet 500 via the
- DIP switches. I decided against sending the actual initialization sequence to
- select this character set, since then you would have no way of overriding it.
- The only difference you will notice if this is not you printers character set,
- is that the 8 bit characters will be incorrect.
-
-
- Preferences
- ===========
-
- How do the preferences get mapped onto the driver?
-
-
- Paper Length
- ------------
-
- The standard Letter size page only has a 10 inch print area. You could use the
- Text Scale Mode to get more, but this also disables the use of margins, and has
- a different effect depending on when it is enabled.
-
- I use a value of 60 which results in ½ inch margins at the top and bottom.
- Notice also that there is no way to set the top margin from preferences.
-
-
- Left Margin
- -----------
-
- The value in the preferences is the first column in which to print, so a value
- of 1 means print as far left as possible. This translates to an actual value of
- zero for printer.
-
-
- Right Margin
- ------------
-
- Again, this is one larger then the printer requires, and indicates the last
- column in which a character should print. The driver will again do the correct
- translation.
-
-
- Character Pitch
- ---------------
-
- 10-Pica Courier 10cpi
- 12-Elite Letter Gothic 12cpi
- 15-Fine Courier 16.67cpi
-
- The mapping for 15-Fine is selected by the printer, since it does not have a
- 15cpi font.
-
-
- Print Spacing
- -------------
-
- These will give you what you ask for. Note that the Paper Length is expressed
- in number of lines at the selected spacing. At 8lpi, you could have a paper
- length of up to 80 lines.
-
-
- Print Quality
- -------------
-
- Both Draft and Letter are implemented.
-
- This also applies to graphics at 300dpi. This is a little know feature of the
- DeskJet500 printers, and perhaps also the earlier models as well. At 300dpi,
- (only), the printer can print graphics in both DRAFT and NLQ modes. The NLQ
- mode prints every pixel as requested, but in DRAFT mode, the printer will only
- print 'most' of the pixels. This gives some extra printing speed, and results
- in less ink use.
-
- There are a couple of things to keep in mind here that can cause confusion. The
- keypad MODE key controls both text quality and graphics quality, but the DRAFT
- LED indicates text quality only. This is fine, as long as both text and
- graphics are the same mode, which they will be if selected by the keypad. After
- printer initialization however, this may not be the case. To reduce this
- confusion, my driver, when initializing the printer, will read the current
- preferences setting for print mode, and it will set both text and graphics to
- the same mode. So the rules are: a) The preferences specify the inital mode
- for both text and graphics, and b) the keypad toggles modes for both text and
- graphics.
-
-
- Graphics Density
- ----------------
-
- 1 75dpi
- 2 100dpi
- 3 150dpi
- 4 300dpi
- 5 75dpi (Shifted Origin)
- 6 150dpi (Shifted Origin)
- 7 300dpi (Shifted Origin)
-
- The graphics area is currently set at 8 inches by 10 inches (even with shifted
- origin. Se PPage below). At some stage I would like to add code to check the
- paper type, and set the graphics limits accordingly.
-
-
- Applications
- ============
-
- These are some experiences with some applications and how they interact with the
- driver.
-
-
- InitPrinter
- -----------
-
- This program sends the following sequence to PRT:
-
- <ESC>#1<LF>
-
- The first three characters are the aRIN sequence, which is correct, but the <LF>
- causes an unnecessary line feed, with the result that after doing an
- InitPrinter, the first line will be misplaced. I fixed this by patching
- InitPrinter to only send the first three characters.
-
- My InitPrinter is that which comes with 2.03. It internal version is 36.3. Use
- the VERSION command to find this.
-
- I applied the following patch to correct this problem.
-
- Address Code Instruction
-
- OLD>00002C4 48780004 PEA (4)
- NEW>00002C4 48780003 PEA (3)
-
- Your offsets may be different.
-
-
- Professional Page
- -----------------
-
- There have been some comments that the HP DeskJet printers do not behave
- properly with Professional Page, in particular, the graphics origin is the upper
- left of the printable area, rather then the upper left of the page. This is a
- characteristic which is solved by the use of this driver, while retaining
- compatibility with applicationse which assume the upper left position is
- printable.
-
- While the long term fix would be for the standard driver to include an escape
- sequence to allow the origin to be specified (and therefore implemented in the
- common printer device code), this driver provides an excellant short term
- solution.
-
- I have used densities 5, 6, and 7 to implement 75dpi, 150dpi, and 300dpi with an
- origin assumed to be the upper left of the page, rather then the upper left of
- the printable area. (There was no room to do this for 100dpi, sorry).
-
- Using this mode with PPage, set your page size to 8½ × 11, and select one of
- these densities when you do you dot matrix output. The internal bitmap is still
- built asumming 8½ × 11, but only the 'middle' 8 × 10 area is actually printed.
- This eliminates the introduction of any scaling etc. The top and bottom ½ inch,
- and the left and right ¼ inch will not be printed. The clipping is done by the
- driver. AmigaDos (and PPage) think they are still getting there full page of
- output.
-
- Remember, if you select one of these densities as the default (with
- preferences), you will get strange results with say DeluxePaint which does not
- allow you to directly override the density.
-
- Excellence!
- -----------
-
- Use SCALE=72, and ensure you have INTEGER scaling and some bounds established.
- This will avoid the aliasing problems.
-
- With V3, The problem with the lpi and page size was corrected.
-
- With V5, The problems with UNDERLINE and Super/Subscripts were corrected.
- ================================================================================
-