doc/Booting.txt Copyright (C) 2015-2017 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. configures the memory 4. loads KL bootstrap program from BOOT.EXB located on the boot 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 section 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.