home *** CD-ROM | disk | FTP | other *** search
- (c) Copyright 1989-1999 Amiga, Inc. All rights reserved.
- The information contained herein is subject to change without notice, and
- is provided "as is" without warranty of any kind, either expressed or implied.
- The entire risk as to the use of this information is assumed by the user.
-
- Changes to the Printer Device for V1.3
- --------------------------------------
- by David Berezowski
-
-
-
- One area of the Amiga system software that has been extensively revised
- under the V1.3 Workbench is the printer drivers. The purpose of this
- article is to summarize those changes.
-
-
- User Enhancements
- -----------------
-
-
- 1. Speed - the V1.3 printer device is anywhere from 5 to 30 times faster
- than the V1.2 printer device. The speed increase depends on a
- number of factors such as type of printer (ink-jet, dot matrix,
- or thermal transfer), shade of picture (bw, grey-scale or color),
- aspect of picture (horizontal or vertical), amount of white-space
- and color in the picture, and the type of printer driver (V1.3
- printer drivers are much faster than their V1.2 counterparts).
- In general the speed of printouts is now printer or IO bound and
- not CPU bound.
-
- 2. Center - the printer device now automatically centers the picture if
- the flag 'SPECIAL_CENTER' is turned on in io_Special or if
- the user has turned on the Center gadget in Preferences.
-
- 3. Density - graphics print density is now user selectable.
- All printer drivers support multiple densities if the
- printer has them.
-
- 4. Dithering - there are now three user selectable dithering modes.
-
- 5. Scaling - the scaling method is now user selectable.
-
- 6. Smoothing - this provides smoothing of diagonal lines.
-
- 7. Left Offset - the left offset may now be exactly defined by the user.
-
- 8. Color Correction - this provides a closer matching of screen colors
- to printer colors.
-
- 9. Height and Width - printout height and width may now be exactly defined
- by the user.
-
- 10. HAM pictures - these can now be printed from any valid starting x
- position as as opposed to the previous limitation of
- starting from an x position of 0. Inverted HAM pictures
- are now supported as well.
-
- 11. Preferences - there are a new set of Preferences selections for the
- printer device. Refer to the article on V1.3 Preferences
- for a detailed explanation.
-
-
-
- Programmer Enhancements
- -----------------------
-
- 1. Multi-pass - printers which require multiple passes of the color info
- (such as the CalComp_ColorMaster) are now supported via a
- new ColorType of 'PCC_MULTI_PASS' and a new 'case 6' in
- the render.c file.
-
- 2. Page Ejection - a new flag called 'SPECIAL_NOFORMFEED' has been added to
- accommodate page oriented printers like the H-P LaserJet
- and the CalComp_ColorMaster . This flag allows the mixing
- of text and graphics modes on the same page.
-
- 3. Density - a new flag called 'SPECIAL_NOPRINT' has been added to allow the
- calling program to see the effect of changing the density
- without actually doing a dump.
-
- 4. PrintSize - a new flag called 'SPECIAL_NOPRINT' has been added to allow
- the calling program to see the final width and height (in
- printer pixels) of the printed picture without actually
- doing a dump.
-
- 5. Overflow - the error 'PDERR_DIMENSIONOVFLOW' is now obsolete. In the
- past if a dump was requested that was larger than the
- printer's capabilities, this error would be returned. Now the
- driver gives you a dump as large as possible while keeping it
- within the printer's capabilities.
-
- 6. Query status - a new command 'PRD_QUERY' has been added which returns the
- IO status of the printer. See the autodoc description at
- the end of this article.
-
-
-
- Bug Fixes
- ---------
-
- 1. There is no longer a memory loss when aborting - via AbortIO - an
- asynchronous printer request. In particular, aborts from DPaint II
- no longer lose any memory.
-
- 2. The rounding error in the MILROW/MILCOL calculations is corrected.
-
- 3. The printer device can now support very large source/destination sizes
- and large dot densities. This means that a 2048 x 2048 rastport could be
- dumped to a 8.0 x 10.0 inch picture with 600 x 600 dpi. (ie. 2048 x 2048
- source picture to a 4800 x 6000 destination size).
-
- 4. The calculation for the intensity of black on grey scale printouts was
- slightly in error. It had 1/256 too much green and 1/256 too little
- blue in it.
-
- 5. The V1.2 release was limited to working with a maximum of 8 bitplanes.
- This release is now able to go up to 12 bitplanes which allows one
- to have a rastport with all of the 4096 colors in it. We have
- successfully created and printed a 12 bitplane rastport here at CBM.
-
- 6. The alpha command 'word center' has been fixed. This has never worked.
-
- 7. An IO bug which has been present since the V1.0 release has finally been
- fixed. This bug occurred when an AbortIO/WaitIO was followed immediately
- by a DoIO or SendIO using the same IO request that was aborted. The
- abort would never succeed and the DoIO or SendIO command would probably
- not get executed. This is the final known bug with respect to aborting
- or canceling requests.
-
- 8. The aJFY3 (letter space justify) and aJFY1 (word fill / auto center)
- commands have never been sent to the printer. They now are when
- all justification (left, right, or full) is off.
-
- 9. All printer drivers no longer issue a linefeed when told to initialize
- the printer. This has been a bug since the original V1.0 software.
-
- 10. A 'case 5' render call is now made when the printer device is opened.
- This allows the printer driver to initialize the fields MaxXDots, MaxYDots,
- XDotsInch, YDotsInch, MaxColumns, etc. based on the density setting.
-
-
-
- ******* printer.device/Query ****************************************
- *
- * NAME
- * Query - query printer port/line status
- *
- * FUNCTION
- * This command returns the status of the printer port's lines and registers.
- * Since the printer port uses either the serial or parallel port for IO,
- * the actual status returned is either the serial or parallel port's status.
- *
- * IO REQUEST
- * io_Message mn_ReplyPort set if quick IO is not possible
- * io_Device preset by the call to OpenDevice
- * io_Command PRD_QUERY
- * io_Data ptr to 2 UBYTES where result will be stored.
- *
- * RESULTS
- * io_Data BIT ACTIVE FUNCTION (SERIAL DEVICE)
- *
- * LSB 0 low reserved
- * 1 low reserved
- * 2 low reserved
- * 3 low Data Set Ready
- * 4 low Clear To Send
- * 5 low Carrier Detect
- * 6 low Ready To Send
- * 7 low Data Terminal Ready
- * MSB 8 high read buffer overflow
- * 9 high break sent (most recent output)
- * 10 high break received (as latest input)
- * 11 high transmit x-OFFed
- * 12 high receive x-OFFed
- * 13-15 reserved
- *
- *
- * io_Data BIT ACTIVE FUNCTION (PARALLEL DEVICE)
- *
- * 0 low printer selected
- * 1 low paper out
- * 2 hi printer in busy toggle (offline)
- * 3 - read=0, write=1
- * 4-7 reserved
- *
- * io_Actual 1-parallel, 2-serial
- *
- **********************************************************************
-
-
-
-
-
-
-