MINIDESCRIPTION FOR DVI2XX

This is a description of a dvi converter (dvi= TeX's device independent
output format) that runs on PCs (XTs, ATs or compatible) under MS/DOS.
DVI2XX is able to produce either device dependent code for the
HP-LaserJet+ or for the IBM3812 (model 1) depending on a preproscessor
switch at compile time.  The documentation concerning compile switches
is located in the source.

DVI2XX can be called with the following options:

  -aXXX    directory to take fonts from
  -b       take paper for first page from alternate cassette (only 3812)
  -eXXX    output file: either drive:path\name of outputfile
                        or device (such as lpt1, nul etc)
           (default is drive:path\name of dvi file and extentsion
           '.lj' for laserjet and '.pmp' for 3812)
  -hXXX    headerfile to be copied before translation of dvi-file
           (you can send arbitrary commands to the laserprinter)
  -fXXX    print from begin of page xxx
  -tXXX    print to end of page xxx
  -mXXX    magnification
  -xXXX    global x-offset in mm on output page
  -yXXX    global y-offset in mm on output page
  -r       toggle reverse/not reverse order for output
           (default reverse=FALSE for 3812, reverse=TRUE for LJ)
  -p       turn off font preload
  -q       quiet operation
  -w       no warnings

If no arguments are specifyed a short help file is displayed.

Two 'special' commands are implemented for the 3812:

  \special{file=drive:path/name}
           copy specified file to the printer;
           either vector- or bitmap-graphics PMP commands

  \special{orientation=Value}
           set page orientation to 0, 1, 2, 3;
           rotate following output to landscape mode etc.
           Depending on print direction!

With the file= special TeX command I have faked the signature of
my boss with nice thick ink. It is simply the pmp command for a
polygon drawing and it looks surprisingly natural.

The program part for redirection of the output to the printer without
intermediate spool file was relatively tricky and uses a IOCTL bios-call.
The performance of the program is about 6 to 7 seconds per page on a
AT with 8Mhz in the 3812 mode. It is running on our configuration
via PC-NET.

Currently two font formats are supported: PXL 1001 and PXL 1002.

The program assumes the following pixelfile structure (the characters
under quotes are mandatory):

   someroot
      ...
      "pxl"1500
         amr10.pxl
         cmr10.pxl
         ...
      "pxl"1643
         amr10.pxl
         cmr10.pxl
         ...
      ...

