xref: /csrg-svn/share/man/man4/man4.vax/ps.4 (revision 61599)
1*61599Sbostic.\" Copyright (c) 1983, 1991, 1993
2*61599Sbostic.\"	The Regents of the University of California.  All rights reserved.
320738Smckusick.\"
447674Scael.\" %sccs.include.redist.man%
520738Smckusick.\"
6*61599Sbostic.\"     @(#)ps.4	8.1 (Berkeley) 06/05/93
747674Scael.\"
847674Scael.Dd
947674Scael.Dt PS 4 vax
1047674Scael.Os BSD 4.2
1147674Scael.Sh NAME
1247674Scael.Nm ps
1347674Scael.Nd Evans and Sutherland Picture System 2 graphics device interface
1447674Scael.Sh SYNOPSIS
1547674Scael.Cd "device ps0 at uba? csr 0172460 vector psclockintr pssystemintr"
1647674Scael.Sh DESCRIPTION
1720738SmckusickThe
1847674Scael.Nm ps
1920738Smckusickdriver provides access
2020738Smckusickto an Evans and
2120738SmckusickSutherland Picture System 2 graphics device.
2247674ScaelEach minor device is a new
2347674Scael.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.
2847674Scael.Pp
2947674Scael.Tn DMA
3047674Scaelto and from the
3147674Scael.Tn PS2
3247674Scaelis not supported. All read and write
3320738Smckusicksystem calls will fail.
3447674ScaelAll data is moved to and from the
3547674Scael.Tn PS2
3647674Scaelvia programmed
3747674Scael.Tn I/O
3847674Scaelusing
3920738Smckusickthe device's interface registers.
4047674Scael.Pp
4147674ScaelCommands are fed to and from the driver using the following
4247674Scael.Xr ioctl 2 Ns s :
4347674Scael.Bl -tag -width PSIOSINGLEREFRESH
4447674Scael.It Dv PSIOGETADDR
4520738SmckusickReturns the virtual address through which the user process can access
4620738Smckusickthe device's interface registers.
4747674Scael.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
5147674Scael.Em count
5220738Smckusickof the number of static refresh buffers.
5320738SmckusickThe next
5447674Scael.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.
5947674Scael.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
6447674Scael.Em count
6520738Smckusickof the number of display files to operate on.
6620738SmckusickThe next
6747674Scael.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).
7247674Scael.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.
8147674Scael.It Dv PSIOSINGLEREFRESH
8220738SmckusickSingle step the refresh process. That is, the driver does not continually
8320738Smckusickrefresh the screen.
8447674Scael.It Dv PSIOSINGLEMAP
8520738SmckusickSingle step the matrix process.
8628336SanneThe driver does not automatically feed display files through the matrix unit.
8747674Scael.It Dv PSIOSINGLEBUFFER
8820738SmckusickTurn off double buffering.
8947674Scael.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.
9247674Scael.It Dv PSIOWAITREFRESH
9320738SmckusickSuspend the user process until a refresh interrupt has occurred.
9447674ScaelIf in
9547674Scael.Dv TIMEREFRESH
9647674Scaelmode, suspend until count refreshes have occurred.
9747674Scael.It Dv PSIOSTOPREFRESH
9820738SmckusickWait for the next refresh, stop all refreshes, and then return to user process.
9947674Scael.It Dv PSIOWAITMAP
10020738SmckusickWait until a map done interrupt has occurred.
10147674Scael.It Dv PSIOSTOPMAP
10220738SmckusickWait for a map done interrupt, do not restart the map, and then
10320738Smckusickreturn to the user.
10447674Scael.El
10547674Scael.Sh FILES
10647674Scael.Bl -tag -width /dev/psxx
10747674Scael.It Pa /dev/ps
10847674Scael.El
10947674Scael.Sh DIAGNOSTICS
11047674Scael.Bl -diag
11147674Scael.It ps device intr.
11247674Scael.It ps dma intr.
11320738SmckusickAn interrupt was received from the device.
11420738SmckusickThis shouldn't happen,
11520738Smckusickcheck your device configuration for overlapping interrupt vectors.
11647674Scael.El
11747674Scael.Sh HISTORY
11847674ScaelThe
11947674Scael.Nm
12047674Scaeldriver appeared in
12147674Scael.Bx 4.2 .
12247674Scael.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