I should note that the motherboard BIOS has only very basic routines on it, just enough to allow the system to access the basic subsystems necessary for operation. memory access routes, boot-up calls and routines, CPU addressing and interrupt methods, bus subsystems calls with flags and IRQ routines, and of course internal drive addressing methods.
Then in the newer boards you have added routines for networking, USB, and graphics access.
That is why Operating Systems exist, to perform higher-level operations that the BIOS alone can not do. Think of the motherboard as a car or truck. The board itself is the physical body of the car, the BIOS is its linkages and control cables, and the CPU is the engine itself.
The Operator controlling the accelerator, brakes and steering is the OS. Trying to control the vehicle with self-correcting mechanisms, throttle controls, automatic braking and steering... well, lets just say that you would not wish to be around such a device on the public streets.
Have to disagree with you about the simplicity of building a useable OS using only BIOS routines.
I prefer to code in Assembly Language. It is difficult, demanding, quite time-consuming, and requires a level of precision that most people simply find too difficult to program well with.
The benefits of using it is that coding using it results in programs that are very, very small -and incredibly fast.
If it was so easy to produce any highly-useable OS written in assembler we would see as many versions of that as there are linux distros.
Don’t see that having occurred yet.
Back in the day I created quite a few custom, small operating systems to run on x86 motherboards. The mobos were very cheap and we used them as custom industrial controllers. This sort of thing is done now using ARM processors and FPGAs... that’s what I play with now.
I always found the basic BIOS routines helpful, much better than taking a raw x86 processor and re-inventing the wheel by coding custom versions of the BIOS routines that were free to use.
It would have been nice back in the old days to have had something like the $35.00 quad-core Raspberry Pi to use.
Four cores at 900mhz, 1080p HDMI graphics accelerator, a GB of fast ram...etc. It seems too good to be true :-)
I enjoy asm coding although mostly I code in C now and use asm for interrupt code or when exact timing is needed. The last major bit of asm I wrote was for the 100mhz ARM core that was the controller inside a run of SD cards. It’s amazing that every SD card has a 32bit CPU more powerful than the early model super computers.
The very best asm coders have OCD.
The best x86 asm coder I know is Steve Gibson.
www.grc.com