Hi.
I've been lurking here for some time, and would like to offer to (help)
write the VGA BIOS.
As far as I can tell no actual work has started on this?
I'm not fully sure of the level of compatibility that it is hoped to
obtain for this first version, it looks like we are going for
compatibility at the BIOS and memory access level but are not going to
use any of the standard CGA/EGA/VGA registers? Is this correct? This
would seem to limit things to text mode only, as there is no way you can
use a graphics mode without also using the registers (apart from mode 0x13).
My plan would probably be to try to setup bochs (or another x86
emulator) with a simple model of the chip and to program against that.
It always seems to be a good idea to stay away from the real hardware
for as long as possible when developing new code like this else you just
get bogged down in details that will sort themselves out later.
I realize that I've come to this project late so I don't want to rock
the boat too much, but I think that we could get a lot further with VGA
compatibility if we were to implement the VGA registers and the memory
access logic in hardware. For the registers we would have the logic to
implement the indexing schemes in hardware and their values would be
readable by HQ (with possibly some sort of notification that they've
changed, but this might not be needed). For host memory accesses I
think that we should implement the VGA read and write modes. This
actually turns out to be not that much verilog, but it does make the
card appear to be much more like a real VGA card. We would need a way
to switch this off for when we were using VESA modes or our own device
drivers. (In my test implementation of the above they come out at about
250 lines of verilog each).
As I said, I know that I am coming to this project late, and would still
like to help even if the first targets are for a more reduced
functionality than this. It would certainly be good to get a simple
text console working, and this should obviously be a first target.
The things that the BIOS needs to do are all relatively simple, but the
documentation is spread thinly all over the place. So, a quick list:
- Contain a magic header at the start (0xAA, 0x55)
- Install a few interrupt handlers (0x10 + 0x1D,0x1F + 0x42 + 0x43)
- Manage some data in the BIOS data area (addresses 0x40:00xx)
- Load the correct HQ program (contained in the ROM)
- Control the hardware
Anyway, any comments or direction before I begin coding would be great.
MM
_______________________________________________
Open-graphics mailing list
[email protected]
http://lists.duskglow.com/mailman/listinfo/open-graphics
List service provided by Duskglow Consulting, LLC (www.duskglow.com)