[Coco] Nitros9 wd1773 boot code
Chester A Patterson
chester6809 at gmail.com
Sun Jul 14 10:51:46 EDT 2013
...I can't be sure if it's all working or not now - I'm now able to get
through most of the boot process, but it fails after "i2xto*W" - don't know
if that's a problem with the nitros9 boot disk image I'm using, or another
subtle emulator error. Can anyone point me to the source code that
documents these boot messages?
Thanks, -Matt...
I got this years ago and it has been very useful. A tip of the hat to Chris
Hawks.
NitrOS-9 Level 2 Booting and Troubleshooting.
by Chris Hawks. 12 May 2006
STEP 1
The modules REL, BOOT, and KRN are loaded into memory from track 34 by the
DOS command. REL ensures that it is located in the correct part of memory,
sets up some of the hardware, clears the screen, and installs the debugging
'print' routine. It prints 'NITROS9 BOOT' in the center of the screen and
jumps to the execution address of the module KRN.
STEP 2
The module KRN uses the debug 'print' routine to put a 'K' on the startup
screen. It validates the modules in memory (REL, BOOT, and KRN) which prints
their names on the startup screen and makes a system call (F$Boot) which
puts a 't' on the startup screen and links the module BOOT. It puts a 'b' on
the startup screen and calls BOOT. BOOT reads LSN0 to find OS9boot and puts
a '0' on the startup screen. BOOT then loads OS9boot and puts a '.' on the
startup screen for each sector read. '$F$Boot' validates all modules in
OS9boot which prints their names to the screen, and puts a second 'b' on the
startup screen. Next KRN links to the INIT module and puts 'i' on the
startup screen. Following this it links to and executes KRNP2, the second
part of the kernel.
STEP 3
KRNP2 puts a '2' on the startup screen, and puts an 'x' on the startup
screen. Then KRNP2 tries to CHD to the system device named in INIT (usually
/DD). Next KRNP2 puts an 'o' on the startup screen and tries to open the
output console named in INIT (usually /TERM). KRNP2 checks for KRNP3 and
runs it if available. Then KRNP2 puts a 'C' on the startup screen and tries
to run the startup module named in INIT, usually SYSGO.
STEP 4
SYSGO opens the output console, prints the NitrOS-9 startup banner and sets
the data and exec directories. SYSGO will execute 'startup' and 'autoexec'
if available (unless you hold the 'shift' key) and finally starts a 'shell'
on the console.
If something goes wrong during the boot, the module will call the 'crash'
routine which will put a '*' and single character on the startup screen.
The '*' indicates that an error occurred and the character's ASCII value
plus 128 is the error number. For instance '*X' would indicate a 'Path Name
Not Found' error. 'X' is ASCII 88, and 88 + 128 = 216, the error code for
'Path Name Not Found'. This is the error we saw when SYSGO was missing from
the root directory of the disk.
So, the start up messages looks something like this:
Krel boot krn
tb0............................................................ bkrnp2 dd d0
rbf rb1773 term w w1 w2 w3 w4 scf cowin clock clock2 init i2xoC
More information about the Coco
mailing list