The chipset takes care that the BIOS ROM appears in address space at the very location where the CPU starts
execution after reset. It must be that way in all architectures, CPUs are nothing without software.
How do you initialize RAM? Well simple (NOT) ... you write some code that can do without stack or storage,
and either probes memory sizes (old style, weird) or uses the chipset's SMbus engine to identify the RAM
array through the SPD data it brings in tiny little EEPROMs on the DIMMs (new style, from PC100 SDRAM on).
So now you know the size and timing of the DIMMs, mingle that with what your board can do, and with these
data fire up the chipset's RAM controller unit. If you got ECC RAM, you need to scrub it, and after that you
can start using RAM. Life is much easier from that point on. Next thing BIOS does is unpack the main POST
program from ROM into RAM, and start it.
BIOS doesn't do "initial hardware check", it does all the initializing, PnP mapping of PCI, ISA and onboard
stuff. Actually, there is little to no functional check in there.
Finally, BIOS doesn't load a file from disk. It has no knowledge about file systems. It loads the master boot
record and starts the program that resides in there - which has been put there by the operating system's
installation procedure. It is this program that then knows where to load the OS kernel from (it does call
BIOS HDD services to read the appropriate sectors from the HDD for that).
regards, Peter