SVGALib
| Original author(s) | Harm Hanemaayer | 
|---|---|
| Stable release | 1.4.3 / June 2, 2001 | 
| Preview release | 1.9.25 | 
| Written in | C | 
| Operating system | Linux, FreeBSD | 
| Platform | x86, x86-64 | 
| Type | Library | 
| Website | www | 
SVGAlib is an open-source low-level graphics library which runs on Linux and FreeBSD and allows programs to change video mode and display full-screen graphics. Some popular games like Quake and Doom have been ported to use SVGAlib.
History
The library was popular in mid-1990s. Toward 2000, many applications that used it migrated to X11 and SDL, which itself can make use of SVGAlib as a video driver.
A sample of SVGAlib code is shown below.
#include <stdlib.h>
#include <unistd.h>
#include <vga.h>
int main(void)
{
   int color = 4;
   int x = 10;
   int y = 10;
   unsigned int seconds = 5;
   /* detect the chipset and give up supervisor rights */
   if (vga_init() < 0)
        return EXIT_FAILURE;
   vga_setmode(G320x200x256);
   vga_setcolor(color);
   vga_drawpixel(x, y);
 
   sleep(seconds);
 
   /* restore textmode and fall back to ordinary text console handling */
   vga_setmode(TEXT);
 
   return EXIT_SUCCESS;
}
Example of use on linux mint 17.3 mate 32-bit dvd-live :
open software manager and install : libsvga1 libsvga1-dev svgalib.bin
or with terminal :
$ cd Desktop
$ sudo su 
# apt-get install svgalib-bin
....
# apt-get install libsvga1
....
# apt-get install libsvga1-dev
create and open with text editor a text file svga.c on desktop
then copy and paste the program in text file svga.c
modify the program resolution with :
vga_setmode(G1024x768x256);    // or your vga desktop screen mode
and save the file.
if you have not already opened, open Terminal and switch as superuser :
$ cd Desktop
$ sudo su 
# ls 
... ... svga.c ... ...
compile with :
# gcc svga.c -lvga
running with :
# ./a.out
It appears a very small red dot in the upper left for 5 seconds.
Example of yellow circle with math functions
#include <stdlib.h>
#include <math.h>
#include <unistd.h>
#include <vga.h>
int main(void)
{
   int x,y,color = 14; 
   float a;
   unsigned int seconds = 5;
   /* detect the chipset and give up supervisor rights */
   if (vga_init() < 0)
        return EXIT_FAILURE;
   vga_setmode(G1024x768x256);  /* some low resolution dont work */ 
   vga_setcolor(color);         /* color of pixel */
   
   for (a=0; a<6.28; a+=0.02)
   { x=(int)(512+100*cos(a));  
     y=(int)(348-100*sin(a));
     vga_drawpixel(x, y);      /* draw pixel */
   }
   sleep(seconds);
 
   /* restore textmode and fall back to ordinary text console handling */
   vga_setmode(TEXT);
 
   return EXIT_SUCCESS;
}
dont forget to compile with math library :
$ gcc svga.c -lvga -lm