[comp.sys.amiga] Printer Driver Generator, part 1 of 2

matt@beatnix.UUCP (02/13/87)

Here is part 1 of 2 of the Printer Driver Generator.  It includes all the text
files.  The second part has the object files.

#	This is a shell archive.
#	Remove everything above and including the cut line.
#	Then run the rest of the file through sh.
#----cut here-----cut here-----cut here-----cut here----#
#!/bin/sh
# shar:    Shell Archiver
#	Run the following text with /bin/sh to create:
#	ReadMe
#	PrmFil.doc
#	NECCP6.dat
# This archive created: Thu Feb 12 19:42:34 1987
cat << \SHAR_EOF > ReadMe
Program Name : PrtDrvGen - Printer Driver Generator
Version      : 1.1         (bugs in 1.0 removed)
Release Date : 870122
Programmer   : Jxrgen Thomsen
Copyright    : shareware, $10 requested. See "Copyright" and
               "Availability" below.
Files        :
               PrtDrvGen       - executable file
                                 ( e.g. input: PrtDrv.lod, NECCP6.dat
                                       output: NECCP6)
               PrtDrv.lod      - Amiga load module implementing the special
                                 functions of the driver generated. DON'T
                                 execute it. It will crash the system.
               NECCP6.dat      - parameter file with escape sequences and
                                 parameters to be used when generating a
                                 driver for the NEC P6,CP6,P7,CP7 printers
               PrmFil.doc      - how to change the parameter file and
                                 generate the driver
               ReadMe          - this file

Special features:

   - 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

   - 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.

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

   - 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" will be output
     to the printer

Input data:

   Files PrtDrv.lod and NECCP6.dat (or your own parameter file) and two
   prompts

Output data:

   One file containing the driver generated

   In case of detected errors an error message will be output and no driver
   generated.

Processing:

   The file <printer name>.dat is read and an internal table created. If
   the simple driver is selected, this table is stored into the file
   <printer name>. If the full featured driver is selected, this table
   and the file PrtDrv.lod are combined and stored into the file <printer
   name>.

Source code:

   The system is written in TDI Modula-2 and requires release 2.00a of
   this compiler, if you want to customize the driver.
   The source files enable you to further customize and optimize
   the driver generated, if you have specific needs or want to make a
   (minor) improvement to the speed of generating graphics.
   The code is written with emphasis on maintainability and reasonable
   performance speed, but you will probably be able to save a few micro
   seconds some places and make the code smaller.

Support:

   The generated driver has not been tested in every detail, so please
   report bugs and suggestions for improvements. When the new release
   of the TDI Modula-2 compiler becomes available I intend to make the
   needed, if any, changes to the PrtDrvGen program.

   I hope, that people with other brands of printers will modify the
   parameter file and upload it, so that a lot of people may benefit from
   being able to customize their own printer driver.

Availability :

   After some consideration I have made both source and object code public
   as shareware, but due to the large amount of hours I have spent on making
   this generator system (and $ X (X > 150) in connect time supporting the
   previous version) I will suggest a modest token of appreciation of
   $10 from you if you feel it has been of any value to you. The source
   for V1.1 is available at an additional fee of $15.
   
   I think a word of warning is needed for people wanting to add features
   to a printer driver: a driver is a general purpose interface to the
   hardware supporting its features. It is neither a word processor nor
   a graphics package, but it supports these by making the hardware
   features accessible in a simple way.

Copyright:

        PrtDrvGen, Commodore Amiga Printer Driver Generator.
        ====================================================

    Copyright 1987, Joergen Thomsen.       All Rights Reserved.

                   Compuserve : 71310,2206
                   GEnie      : J.THOMSEN
                   People Link: J.THOMSEN
                   USMail     : 10623 E. 66th S. #366
                                Tulsa, OK 74133

    This product may be freely distributed provided that

    a) this copyright notice is included
    b) all files of this product are included
    c) it is distributed free of charge 
    d) this product is neither explicitly nor implicitly included
       in another product sold for profit.

    The copyright owner may at any time selectively revoke the right
    to distribution. 
SHAR_EOF
cat << \SHAR_EOF > PrmFil.doc
PrtDrvGen 1.1 / Jxrgen Thomsen 870122

