Porting MS-DOS Graphics Applications
By waiting for the VGA retrace, we are telling the program to wait until the monitor's electron beam reaches the bottom of the screen. Since there is a short pause before it jumps back to the top, it is a good moment to switch palettes without seeing “rainbow colors”. Thus, before switching palettes, we should wait for the VGA retrace as follows:
while (!(inportb(0x3da) & 8)); while ( (inportb(0x3da) & 8)); vga_waitretrace();
The following code assumes you have a character array of 768 values, representing the RGB values for 256 colors. For example:
char palette; where palette = R value of color 0; where palette = G value of color 0; where palette = B value of color 0; ... for (i = 0; i < 256; i++) vga_setpalette(i, palette[i*3], palette[i*3+1], palette[i*3+2]); outportb(0x3C8,0); for (i = 0; i < 768; i ++) outportb(0x3C9, palette[i]);
After adding SVGALIB code to the program, it's time to compile. Simply compile with the -lvga option to link the SVGALIB library. This library is preinstalled on most Linux systems; thus, if you experience problems linking it, you probably don't have it installed and should download it.
jaw3d was programmed by the author and is a Nullsoft Inc. product. Other cross-platform applications may be obtained at http://www.nullsoft.com/.
Jawed Karim is a freshman computer science student at the University of Illinois at Urbana-Champaign and works part-time at the National Center for Supercomputing Applications. His hobbies include programming and bicycle road racing. He can be reached at firstname.lastname@example.org.
- One Port to Rule Them All!
- Privacy Is Personal
- PHP for Non-Developers
- Linux Kernel 4.1 Released
- July 2015 Issue of Linux Journal: Mobile
- Secure Server Deployments in Hostile Territory
- Django Templates
- Comprehensive Identity Management and Audit for Red Hat Enterprise Linux
- A Code Boot Camp for Underprivileged Kids
- Attack of the Drones