Maybe so, but the same binaries can run on anything from ancient 386s to modern threadrippers. Most modern OSes cannot even run on hardware that doesn't support long mode. My OS can boot without BIOS, with legacy BIOS, 32-bit EFI and 64-bit EFI.Ethin wrote: These are obstacles for you in particular. Your OS uses ancient, outdated technologies that no modern OS uses, which is why your running into these problems.
For me, UEFI and BIOS is just a way to launch a real OS. Having to learn how to write an EFI bootloader, how to build it with GCC is just distraction from more useful stuff.Ethin wrote: UEFI has lots of advantages for me: I get to write less assembly, I can implement nice things like braille display HID support as early as the very point when the USB hardware is initialized by the firmware (try doing that in BIOSes, I guarantee you you won't be able to do it), and a lot is standardized that isn't in a BIOS system. Before UEFI came along any form of accessibility -- even the most primitive stuff -- was a pipe dream and it was just known that such a thing would never happen, but it is no longer a pipe dream and can be done with what UEFI provides. It helps that the vast majority of HW vendors *don't* reimplement UEFI and just use EDK II (although a customized form of it). Sadly, many people don't think of accessibility during development and only as an afterthought, which I hope changes soon because that's something that I shouldn't have to make into a legal requirement to get people to do. Anyway. I find UEFI to be a blessing a lot more than a curse, considering what it allows me to do. Secure boot abuse is a problem, but I appreciate the fact that I can set up my own keys and lock down the boot process to things only I want to boot, and I can then reinforce that with extra restrictions of my own when my kernel is launched. I appreciate that I don't have to care about the video mode; I always will have an LFB and that means I don't have to add extra code for text mode unless I want it, and if I want that I might as well just write a GPU driver. I never have to reconstruct any boot environment because I don't care about segments when paging gives me all the benefits of segments and then some.
And I certainly prefer assembly over C. I primarily work with C++ and assembly, but not C. C is just a lazy language for people that cannot write in assembly directly. It lacks the power of assembly and creates unreadable code when low-level stuff is implemented.