Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ (3) — Plan9 1st Edition

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

vga(8)

VGA(3)

NAME

vga − VGA controller device

SYNOPSIS

­bind #v /dev
 ­/dev/vgactl
­/dev/vgaiob
­/dev/vgaiow
­/dev/vgaiol

DESCRIPTION

The VGA device allows configuration of a graphics controller on a PC.  ­Vgactl allows control over higher-level settings such as display height, width, depth, controller and hardware-cursor type.  Vgaiob, ­vgaiow and ­vgaiol allow control over individual 8-bit, 16-bit and 32-bit x86 I/O-ports respectively, such as those used to implement configuration and setup registers on a VGA controller card.  These functions are normally carried out by vga(8).

Writes to ­vgactl are of the form ‘attribute value’. Valid attributes are

­size ­value is ’XxYxZ’ , where X, ­Y and ­Z are numbers that tell the kernel the width and height of the screen in pixels and the number of bits per pixel. 

­type tells the kernel which type of controller is being used, mainly to enable the correct code for display-memory bank switching at resolutions greater than 640x480x1. The names vga, clgd542x, et4000, mach32, and ­s3 are supported for value.

Note that this list does not indicate the full set of VGA chips supported. For example, ­s3 includes the 86C801/5, 86C928, Vision864, and Vision964.  It is the job of vga(8) to recognize which particular chip is being used and to initialize it appropriately.

­hwgc tells the kernel to use a particular type of hardware graphics cursor.  Bt485hwgc, et4000hwgc, ­s3hwgc and tvp3020hwgc, are currently recognized values. A value of ­off reverts to using the software cursor. 

Reading ­vgactl returns the current settings, one per line. 

EXAMPLES

The following reverts to using the software graphics cursor

 echo -n ’hwgc off’ >/dev/vgactl
 

Sample code to read an x86 8-bit I/O port

 uchar
inportb(long port)
{
uchar data;

if(iobfd == -1)
iobfd = open("#v/vgaiob", ORDWR);

seek(iobfd, port, 0);
if(read(iobfd, &data, sizeof(data)) != sizeof(data))
error("inportb(0x%4.4x): %r0, port);
return data;
}
 

SOURCE

­/sys/src/9/pc/devvga.c

SEE ALSO

vga(8)

BUGS

There should be some restriction on the range of valid ports. 

There should be support for the hardware graphics cursor on the ­clgd54[23]x VGA controller chips. 

The hardware graphics cursor on the ­et4000 does not work in 2x8-bit mode. 

Plan 9  —  April 04, 1995

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