| Bugs corrected and enhancements in PrtDrvGen V1.1
| =================================================
| 
| 1) The JFY1 (letter space, justify) and JFY2 (word fill, auto center)
|    commands were not executed in V1.1 due to an AmigaDOS peculiarity
|
| 2) The description of parameters available for inclusion with the ^p, ^d,
|    and ^w commands was missing from this file. Additonal information
|    included as well
|
| 3) In case of the driver not being able to get enough memory for its
|    buffers, it will output the string "No mem" to the printer.


Setting up the parameter file for your brand of printer.
========================================================

In the following we assume that you want to generate a driver for your
printer called MYPRINTER (the name may not contain spaces).

1) Copy NECCP6.dat to MYPRINTER.dat

2) Edit MYPRINTER.dat and change the NEC CP6 specific escape sequences to
   the sequences required for your printer.
   If wanted/needed change also the other parameters specifying the
   operation of the driver.
|  Do NOT add comments in lines with s:
|  Do NOT totally delete any parameters that your printer may not need.
|  PrtDrvGen expects them all to be there (eventually as empty strings
|  in case of string parameters).

   Numerical parameters are provided with certain commands. Each parameter
   is a byte, value 0 - 255.

   If you specify to the driver generator that an alphanumeric driver
   without graphics should be generated, you will get a very small driver
   with limited functionality e.g. Preferences will not be used for setting
   up the printer, only the escape sequences specified. This may be OK for
   very specific applications or for drivers (e.g. daisy wheel) with
   limited graphical capabilities.

   The parameters available for inclusion into the escape sequences in
   case of the full featured driver with the commands ^p, ^d and ^w are
   as follows for the various printer commands:
|  (NOTE. the ^d command can be used for debugging purposes because it
|         will display in decimal notation (3 digits) the binary parameter
|         value referenced by the ^p command).

   RIN:
   ----

   Parameter 0: Lines per inch
     ---     1: No of lines on one page (Preferences)
     ---     2:      - - - - - -        (computed from form definition)
     ---     3: No of lines to skip at perforation ( - - - - )
     ---     4: Left margin  (Preferences, first column to write, Amiga std.)
     ---     5: Right margin (Preferences,  last column to write,   ----    )
     ---     6: Left  margin - 1 (last column not to write, NEC standard)
     ---     7: Right margin + 1 (first column not to write,    ----    )

   All others:
   -----------

   Parameters 0 - 7 are the ones provided with the command, if any.
   Additionally the following parameters are available:

     IND, NEL, RI:
        Parameter 0: line count before command
           ---    1: line count after command

     SFC, SBC:
        Parameter 0: as provided by command
           ---    1: Parameter 0 MOD 10
           ---    2: value from colortable[Parameter 1]

     STBM:
        Parameter 0: current no of lines to skip at perforation
           ---    1: current no of lines on page (paper length)
           ---    2: Parameter 1 - Parameter 0

     SLPP:
        Parameter 0: current no of lines on page (paper size)
           ---    1: current no of lines to skip at perforation
           ---    2: Parameter 0 - Parameter 1

     SLRM, CAM:
        Parameter 0: as provided (CAM: 1)
           ---    1: as provided (CAM: computed)
           ---    2: Parameter 0 - 1
           ---    3: Parameter 1 + 1

     PLD, PLU:
        Parameter 0: (length specified in parameter file) * (6 or 8)/8


| To use this driver for a black and white only printer do the following:
| change "Printer Class" to 1 and "Color Class" to 1. There is no need
| to change the "Sequence for printing colors" parameters.

| The colors specified in the SFC and SBC are the printer specific colors
| and will only be used if your program actually uses the SFC and SBC
| commands with an embedded ^p2/^d2/^w2 command.

| Inkjet and laser printers will often print one line of dots at a time.
| Most often that would require the "Storage of dots in buffer" parameter
| to be specified as 0 and "No of Raster Rows on each pass" as 1.

To clarify the parameters for storing dots in the buffer the following
figure of one pass (line) of a print head is presented:

           X ->
        Y  0
        0  :::::::::::::::::::::::::::::::::::
           :::::::::::::::::::::::::::::::::::
           :::::::::::::::::::::::::::::::::::
           :::::::::::::::::::::::::::::::::::