300dpi files can be used with an adequate magnification (-m#1250 option).

The following characters (all of them occur in the program)  might be
translated wrongly by the ASCII-EBCDIC-ASCII conversion during uploading
and downloading respectively:

!  exclamation point
[  left square bracket
\  left slash (backslash)
]  right square bracket
{  left curly bracket
|  vertical bar
}  right curly bracket

If the characters in the first column do not correspond to their verbal
description fix the C-program adequately.

The program can be compiled with microsoft C Rel.3 or later using the
-AL compiler option. If you have no adequate C-compiler at your site I can
send also the compiled code via e-mail. If you have troubles with downloading
please send me a floppy.

On troubles please read first comments ot the begin of the source
program. Otherwise contact me.

- Gustaf Neumann
 Wirtschaftsuniversitaet Wien
 Institut fuer Informationsverabeitung und Informationswirtschaft
 A-1090 Vienna
 Augasse 2-6
 Austria (Europe)

EARN/BITNET: NEUMANN at AWIWUW11
ARPA: neumann%[email protected]
=========================================================================
Date: 25 August 1987, 16:58:19 WUT
From: NEUMANN  at AWIWUW11
Subject: New release (0.30) of dvi2xx

Hi (potential) dvi2xx-user...

There is a new relase (0.30) of the dvi/3812 and dvi/HPLJ+
converter. The new release features in the following points:

- it accepts the new PK 89 format (Rokicki, Tugboat Vol 6, 1985, No. 3)
 that uses much less disk storage (about 1/4th of PXL1001 files),
- it is possible to specify a 'string of paths' to be searched for the
 PXL- or PK-files; the paths are separated by semicolons,
- it accepts as file-extension either '.pxl' or '.pk',
- the formats of the pixel-files (PXL-1001, PXL-1002, PK-89)
 can be arbitrarily mixed;
 eg. CMR10 can be in PXL-1002 format, CMINCH can be in PK-89,
- the amount of storage in the PC is reduced especially when
 PK-files are used,
- an unimportant bug from the timing measurements has been removed,
- verbatim mode can be set via commandline option -v, that informs
 the user, which fonts are loaded.

We are using the driver here in the following setup.
We have a print-server (IBM PC-AT) that is connected on one side with
the 3812 via 19200/asynchronous port, and on the other side with a bunch
of PC-ATs via IBM PC-Net. We use PC-TeX on the ATs. Historically
all of the PXL-files  have been on the print-server in 1002-format
being accessed from the dvi-driver over the network.

In the new setup, each of the PCs has a small set of the most used
PK-fonts. By specifying with the commandline option of dvi2xx
'-aLOCALFONTS;SERVERFONTS' where LOCALFONTS and SERVERFONTS are valid
fontdirectories, each font is searched first in LOCALFONTS
and if it is not found there in SERVERFONTS. Only seldomly used fonts
are accessed via PC-NET. The network load was reduced in this way
drastically, the speed improvement is about 30%.

If you have interest to receive the new version, please send a short
note ....

-gustaf
=========================================================================
Date: 12 November 1987, 12:11:00 WUT
From: NEUMANN  at AWIWUW11
Subject: New release (0.31) of dvi2xx .. supports also new dir-structure

The newer versions of PCTeX (and some TeX-drivers) are distributed with
fonts put into a different directory structure that uses in the
directory names RESOLUTIONS rather than MAGNIFICATIONS.

The old directory structure standard was:

   somerootA
      ...
      "pxl"1500
         amr10.pxl
         cmr10.pxl
         cminch.pk
         ...
      "pxl"1643
         amr10.pxl
         cmr10.pxl
         tt10.pk
         ...
      ...

The new directory structure looks like:

   somerootB
      ...
      "DPI"300
         amr10.pxl
         cmr10.pxl
         cminch.pk
         ...
      "DPI"329
         amr10.pxl
         cmr10.pxl
         tt10.pk
         ...
      ...

Rel 0.31 supports both structures, it is possible to specify
a path ('-a' option eg '-asomerootA;somerootB').

The search order in one directory is:
  1) look for DPI....\font.pk     where '...' is eg  240
  2) look for DPI....\font.pxl            or         300
  3) look for pxl....\font.pk     where '...' is eg 1200
  4) look for pxl....\font.pxl            or         240
=========================================================================
Date: 1 Dezember 1987, 14:11:00 WUT

Rel 0.32 initializes in LJ-mode the printer and resets it after run;
helps when operating with the LJ2
=========================================================================
Date: 18 Dezember 1987, 18:18:00 WUT

Rel 0.33 runs without any modifications under Unix V (HP/UX);
improved messages for missing fonts.
========================================================================
Date: 5 January 1988, 04:04:04 WUT
From: NEUMANN  at AWIWUW11
Subject: New release (0.40) of dvi2xx

Hi everybody!

The holidays are over and there comes a new release (0.40) of DVI2XX.
It has two major improvements over the previous release:

a) It supports 'HUGE' pixel characters;
b) it does a better positioning which is important mainly for the 3812.
c) Page origin is now on the 3812 and on the LJ2 1 inch from the left and
  right edge of the paper.
d) Smaller output files (== higher printing speed).

