4.1cBSD/usr/man/man4/vp.4v

.TH VP 4V "10 May 1981"
.UC 4
.SH NAME
vp \- Versatec interface
.SH SYNOPSIS
.B "device vp0 at uba0 csr 0177510 vector vpintr vpintr"
.SH DESCRIPTION
The Versatec printer/plotter is 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 Versatec directly.
.PP
The Versatec at Berkeley is 36\*(rq wide, and has 440 characters per line
and 7040 dots per line in plot mode (this is actually slightly less than
36\*(rq of dots.)
The paper used is continuous roll paper, and comes in 500' rolls.
.PP
To use the Versatec yourself, you must realize that you cannot open the
device,
.I /dev/vp0
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/vpd.
If there is a file
.I lock
there, then there is probably a daemon
.I /usr/lib/vpd
running.
If not, you should remove the
.I lock.
.PP
To set the Versatec into plot mode you should include
.RI < vcmd.h >
and use the
.IR ioctl (2)
call
.IP
ioctl(fileno(vp), VSETSTATE, plotmd);
.PP
where
.I plotmd
is defined to be
.IP
\fBint\fR plotmd[] = { VPLOT, 0, 0 };
.PP
and
.I vp
is the result of a call to
.I fopen
on stdio.
When you finish using the Versatec in plot mode you should eject paper
by sending it a EOT after putting it back into print mode, i.e. by
.PP
'nf
	\fBint\fR prtmd[] = { VPRINT, 0, 0 };
	\&...
	fflush(vp);
	ioctl(fileno(vp), VSETSTATE, prtmd);
	write(fileno(vp), "\e04", 1);
.fi
.PP
.BR N.B. :
If you use the standard I/O library with the Versatec 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 Versatec
is a terminal (since it is a character special file) will
not adequately buffer
the data you are sending to the Versatec.
This will cause it to run
.B extremely
slowly and tends to grind the system to a halt.
.SH FILES
/dev/vp0
.SH SEE ALSO
vfont(5),
vpr(1),
vtroff(1),
va(4V)
.SH DIAGNOSTICS
The following error numbers are significant at the
time the device is opened.
.TP 10
[ENXIO]
The device is already in use.
.TP
[EIO]
The device is offline.
.SH BUGS
The configuration part of the driver assumes that the device is setup to
vector print mode through 0174 and plot mode through 0200.  Since the
driver doesn't care whether the device considers the interrupt to be
a print or a plot interrupt, it would be preferable to have these be
the same.  This since the configuration program can't be sure at boot
time which vector interrupted and where the interrupt vectors actually are.
For the time being, since our versatec is vectored as described above,
we specify that it has two interrupt vectors and are careful to detect
an interrupt through 0200 at boot time and (manually) pretend the interrupt
came through 0174.