The dots may be stored in consecutive bytes as

 a) Column by column, left to right
    Byte 1: [(0,0), (0,1), (0,2) .... (0,7)]  Byte 2: [(1,0),  (1,1)...]

 b) Column by column, right to left
    Byte 1: [(0,7), (0,6), (0,5) .... (0,0)]  Byte 2: [(1,7),  (1,6)...]

 c) Row by row, left to right
    Byte 1: [(0,0), (1,0), (2,0) .... (7,0)]  Byte 2: [(8,0),  (9,0)...]

 d) Row by row, right to left
    Byte 1: [(7,0), (6,0), (5,0) .... (0,0)]  Byte 2: [(15,0), (14,0)...]


| The parameters available for inclusion by the ^p, ^d, and ^w commands when
| writing graphics are the following:
|
|   Parameter "0-1"     Parameter "2-3"
|   [xxxxxxxx xxxxxxxx] [xxxxxxxx xxxxxxxx]
|     ^p0       ^p1         ^p2      ^p3        binary bytes
|     ^d0       ^d1         ^d2      ^d3        3 digit decimal bytes
|     ^w0                   ^w2                 5 digit decimal words
|
|   Parameter "0-1" = ^p0 * 256 + ^p1 = ^w0
|
|   At "Init graphics before/after delay":
|        Parameter "0-1": no of dot columns to receive in each pass (line)
|           ---    "2-3": no of dots in each column
|
|      These strings are output to the printer at the very beginning of
|      the graphics dump. The delay between them allows for a lengthy
|      reset command to finish and the printer to become ready for the
|      following commands if that is needed.
|      This part should be used for initializing the printer with values
|      which are constant throughout the entire graphics dump e.g.
|      unidirectional printing, proper line spacing to avoid white
|      streaks in the picture etc.
|
|   At "Color x prefix" and "Each single buffer terminated by":
|        Parameter "0-1": as above + no of dot columns added to the left
|                         margin in order to center picture
|
|           ---    "2-3": no of bytes actually used for the graphics data
|                         for one pass (line) (size of <data for color x>
|                         below). In case of a 24 pin dot matrix printer
|                         parameter 1 = 24/8 * parameter 0. For an 8 pin
|                         dot matrix printer parameter 1 = parameter 0.
|
|        Make sure, that the dots per inch density you typically will
|        specify to the printer in these prefixes, are in accordance
|        with the "Max dots in X direction" and "Dots pr. inch in X
|        direction" parameters, which AmigaDOS will use for generating
|        the graphics data for the printer.
|
|        A typical prefix would contain:
|         <CR> <select print color> <specify graphics mode and no of
|                                    bytes/columns of data to follow>
|
|      The pass (line) buffer layout is:
|        <color 1 prefix> <data for color 1>
|        <color 2 prefix> <data for color 2>
|        <color 3 prefix> <data for color 3>
|        <color 4 prefix> <data for color 4> <Each s. buf. term. by>
|
|      The contens of the prefixes for the NEC CP6 driver is:
|      <CR> <select print color> <specify graphics mode and how many pin
|      columns of data to follow>
|      
|   At "Finish graphics dump":
|        No parameter values available.
|
|      This string (e.g. a form feed and set printer back to normal text
|      state, if that is needed) is output at the very end of the
|      graphics dump.



Generating the driver.
======================

Make sure, that the files MYPRINTER.dat and PrtDrv.lod are located in the
current directory. The driver generated will be located in the current
directory with the name MYPRINTER.

Execute the driver generator PrtDrvGen

               PrtDrvGen

and respond to the prompt for "Alphanumeric driver without graphics (y/n)"
and "Printer driver name: " (the latter being MYPRINTER).

Generating the driver lasts appr. 30 sec. (alphamuneric) or 1.5 minute.
The sizes of the generated drivers when loaded are approx. 1 Kb and 10.5 Kb.

To make the driver available for AmigaDOS do the following:

    Copy MYPRINTER To DEVS:printers

With Preferences do:

    AmigaDOS 1.1:
       change the printer to Custom and specify MYPRINTER as Custom Printer
       Name.
       After a warm boot (ctrl-Amiga-Amiga) the driver can be used

    AmigaDOS 1.2:
       change the printer to MYPRINTER


