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)