glenda.party
term% ls -F
term% cat index.txt
VGA(3)                     Library Functions Manual                     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 con‐
       figuration and setup registers on a VGA controller card.   These  func‐
       tions 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 num‐
              ber 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,  Vi‐
              sion864,  and  Vision964.   It is the job of vga(8) to recognize
              which particular chip is being used and to initialize it  appro‐
              priately.

       hwgc   tells  the  kernel to use a particular type of hardware graphics
              cursor.  Bt485hwgc, et4000hwgc, s3hwgc and tvp3020hwgc, are cur‐
              rently  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.



                                                                        VGA(3)