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)

Reply via email to