Details on BOOTSTRAP implementation
The BOOTSTRAP button executes a PDT instruction with RWC (c1) set to 11,
Peripheral Control Designation (c2) set from the Contents register,
and SR, AAR, and BAR set from Address register.
The console 'B' command performs the same action but first
sets the Contents register from the first parameter
and the Address register from the second.
Basically, the Contents register provides the peripheral device address
and the Address register provides the memory location where the record is loaded.
Note that BOOTSTRAP is intended only for input devices, but there is
nothing to prevent the operator from entering an output device address.
Such operations do not generally end well, especially when there are no
record marks in memory.
One could even corrupt a tape, punch card, or disk pack by such a mistake.
The length of the "record" is determined by the periphal device and media.
- Card readers load 80 characters from the next (current) card.
- Mag Tape will load from the current tape position until the next IRG is sensed
(Inter Record Gap, i.e. record mark).
- Disk will load the first sector on the first cylinder on the first head.
It is not clear how this was done on real hardware.
It is assumed that the disk controller has been reset,
by using the Initialize button, which restores the heads to cylinder 0
and sets "0" in the head and sector registers.
Note that the computer does not automatically run the loaded record.
The operator must press Run, possibly after performing additional
preparation.
The contents of the bootstrap record is entirely up to the operator/programmer.
It may be a stand-alone program or the first in a series of loaders
eventually running a program, monitor, or operating system.
Depending on the contents of the bootstrap record, additional manual steps
may be required to complete the boot process.
The load/run address must be known and entered before BOOTSTRAP,
although typically that is 0000000.
Because peripherals do not transfer puncuation, some other method must be
used to restore the punctuation to the code before running it.
One method is to prepend the code with SW (and SI) instructions -
which do not require punctuation when used in "format a".
If the bootstrap record contains more sophisticated code,
subsequent loads mey use something like BRT (Binary Run Tape)
formats to restore code and punctuation (and other artifacts).
A real-life (movie) example
In the movie "Billion dollar Brain" (1967), Karl Malden operates
an H200. It's not known exactly what he runs there, as the only
"output" seems to be some "orders" printed on the line printer
(which could come from either the deck of punch cards he loads,
or the mag tape reel he mounts). But he does actually operate
the H200 correctly and it seems that the print-out is actually
the result of his actions on the H200.
The actions he performs are:
- Walks into the machine room with a mag tape and box
of punch cards.
- Mounts the mag tape on a drive.
- Puts the deck of punch cards in the input hopper and presses START.
- Enters "41" into the Contents register on the front panel
(the device address for the card reader).
The Address register is already 00000 (system already Initialized
or at least FP was cleared).
- Presses the BOOTSTRAP button.
- Presses the RUN button.
- Presses the CONTENTS ENTER button
(should be non-functional after pressing RUN).
After this, the line printer starts printing. So, the BOOTSTRAP
should have caused the first punch card to be loaded into address 00000.
RUN would have started executing the bootstrap code.
The bootstrap code either loads another program, or possibly is
itself the code that prints information on the line printer.
We don't know if that information comes from subsequent punch cards or
from the mag tape he mounted.
In the story, it is likely that the
mag tape was meant to contain encrypted data and so perhaps there
was a decryption program on punch cards that processed the data.
Of course, no where does he enter a decryption key so the
data was not really very secure - but one required both the tape
and the deck of cards in order to decrypt it.
A clip of this scene is on YouTube
here.
In the full movie scene, his actions continue:
- Does something to the tape drive,
perhaps as a distraction.
- Removes several cards from the output hopper,
presumably representing the orders just printed.
He folds the cards and slips them into his pocket,
effectivly destroying them ("DO NOT FOLD, SPINDLE OR MUTILATE").
- Takes different cards from his other pocket and
inserts them in the input hopper.
- Presses the START button on the card reader.
- Goes to the line printer to see altered orders.
- Removes a couple pages of printer output, presumably the original orders.
Obviously, the story is that he is clandestinely changing the official orders.
But, this would imply that the orders exist on the punch cards -
which raises questions about why there is a mag tape.
Also, the pages he removes from the printer do not contain the
first orders, but are full of some other text likely not related.
Certainly, the scene was never intended to be scrutinized closely by
computer professionals. But, it does contain a surprisingly
accurate procedure.