====== OS-9 Level 1 Boot ====== ===== Disk Extended Color BASIC ===== ==== 1.0 ==== Disk Extended Color BASIC 1.0 does not directly support the OS-9 boot track. The OS9L1V1B.DSK contains two files: *.BAS and $82$81 [[*/BAS]] provides a menu to choose Boot or to test the floppy diskette drive. If the disk test is chosen, the [[$82$81/BIN]] is loaded from diskette into address $5000 and started to test the rotation speed of the floppy disk drive to verify it rotates close to 300 revolutions per minute. If boot is chosen, then BASIC DATA statements are poked into address $5000 and started. The boot code is very similar to the DOS command added for Disk Extended Color BASIC 1.1. The user is then prompted to place the OS9L1V1M.DSK master diskette in the floppy disk drive and press a key to continue. ==== 1.1 ==== Place the OS9L1V1M.DSK master disk into the floppy diskette drive, type [[DOS]], press ENTER, and OS-9 begins to boot. == Boot Track == The [[*/BAS]] machine code or the DOS command loads track 34, sectors 1-18 from the the OS9L1V1M.DSK diskette into RAM at address $2600. If the first two bytes of the boot track are 'OS' then the DOS command reads the 16-bit address loaded into $2602 and transfers control to the code there. Between the OS signature, start address, and the beginning of code are the bytes of the OS9 Boot banner shown on the screen. The boot track contains: * OS Signature bytes 'OS' * Start address * OS9 Boot banner text * [[REL]]ocate code * [[OS9]] kernel part 1 module * MPU vectors * [[OS9p2]] kernel part 2 module * [[Init]] module * [[Boot]] module ===== RELocate ===== The [[REL]]ocate code does setup housekeeping: * Configure the SAM for all-RAM mode to move the ROMs out of the way and create a flat 64KB RAM workspace for OS-9 to manage * Configure the SAM to locate the VDG screen RAM at address $8000 * Clear the screen RAM * Copy the OS9 Boot banner text onto the screen * Check to see if this is first boot or a restart after reset * Copy the boot track blocks initially loaded into address $2600 to $3800 into high RAM starting at address $F000 * Jump into the [[OS9]] kernel part 1 module's start address This sequence will crash on a Color Computer 3 due to its new vector page at $FE00 to $FEFF getting overwritten. Later versions of OS-9 change RELocate to copy the boot track one 256-byte page lower, starting at $EF00, to avoid the new vectors page. ===== OS9 ===== The [[OS9]] kernel part 1 module provides core service tables, cold start code, interrupt handlers, module linking and CRC verification, and other essential functions. ===== Vectors ===== This block of data is designed to load into RAM to initialize the address of the 6809 MPU vectors. ===== OS9p2 ===== The [[OS9p2]] kernel part 2 module provides additional memory and process management along with additional core functions. ===== Init ===== The [[init]] module is a small set of configuration data for the OS-9 system such as the first process to start, usually [[SysGo]], the default storage device name such as /[[D0]] or /[[DD]], the initial terminal device name such as /[[TERM]] and the name of the [[Boot]] module. ===== Boot ===== The [[boot]] module provides hardware-specific code to read the OS-9 RBF disk storage layout, find the [[OS9Boot]] file, and begin loading it into memory to initialize each module found in it. ===== OS9Boot ===== The [[OS9Boot]] file is a collection of support modules to provide services to the OS-9 applications run by the user. * [[CCDisk]] - driver for WD17x3 floppy disk drives * [[CCIO]] - driver for the Color Computer console I/O * [[Clock]] - system module for time tracking and task switching * [[D0]] - a device descripter for floppy disk drive 0 * [[D1]] - a device descripter for floppy disk drive 1 * [[D2]] - a device descripter for floppy disk drive 2 * [[D3]] - a device descripter for floppy disk drive 3 * [[IOMan]] - the I/O manager service module handling pathlist management for the kernel * [[PipeMan]] - the Pipe file manager providing interprocess pipe handling * [[Piper]] - the Pipe driver providing interprocess pipe handling * [[Pipe]] - the Pipe device descripter providing interprocess pipe handling * [[PRINTER]] - the printer driver for serial printers attached to the built-in serial port * [[P]] - the printer device descripter for serial printers attached to the built-in serial port * [[RBF]] - the Random Block File manager for block-oriented storage devices * RS232 - the RS-232 serial port driver for terminals or modems attached to the built in serial port * [[SCF]] - the Sequencial Character File manager for character-by-character devices * [[Shell]] - the default command interpreter * [[SysGo]] - the system startup module to spawn the console shell on the default disk and terminal device * [[T1]] - the device descripter for a terminal attached to the built-in serial port * [[TERM]] - the default Color Computer console device descripter ===== SysGo ===== The [[SysGo]] module starts the initial console shell and waits in the background for it to exit, and restart it if this happens. ===== Shell ===== The [[Shell]] module provides a user command line interface, command execution, file system navigation, and I/O stream redirection. ===== Startup ===== By default, the [[startup]] shell procedure loads and runs the [[setime]] module to prompt for the current date and time from /[[TERM]] Users can modify the startup procedure to customize the OS-9 system boot to their preferences. ===== Bootstrap complete ===== The system is ready to use once the OS9: prompt appears. ===== RTS ===== Return to [[:Top:]] or [[:OS-9:]]