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