Understanding VGA...
Posted: Tue Jun 05, 2007 2:20 pm
I'm currently cross-reading some documents about the VGA hardware workings but there are some points where I can't catch it...
First: why does FreeVGA says that the graphics controller does the interface between the host system bus and the video memory, but the "Graphics Registers" include fields related to the rasterization of the display memory? (such as the 256-Color Shift Mode and the Shift Register interleave Mode fields) Yet, the Memory Plane Write Enable, Chain 4 and Odd/Even Host Memory Write Adressing Disable fields are on sequencer registers, why? Doesn't make sense!
Then, I don't understand how the hardware mixes the "addressing modes" with the "Read Modes" and the "Write Modes"... Are the read and write modes only valid when in normal addressing mode? Also I don't understand the difference between Chain 4 mode and Odd/Even... I've read the descriptions in freevga but it seems the same thing! :
Either it's really difficult or the thing is very very badly explained...
Now, what's the problem in programming the display memory when a pixel spans across all the planes? Why don't we just enable Chain 4 mode?
And... what are the things that people usually call "planar mode" and "linear mode"?
JJ
First: why does FreeVGA says that the graphics controller does the interface between the host system bus and the video memory, but the "Graphics Registers" include fields related to the rasterization of the display memory? (such as the 256-Color Shift Mode and the Shift Register interleave Mode fields) Yet, the Memory Plane Write Enable, Chain 4 and Odd/Even Host Memory Write Adressing Disable fields are on sequencer registers, why? Doesn't make sense!
Then, I don't understand how the hardware mixes the "addressing modes" with the "Read Modes" and the "Write Modes"... Are the read and write modes only valid when in normal addressing mode? Also I don't understand the difference between Chain 4 mode and Odd/Even... I've read the descriptions in freevga but it seems the same thing! :
From http://www.osdever.net/FreeVGA/vga/seqreg.htmChain 4 -- Chain 4 Enable
"This bit controls the map selected during system read operations. When set to 0, this bit enables system addresses to sequentially access data within a bit map by using the Map Mask register. When setto 1, this bit causes the two low-order bits to select the map accessed as shown below.
Address Bits
A0 A1 Map Selected
0 0 0
0 1 1
1 0 2
1 1 3"
O/E Dis. -- Odd/Even Host Memory Write Adressing Disable
"When this bit is set to 0, even system addresses access maps 0 and 2, while odd system addresses access maps 1 and 3. When this bit is set to 1, system addresses sequentially access data within a bit map, and the maps are accessed according to the value in the Map Mask register (index 0x02)."
Either it's really difficult or the thing is very very badly explained...
Now, what's the problem in programming the display memory when a pixel spans across all the planes? Why don't we just enable Chain 4 mode?
And... what are the things that people usually call "planar mode" and "linear mode"?
JJ