VA(4)                  OpenBSD Programmer's Manual (VAX)                 VA(4)

NAME
     va - Benson-Varian interface

SYNOPSIS
     controller va0 at uba0 csr 0164000 vector vaintr
     disk vz0 at va0 drive 0

DESCRIPTION
     (NOTE: the configuration description, while counter-intuitive, is actual-
     ly as shown above.)

     The Benson-Varian printer/plotter in normally used with the line printer
     system.  This description is designed for those who wish to drive the
     Benson-Varian directly.

     In print mode, the Benson-Varian uses a modified ASCII character set.
     Most control characters print various non- ASCII graphics such as dag-
     gers, sigmas, copyright symbols, etc.  Only LF and FF are used as format
     effectors.  LF acts as a newline, advancing to the beginning of the next
     line, and FF advances to the top of the next page.

     In plot mode, the Benson-Varian prints one raster line at a time.  An en-
     tire raster line of bits (2112 bits = 264 bytes) is sent, and then the
     Benson-Varian advances to the next raster line.

     Note: The Benson-Varian must be sent an even number of bytes.  If an odd
     number is sent, the last byte will be lost.  Nulls can be used in print
     mode to pad to an even number of bytes.

     To use the Benson-Varian yourself, you must realize that you cannot open
     the device, /dev/va0 if there is an daemon active.  You can see if there
     is an active daemon by doing a lpq(1) and seeing if there are any files
     being printed.  Printing should be turned off using lpc(8).

     To set the Benson-Varian into plot mode include the file <sys/vcmd.h> and
     use the following ioctl(2) call

           ioctl(fileno(va), VSETSTATE, plotmd);

     where plotmd is defined to be

           int plotmd[] = { VPLOT, 0, 0 };

     and va is the result of a call to fopen on stdio.  When you finish using
     the Benson-Varian in plot mode you should advance to a new page by send-
     ing it a FF after putting it back into print mode, e.g. by

           int prtmd[] = { VPRINT, 0, 0 };
           ...
           fflush(va);
           ioctl(fileno(va), VSETSTATE, prtmd);
           write(fileno(va), "\f\0", 2);

FILES
     /dev/va0

DIAGNOSTICS
     The following error numbers are significant at the time the device is
     opened.

     [ENXIO]  The device is already in use.

     [EIO]    The device is offline.

     The following message may be printed on the console.

     va%d: npr timeout.  The device was not able to get data from the UNIBUS
     within the timeout period, most likely because some other device was hog-
     ging the bus.  (But see BUGS below).

SEE ALSO
     lpr(1), vp(4), vfont(5), lpd(8)

HISTORY
     The va driver appeared in 4.0BSD.

BUGS
     The 1's (one's) and l's (lower-case el's) in the Benson-Varian's standard
     character set look very similar; caution is advised.

     The interface hardware is rumored to have problems which can play havoc
     with the UNIBUS. We have intermittent minor problems on the UNIBUS where
     our va lives, but haven't ever been able to pin them down completely.

OpenBSD 3.0                     March 27, 1991                               2