ad a)
     The driver knows now about three types of characters:
     -  Small characters are loaded into the font-storage of
        the printer. When a small character occurs in the text,
        the character is copied internally in the printer
        to the output page. The bitmaps of small characters
        are transmitted only once to the printer.
     -  Large characters are loaded into the memory of the driver
        and are transmitted on each occurance in the text as a
        raster graphic to the printer.
     -  Huge characters (characters which raster information has
        a size more than 32767 bytes) are read on each occurance from
        the disk and are transmitted as raster graphics. They are
        not loaded permanently into the memory of the driver.

     Why huge Characters?
     It is quite easy to include graphics into TeX by packing
     bitmap graphics into TeX fonts. I've written some programs
     to convert graphics generated from Drawing Gallery, Framework II,
     Scanning Gallery etc. into 1001 fonts and adequate TFM files
     (if you want to have more info on that send me a note).
     The graphics easily reach a size of 100 or 200K each, and so
     it is certainly a problem to keep these in memory.

     There are essentially 2 common ways to include graphics in TeX.
     - Using \special to include printer dependent code.
     - Putting the graphics into characters.

     Advantages of the latter are:
     1) The reproduction of the graphics is not device dependent
        (rather resolution dependent). It is possible to see
        text and graphics with a good previewer together on
        the screen.
     2) TeX sizes the graphics as it sizes characters. It is not
        necessary to include size infos about the graphics in the
        TeX file. When a graphic changes its size or shape, TeX is
        able to rearrange the output.

     I have scanned some photos and logos and included it in TeX
     documents. It really looks great.

     Please note that a standard LJ+ has not enough memory to generate
     big raster graphics.

ad b) The driver has had some problems with positioning of rules.
     In heavy formula djungles very often some lines have been placed
     wrong by one pixel. It is not so easy to draw lines exactly where
     you want using the 3812 vector drawing facilities... Additionally
     the conversion of the internal TeX units into pixels has gotten
     more accurate (also for the LJ). The result is a overall better
     outlook of the printed pages.

ad c) This is true at least for the European A4 paper trays.

ad d) Output has been reduced by more intelligent positioning (for
     both supported printers). Additionally the driver is more clever
     now in sending bitmap graphics to the LJ. The 3812-code is
     reduced approximately by 25% on a 20 page document.

Caveat: the driver is a little bit slower.
I hope I have not introduced to many new bugs.
=========================================================================
Date: 12 February 1988, 02:39:20 WUT
From: NEUMANN  at AWIWUW11
Subject: New release (0.41) of dvi2xx

Hi everybody!

It's time for a new release of dvi2xx. The newest version (0.41)
features in the following points:

 - significantly better performance
 - a bunch of new options

Performance:
 The following figures are measured on a reasonably standard TeX
 document (16 pages long, contains several formulas and tables)
 on a PC/AT. The last two colums are also valid on Unix machines.

       time to convert dvi file  size of output file    printing speed
       (times faster than 0.40)  (index rel to 0.40)    (index rel 0.40)

 3812:           2.5                    0.64                  0.70
   LJ:           2.7                    0.53                  0.90

 The relative poor performance increase in printing speed for the LJ
 is due to the parallel (centronics) connection in the test configura-
 tion. It would increase to a similar value as for the 3812 if the
 printer is connected by a serial line and communication becomes the
 bottleneck.

 3 reasons are responsible for the improvements:
 -  More intelligent positioning commands for setting the characters
    on the page.
 -  Parts of the floating point arithmetic are changed now to integer
    arithmetic.
 -  MSC Rel. 5 is significantly faster than MSC Rel. 4 for the large
    memory model.

New options:
 -c (copies): specify number of copies to print
 -X define X page origin in dots
 -Y define Y page origin in dots
    HINT: -X and -Y allows you to set the page origin on your
          printer exactly to 1in/1in from the left corner. The
          provided testfile TESTPAGE.TEX helps you to figure out
          where the page origin is currently set to.
          (Mostly important for LJs and clones)
 -g (go): print without resetting the LJ at begin of file.

