
                                 The Kernel
                                 ----------

   The word 'kernel' can mean many different things. In Retro, the kernel
consists of a boot loader and initialization code, some basic display
routines, a module loader, and a few kernel modules.

   The _boot loader_ loads the rest of the kernel from disk.
   The _initialization code_ puts the CPU in protected mode, and does a few
other little things. It also initializes the Object Database.
   The _display routines_ are used mainly for printing error messages.
   The _module loader_ links the modules into the Object Database so they
can be used.
   The _modules_ consist of routines for doing various low-level system
chores, like reading disk drives and getting input from the keyboard. The
routines in one module can use routines from other modules that have already
been loaded. Currently, modules are RDOFF 2.0 object files created by NASM,
and added onto the end of the kernel.

   All kernel objects belong to the root:kern object. There are no
sub-objects in the kernel, because the software it was built with (NASM
under Linux) wasn't really intended for this, and I'm just making do with
it. It's a little messy with 200 functions in one object, but it works fine.
   Eventually, Retro will compile its own kernel, without the limitations of
NASM. Then kernel objects will be more organized, just like normal objects.
The distinction between kernel objects and regular objects will fade.


		Tom Novelli
		March 27, 1999
