VGA Specs?

Question about which tools to use, bugs, the best way to implement a function, etc should go here. Don't forget to see if your question is answered in the wiki first! When in doubt post here.
Post Reply
Brill

VGA Specs?

Post by Brill »

Hi, does anyone know the whereabouts of any kind of official VGA spec that i could use. I understand the best part of it just not all.
Thanks

Regards, Brill
carbonBased

RE:VGA Specs?

Post by carbonBased »

Search for VGADOC on your favorite search engine... I've seen it all over the internet, and it's got specs of many different cards (incl. std. vga)

Jeff
Brill

RE:VGA Specs?

Post by Brill »

Thanx, i've also looked down some of the message board and saw an entry for vesa with your response and a web site for an article you wrote. You were writing code for that at 16!. All i knew was basic html and how to play games in windows at that age. :D

Regards, Brill
Brill

RE:Another VGA Question

Post by Brill »

Hi, does the vesa standard only affect svga?
Also, what is the actuall location of the video memory? I've read two memory locations so far exist. 0x0B8000 and 0x0A0000. Which is it? Or is one for real mode and the other protected mode?
Thanks.

Regards, Brill.
carbonBased

RE:Another VGA Question

Post by carbonBased »

Vesa 1.x and 2.x (and now 3.x) are standard interfaces to SVGA cards.  They _should_ also include the standard vga modes as well, so in effect, yeah, they'll support VGA and SVGA video modes... but, as far as I know, only SVGA cards support VESA (and even then, a lot only support 1.2)... so, if you want to support systems with a basic VGA card, you probably shouldn't go through VESA.

As for video memory, both b8000 and a0000 are video memory locations, so is b0000 :)  Here's the difference though:

0xB8000 -> location of _colour_ _text_ video memory.  Only useful if you are in a text mode with colour (ie, standard bios mode 0x03: 80x25).  It's arranged in two byte chunks, one byte for the character attribute, and one for the actual character, so for mode 0x03, the only relevant portion of memory here is b8000 to b8000 + (80 x 25 x 2)

0xB0000 -> location of _mono_ _text_ video memory.  Only useful for old monochrome video cards (ie, hercules).  I _believe_ video memory here is also arranged in two byte chunks, but obviously your attribute byte is a lot more limited (seeing as though you have no colour).  I'd have to recheck some old code to confirm the format of this memory, but really, it's more-or-less irrelavent at this point in time :)

0xA0000 -> location of _graphics_ video memory, colour and monochrome.  This section is only 64k long, so if you're using a video memory that encompases more than 64k, you'll either have to use "banking" routines (to "remap" where, on the physical screen, you want that 64k chunk of memory to point to), or use the VGA latches.

This format of this memory also changes depending on which video mode you're in.  In the simplest (standard bios mode 0x13: 320x200x256) each byte in memory represents the colour of a single pixel on the screen.  It gets more complicated with other modes, such as 4, 15, 16, 24, and 32-bit modes.  All should be addressed in my graphics tut for DJGPP, though.

Jeff

PS: I intend to update that graphics tut eventually, and include Linux, BeOS and QNX relavent info... it's all just a matter of time :)
Brill

RE:Another VGA Question

Post by Brill »

Thanks, that was quite helpful. For all the sites i've visited about vga it was never as clear as that when it came to memory addresses, it just gave you one.
Cheers!

Regards, Brill
Post Reply