Changed options:
 -r option (reverse) on LJ: default changed to "print from
    first page to last"
 -x (set x offset relative to page origin in mm):
    accepts now floating point numbers
 -y (set y offset relative to page origin in mm):
    accepts now floating point numbers

 NOTE that options are now case sensitive!

Other changes:
 -  Warning messages are printed now to stdout instead of stderr.
    It is therefore easy now to redirect it.
 -  A bug in the computation of magnifications for directory names
    is removed (the computed value was sometimes wrong by 1).
 -  Several warning messages has been improved.

Send me a short note if you want to receive 0.41. Please indicate
your favorite flavor (source/compiled, uuencode etc).

-gustaf
=========================================================================
Date: 22 July 1988, 03:12:20 WUT
From: NEUMANN  at AWIWUW11
Subject: New release (0.42) of dvi2xx

Bug fix relevant for IBM3812 AND HP LJ-family:
Bug fixed that occured when last y-position of output on preceding page
equals first y-position on the next page (eg: printing e 'empty' pages
that have nothing but page-numbers on it).

=========================================================================
Date: 26 September 1988, 22:01:12 WUT
From: NEUMANN  at AWIWUW11
Subject: New release (0.43) of dvi2xx

Dear user of the dvi2xx driver for the ibm3812 and the lj-family:

Rel 0.43 of dvi2xx introduces some enhancements for the lj-mode
of the driver:

*  The new command line option -z causes the printer to perform a
  selftest at the end of a print job. As a consequence a test page
  is printed out that shows (among other useful information) the
  current value of the internal page counter of the printer (might be
  useful for accounting issues).

*  In rel 0.43 It is possible to print under certain circumstances
  documents with more than 16 fonts on a page: The driver treats now
  character glyphs of the 17th, 18th... and so on font on one page as
  bitmap graphics (instead of aborting as in the earlier releases of
  the program). The number of fonts per page is hence limited by the
  amount of storage the printer has.

  In general it is not recommended to use more than 16 fonts per page
  because after crossing this boundary each appearance of each
  character in the additional fonts causes the driver to send the
  bitmap of the character to the printer. As a consequence the size of
  the printfile grows rapidly, the print speed goes down and (worst)
  the printer runs fairly soon out of memory. If that happens firstly
  the previous loaded font definitions are overwritten in the memory
  of the printer and the following printout is messed up.

  However, it is possible now to print eg the Pictex manual on a LJ/2
  with 1.5 meg.

  The program informs you whenever more than 16 fonts are used on a
  page (unless the '-q' commandline option has been used).

-gustaf
=========================================================================
Date: 20 Jan 1989, 16:20:12
From: NEUMANN  at AWIWUW11
Subject: New release (0.44) of dvi2xx

Dear user of the dvi2xx driver for the ibm3812 and the lj-family!
Rel 0.44 of dvi2xx introduces some enhancements for the lj-mode
of the driver:

*  The new command line option -D causes the printer to print
  in doublepage mode, that is - roughly speaking - printing first
  the even pagen and then the odd pages of a document. After the
  first half of the pages are printed the following happens:
  o   3812: the printer beeps, shows message U1. An operator
      has to refill the printed pages into the paper tray and to
      push the continue button on the printer.
  o   LJ-family: the printer stops, shows message "FEED" and switches
      on manual feed led. The printer continues when either
      the printed pages are fed into the manual page feeder,
      or the operator pushes the continue button (after placing first
      the printed pages into the paper tray).

  The driver allows the -D option for both print-directions (front-
  to-back or back-to-front printing). It tries to be clever in certain
  cases:
  o   when a document has an odd number of pages it inserts in the
      right place an empty page
  o   when a document starts with page 0 the driver inserts an empty
      page after the 0-page
  o   when a piece of a document is printed that starts with
      an even page-number it prints this page at the backside
      of the first page to ensure that the odd sides are always
      on the frontside. The 0-page is treated like an odd page.

  The doubleside option works for all LJs, not only for the
  new D model with does doubleside-printing (actually, i don't
  know whether it makes much sense on the new LJ II D at all).

  Caveat on the doubleside-option: When it is used frequently
  or on very large files, it might become necessary to clean
  the printer much more frequently.

