OK, here's the deal. I hate the video drivers in C, so I just threw
together the assembly language interrupts to switch video modes. You
can use any method you choose to put it into VGA mode, just so long
as it's in standard VGA 320 x 200 256 color mode. It's mode 13 hex.
Once you're there, all you have to do is point any bytes you want to
write to the screen to '0xA000:xxxx', starting at 0 for the top left
of the screen. I use the MK_FP thingy, which is a pretty specific
command, I don't know how many compilers support it. I'm using Turbo
C++ 1.01, just so you know. I'm sure you can pull apart my code and
see what I'm doing. There's one other piece of assembly code, and it's
the screen blanker. I wanted it to be fast, so I wrote it custom in
assembly. It doesn't get any quicker than that. It takes almost exactly
64000 clock cycles to clear the screen to any color you want. That's not
much considering you get somewhere near 30,000,000 a second. The program
first loads up a data file which has a bunch of lines with numbers on
them. The lines are triples with the x, y, and color for the next pixel.
It reads the first line for the x, then the second for the y, and the
third line for the color. Then it starts over again, until it hits
the end of the file. To make sure it doesn't screw up, don't leave
any blank lines at the end of the data file.(This means you CAN'T use
MS-DOS edit). OK, now that it has the x,y and color, it sends them
off to the pixel plotting routine which uses the far pointer and simply
sets the pointed to memory location to the color specified. Once it's
done loading pixels off the disk, it waits for a keypress and moves on
to very quickly clear the screen to all 256 colors in the palette in a
row. It then waits for another keypress when it's done cycling through
all the colors. I compiled with this commandline:

tcc vga.c lowlevel.asm

I assume you have TASM in your path. If you don't have it, I'll put the
standalone version up on the board.

Zephyr