|
|
1.1 ! root 1: September 1991 ! 2: updated November 1991 ! 3: ! 4: A tertiary boot program is being added to the COHERENT boot sequence. The ! 5: old sequence was bios->master boot->secondary boot->/coherent. The new ! 6: boot sequence is bios->master boot->secondary boot->tertiary boot->/coherent. ! 7: ! 8: The problem with the old boot scheme was that the secondary boot was limited ! 9: to 512 bytes, severely limiting its functionality. ! 10: ! 11: The advantages of the new scheme are: the tertiary boot is written mostly ! 12: in C; the tertiary boot can be as long as 138 blocks. ! 13: ! 14: Writing in C improves maintainability and eases improvements. ! 15: ! 16: The increased size allows greater functionality. Already the new tertiary ! 17: supports much larger kernels. It also includes some handy builtin commands. ! 18: Further expansion could include support for other object formats such as COFF. ! 19: ! 20: The ability to support larger kernels is critical for development of the ! 21: 386 native kernel. ! 22: ! 23: Limitations of Old Secondary Boot ! 24: _________________________________ ! 25: ! 26: The old secondary boot could not load anything from past the first ! 27: 32 megabytes of a partition. This was because it only used 2 byte block ! 28: numbers. ! 29: ! 30: It was also thought to have a length limit of 138 blocks for the l.out file. ! 31: 138 is the 10 direct blocks + the 128 singly indirect blocks. Actually, ! 32: it was capable of loading files up to 256 blocks long. It read 266 block ! 33: numbers--the 10 direct + 128 indirect + first 128 double indirect, but it ! 34: used a 1 byte index into that table. Each segment had to be less than ! 35: 64k. ! 36: ! 37: It defaulted to loading a file called "autoboot". ! 38: ! 39: It was entirely in assembly language. ! 40: ! 41: ! 42: Features and Limitations of New Secondary Boot ! 43: ______________________________________________ ! 44: ! 45: The new secondary boot uses 4 byte block numbers, and can thus load from ! 46: anywhere on a legal partition. ! 47: ! 48: It can load an l.out image up to 138 block long. This covers all 286 ! 49: kernels produced to date. Each segment must be less than 64k. ! 50: ! 51: It defaults to loading a file called "tboot". ! 52: ! 53: It is entirely in assembly language. ! 54: ! 55: ! 56: Features of New Tertiary Boot ! 57: ----------------------------- ! 58: The new tertiary boot can load from anywhere on a legal partition. ! 59: ! 60: It can load an l.out or COFF image up to slightly over 1 gigabyte long. ! 61: Individual segments can be up to the full length of the file. ! 62: ! 63: It includes a builtin "dir" command, and "info" for checking disk geometry. ! 64: ! 65: It defaults to loading a file called "autoboot". Even if "autoboot" is found, ! 66: it is possible to abort the boot by typing any key during a 10 second ! 67: waiting interval. ! 68: ! 69: It is written mostly in C, but has assembly language libraries and startup ! 70: code. ! 71: ! 72: The libraries were designed to facilitate making other bootable utilities. ! 73: ! 74: It is now possible to use open()/read()/close() to access files from tboot ! 75: code. ! 76: ! 77: The base paragraph can be explicitly set, but will automaticly default ! 78: to 0x0060 for l.out files (probably 286 kernels), and 0x0200 for COFF ! 79: files (probably 386 kernels). ! 80: ! 81: There is a mini-monitor available for examining memory. This is ! 82: particularly useful for debugging tboot itself. ! 83: ! 84: It caches disk i/o, greatly speeding the load procedure. ! 85: ! 86: A data structure full of information, called a boot gift, is passed to ! 87: compatable programs. See the file gift.c for more details. Right now, ! 88: some disk geometry information and a command line are passed. ! 89: ! 90: ! 91: La Monte H. Yarroll <[email protected]> ! 92: with many thanks to ! 93: Vladimir Smelyanski <[email protected]> and ! 94: Hal Snyder <[email protected]>.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.