-*- Mode:Text -*-

IOP Software
Bobp, 9/23/86

ROM Kernel
	raw driver for disk, tape, ethernet
	serial ports, console screen
	vectors for default console stream and for each I/O device
	first-level boot: read and load from disk, tape or ethernet

First-level disk/tape/network boot:
	ROM reads boot device into RAM at 0 and executes it.
	Boot reads RAM kernel and relocates it to somewhere in high memory.

RAM kernel
	Real "boot": check FS, print command prompt ...
	Can be loaded from disk, tape or net.
	Provides vectors for:
		read, write and allocate disk space
		generic console I/O stream
	Set up vectors in low memory, or set one vector to point to new table.
	Command shell allows boot, diag etc.
	time out in N seconds defaults to Boot

Boot (K)
	Set up memory structures:
		sysconf, procconf for one processor
			read template from "config" file
			fill in with current info
		shared-device I/O structures for disk, tape etc.
	Set up disk and tape I/O drivers
		interface functionally same as current disk-sharing driver
	Boot K:
		point K at config structure
		set K config reg to "cold boot"
		enable K (sub-debug takes control)
		(what tells it what lisp system to boot?)


Disk format:
	block 0: mini-label
		identifies disk type and parameters
		points to directory
		points to default boot program on disk --
			must be stored in one contiguous disk segment;
			directory update must keep this consistent.

Directory structure:
	header says how big directory and each entry is.
	name (32 chars, maybe plus prefix)
	list of pairs of (starting block, number of blocks)
		max of N segments per directory entry
	block is 8KB
	keep bit-map cache in core
	one dir entry has "I am the boot program" attribute.

Vectors:
	copied to RAM to be patchable; may still call rom directly.
	fixed serial, screen, disk, tape etc. vectors required,
	 or can inquire / set suffice?
	ROM and RAM share vector table; RAM kernel overwrites some ROM vectors on init.

	power-up init (cold init; memory test)
	cold init (reset; init memory)
	warm init (reset stack; assume memory set up)
	debug entry (save state safe from warm init; then warm init)
	r/w virtual console
	inquire / set console type
	r/w serial console port
	r/w screen console device
	r/w network console device
	r/w user-defined console device

	r/w virtual raw disk device
	inquire / set raw disk device
	r/w raw disk
	r/w 1/2" tape
	r/w 1/4" tape
	r/w net?

	r/w virtual file-system device (address by pathname)
	inquire / set virtual fs device
	r/w disk fs
	r/w 1/2" tape fs
	r/w 1/4" tape fs
	r/w net fs?