xref: /csrg-svn/share/man/man4/man4.vax/ps.4 (revision 47674)
1*47674Scael.\" Copyright (c) 1983, 1991 Regents of the University of California.
2*47674Scael.\" All rights reserved.
320738Smckusick.\"
4*47674Scael.\" %sccs.include.redist.man%
520738Smckusick.\"
6*47674Scael.\"     @(#)ps.4	6.4 (Berkeley) 03/27/91
7*47674Scael.\"
8*47674Scael.Dd
9*47674Scael.Dt PS 4 vax
10*47674Scael.Os BSD 4.2
11*47674Scael.Sh NAME
12*47674Scael.Nm ps
13*47674Scael.Nd Evans and Sutherland Picture System 2 graphics device interface
14*47674Scael.Sh SYNOPSIS
15*47674Scael.Cd "device ps0 at uba? csr 0172460 vector psclockintr pssystemintr"
16*47674Scael.Sh DESCRIPTION
1720738SmckusickThe
18*47674Scael.Nm ps
1920738Smckusickdriver provides access
2020738Smckusickto an Evans and
2120738SmckusickSutherland Picture System 2 graphics device.
22*47674ScaelEach minor device is a new
23*47674Scael.Tn PS2 .
2420738SmckusickWhen the device is opened, its interface registers are mapped,
2520738Smckusickvia virtual memory, into a user process's address space.
2620738SmckusickThis allows the user process very high bandwidth to the device
2720738Smckusickwith no system call overhead.
28*47674Scael.Pp
29*47674Scael.Tn DMA
30*47674Scaelto and from the
31*47674Scael.Tn PS2
32*47674Scaelis not supported. All read and write
3320738Smckusicksystem calls will fail.
34*47674ScaelAll data is moved to and from the
35*47674Scael.Tn PS2
36*47674Scaelvia programmed
37*47674Scael.Tn I/O
38*47674Scaelusing
3920738Smckusickthe device's interface registers.
40*47674Scael.Pp
41*47674ScaelCommands are fed to and from the driver using the following
42*47674Scael.Xr ioctl 2 Ns s :
43*47674Scael.Bl -tag -width PSIOSINGLEREFRESH
44*47674Scael.It Dv PSIOGETADDR
4520738SmckusickReturns the virtual address through which the user process can access
4620738Smckusickthe device's interface registers.
47*47674Scael.It Dv PSIOAUTOREFRESH
4820738SmckusickStart auto refreshing the screen.
4920738SmckusickThe argument is an address in user space where the following data resides.
5020738SmckusickThe first longword is a
51*47674Scael.Em count
5220738Smckusickof the number of static refresh buffers.
5320738SmckusickThe next
54*47674Scael.Em count
5520738Smckusicklongwords are the addresses in refresh memory where
5620738Smckusickthe refresh buffers lie.
5728336SanneThe driver will cycle through these refresh buffers displaying them one by one
5820738Smckusickon the screen.
59*47674Scael.It Dv PSIOAUTOMAP
6028336SanneStart automatically passing the display file through the matrix processor and
6120738Smckusickinto the refresh buffer.
6220738SmckusickThe argument is an address in user memory where the following data resides.
6320738SmckusickThe first longword is a
64*47674Scael.Em count
6520738Smckusickof the number of display files to operate on.
6620738SmckusickThe next
67*47674Scael.Em count
6820738Smckusicklongwords are the address of these display files.
6920738SmckusickThe final longword is the address in refresh buffer memory where transformed
7020738Smckusickcoordinates are to be placed if the driver is not in double buffer mode (see
7120738Smckusickbelow).
72*47674Scael.It Dv PSIODOUBLEBUFFER
7320738SmckusickCause the driver to double buffer the output from the map that
7420738Smckusickis going to the refresh buffer.
7520738SmckusickThe argument is again a user space address where the real arguments are stored.
7620738SmckusickThe first argument is the starting address of refresh memory where the two
7720738Smckusickdouble buffers are located.
7820738SmckusickThe second argument is the length of each double buffer.
7920738SmckusickThe refresh mechanism displays the current double buffer, in addition
8020738Smckusickto its static refresh lists, when in double buffer mode.
81*47674Scael.It Dv PSIOSINGLEREFRESH
8220738SmckusickSingle step the refresh process. That is, the driver does not continually
8320738Smckusickrefresh the screen.
84*47674Scael.It Dv PSIOSINGLEMAP
8520738SmckusickSingle step the matrix process.
8628336SanneThe driver does not automatically feed display files through the matrix unit.
87*47674Scael.It Dv PSIOSINGLEBUFFER
8820738SmckusickTurn off double buffering.
89*47674Scael.It Dv PSIOTIMEREFRESH
9020738SmckusickThe argument is a count of the number of refresh interrupts to take
9120738Smckusickbefore turning off the screen.  This is used to do time exposures.
92*47674Scael.It Dv PSIOWAITREFRESH
9320738SmckusickSuspend the user process until a refresh interrupt has occurred.
94*47674ScaelIf in
95*47674Scael.Dv TIMEREFRESH
96*47674Scaelmode, suspend until count refreshes have occurred.
97*47674Scael.It Dv PSIOSTOPREFRESH
9820738SmckusickWait for the next refresh, stop all refreshes, and then return to user process.
99*47674Scael.It Dv PSIOWAITMAP
10020738SmckusickWait until a map done interrupt has occurred.
101*47674Scael.It Dv PSIOSTOPMAP
10220738SmckusickWait for a map done interrupt, do not restart the map, and then
10320738Smckusickreturn to the user.
104*47674Scael.El
105*47674Scael.Sh FILES
106*47674Scael.Bl -tag -width /dev/psxx
107*47674Scael.It Pa /dev/ps
108*47674Scael.El
109*47674Scael.Sh DIAGNOSTICS
110*47674Scael.Bl -diag
111*47674Scael.It ps device intr.
112*47674Scael.It ps dma intr.
11320738SmckusickAn interrupt was received from the device.
11420738SmckusickThis shouldn't happen,
11520738Smckusickcheck your device configuration for overlapping interrupt vectors.
116*47674Scael.El
117*47674Scael.Sh HISTORY
118*47674ScaelThe
119*47674Scael.Nm
120*47674Scaeldriver appeared in
121*47674Scael.Bx 4.2 .
122*47674Scael.Sh BUGS
12320738SmckusickAn invalid access (e.g., longword) to a mapped interface register
12420738Smckusickcan cause the system to crash with a machine check.
12520738SmckusickA user process could possibly cause infinite interrupts hence
12620738Smckusickbringing things to a crawl.
127