diff --git a/doc/Booting.txt b/doc/Booting.txt new file mode 100644 index 0000000..afb181d --- /dev/null +++ b/doc/Booting.txt @@ -0,0 +1,123 @@ +doc/Booting.txt +Copyright (C) 2015 Mikael Pettersson + +This file is part of pdp10-tools. + +pdp10-tools is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +pdp10-tools is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with pdp10-tools. If not, see . + + +PDP10 Boot Sequence +=================== + +PDP6 / KA10 / KI10 +------------------ + +See http://www.inwap.com/pdp10/rim10b.html and the 1970 PDP-10 Reference Manual. +The PDP6 appears to be similar except the the bootstrap loader has to be entered +manually rather than being read from paper tape. + +* a 14-word bootstrap loader is entered into locations 1 to 016 via the data and address + switches on the console and then started at location 1 (PDP6), or loaded and started + via paper tape (KA10 / KI10 "readin mode") +* the bootstrap loader reads data blocks from the paper tape: + - an IOWD, which contains a negated word count and a destination address minus one + - a block of data words, as many as indicated by the initial word count + - a checksum + - a JRST instruction, which is executed to jump to the entry point in the block, + or a new IOWD, which signals the start of another data block + +So the data on the paper tape would be: + +; the RIM10B bootstrap loader (not PDP6) + + +... + + + + +; bootstrap program +; first block + + +... + + +; second block +... +; initial instruction + + +KL10 +---- + +- console loads and runs KLINIT (KL INIT) +- KLINIT does: + 1. loads KL microcode + 2. configures the cache + 3. configured the memory + 4. loads KL bootstrap program from BOOT.EXB located on the book device +- the KL bootstrap program loads and starts the monitor, e.g. PS:MONITR.EXE + +KS10 / KD10 +----------- + +The 8080 console's code resides in PROM. The console boots the KS10 by reading microcode and monitor +from disk (UBA 1, RH11 @ 0776700, unit 0) or tape (UBA 3, RH11 @ 0772440, unit 0), and then starting +the KS10 at address 01000. + +Dolphin / KXF10 +--------------- + +Not specified in available documentation, but the console hardware has similarities +with Jupiter/KC10's console, whose software is based on the KL10 console software, +so it is likely similar in operation. + +Jupiter / KC10 +-------------- + +- console is a PDP-11 compatible microprocessor (Fonz-11 chipset implementing the PDP-11/34 ISA) +- console software based on existing KL10 console software, with adjustments for changes in the + KC10 processor and I/O devices compared to the KL10 +- "hard-core" console stored in 12KB of ROM, loads 38KB "loadable" console from the boot device into RAM +- the loadable console loads a "run-time support program" (RSP) which provides additional functionality + +XKL-1 / Toad-1 +-------------- + +See Chapter 3.3, Processor Initializaition, and Appendix E, TDBoot Command Summary, +in the TOAD-1 System Architecture Reference Manual. + +- microcode loaded from ROM on power-on +- POST +- 256KW Boot ROM at slot 0 section 10, contains TDBoot, DDT, diagnostics and tests +- TDBoot loads an .EXE file, into section 0 (pages 0 to 0777 inclusive), or + pages 01000 up to the highest mentioned in the .EXE; TDBoot sets up a paged address + space, EPT, UPT, SuperSection tables, page map tables, but no CST or SPT. The Boot ROM + is also mapped into sectoin 36. Trap handlers in EPT/UPT are initialized to refer + into the mapped Boot ROM. +- The .EXE is usually loaded from a TOPS-20 to TOPS-10 structure (file system), + default MONITR.EXE.0 +- Alternatively the .EXE can be read from a raw SCSI disk or tape device (no file system involved) + [presumably the .EXE is stored as-is in a sequence of blocks] +- Disks are low-level formatted with 128 word / 576 byte blocks, or 512 word / 2304 byte blocks +- TDBoot settings stored in NVRAM + +Notes +----- + +Booting an alternative monitor/kernel on KL10 and newer would seem to require producing an +.EXE file and storing it in a TOPS-10/TOPS-20 file system on the boot device, or possibly +at the physical start of the boot device. The .EXE would be a container for the kernel, +or a loader which would locate and load the kernel.