The first stage of the project completed! BootX works correctly. It sets up graphical display, shows a familiar Apple logo, loads the kernel and drivers (currently only AppleRAID) and starts up the kernel.
BootX is able to read MacOS X CD (native Apple CD with Apple partition map and HFS+ filesystem) and launch the kernel directly from it.
At this point the whole thing freezes (however this can be not 100% true, i've forgotten to turn on debug mode for the kernel, will try it today).
Now the project enters Stage II. I will connect a bunch of LEDs to the parallel port and play with recompiled OpenDarwin kernel with inserted output of diagnostics codes to these LEDs. This is the simplest way to debug lowlevel stuff, even simpler than using serial port, it requires just one command to perform the output.
I guess i've messed up something with memory relocation in BootX.
BootX still has two noncritical known problems:
1. Direct hardware VGA video driver doesn't work, it sets up the card incorrectly. Fixing it requires lots of time and efforts, i don't have necessary resources. This affects older firmware than 1.2 (so it mainly relates to Pegasos-1 users)
2. Keyboard checking (Cmd-V pressing) is still not implemented (i've just decided to leave it for now, however this is fixable and will be fixed).
Okay, i'll ask my wife to make a video of the bootup process with her cellphone's camera... My DV is in the repair center.
However you won't see much. Just familiar gray Apple logo. :D Okay, i'll make another one, with debug enabled, telling what happens, this could be more entertaning. :)
And i'm going to find a way to commit my work to GIT or somewhere else (if the repository completely broken). I definitely need some good backup.
Yes - no life symptoms from the kernel. Just a black screen in debugging mode. This means the kernel freezes at some early point. Or i pass parameters in a wrong way (messed up with relocations).
Now it's time to actually build a LED dongle for the parallel port...
I know how to access OpenFirmware on the Pegasos. :D BTW, it's not ALT+Apple+O+F.
BootX is started from OpenFirmware then. It loads the kernel, drivers and jumps to the kernel. No more OpenFirmware at this point.
BootX does its job well. Now i'm going to add some debug information output to the kernel in order to see where it dies.