PS(4)                  OpenBSD Programmer's Manual (VAX)                 PS(4)

NAME
     ps - Evans and Sutherland Picture System 2 graphics device interface

SYNOPSIS
     device ps0 at uba? csr 0172460 vector psclockintr pssystemintr

DESCRIPTION
     The ps driver provides access to an Evans and Sutherland Picture System 2
     graphics device.  Each minor device is a new PS2. When the device is
     opened, its interface registers are mapped, via virtual memory, into a
     user process's address space.  This allows the user process very high
     bandwidth to the device with no system call overhead.

     DMA to and from the PS2 is not supported. All read and write system calls
     will fail.  All data is moved to and from the PS2 via programmed I/O us-
     ing the device's interface registers.

     Commands are fed to and from the driver using the following ioctl(2)s:

     PSIOGETADDR        Returns the virtual address through which the user
                        process can access the device's interface registers.

     PSIOAUTOREFRESH    Start auto refreshing the screen.  The argument is an
                        address in user space where the following data re-
                        sides.  The first longword is a count of the number of
                        static refresh buffers.  The next count longwords are
                        the addresses in refresh memory where the refresh
                        buffers lie.  The driver will cycle through these re-
                        fresh buffers displaying them one by one on the
                        screen.

     PSIOAUTOMAP        Start automatically passing the display file through
                        the matrix processor and into the refresh buffer.  The
                        argument is an address in user memory where the fol-
                        lowing data resides.  The first longword is a count of
                        the number of display files to operate on.  The next
                        count longwords are the address of these display
                        files.  The final longword is the address in refresh
                        buffer memory where transformed coordinates are to be
                        placed if the driver is not in double buffer mode (see
                        below).

     PSIODOUBLEBUFFER   Cause the driver to double buffer the output from the
                        map that is going to the refresh buffer.  The argument
                        is again a user space address where the real arguments
                        are stored.  The first argument is the starting ad-
                        dress of refresh memory where the two double buffers
                        are located.  The second argument is the length of
                        each double buffer.  The refresh mechanism displays
                        the current double buffer, in addition to its static
                        refresh lists, when in double buffer mode.

     PSIOSINGLEREFRESH  Single step the refresh process. That is, the driver
                        does not continually refresh the screen.

     PSIOSINGLEMAP      Single step the matrix process.  The driver does not
                        automatically feed display files through the matrix
                        unit.

     PSIOSINGLEBUFFER   Turn off double buffering.

     PSIOTIMEREFRESH    The argument is a count of the number of refresh in-
                        terrupts to take before turning off the screen.  This

                        is used to do time exposures.

     PSIOWAITREFRESH    Suspend the user process until a refresh interrupt has
                        occurred.  If in TIMEREFRESH mode, suspend until count
                        refreshes have occurred.

     PSIOSTOPREFRESH    Wait for the next refresh, stop all refreshes, and
                        then return to user process.

     PSIOWAITMAP        Wait until a map done interrupt has occurred.

     PSIOSTOPMAP        Wait for a map done interrupt, do not restart the map,
                        and then return to the user.

FILES
     /dev/ps

DIAGNOSTICS
     ps device intr.
     ps dma intr.  An interrupt was received from the device.  This shouldn't
     happen, check your device configuration for overlapping interrupt vec-
     tors.

HISTORY
     The ps driver appeared in 4.2BSD.

BUGS
     An invalid access (e.g., longword) to a mapped interface register can
     cause the system to crash with a machine check.  A user process could
     possibly cause infinite interrupts hence bringing things to a crawl.

OpenBSD 2.9                     March 27, 1991                               2
