kzinti wrote:Using UEFI to boot your OS is no more difficult than using the BIOS. It is different, but the amount of work and complexity is similar.
I would strongly disagree and so would many other programmers, like Linus for one
Some facts to back up:
You can write an ELF loader for BIOS in less than 512 bytes, knowing that everything above 1M is free, and loading is as simple as calling an interrupt where paramter 0x80 is the disk. Installing requires writing one sector to the disk.
You simply cannot do that with UEFI: requires locating f*d up interfaces, handling god-knows what protocols (ImageHandle -> LIP -> SFS -> IOVolume ->DeviceHandle) just to get how your disk can be referred to, memory above 1M is not guaranteed to be free, so you must figure out if UEFI haven't allocated the ELF's memory already, exiting Boot Services etc. etc. etc. The result is a LOT bigger than 512 bytes and installing it is a lot more problematic than just updating a sector, and it can blow up 100x times more ways.
Another simple test: compare a BIOS E820 memory map with an UEFI memory map, and see how much more fragmented it is and how much more memory wasted!
xeyes wrote:What does "don't use the BIOS on screen" mean though?
Don't use BIOS interrupts to print to screen. @Octocontrabass summed up the issues with that pretty nicely.
rdos wrote:Text mode is well defined, the buffer is always at B8000 and it always has 25x80 characters.
Put aside that you can use more coloumns and rows, the address isn't always B8000 either. It is typically B0000 for monochrome modes, but you can also configure it yourself with the VGA registers. It was a quite common practice to change the address when the CRT beam reached a certain scanline, that's why most DOS games have a vertical status bar at the bottom of the screen.
Cheers,
bzt