DTBOOT.MEM - PDP-10/tenex GitHub Wiki
PROGRAMMING SPECIFICATIONS DTBOOT PDP-10 DECTAPE BOOTSTRAP Date: 10-Mar-71 File: DTBOOT.RNO Edition: 2 This document describes the software as of Version 2. The information in this document is subject to change without notice and should not be construed as a commitment by Digital Equipment Corporation. Actual distribution of the software described in this specification will be subject to terms and conditions to be announced at some future date by Digital Equipment Corporation.
TABLE OF CONTENTS Page 1.0 Purpose of DTBOOT 3 2.0 Commands to DTBOOT 3 3.0 Tape Format 5 4.0 Comparison with TENDMP 6 5.0 Compatibility with TOPS10 Monitor 6 6.0 Assembly and READIN of DTBOOT 7 Appendix - DTBOOT Summary for Operators 8
1.0 PURPOSE OF DTBOOT DTBOOT is a bootstrap program intended to transfer programs between PDP-10 core storage and standard format PDP-10 DECtape files, and to perform other utility functions with such DECtapes. DTBOOT requires a PDP-10 central processor and core memory, the PDP-10's console typewriter, a TD10 DECtape control, and at least one DECtape transport. DTBOOT can be assembled for any memory size. DTBOOT is primarily intended to load and run executive mode programs (monitors, diagnostics) from DECtape. The following functions are available: 1. Clear core, load a program, and start it. 2. Load a program without clearing other core areas. 3. Clear core, load a program, but do not start it. 4. Type out a short form of the DECtape's directory. 5. Delete a file from the DECtape. 6. Initialize an empty tape directory, either retaining its existing tape identifier word or supplying a new one. 6. Declare a starting address to be associated with a program to be dumped or started. 8. Dump core onto a DECtape file. 9. Go to the current starting address. A simple command string, with handy defaults, is typed by the operator to control DTBOOT.
2.0 COMMANDS TO DTBOOT The commands for DTBOOT are best described by showing the longest form and then showing the simplifications provided. The full command to load the file TOPS10.SAV from DECtape unit DTA3 is: DTA3:TOPS10.SAV/L The command terminator may be carriage return, or any other control character or ALTMODE. The unit specifier DTA3: is actually examined only for numeric characters, so it can be abbreviated to simply 3:. If a series of commands is performed addressing the same unit, the unit specifier can be omitted on successive commands (unless an error has occurred, causing a BELL typeout). The file extension is assumed to be .SAV unless specified otherwise, and can thus be omitted in the usual case. A blank extension can be specified by typing just the period; e.g., 3:NAME./L. The filename can be omitted, and will then be defaulted according to the following rules: 1. For the tape-writing command, the file name CRASH is assumed. 2. For tape reading, if exactly one file exists on the tape with the extension .SAV, that file's name is assumed. Otherwise, the file name SYSTEM is assumed. The particular action to be performed by DTBOOT is selected by a switch, which is an octal number or single letter that follows a slash (/) at the end of the command. In the first example above, the L is the command switch, meaning Load the program into core from tape. The most common function of DTBOOT is to load and start a program (e.g., the timesharing system), and this action is the default if no switch is typed at all. The non-blank switches, and the actions they cause, are as follows: /L Clear core, load the program from tape, and set the starting address from the tape. /M Same as /L, but do not clear core first, i.e., merge the file into core. /n (where n is an octal number) Set the starting address to n. /D Dump core on tape with the current starting address. /F Type the file directory. /K Kill (delete) the specified file from the tape. /Z Zero the directory of the tape. To set the tape identifier to TAPE99, for instance, type 3:^TAPE99/Z. The uparrow precedes the tape identifier, as in FILEX. Obviously, not all of these commands require all arguments. For example, a filename would be ignored with the /Z command.
3.0 TAPE FORMAT DECtapes read and written by DTBOOT are entirely compatible with the TOPS10 monitor system, and are fully described in the TOPS10 documentation. This section is provided as a summary of that material. DECtape directory information occupies block 144 (octal) of the tape. Words 0 through 122 contain 1105 bytes describing the allocation of blocks 1 through 1101 of the tape. Blocks 1, 2, and 144 are allocated as overhead, blocks 1102 through 1105 are allocated as non-existent. The remaining blocks contain file information (or are free). Words 123 through 150 of the directory contain filenames. Words 151 through 176 contain the corresponding file extensions and dates. (Date fields of files written by DTBOOT are zero.) Word 177 contains the (optional) tape identifier. In each data block, word zero is the link word, allocated as follows: bits 00-17 are the link to the next data block of the file (zero denoting no next block); bits 18-27 contain the block number of the first data block of this file, and bits 29-35 contain a word count of the data words in the remainder of this block. A saved core image, as written by DTBOOT (or TOPS10), consists of blocks of data preceded by a pointer word (minus-count in the left half, address-1 in the right half). A positive word in the place of a pointer word signifies the end of the core-image. The right half of this word is the starting address of the saved program. The left half usually contains the machine instruction JRST which is, in fact, a positive number. This is the method DTBOOT uses. Blocks of a given file may be in any order on the tape. When written by DTBOOT (and the SAVE command of TOPS10), the allocation is as follows: The lowest numbered block available for use is allocated first. (This was a requirement of TENDMP, but is optional for DTBOOT.) Succeeding blocks are allocated with at least one intervening block (whether free or otherwise used) between successive blocks of a file. If required, the same procedure is used to allocate blocks in the reverse direction, starting at block 1101, should the file be long enough to reach that end of the tape, and any skipped blocks become used on the reverse pass. DTBOOT is capable of efficiently reading and writing files allocated in this manner.
4.0 COMPARISON WITH TENDMP It is intended that DTBOOT supersede TENDMP. The only advantages TENDMP holds over DTBOOT are that TENDMP is smaller than DTBOOT, and that TENDMP may be called as a subroutine, without typed commands. DTBOOT lacks this facility. TENDMP will remain available for the rare cases where these advantages require its use. The advantages DTBOOT holds over TENDMP include the following: 1. First and most importantly, the ability to read .SAV files written by TOPS10 which are long enough to "turn around", i.e., which have allocation in both forward and backward direction. 2. Writing files which can be read efficiently by TOPS10, without frequent tape rocking due to allocation of consecutive blocks by TENDMP. (In fact, DTBOOT has the same difficulty reading TENDMP files as TOPS10 does.) 3. More complete DECtape control handling; the ability to turn around from end-zone flags. 4. More nearly standard command strings. 5. Useful defaults. 6. Ability to set tape-identifier words. 5.0 COMPATIBILITY WITH TOPS10 MONITOR There are no known incompatibilities with TOPS10, aside from the failure of DTBOOT to provide dates on output files. 6.0 ASSEMBLY AND READIN OF DTBOOT As with TENDMP and BOOTS, DTBOOT is assembled by MACRO-10 from a single source file onto a paper tape. DTBOOT resides at the top of user core, and thus must be assembled for the proper memory size. The default is for a 64K system. The parameter CORE can be set to the number of words of memory to produce another size of DTBOOT. To assemble 64K DTBOOT, type the MACRO command string: *PTP:_dev:DTBOOT where dev is the device containing the source file of DTBOOT. To assemble 48K DTBOOT, for example, type: *PTP:_TTY:,dev:DTBOOT CORE=140000 ;ASSEMBLE FOR 48K ^Z ^Z DTBOOT is in RIM10B format when on paper tape, and is loaded via READIN at the PDP-10 console. The starting address of DTBOOT is 1000 octal less than CORE. Thus, 64K DTBOOT starts at 177000. There are three blocks (0, 1, 2) available for a bootstrap at the beginning of a PDP-10 DECtape. These 600 octal words, minus a readin pointer and a start word, leave 576 octal for the bootstrap. At present (version 2 of DTBOOT), DTBOOT is 575 words long, and is intended to be stored on DECtape in this area. As yet, the means for writing DTBOOT onto a DECtape's bootstrap area are not yet available.
APPENDIX DTBOOT SUMMARY FOR OPERATORS DTBOOT is loaded from paper tape via the READIN switch on the PDP-10. DTBOOT starts at 77000(32K), 137000(48K), 177000(64K), 237000(80K), etc. COMMANDS DTA3:name.ext/L or 3:name.ext/L SWITCHES none = load and start program /L = load, set starting address, do NOT start /M = merge (load without clearing core first) /number = set starting address to number (octal) /D = dump core and starting address on tape /F = type file directory /K = kill (delete) file /G = go to starting address /Z = zero the tape directory (3:tapeid/Z sets ID) DEFAULTS dev:, initially DTA0:. Otherwise, same as on previous command (unless the bell was rung). name=CRASH for /D. Otherwise, if only one .SAV file on tape, use its name. If more than one .SAV file, use SYSTEM, unless specified. ext = .SAV unless specified. ERRORS The bell will be rung if any error occurs. Possible errors are: tape unit not in remote, not exactly one unit dialed as dev:, parity error on tape, requested file not in directory (try /F), or tape filled up while writing out (/D).