*  The new command line option -pX can be used to abort printing
  after the output of X pages (can lead to strange results together
  with -D). I personally dislike this option. The secure way of
  printing a part of a document is using -f (from) and -t (to).

*  graphic includes files specified for the HP-LJ-family.
  Format is \special{file=DOSNAME}, where DOSNAME has
  the form drive:path/name.ext.

If you want to receive the distribution please send a short note.
-gustaf
=========================================================================
Date:         Wed, 10 May 89 22:56:30 WUT
From:         Gustaf Neumann <NEUMANN@AWIWUW11>
Subject:      New version (0.46) of the TeX-driver dvi2xx available

Dear user of the dvi2xx driver for the ibm3812 and the lj-family!
The new release features in the following points:

General enhancements:
  *  Environment variable TEXPXL is checked for the fontpath.

LJ-features:
  *  Driver is now able to print closer to the paper margins.
  *  \graybox-macro for lj (LaTeX Style Option) generates \fboxes with
     gray-shaded background.
  *  The driver is able to overcome the printer limit of 32 fonts per
     document by rastering fonts a pixle maps above that limit.
  *  More compact output (lj-file) to speedup printing on serial lines.

Unix-features:
  *  -e- switch in the argument list redirects output to stdout. This
     feature is useful especially on unix systems where the output can
     be piped directly into the printer spooler.
  *  Man page provided.
  *  gf-support (thanks Joe Pacer); only tested for lj under unix.
  *  Support for Unix TeX font naming conventions: eg <path>/cmr12.300pk

If you want to receive the new distribution please send a short note.

-gustaf neumann
University of Economics and
Business Administration
Vienna, Austria
=========================================================================
Date:         Wed, 15 June 89 13:12:11WUT
From:         Gustaf Neumann <NEUMANN@AWIWUW11>
Subject:      New version (0.47) of the TeX-driver dvi2xx available

Dear user of the dvi2xx driver for the ibm3812 and the lj-family!
The new release (0.47) features in the following points:

General enhancements:
  *  Clipping of rules for 3812 and lj-family at paper edges.

     In the previous releases the
       3812 ... simply refused to draw lines that left the drawable area
       LJ   ... positioned the line wrongly
     A new testpage.tex file shows the difference.

LJ-features:
  *  new commandline option -sX to spezify pagesize
       X = 1:  executive         (7.25in * 10.5in)
       X = 2:  letter             (8.5in * 11in)
       X = 3:  legal              (8.5in * 14in)
       X = 26: A4                 (210mm * 297mm)
       X = 80: monarch          (3.875in * 7.5in)
       X = 81: commercial-10    (4.125in * 9.5in)
       X = 90: international DL   (110mm * 220mm)
       X = 91: international C5   (162mm * 229mm)
     All values are from the LJ2 technical reference manual.
     If the -s commandline option is omitted no clipping is performed
     at the bottom of the page.

Please send a short note indicating wether you want to receive the new
distribution.

-gustaf neumann
University of Economics and
Business Administration
Vienna, Austria
=========================================================================
Date:         30 Oct 89 10:22:01 WUT
From:         Gustaf Neumann <NEUMANN@AWIWUW11>
Subject:      New version (0.48) of the TeX-driver dvi2xx available

Dear user of the dvi2xx driver for the ibm3812 and the lj-family!
The new release (0.48) features in the following points:

LJ enhancements:

  *  Bug eliminated that caused the driver to generate an output
     file that was much to large. The bug only showed up on
     dvi files using more than 32 fonts (example: pictex manual).

  *  The new version of the driver uses a different font-id assignment
     heuristic that leads in 2/3 of my test files to smaller output
     files.

