We stated last month that "Projects of great complexity are always uncertain" and then we went on to develop our standalone system. Now we must examine what we accomplished. Recall that last month, we started with an empty 386 residing in protected mode without one shred of reliable code: just three little PC utilities to facilitate software loading and bootstrap operation. Using our protected-mode program loader, we created a minimal 80386 protected-mode standalone C programming environment for operating systems kernel development work. Then we wrote prototype code for various kernel hardware support facilities. Finally, we used our standalone programming environment as a testbed to shake out the bugs in our first-cut implementation of kernel 386 machine-dependent code in preparation for incorporation in the BSD kernel. Following our specification methodology, we created a suitable standalone system and conquered a number of latent software bugs and misconceptions.
With our standalone system, we have essentially established the "base camp" on our 386 expedition. We now possess much of the "gear" (utilities, compiler and assembler, and other equipment) required for such an adventure, but we must check it out and test it prior to actual use. As any good mountaineer knows, thorough knowledge of your equipment could save your life. In this case, an adherence to appropriate testing and coding procedures could save a project.
As we stated earlier, the standalone system can be viewed at this stage as if it were the kernel itself, with the extensions as the basis of our prototype kernel code. We now continue up the base of the mountain, furthering our initial utilities development through the creation of a stable cross-tools environment.