Coherent4.2.10/tboot/tboot.c
/*
* tboot.c -- tertiary boot
* This is invoked by the secondary boot to do all the things we can't
* do in just 512 bytes.
*
* Includes an interpreter for builtin commands. Just type "info" or "dir"
* to get disk information, or a directory listing of "/".
*
* Can load an image up to 1 gigabyte in length. Segments can be as
* big as the whole file.
*
* La Monte H. Yarroll <piggy@mwc.com>, September 1991
*/
#include <sys/types.h>
#include <sys/typed.h>
#define MAIN
#include "tboot.h"
#undef MAIN
/* Potentially communicated information from an earlier tboot. */
TYPED_SPACE(boot_gift, 8192, T_FIFO_SIC); /* Static In-Core FIFO. */
main()
{
char cmd_line[BLOCK]; /* Command typed at prompt. */
sys_base = DEF_SYS_BASE; /* Load the kernel here. */
sys_base_set = FALSE;
want_monitor = FALSE; /* Don't invoke mini-monitor before execution. */
verbose_flag = FALSE; /* Don't be verbose. */
puts("\r\nCOHERENT Tertiary boot Version 1.2.6\r\n");
/*
* If autoboot exists, give the user a chance to abort and then
* try to run it.
*/
if (0 != namei("autoboot")) {
puts("Press <SPACE> to abort boot.\r\n");
if( !wait_for_keystroke(WAIT_DELAY, (int) ' ') ) {
interpret("autoboot");
}
}
puts("If installing COHERENT, please type \"begin\".\r\n");
for (;;) {
puts("? ");
gets(cmd_line, BLOCK);
puts("\r\n");
sanity_check("Main command loop");
interpret(cmd_line);
} /* forever */
puts("Unreachable code in main().\r\n");
}