|Using the driver
|================
|
|The AmigaDOS printer device code and the printer specific code (printer
|drivers) will not be loaded into memory until the first output operation
|to the printer is performed. You may experience, that after this load
|nothing happens. This is most likely because the driver could not get
|enough contiguous memory for its buffers.
|
|The code of this driver is due to the added features larger than most
|other drivers, but it will in case of memory shortage reduce its memory
|requirements and execute in a slower mode. If sufficient contiguous memory
|is still not available, it will print the string "No mem" on the printer
|to inform you about this.
|
|You may avoid this by setting margins narrower with Preferences. That will
|produce a smaller picture, but it will reduce the memory requirements.
|You may also choose to print with less density, if your printer supports
|more than a single dots-per-inch mode.
SHAR_EOF
cat << \SHAR_EOF > NECCP6.dat
Printer specific data for the Amiga printer driver.
===================================================

Printer: NEC P6/CP6/P7/CP7                        by Jxrgen Thomsen 870122

(Please, also read PrmFil.doc in addition to the comments here.
 The program analyzing this file is looking for b/w/l/s followed by
 a colon to mark the start of a parameter. Keep ALL parameters. If not
 needed keep unchanged or in case of strings, delete the contents of the
 string, but keep the s<colon> mark. Do NOT add comments after escape
 sequences specified after s<colon>).

Comment, Data type(byte,word,long,string), Data

Version                                  w:    1
Revision                                 w:    0
Printer Class (add values)
   (0=alphanum,1=graphics,2=color)       b:    3
Color Class (your "ribbon" colors)
    Black, White, Yellow, Magenta, Cyan
   (1(BWonly),2(YMC),3(BWorYMC),4(BYMC))
   If your printer uses Red, Green, Blue
   instead then add 8 to above values
   and use AmigaDOS 1.2                  b:    4

No of Pica size chars on Narrow Tractor  b:   80
No of char sets                          b:    4
No of seconds before timeout             l:   30
Pica size (SHORP0, 0.01 Chars Per Inch)  w: 1000
Elite size (SHORP2, 0.01 Chars Per Inch) w: 1200
Fine size (SHORP4, 0.01 Chars Per Inch)  w: 2000

