4BSD/usr/man/man4/va.4

Compare this file to the similar file:
Show the results in this format:

.TH VA 4
.UC 4
.SH NAME
va \- Benson-Varian interface
.SH SYNOPSIS
.B #include <sys/vcmd.h>
.SH DESCRIPTION
The Benson-Varian printer/plotter in normally used with the programs
.IR vpr (1),
.IR vprint (1)
or
.IR vtroff (1).
This description is designed for those who wish to drive the Benson-Varian
directly.
.PP
The Benson-Varian at Berkeley uses 11\*(rq by 8\*(rq fan-fold paper.
It will print 132 characters per line in print mode
and 2112 dots per line in plot mode.
.PP
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.
.PP
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.
.PP
.B 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.
.PP
To use the Benson-Varian yourself, you must realize that you cannot open the
device,
.I /dev/va0
if there is a daemon active.
You can see if there is a daemon active by doing a
.IR ps (1),
or by looking in the directory
.I /usr/spool/vad.
If there is a file
.I lock
there, then there is probably a daemon
.IR /usr/lib/vad
running.
If not, you should remove the
.I lock.
.PP
In any case, when your program tries to open the device
.I /dev/va0
you may get one of two errors.
The first of these
ENXIO
indicates that the Benson-Varian is already in use.
Your program can then
.IR sleep (2)
and try again in a while, or give up.
The second is
EIO
and indicates that the Benson-Varian is offline.
.PP
To set the Benson-Varian into plot mode you can use the following
.IR ioctl (2)
call
.IP
ioctl(fileno(va), VSETSTATE, plotmd);
.PP
where
.B plotmd
is defined to be
.IP
\fBint\fR plotmd[] = { VPLOT, 0, 0 };
.PP
and
.I va
is the result of a call to
.I fopen
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
.sp .1i
'nf
\fBint\fR prtmd[] = { VPRINT, 0, 0 };
\&...
fflush(va);
ioctl(fileno(va), VSETSTATE, prtmd);
write(fileno(va), "\ef\e0", 2);
.fi
.PP
.IR N.B. :
If you use the standard I/O library with the Benson-Varian you
.B must
do
.IP
setbuf(vp, vpbuf);
.PP
where
.I vpbuf
is declared
.IP
\fBchar\fR vpbuf[BUFSIZ];
.PP
otherwise the standard I/O library, thinking that the Benson-Varian
is a terminal (since it is a character special file) will not adequately buffer
the data you are sending to the Benson-Varian.
This will cause it to run
.B extremely
slowly and tends to grind the system to a halt.
.SH FILES
/dev/va0
.br
/usr/include/sys/vcmd.h
.SH SEE ALSO
vfont(5), vpr(1), vtroff(1), vp(4)
.SH 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.