gedd wrote:Combuster wrote:The consensus is that the VBE protected mode interface is too broken and too poorly supported that you should not use it.
Agree with you for VBE 2.0, but the protected mode interface via PMID is "less poorly" and can be initialized from protected mode and not only from 16 bits int.
IMO, the VBE 2.0 protected mode interface and the VBE 3.0 PMID interface both suck.
VBE2.0's interface can at least be used from 32 bit protected mode, but it requires two special GDT entries that have a 64K limit. It is also very limited in that the full 2.0 spec isn't supported through the protected mode interface (especially mode switching). VBE2.0 though, since it is almost 15 years old, is very well supported, and the protected mode interface it offered was mandatory.
The VBE3.0 PMID, on the other hand, uses 16 bit protected mode, and it requires, basically, 6 16-bit entries in the GDT to be used. (1 each for the memory available starting at 0xA0000, 0xB8000, and 0xB0000. Plus one for the copy of the BIOS code that you must make, plus another for the protected mode BIOS buffer, plus yet another to be used as a stack for the VBE BIOS code to run.) The PMID isn't very well supported, as with VBE3.0 it is optional. On the upside though, BIOS vendors may choose to also make any of the supplemental specs (in no particular order, and probably incomplete: VBE/AF, VBE/AI, VBE/DDC, VBE/SCI, VBE/CI, VBE/GC, VBE/PM, VBE/FP), available through the PMID. Additionally, support for the following is not mandatory: any of the standard VGA BIOS functions (only VBE3.0 is mandatory), any of the 'get' style of functions, and support for extended text modes.
VBE3.0's only real improvement, again IMHO, is clarifying some parts of VBE2.0. The additional functionality of the new protected mode interface is a nice idea, but IMO they should have improved upon the VBE 2.0 interface rather than making the VBE3.0 PMID and it's overly complicated mess.