> On Mar 21, 2021, at 9:35 AM, Rick Murphy via cctalk <cctalk@classiccmp.org>
> wrote:
> ...
> Trying again - my reply got chopped off for some reason.
>
> You have to read the bootstrap code in the TC0x driver to understand this.
>
> What happens is that the code watches the buffer pointer (7755) and when it
> hits 7642, the remaining read is directed to field 1. The boot is looping on
> 7616/DTSF and 7617/JMP .-1 when it's overwritten by the boot (the NOP below
> overwrites the DTSF).
The details are different, but it reminds me a bit of the magic used in the
bootstrap on the CDC 6000 mainframes. The "deadstart panel" (boot rom
implemented as 12 rows of 12 toggle switches) does a rewind followed by reading
the first tape block into the top of memory. During a read (or write)
instruction, the program counter is temporarily stored in location 0 so it can
be put to work as a buffer pointer instead. The starting address of the read
is arranged so the block read wraps around into location zero, the last word of
the block overwrites the saved PC and causes execution to continue at that
address. Saves two words in the boot ROM.
paul