Please send a short note indicating wether you want to receive the new
distribution (source and/or PC-binary).

-gustaf neumann
University of Economics and
Business Administration
Vienna, Austria
=========================================================================
Date:         25 Mar 91 18:21:11 WUT
From:         Gustaf Neumann <NEUMANN@AWIWUW11>
Subject:      New version (0.49) of the TeX-driver dvi2xx available

Dear user of the dvi2xx driver for the ibm3812 and the lj-family!
The new release (0.49) features in the following points:

Enhancements:

  *  Support of landscape printing:

     A new command-line option -l was added to support
     landscape printing on the IBM 3812 and on various
     LaserJet printers such as

       o       Laserjet II P
       o       Laserjet 2000
       o       LaserJet III

  *  Small bug fixes for IBM 3812 and LaserJet mode and
     improved compatibility (the driver runs now under MS/DOS,
     HP/UX, Ultrix Risc, AIX and OS/2)

  *  new naming:
     dvilj2[.exe]    dvi converter for HP LaserJet+, HP LaserJet II
                     and compatibles
     dvilj2p[.exe]   dvi converter for HP LaserJet II P, HP LaserJet III,
                     HP LaserJet 2000 and compatibles
     dvi3812[.exe]   dvi converter for IBM 3812 Pageprinter

  *  8-bit clean (256 character font files)

The new distribution may be obtained
  -  via anonymous ftp from nestroy.wu-wien.ac.at:pub/src/Typeset/dvi2xx
     (source and msdos .exe-files, os2 .exe files, binaries for DecStations
     under ultrix 4.1, rs6000 under aix 3.1 and hp9000/835 under hpux 7.0
     The ip-address of nestroy.wu-wien.ac.at is 137.208.3.4
  -  from Simtel20 (soon); at least pc-binaries and sources
  -  via sending a short note indicating wether you want to receive the new
     distribution (source and/or PC-binaries).

-gustaf neumann
-----------------------------------------------------------------------------
Gustaf Neumann          [email protected], [email protected]
Vienna University of Economics and Business Administration
Augasse 2-6,  A-1090 Vienna, Austria
Tel: +43 (222) 31-336 x4533     Fax 347-555
=========================================================================
Date:         5 May 91 16:11:21 WUT
From:         Gustaf Neumann <NEUMANN@AWIWUW11>
Subject:      New version (0.50) of the TeX-driver dvi2xx available

Dear user of the dvi2xx driver for the ibm3812 and the lj-family!
The new release (0.50) features in the following points:

Enhancements:

  *  2 new versions:

       o  dvilj
       o  dviljp

     These versions are for older HP Laserjet clones that do NOT support
     256 character fonts (type 2 fonts)

  *  new options for double sided printing
     -D  print double sided and try to stop printer for paper change
     -D1 print odd sides only  (NEW)
     -D2 print even sides only (NEW)
     -D-, -D1-, -D2- like above, but suppress empty padding pages (NEW)

The new distribution may be obtained

  -  via anonymous ftp from nestroy.wu-wien.ac.at:pub/src/Typeset/dvi2xx
     (source and msdos .exe-files, os2 .exe files, binaries for DecStations
     under ultrix 4.1, rs6000 under aix 3.1 and hp9000/835 under hpux 7.0
     The ip-address of nestroy.wu-wien.ac.at is 137.208.3.4

  -  from Simtel20 (soon); at least pc-binaries and sources

  -  via sending a short note indicating wether you want to receive the new
     distribution (source and/or PC-binaries).

-gustaf neumann
-----------------------------------------------------------------------------
Gustaf Neumann          [email protected], [email protected]
Vienna University of Economics and Business Administration
Augasse 2-6,  A-1090 Vienna, Austria
Tel: +43 (222) 31-336 4533  ~Fax 347-555