I did have a look around at varying opinions on what constituted a bootstrap and they range from;
* Asking the computer to do the impossible - ie, It's an "Inside Joke" - since a computer cannot pick itself up by it's bootstraps
to
* Most computers have two bootstraps - One to initialise the computer and a second to load the operating system.
So I followed Chuck's line and went back... Way back... All the way to the future and found;
https://bitsavers.org/magazines/Computers_And_Automation/195412.pdf ( 1954 )... Which has a glossary, and to which others have referred to as the earliest example of the use of the term Bootstrapping that they found...
Which provides an initial and an updated definition.
Original: (Pre 1954) -
Bootstrap -- Digital Computer Programming. The coded instructions at the beginning of an input tape, together with one or two instructions inserted by switches or buttons into the computer, used to put a routine into the computer.
Updated: (Subsequent edit?)
Bootstrap -- The instructions at the beginning of a program together with a few instructions entered from the control unit, used to put a program into the computer memory.
Of the era, there was no concept of "Operating Systems" as such, and the computer simply ran a "Program". Hence a bootstrap is not the booting process itself, but how you get a program into computer memory... And an OS is just a fancy program. In fact, Program would refer to anything the computer sees as an instruction. And what we regard as a program today is just a subset of the OS.
Which, if extrapolated, would make the first "byte" the computer executes, with the intent of other actions to get a program into the computer, sufficient that it runs. What it does after that, including loading other programs would not appear relevent though I note each step is successively called "Bootstrap" - Which would appear to simply be dilution of the original term to ignore the fact that the program is already running when an OS is present.
I like the second definition - it appears as though they gave some serious thought to the changing technology, but wanted to keep the definition consistent for all time.
It also includes firmware, roms, disk boots and other categories, and gives a clear demarkation - eg, if you load the whole program straight into memory, then there is no bootstrap (eg, ROM based system) and it also includes that it must be minimal, eg, "few instructions" - Not the entire program. The definition allows for both bootstrapped and non bootstrapped computers and provides a clear demarcation between them, albeing to interpret subjectively.
From this, a tree diagram could be created - eg,
Program already loaded when computer boots? - Not a bootstrap.
Program is not in memory when computer boots? - Is a bootstrap.
In my own example, 256 bytes (large, but reasonably a "few") that loads a program, and sets up the Memory Management Unit - As both of these activities are necessary to get the program into the computer's memory, this would reasonably be a bootstrap. The "Control Unit" input in this case is a physical reset button.
The older "rom-based" computers I used to make? No, the program is present at initialisation. It is NOT a bootstrap.
CCP - it has the control unit instructions, but no, it's neither a "few" instructions and it itself is the program, hence not a "Bootstrap"...
This definition has interesting implications for CP/M.
Amstrad series: Disk Sector 0 is bootstrap.
Osborne 1: ROM is bootstrap.
Kaypro: ROM is bootstrap.
As you can tell, the autist in me loves definitions.
Thoughts / criticism / ideas on this welcome?