On Mar 21, 2021, at 9:35 AM, Rick Murphy via cctalk
<cctalk at 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