NOTE: This driver has not been ported from
4.4BSD yet.
(NOTE: the configuration description, while counter-intuitive, is actually 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 daggers, 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 entire 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(3) on stdio. When you finish using the Benson-Varian in plot mode you should advance to a new page by sending it a FF after putting it back into print mode, i.e. by
int prtmd[] = { VPRINT, 0, 0 };
...
fflush(va);
ioctl(fileno(va), VSETSTATE, prtmd);
write(fileno(va), "\f\0", 2);