Specify paper parameters as you like. The
following values are the standard ones
US letter size
Width (0.01 inch)                        w:  800
Length  (0.01 inch)                      w: 1100
Lines to skip at perforation at 6 LPI    w:    6
RIN (2nd string, after delay etc.)       s:^[T^[U^0^[R^0

US legal size
Width  (0.01 inch)                       w:  800
Length  (0.01 inch)                      w: 1400
Lines to skip at perforation at 6 LPI    w:    6
RIN (2nd string, after delay)            s:^[T^[U^0^[R^0

Narrow tractor
Width, narrow (0.01 inch)                w:  800
Length, narrow (0.01 inch)               w:    0     (usually 0 = infinite)
Lines to skip at perforation at 6 LPI    w:    6
RIN (2nd string, after delay)            s:^[T^[U^0^[R^0

Wide tractor
Width  (0.01 inch)                       w: 1360
Length  (0.01 inch)                      w:    0     (usually 0 = infinite)
Lines to skip at perforation at 6 LPI    w:    6
RIN (2nd string, after delay)            s:^[T^[U^0^[R^0

Custom paper
Width (0.01 inch)                        w:  800
Length  (0.01 inch)                      w: 1100
Lines to skip at perforation at 6 LPI    w:    6
RIN (2nd string, after delay, see below) s:^[T^[U^0^[a^3

Partial line up/down length
(0.01 printer units at 6 LPI)            w: 1500

Colors for SFC and SBC:
(use ^p2 or ^d2 to access them)                      NEC CP6
No. 0 (30/40)                            b: 0        black
 -- 1 (31/41)                            b: 1        magenta
 -- 2   .                                b: 2        cyan
 -- 3   .                                b: 3        violet
 -- 4   .                                b: 4        yellow
 -- 5   .                                b: 5        orange
 -- 6   .                                b: 6        green
 -- 7   .                                b: 7        brown
 -- 8   .                                b: 0        black
 -- 9 (39/49)                            b: 0        black

Conversion Table
(^X = ctrl-X, etc.
 ^[ = ESC,
 ^\ = FS,
 ^<octal digits> = byte value,
 ^^ = ^

 Certain parameters are followed by 1 or more numerical values as
 parameters e.g. SLRM. They are stored in P[0], P[1] etc. and may
 be accessed by inserting the following commands (e.g. ^p1)

 ^px = insert parameter byte P[x] as a binary byte here
 ^dx = insert parameter byte P[x] as three decimal characters here
 ^wx = insert parameter bytes P[x], P[x+1] as 5 decimal characters here

 Write string immediately after colon on one line only.
 An empty string after colon specifies no simple conversion possible.
 The SPACE character is significant.)

      Amiga                                Your Printer

RIS    ^[c     reset                     s:^\@
RIN    ^[#1    initialize
(common to all paper sizes excpt. custom
 [see RIN below] followed by
 a delay of 2 seconds,
 VERPx, SHORPx, DENx, PROPx, SLRM, SLPP, PERFx
 RIN (2nd string) as defined above)
                                         s:^[@
IND    ^[D     line feed                 s:^12
NEL    ^[E     return line feed          s:^15^12
RI     ^[M     reverse line feed         s:^\R^12^\F

SGR0   ^[[0m   normal character set      s:^[5^[-^0^[F
SGR3   ^[[3m   italics on                s:^[4
SGR23  ^[[23m  italics off               s:^[5
SGR4   ^[[4m   underline on              s:^[-^1
SGR24  ^[[24m  underline off             s:^[-^0
SGR1   ^[[1m   boldface on               s:^[E
SGR22  ^[[22m  boldface off              s:^[F
SFC    ^[[3nm  n=0-9 set foregr. color   s:^[r^p2
SBC    ^[[4nm  n=0-9 set background col. s:

SHORP0 ^[[0w   normal pitch              s:^22^[W^0^[P
SHORP2 ^[[2w   elite on                  s:^[M^22
SHORP1 ^[[1w   elite off                 s:^[P
SHORP4 ^[[4w   condensed fine on         s:^[M^17
SHORP3 ^[[3w   condensed off             s:^22^[P
SHORP6 ^[[6w   enlarged on               s:^[W^1
SHORP5 ^[[5w   enlarged off              s:^[W^0

DEN6   ^[[6"z  shadow print on           s:^[E
DEN5   ^[[5"z  shadow print off          s:^[F
DEN4   ^[[4"z  doublestrike on           s:^[G
DEN3   ^[[3"z  doublestrike off          s:^[H
DEN2   ^[[2"z  near letter quality on    s:^[x^1^[R^0
DEN1   ^[[1"z  near letter quality off   s:^[x^0^[R^0

SUS2   ^[[2v   superscript on            s:^[S^0
SUS1   ^[[1v   superscript off           s:^[T
SUS4   ^[[4v   subscript on              s:^[S^1
SUS3   ^[[3v   subscript off             s:^[T
SUS0   ^[[0v   normalize the line        s:^[T
PLU    ^[L     partial line up           s:^[j^p0
PLD    ^[K     partial line down         s:^[J^p0

FNT0   ^[(B    US char set               s:^[R^0
FNT1   ^[(R    French char set           s:^[R^1
FNT2   ^[(K    German char set           s:^[R^2
FNT3   ^[(A    UK char set               s:^[R^3
FNT4   ^[(E    Danish I                  s:^[R^4
FNT5   ^[(H    Swedish                   s:^[R^5
FNT6   ^[(Y    Italian                   s:^[R^6
FNT7   ^[(Z    Spanish                   s:^[R^7
FNT8   ^[(J    Japanese                  s:^[R^10
FNT9   ^[(6    Norwegian                 s:^[R^11
FNT10  ^[(C    Danish II                 s:^[R^12

PROP2  ^[[2p   proportional on           s:^[p^1
PROP1  ^[[1p   proportional off          s:^[p^0
PROP0  ^[[0p   proportional clear        s:
TSS    ^[[n E  set proportional offset   s:^[ ^p0
JFY5   ^[[5 F  auto left justify         s:^[x^1^[a^0
JFY7   ^[[7 F  auto right justify        s:^[x^1^[a^2
JFY6   ^[[6 F  auto full justify         s:^[x^1^[a^3
JFY0   ^[[0 F  auto justify off          s:^[x^0
JFY3   ^[[3 F  letter space, justify     s:
JFY1   ^[[1 F  word fill, auto center    s:^[x^1^[a^1

VERP0  ^[[0z   1/8" line spacing         s:^[0
VERP1  ^[[1z   1/6" line spacing         s:^[2
SLPP   ^[[nt   set form length n         s:^[C^p0
PERF   ^[[nq   perf skip n (n > 0)       s:^[N^p0
PERF0  ^[[0q   perf skip off             s:^[O

LMS    ^[#9    left margin set           s:
RMS    ^[#0    right margin set          s:
TMS    ^[#8    top margin set            s:
BMS    ^[#2    bottom margin set         s:
STBM   ^[[Pn1;Pn2r top & bottom margins  s:
SLRM   ^[[Pn1;Pn2s left & right margins  s:^[l^p2^[Q^p3
CAM    ^[#3    clear margins             s:^[l^p2^[Q^p3

HTS    ^[H     set horiz tab             s:
VTS    ^[J     set vertical tab          s:
TBC0   ^[[0g   clear horiz tab           s:
TBC3   ^[[3g   clear all horiz tab       s:^[D^0
TBC1   ^[[1g   clear vertical tab        s:
TBC4   ^[[4g   clear all vertical tabs   s:^[B^0
TBCALL ^[#4    clear all hor & vert tabs s:^[D^0^[B^0
TBSALL ^[#5    set default tabs          s:^[e0^3^[e1^5
EXTEND ^[[Pn"x extended commands         s:

The following are sequences needed for the printer specific code
(only to be used when the full featured driver is generated)

RIN (custom paper, 1st string,
     before 2 sec. delay followed
     by RIN (2nd string) above)  s:
 1. available for EXTEND ^[[1"x  s:
 2. available for EXTEND ^[[2"x  s:
 3. available for EXTEND ^[[3"x  s:
 4. available for EXTEND ^[[4"x  s:
 5. available for EXTEND ^[[5"x  s:
 6. available for EXTEND ^[[6"x  s:
 7. available for EXTEND ^[[7"x  s:
 8. available for EXTEND ^[[8"x  s:
 9. available for EXTEND ^[[9"x  s:
10. available for EXTEND ^[[10"x s:

 
Density 1 (default at Draft, 6 LPI) graphics

No of Raster Rows (pins) on each pass     w:    8
Max dots in X direction                   l:  480    (8 * 60)
Max dots in Y direction (0=infinite)      l:    0
Dots pr inch in X direction               w:   60
Dots pr inch in Y direction               w:   60
(the above parameters is used by AmigaDOS. Make sure, that they are
 in accordance with the graphics mode parameters included in the
 color prefixes below and sent to the printer)
 
Storage of dots in buffer
(and sending the data to the printer)
0: row by row (some laser/ink jet)
1: column by column (dot matrix)          b:    1

Fill buffer bytes from
0: right to left, 1: left to right        b:    1

In 320 x 200 resolution the ratio pixel
height/width = 1.2 on a monitor with the
vertical height adjusted to let the monitor
screen be totally filled by the picture.
Some programs believe the ratio is 1
(e.g DPaint) so if you primarily want
to print proper squares
and circles drawn by these programs
specify here the divisor to divide into
the real pixel height to give the
pixel height used by these programs.
Pixel height divisor * 100
 (e.g. DPaint 120, monitor image 100)    w:  120

Sequence for printing colors
(combination of ALL values 1,2,3,4;
 specifies sequence of color data in print buffer;
 colors for RGB printers in [...];,
 leave as is for black/white printers)
Print black [white] as no.               b:   4
 ---  yellow [blue] as no.               b:   1
 ---  magenta (redish) [green] as no.    b:   2
 ---  cyan (blueish) [red] as no.        b:   3

Color black [white] prefix       s:^15^[r^0^[*^0^p1^p0
Color yellow [blue] prefix       s:^15^[r^4^[*^0^p1^p0
Color magenta [green] prefix     s:^15^[r^1^[*^0^p1^p0
Color cyan [red] prefix          s:^15^[r^2^[*^0^p1^p0
Init graphics before delay       s:^\3^60^[U^1^[j^30^15^12
Init graphics after delay        s:
Each single buffer terminated by s:^15^12
Finish graphics dump             s:

Density 2 (default at Draft, 8 LPI) graphics

No of Raster Rows (pins) on each pass     w:   24
Max dots in X direction                   l:  720
Max dots in Y direction (0=infinite)      l:    0
Dots pr inch in X direction               w:   90
Dots pr inch in Y direction               w:  180
Storage of dots in buffer
0: row by row (some laser/ink jet)
1: coloumn by column (dot matrix)         b:    1

Fill buffer bytes from
0: right to left, 1: left to right        b:    1

Pixel height divisor * 100
 (e.g. DPaint 120, monitor image 100)     w:  120

Sequence for printing colors
Print black as no.                        b:   4
 ---  yellow as no.                       b:   1
 ---  magenta (redish) as no.             b:   2
 ---  cyan (blueish) as no.               b:   3

Color black prefix               s:^15^[r^0^[*^46^p1^p0
Color yellow prefix              s:^15^[r^4^[*^46^p1^p0
Color magenta prefix             s:^15^[r^1^[*^46^p1^p0
Color cyan prefix                s:^15^[r^2^[*^46^p1^p0
Init graphics before delay       s:^\3^60^[U^1^[j^30^15^12
Init graphics after delay        s:
Each single buffer terminated by s:^15^12
Finish graphics dump             s:

Density 3 (default at Letter, 6 LPI) graphics

No of Raster Rows (pins) on each pass    w:   24
Max dots in X direction                  l: 1440
Max dots in Y direction (0=infinite)     l:    0
Dots pr inch in X direction              w:  180
Dots pr inch in Y direction              w:  180
Storage of dots in buffer
0: row by row (some laser/ink jet)
1: coloumn by column (dot matrix)        b:    1

Fill buffer bytes from
0: right to left, 1: left to right       b:    1

Pixel height divisor * 100
 (e.g. DPaint 120, monitor image 100)    w:  120

Sequence for printing colors
Print black as no.                       b:   4
 ---  yellow as no.                      b:   1
 ---  magenta (redish) as no.            b:   2
 ---  cyan (blueish) as no.              b:   3

Color black prefix               s:^15^[r^0^[*^47^p1^p0
Color yellow prefix              s:^15^[r^4^[*^47^p1^p0
Color magenta prefix             s:^15^[r^1^[*^47^p1^p0
Color cyan prefix                s:^15^[r^2^[*^47^p1^p0
Init graphics before delay       s:^\3^60^[U^1^[j^30^15^12
Init graphics after delay        s:
Each single buffer terminated by s:^15^12
Finish graphics dump             s:

Density 4 (default at Letter, 8 LPI) graphics

No of Raster Rows (pins) on each pass    w:   24
Max dots in X direction                  l: 2880
Max dots in Y direction (0=infinite)     l:    0
Dots pr inch in X direction              w:  360
Dots pr inch in Y direction              w:  180
Storage of dots in buffer
0: row by row (some laser/ink jet)
1: coloumn by column (dot matrix)        b:    1

Fill buffer bytes from
0: right to left, 1: left to right       b:    1

Pixel height divisor * 100
 (e.g. DPaint 120, monitor image 100)    w:  120

Sequence for printing colors
Print black as no.                       b:   4
 ---  yellow as no.                      b:   1
 ---  magenta (redish) as no.            b:   2
 ---  cyan (blueish) as no.              b:   3

Color black prefix               s:^15^[r^0^\Z^p1^p0
Color yellow prefix              s:^15^[r^4^\Z^p1^p0
Color magenta prefix             s:^15^[r^1^\Z^p1^p0
Color cyan prefix                s:^15^[r^2^\Z^p1^p0
Init graphics before delay       s:^\3^60^[U^1^[j^30^15^12
Init graphics after delay        s:
Each single buffer terminated by s:^15^12
Finish graphics dump             s:
SHAR_EOF
#	End of shell archive
exit 0
==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==
Matthew D. Shaver --- UUCP: ..!{sun|styx}!elxsi!beatnix!matt
                      USPS: ELXSI Ltd., 2334 Lundy Pl., San Jose, CA 95131
                      BELL: (408) 942-0900