Subject: boot block follies
To: None <port-i386@NetBSD.ORG>
From: Perry E. Metzger <perry@piermont.com>
List: port-i386
Date: 12/17/1995 17:42:00
[NOTE: this message is verbose. Mea culpa. If you have opinions on how
the i386 boot blocks should be organized you probably still want to
read this.]

I've been making a small fix to the i386 boot blocks.

As you may have noticed, the length of time you are prompted for boot
arguments is dependent on how fast your machine is and this length has
gotten quite short on modern machines -- I doubt you'll have time to
type anything at all on a 200Mhz Pentium Pro. The reason for this
small problem is the fact that the boot blocks rely on looping 240000
times through ischar() to set their delay.

I've created a new function in arch/i386/boot/bios.S called usleep
that does what you would expect, and I'm altering gets in io.c to use
it to insert 50ms delays instead of relying on ischar().

My questions to the studio audiance:

1) How long, in seconds, should the total time be that you are given
   to type something to the boot prompt before it goes its merry way?
2) There is no single #include file with parameters like this included
   in all the boot code files. Should there be? It would probably be
   better if there was such a thing.
3) The boot software has a number of cosmetic uglynesses.

   a) The boot software is very confusingly named. There is all sorts
      of obsolete stuff created. Why do we still have fdboot, sdboot
      and wdboot when they are all the same? Can anyone think of a
      better name for the two parts than *boot and boot*
      (i.e. bootbios and biosboot), which is damn confusing to any
      sane person? Should these just be named boot1 and boot2 to
      correspond with whats listed in README.386BSD

   b) The boot software is very poorly documented. Stuff like
      README.MACH, README.386BSD, etc, are kind of gross.

   c) The boot_i386 man page bears no resemblance whatsoever to
      reality.

   d) Why are changes to the boot blocks documented in version.c? Why
      are the version numbers of the boot blocks manually updated in
      that file?

   e) what the heck is the arch/i386/stand directory for any more,
      anyway? Is it just obsolete and confusing? Should it go the way
      of The Dodo since it is no longer of any real use at all?

   f) And, of course, is the stuff in netboot anywhere near to still
      being useable?

   g) Speaking of obsolete, how about arch/i386/Makefile...

Perry