home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 10 / amigaformatcd10.iso / -readerstuff- / peter_hutchison / hp_drivers.lzx / HP500V / HP_DeskJet500.doc < prev   
Text File  |  1996-11-27  |  10KB  |  298 lines

  1. HP_DeskJet500 version 6
  2. =======================
  3.  
  4.     © Copyright 1991, 1992. All rights reserved.
  5.  
  6.     Lance Kibblewhite
  7.     1413 Bluemont Court
  8.     Herndon, VA 22070-3524
  9.     (703)787-8153
  10.  
  11.     Bix: lkibblewhite
  12.  
  13.  
  14. This is an Amiga Printer driver for the HP DeskJet 500 printer.  It will not
  15. work with either the original DeskJet or the DeskJet Plus, since it uses various
  16. escape sequences that were first introduced with the DeskJet 500.  It may or may
  17. not work with HP LaserJet printers.
  18.  
  19. This printer is small and fast.  It is written in hand-crafted assembler, and
  20. occupies around 3-4K.  It was developed on DOS 2.03, with a 68030, but my
  21. assembler tells me it really is 68000 compatible, and as of V4, this is now
  22. verifed as been the case.  It would be nice (and a lot faster) if I could have
  23. used 68030 opcodes and addressing modes, but that would have limited the
  24. audience.  It also works with DOS 1.3.
  25.  
  26. The examples in the RKM are, well, not too precise, and while necessary, are
  27. certainly not sufficient.  After much testing, I have discovered many of the
  28. hidden rules.
  29.  
  30. The driver has been tested successfully with AmigaDOS 2.04.
  31.  
  32. Update History
  33. ==============
  34.  
  35. July 1, 1991        V1    Original release
  36.  
  37. July 9, 1991        V2    Added special 'shifted origin' mode for use with
  38.             Professional Page.  See below in the section on
  39.             Professional Page for more details.
  40.  
  41.             This feature seems to work very well, but I know it will
  42.             fail if you try to mix text and graphics an the same
  43.             page.  Fortunately, PPage does not do this.
  44.  
  45. July 14, 1991       V3  Corrected some anomolies that caused problems when using
  46.             Excellence! with Draft or NLQ mode.
  47.  
  48.  
  49. August 4, 1991        V4    Corrected the problems that prevented the driver from
  50.             running on a 68000.  It was using a couple of MOVE.L's
  51.             where the destination may not have been word-aligned.
  52.  
  53.  
  54. September 12, 1991  V5    Corrected two problems.
  55.             (1) The COMMA that appear when UNDERLINE was turned on.
  56.                         (2) Super/Subscript behaviour was incorrect.
  57.  
  58. February 14, 1992   V6  When RENDER with a code of 5 was called with a null
  59.                         IODRPReq value, which happens on the very first call,
  60.                         the printer extended data was been set up for density 1,
  61.                         rather then the maximum values.  The only application
  62.                         that had a problem with this was the PLT:  handler.
  63.                         This driver now works correctly with this handler.
  64.  
  65.  
  66.  
  67. Distribution
  68. ============
  69.  
  70. The driver may be distributed anywhere, by anyone, as long as the following
  71. rules are obeyed.
  72.  
  73.     o This document and the driver must be distributed together, and neither may
  74.       be changed.
  75.  
  76.     o Extra documents and other files may be included should the distributor
  77.       determine it appropriate.
  78.  
  79.     o If the driver is included with any commercial product, including any form
  80.       of distribution that demands a fee, I would appreciate the courtesy of
  81.       being informed.
  82.  
  83. Use
  84. ===
  85.  
  86. The HP_DeskJet500 driver may be used by anyone.  There is no license fee, but
  87. you are welcome to send me anything you may desire in return, that you believe I
  88. might appreciate.  Money comes to mind, but demos, utilities, and perhaps
  89. something of your own creation would be suitable.  It is always nice to get
  90. a return on ones handiwork, but I do have a day job.
  91.  
  92.  
  93. Liability
  94. =========
  95.  
  96. Absolutley none.  I have tested the driver to the best that my resources will
  97. allow, and find it to operate most satisfactorily in the situations in which I
  98. need to use.  I can assume no liability should it cause any problems in any
  99. other situation.
  100.  
  101. If you do find a problem, or have any suggestions however, I will be most
  102. willing to listen, and if resources permit, I may even be able to address them.
  103.  
  104.  
  105. Installation
  106. ============
  107.  
  108. Copy HP_DeskJet500 to DEVS:Printers and modify Printer Preferences to select it.
  109.  
  110.  
  111. Features
  112. ========
  113.  
  114. The main feature of this driver is that it uses the compressed graphics modes
  115. when sending graphics to the printer.  It will dynamically switch modes, on a
  116. line by line basis if necessary, with the optimization goal being the sending of
  117. the minimum number of characters to the printer.  I have found that mode 2
  118. (TIFF) and Mode 3 (Delta) to used most of the time, but occassionally, mode 0
  119. and mode 1 are used.
  120.  
  121.  
  122. Character Sets
  123. ==============
  124.  
  125. The driver assumes that the Amiga character set, which is the ECMA-94 Latin 1
  126. Character set, is also the character set selected on your DeskJet 500 via the
  127. DIP switches.  I decided against sending the actual initialization sequence to
  128. select this character set, since then you would have no way of overriding it.
  129. The only difference you will notice if this is not you printers character set,
  130. is that the 8 bit characters will be incorrect.
  131.  
  132.  
  133. Preferences
  134. ===========
  135.  
  136. How do the preferences get mapped onto the driver?
  137.  
  138.  
  139. Paper Length
  140. ------------
  141.  
  142. The standard Letter size page only has a 10 inch print area.  You could use the
  143. Text Scale Mode to get more, but this also disables the use of margins, and has
  144. a different effect depending on when it is enabled.
  145.  
  146. I use a value of 60 which results in ½ inch margins at the top and bottom.
  147. Notice also that there is no way to set the top margin from preferences.
  148.  
  149.  
  150. Left Margin
  151. -----------
  152.  
  153. The value in the preferences is the first column in which to print, so a value
  154. of 1 means print as far left as possible.  This translates to an actual value of
  155. zero for printer.
  156.  
  157.  
  158. Right Margin
  159. ------------
  160.  
  161. Again, this is one larger then the printer requires, and indicates the last
  162. column in which a character should print.  The driver will again do the correct
  163. translation.
  164.  
  165.  
  166. Character Pitch
  167. ---------------
  168.  
  169.         10-Pica     Courier         10cpi
  170.         12-Elite    Letter Gothic   12cpi
  171.         15-Fine     Courier         16.67cpi
  172.  
  173. The mapping for 15-Fine is selected by the printer, since it does not have a
  174. 15cpi font.
  175.  
  176.  
  177. Print Spacing
  178. -------------
  179.  
  180. These will give you what you ask for.  Note that the Paper Length is expressed
  181. in number of lines at the selected spacing.  At 8lpi, you could have a paper
  182. length of up to 80 lines.
  183.  
  184.  
  185. Print Quality
  186. -------------
  187.  
  188. Both Draft and Letter are implemented.
  189.  
  190. This also applies to graphics at 300dpi.  This is a little know feature of the
  191. DeskJet500 printers, and perhaps also the earlier models as well.  At 300dpi,
  192. (only), the printer can print graphics in both DRAFT and NLQ modes.  The NLQ
  193. mode prints every pixel as requested, but in DRAFT mode, the printer will only
  194. print 'most' of the pixels.  This gives some extra printing speed, and results
  195. in less ink use.
  196.  
  197. There are a couple of things to keep in mind here that can cause confusion.  The
  198. keypad MODE key controls both text quality and graphics quality, but the DRAFT
  199. LED indicates text quality only.  This is fine, as long as both text and
  200. graphics are the same mode, which they will be if selected by the keypad.  After
  201. printer initialization however, this may not be the case.  To reduce this
  202. confusion, my driver, when initializing the printer, will read the current
  203. preferences setting for print mode, and it will set both text and graphics to
  204. the same mode.  So the rules are:  a) The preferences specify the inital mode
  205. for both text and graphics, and b) the keypad toggles modes for both text and
  206. graphics.
  207.  
  208.  
  209. Graphics Density
  210. ----------------
  211.  
  212.     1   75dpi
  213.     2   100dpi
  214.     3   150dpi
  215.     4    300dpi
  216.     5   75dpi  (Shifted Origin)
  217.     6   150dpi (Shifted Origin)
  218.     7   300dpi (Shifted Origin)
  219.  
  220. The graphics area is currently set at 8 inches by 10 inches (even with shifted
  221. origin.  Se PPage below).  At some stage I would like to add code to check the
  222. paper type, and set the graphics limits accordingly.
  223.  
  224.  
  225. Applications
  226. ============
  227.  
  228. These are some experiences with some applications and how they interact with the
  229. driver.
  230.  
  231.  
  232. InitPrinter
  233. -----------
  234.  
  235. This program sends the following sequence to PRT:
  236.  
  237.     <ESC>#1<LF>
  238.  
  239. The first three characters are the aRIN sequence, which is correct, but the <LF>
  240. causes an unnecessary line feed, with the result that after doing an
  241. InitPrinter, the first line will be misplaced.  I fixed this by patching
  242. InitPrinter to only send the first three characters.
  243.  
  244. My InitPrinter is that which comes with 2.03.  It internal version is 36.3.  Use
  245. the VERSION command to find this.
  246.  
  247. I applied the following patch to correct this problem.
  248.  
  249.     Address  Code       Instruction
  250.  
  251. OLD>00002C4  48780004   PEA (4)
  252. NEW>00002C4  48780003   PEA (3)
  253.  
  254. Your offsets may be different.
  255.  
  256.  
  257. Professional Page
  258. -----------------
  259.  
  260. There have been some comments that the HP DeskJet printers do not behave
  261. properly with Professional Page, in particular, the graphics origin is the upper
  262. left of the printable area, rather then the upper left of the page.  This is a
  263. characteristic which is solved by the use of this driver, while retaining
  264. compatibility with applicationse which assume the upper left position is
  265. printable.
  266.  
  267. While the long term fix would be for the standard driver to include an escape
  268. sequence to allow the origin to be specified (and therefore implemented in the
  269. common printer device code), this driver provides an excellant short term
  270. solution.
  271.  
  272. I have used densities 5, 6, and 7 to implement 75dpi, 150dpi, and 300dpi with an
  273. origin assumed to be the upper left of the page, rather then the upper left of
  274. the printable area.  (There was no room to do this for 100dpi, sorry).
  275.  
  276. Using this mode with PPage, set your page size to 8½ × 11, and select one of
  277. these densities when you do you dot matrix output.  The internal bitmap is still
  278. built asumming 8½ × 11, but only the 'middle' 8 × 10 area is actually printed.
  279. This eliminates the introduction of any scaling etc.  The top and bottom ½ inch,
  280. and the left and right ¼ inch will not be printed.  The clipping is done by the
  281. driver.  AmigaDos (and PPage) think they are still getting there full page of
  282. output.
  283.  
  284. Remember, if you select one of these densities as the default (with
  285. preferences), you will get strange results with say DeluxePaint which does not
  286. allow you to directly override the density.
  287.  
  288. Excellence!
  289. -----------
  290.  
  291. Use SCALE=72, and ensure you have INTEGER scaling and some bounds established.
  292. This will avoid the aliasing problems.
  293.  
  294. With V3, The problem with the lpi and page size was corrected.
  295.  
  296. With V5, The problems with UNDERLINE and Super/Subscripts were corrected.
  297. ================================================================================
  298.