Timothy wrote: > It appears that the extent of I/O space that is reserved for VGA is > 3B4h to 3DAh. Are they all bytes? Or are any 16-bit?
AFAIK, they are all 8 bit. > Is it okay to accept any I/O transations that aren't defined but > within that space? No. Other legacy devices may have addresses inside that range, most notably a parallel printer port at 3BCh..3BFh. I think it's OK to claim all of 3C0h..3CFh, though 3CBh and 3CDh don't appear to be used. Beyond that, a VGA card should claim 3x4h..3x5h and 3xAh, where x is B or D depending on whether the VGA is emulating an MDA or CGA card. It's not recommended to claim both; I'd either claim the CGA registers or make it configurable. It's useful at times to use an MDA card as an auxilliary monitor for debugging. > Is it okay to accept any transactions that are not within that space? Definitely not. That would interfere with other legacy devices. > I think the ONLY I/O space that I will decode is VGA. With AGP/PCI/PCI-Express, things are complicated by the fact that you can have more than one legacy card. As I understand it, all the legacy VGA cards will try to claim that I/O space, but BIOS will only set the I/O space enable bit for one of them. The VGA registers should be dual-mapped to both the I/O space and to a memory-mapped region controlled by a Base Address register, so that the software can access the VGA registers on cards other than the default one. IIRC, this is somewhat tersely described in an appendix of the PCI standard. There's definitely no reason to I/O-map any registers other than the legacy VGA registers. Anything new you define should be memory-mapped. Eric _______________________________________________ Open-graphics mailing list [email protected] http://lists.duskglow.com/mailman/listinfo/open-graphics List service provided by Duskglow Consulting, LLC (www.duskglow.com)
