    Summary of Changes to the Printer Device for V1.3
    -------------------------------------------------

Bugs Fixes
----------

1. There is no longer a memory loss when aborting (via AbortIO) an
   asynchronous printer request.  ie. Aborts from DPaint II no longer
   lose any memory.

2. There was a rounding error in the MILROW/MILCOL calculations.

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.5 inch picture with 600 x 600 dpi. (ie. 2048 x 2048
   source picture to a 4800 x 6300 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.  The visible change on paper is almost unnoticable.

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.
   Note: This release can actually go up to 16 bitplanes (65536 colors)
   BUT since the Amiga currently supports only 4096 colors the additional
   4 bit planes are irrelevant.

6. The alpha command 'word center' has been fixed.  This has never worked.

7. A 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 bug manefested itself in that the abort would never
   succeed and the DoIO or SendIO command would probably not get
   executed.  With the fix of this bug there are no know bugs with respect
   to aborting/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 opended.
   This allows the printer driver to intialize the MaxXDots, MaxYDots,
   XDotsInch, YDotsInch, MaxColumns, etc. fields based on the density setting.


Enhancements
------------

1. Centering - the printer device now automatically centers the picture if
   the flag 'SPECIAL_CENTER' is turned on in io_Special or if Center is
   turned on in Preferences.  Previous to this version it was the
   responsibility of the individual printer drivers to center the picture.

2. Dithering - Ordered Dithering (default), Half-Toning and Floyd-Stienberg
   ditehring are supported.  Half-Toning is similar to the technique used in 
   newspapers and comic books.  Floyd-Stienberg dithering is useful for
   color prints of facial tones.

3. Color Correction - all shades of either Red, Green, or Blue can be
   'corrected' by selecting the appropriate (either r, g, or b) color
   correction in preferences.  This correction attempts to better
   match the screen colors to the printer colors and works best for
   blue, green and red in that order (ie. blue fixing looks best).  Note
   that with color correction on the number of possible colors that can
   be printed is reduced from 4096 to 3172 (if all three corrections are
   enabled).  In other words there is a trade-off between color correction
   and total number of colors printable.

4. Speed - the new printer device (currently) is anywhere from 3 to 20 times
   faster than the 1.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/colors in picture, type of
   printer driver (there is a new faster standard for writing printer drivers
   that will be released at a later date), etc.  In general though the speed
   of the printouts are now printer bound and no longer cpu bound.

5. HAM pictures - can now be printed from any valid starting x position as
   opposed to the previous limitation of starting from an x position of 0.
   Inverted HAM pictures are now supported as well.

6. Printers which require multiple passes of the color info (like the
   CalComp ColorMaster) are now supported via a new ColorType of
   'PCC_MULTI_PASS' and a new 'case 6' in the render.c file.  Refer to the
   'How to Write a Gfx Printer Driver' section for more info.

7. Page Ejection - a new flag called 'SPECIAL_NOFORMFEED' has been added
   to accommodate page oriented printers like the 'HP_LaserJet' and the
   'CalComp ColorMaster'.  This flag allows the mixing of text and graphics
   or graphics and graphics on the same page.  Refer to the
   'Notes on calling the V1.3 printer device' section for more info.

8. 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.  Refer to the
   'Notes on calling the V1.3 printer device' section for more info.

9. 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.  Refer to the
   'Notes on calling the V1.3 printer device' section for more info.

10. The error 'PDERR_DIMENSIONOVFLOW' is now obsolete.  In the past if one
   asked for a dump 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 within the printer's capabilities.

11. There are a new set of Preferences selections for the printer device.
   Refer to the documentation on 'PrtPrefs' for a detailed explanation.

12. A new command 'PRD_QUERY' has been added.  The autodoc follows:
******* 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 i/o,
*   the actual status returned is either the serial or parallel port's status.
*
*   IO REQUEST
*   io_Message  mn_ReplyPort set if quick I/O 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
*
**********************************************************************

13. Anti-aliasing (diagonal line smoothing) has been added.

14. A new limits option called MULTIPLY has been added.

15. Rastports which reside in non-chip ram print out a lot faster now.


Misc.
-----

1. A new error code called 'PDERR_TOOKCONTROL' has been added.  Refer to the
   document on 'How to Write a V1.3 Printer Driver' for more info.
