Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ rren2(7) — Interactive 3.2r4.1

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

Xrren2(1)

sdevice(4)

rren2(7)  —  

NAME

rren2 − Renaissance Rendition II driver

DESCRIPTION

The Renaissance Rendition II kernel driver facilitates accessing the Renaissance Rendition II board.  It is a regular character-based driver that manages one Rendition II board.  It is used by programs that draw using the graphics modes of Rendition II. 

CONFIGURATION

The sdevice(4) file /etc/conf/sdevice.d/rren2 describes the I/O port addresses as well as the shared memory addresses. Sinced the memory and I/O addresses are not configurable, it should not be necessary to change the default sdevice file.  The seventh and eighth fields in this file describe the starting and ending input/output port addresses.  The ninth and tenth fields in this file describe the starting and ending shared memory addresses.  The shared memory fields are not used for the Xrren2 server for X11.  All of these fields are given in hexadecimal.  The default sdevice file entry with an I/O base address of 0290h is and shared memory address of 0d0000h is:

rren2  Y  1  0  0  0  290  29f  d0000  d1fff

If you change the default sdevice entry, you will have to build a new kernel and boot it for these changes to become effective. 

PROGRAMMING INTERFACE

The Rendition II device is opened by a call to open. Currently, only minor device 0 is supported. If a non-zero minor device is specified, then an error will occur and errno will be set to ENOENT.  A simple check is done to see if the Rendition II board is in the system.  If it is not, an error will result and errno will be set to ENXIO.  An I/O address clash may also cause this error.  Only one user is allowed to open the Rendition II board at a time, unless the subsequent user is the superuser.  If a subsequent open is attempted by another user who is not the superuser, an error will result and errno will be set to EPERM. 

Read and write interfaces are provided to access the memory of the Texas Instruments 34010 processor in the Rendition II.  Seek addresses are specified in bytes.  Because addresses on a 34010 processor are given in bits, it is necessary to divide the bit address by 8 to get a byte address.  The state of the 34010 is saved before each read and write, and it is restored when they are completed. 

The ioctl following calls allow a user program to access the Rendition II board directly:

RREN2_GET_INFO
This ioctl returns a structure containing the addresses of the board described in the section “Configuration” above.  The structure returned is:

typedef struct  rren2_info  {
shortrren2_port;/* i/o port */
shortrren2_endport; /* i/o port */
char*rren2_sram;/* physical address */
char*rren2_endsram; /* physical address */
}   rren2_info_t;

This structure is filled in with information in the seventh through tenth fields of the sdevice file.  It is stored at the location specified by the argument that is passed. 

RREN2_MAP_BOARD
This ioctl allows the process to do in and out instructions at the I/O ports specified in the sdevice file.  The argument passed is unused. 

RREN2_UNMAP_BOARD
This ioctl prevents the process from doing in and out instructions at the I/O ports specified in the sdevice file.  The argument passed is unused. 

RREN2_MAP_SRAM
This ioctl allows the process to have direct access to the shared memory.  The argument passed is the address of the memory to map to the Rendition II board.  It must be page (4096 byte) aligned and span a length specified by the sdevice file (which is also a multiple of 4096 bytes).  The memory that had existed at the argument passed will be irretrievably deleted, and the current contents of the shared memory will be placed at those locations.  One way of allocating the virtual memory in the user’s address space that will be mapped to the shared memory is to call malloc requesting (length + 4096) bytes.  Then, using the address that malloc returns, round it up to the next page (4K) boundary and use the result as the argument to this ioctl.

RREN2_UNMAP_SRAM
This ioctl call unmaps the direct access to the shared memory.  The map must have been set up with RREN2_MAP_SRAM by the current process.  The argument passed should be the same one given to RREN2_MAP_SRAM.  The memory where the shared memory had been becomes zeros. 

FILES

/dev/rren2

SEE ALSO

Xrren2(1). 
sdevice(4) in the INTERACTIVE SDS Guide and Programmer’s Reference Manual.

\*U  —  Version 1.0

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026