The NitrOS-9 Boot Process Explained
From NitrOS-9
Typing 'DOS' at the Disk Extended Color BASIC 'OK' prompt on a CoCo loads in track 34 off of the disk. Track 34 consists of 18 total 256 byte sectors; that's 4,608 bytes. Here's what happens when 'DOS' is typed:
- Track 34 gets loaded into address $2600. The first two bytes of the contents at track 34 are 'O' and 'S'. Upon load, execution of code starts at $2602.
- $2602 contains a BRA to the execution point of the REL module.
- REL copies the boot track ($2600 to $3800) to address $ED00, and jumps to another routine inside of REL, at the new address.
- REL then jumps to KRN, which sets up system variables, the system memory map, system call tables, IRQ & SWI setup, and calls BOOT.
- BOOT reads sector $000000 off of a disk, and finds out where the OS9Boot file is.
- BOOT requests system memory for the size of OS9Boot, seeks to where OS9Boot is, and loads it directly into RAM.
- It then returns to KRN, after setting up pointers in low memory to the OS9Boot file.
- KRN links to KRNP2, and jumps into it.
- KRNP2 sets up more system calls, links to the CLOCK module, and calls it.
- CLOCK sets up some more system calls, starts multitasking, and returns to KRNP2.
- KRNP2 then does F$Chain of SYSGO. This prints a start up banner, and runs your 'startup' file through a shell.