PrtDrvGen 2.4                                           by Jørgen Thomsen
=========================================================================

1. How to use PrtDrvGen ?
=========================

PrtDrvGen is designed to be run from the CLI and not the Workbench, but
included is the PrtDrvGen-WB icon, which allows you to execute it from the
Workbench by way of the IconX command. Note, that in this case some output
from PrtDrvGen will be written into the file "*" in the root drawer of the
disk containing the PrtDrvGen.
 
From the CLI enter the commands
(assuming that you store all these files in a drawer called PrtDrvgen)

CD "PrtDrvGen"
PrtDrvGen

 As driver name you may keep the proposed one and modify
 these parameters. Before you save your modifications, you may then
 change the name. You may also enter your own driver name and start
 with an entirely blank sheet. Thirdly you may specify the name of an
 existing driver in DEVS:printers and decode that as a basis for your
 modifications.

[4mFiles in the PrtDrvGen drawer[0m
[4m
PrtDrvGen.doc[0m
 advice on using the PrtDrvGen program and discusses some of the
 features of PrtDrvGen in greater detail

[4mPrtDrvGen[0m
 the User Interface/preprocessor, output from this program is an ASCII
 text file with all the parameters the driver generator program needs
 (e.g. MyEpson.dat).

[4mPrtDrvGen2
[0mthe actual printer driver generator. Will take the ASCII file
 (e.g. MyEpson.dat), read it and make a table which is combined with
 the skeleton driver in the file PrtDrv.lod to make the actual printer
 driver. The driver (e.g. file MyEpson) is stored in the current
 directory. Copy the file into DEVS:printers and change Preferences to
 use this driver.

[4mPDG24.txt[0m
 this is the documentation file used by the PrtDrvGen program. You
 should not modify or read this file.

[4m[4mPDG24.idx[0m an index into PDG24.txt used by the PrtDrvGen
 program. If it is not present, when PrtDrvGen is run it will be
 generated by PrtDrvGen.

[4mPrtDrv.lod[0m
 the skeleton driver written in TDI Modula-2, compiled and linked.
 PrtDrvGen2 will modify the header of this file and add the file to a
 table of data.



2. Features
===========

   - the user interface is a special interactive preprocessor with online
     documentation for each printer command and featuring a decimal/hex to
     octal converter

   - the preprocessor is able to decode or reverse engineer an existing
     printer driver and get many of the parameters needed from it

   - in connection with the utility program AssignPRT it is possible to
     redirect PRT: output to a file. Speeds up repeated graphics prints.

The driver generated supports several classes of graphics printers:

   - printers which enter into and out of graphics mode by detecting
     a special char (e.g. 03) in the data stream e.g. Citizen

   - printers which only use a part of each byte for graphics data e.g.
     Toshiba (6 bits only) and others

   - Red, Green, Blue printers supported  e.g. Quadram Quadjet

   - laser printers/plotters supported by vectorization of each scan line
     of a picture

   - printers which can obtain a higher density by printing a line of
     graphics data, move the paper e.g. 1/2 dot and print the next line
     of data (e.g. Epson). This feature can also be used for other special
     printers e.g. Tektronix/Diablo-C150


   - a feature, which allows for sending about 15 K of raw bytes to the
     printer for special setup (e.g. special character definition and
     commands), should allow the driver to be used with even more printers

   - the Amiga extended ASCII character set support introduced by AmigaDOS
     1.2 is fully supported

   - optional setting of pitch, margins before graphics and resetting of
     spacing after graphics

   - native control codes may be sent to the printer device PRT:.
     This is accomplished by using the EXTEND command.

   - some primitive arithmetic operations on data may be specified to enable
     creation of special control codes for odd printers

   - numeric parameters may be inserted as 1-9 digit fields in radix
     1 - 24 notation (octal(8), decimal(10) and hex(16) are most commonly
     used !)
     
   - a debugging mode with some dumps may be entered by executing a special
     EXTEND command (253) and in case of errors an error code is printed
     on the printer if possible

   - each paper size (USLetter etc.) may have individually defined width,
     length, perforation skip length and printer initialization sequence.
     Allows you through Preferences to select several combinations of
     character sets, justification, proportional spacing etc.

   - definable size of Pica, Elite and Fine types for printers supporting
     other character sizes than 10, 12, 15 CPI

   - perforation skip when Fanfold selected, but not when Single

   - insert internal parameters as binary or decimal numbers into escape
     sequences specific for your printer

   - partial line up/down implemented as such and not as sub/superscript,
     which optionally is available

   - graphics dumps may be scaled to any size and positioned on the paper
     according to most recent margins and print pitch settings by user.
     This provides better support for mixing text and graphics

   - supports up to four graphics modes, if your printer does the same.
     Specify by combination of Draft/Letter and 6/8 LPI.

   - printing of blank lines in graphics dumps optimized. No more idle
     passes of the print head across the paper. (Optional with 2.0)

   - definable pixel width/height ratio to get you true round circles and
     square squares with e.g. DPaint and Aegis Draw

   - definable print sequence of colors to get the best colors for your
     printer or match the sequence of data required for your printer

   - for printers supporting fore/background colors it is possible to
     define the printer specific color values

   - pixel bits stored in the print buffer according to specified parameters
     in order to accomodate different brands of printers

   - adaptive double buffering (if memory not available for two buffers,
     then use only one) and allocation of small buffers for b/w and grey
     scale pictures (compensates for the larger code size of this driver)

   - in case of lack of sufficient contiguous memory "No mem" (2.0: and the
     amount of memory requested) will be output to the printer
 
3. Known bugs
=============

   - the FNT0 (US char set) command is not executed, which is an AmigaDOS
     bug (in 1.2, not tested in 1.3 or 2.0)
