Digital PDFs
Documents
Guest
Register
Log In
DEC-9A-MAB0-D
March 1968
134 pages
Original
4.2MB
view
download
Document:
Monitors
Advanced System Software
Order Number:
DEC-9A-MAB0-D
Revision:
Pages:
134
Original Filename:
http://bitsavers.org/pdf/dec/pdp9/DEC-9A-MAB0-D.pdf
OCR Text
DEC-9A -MAB(}-O DIGITAL EQUI PMENT COAPO!=lATION • MAYNAR D, MASSACHUSETTS MONITORS Programmer's Reference Manual ADVANCED Software System Order No. DEC-9A-MABO-D from Program Library, Maynard, Mass. Price $2.00 Direct comments concerning this manual to Software Qual ity Control, Maynard, Mass. DIGITAL EQUIPMENT CORPORATION. MAYNARD, MASSACHUSETTS ()riginal Printing March 1967 Rev ised February 1968 Copyright 1968 by Dig ital Equ ipment Corporation CONTENTS Chapter Page PDP-9 ADVANCED SOFTWARE SYSTEM •••••••••••••••.•••••••••••••••• 1-1 1.1 Introduction .•..•...••......•.••....•.....................•...•. 1-1 1.2 Hardware Requirements •••••••••••••••••••••••••••.••••••••••••••• 1-1 1.3 Monitor Systems ................................................ . 1-2 1. 3. 1 Input/Output Monitor ........................................ . 1-2 1.3.2 Keyboard Mon i tor .••••••••••••... ~ ••••••••••.••••.•••••••••. 1-2 1 .3.3 Input/Output Programming System (lOPS) ••••••••••••••••••••••• 1-3 System Programs .••.•.•.•.•.•.•••.•.••..••••••.•.••.••••••..•...• 1-3 1 .4. 1 FORTRAN IV ••••••••••••••.••••••••••••••••••••••••..•.•••• 1-3 1 .4.2 Macro Assembler (MACRO-9) .•••••••••••••••••••••••••••••••• 1-4 1 .4.3 Debugging System (DDT -9) ••.•••••••••••••••••••••••••••••••• 1-5 1.4.4 Text Editor (EDIT-9) .•.•••••••••••••••••••••••••••••••••• 1-5 1 .4.5 Peripheral Interchange Program (PIP-9) ••••••••••••••••••.•••••• 1-5 1 .4.6 Linking Loader (LINK-9) ••••••••••••••••••••••••••••••••••••• 1-5 1.4.7 PDP-7 Assembly Language to MACRO-9 Assembly Language Converter (CONV -9) ••••••••••••••••••••••••.•••••• 1-6 1 .4.8 System Generator (S GE N-9) .•••••••••••••••.•••••••••••••••••• 1-6 1 .4.9 DUMP (DUMP-9) .................................••......... 1-6 1.4.10 Library Update (UPDATE-9) .•••.•.•••••••••••••••••••••••••••• 1-6 INPUT/OUTPUT MONITOR SYSTEM ••••••••••••••••••••••••••••••••••• 2-1 Input/Output Monitor Functions ••••••••••••••••••••••••••••••••••• 2-1 2.1.1 Data Transmission Paths •••••••••••••••••••••••••••••••••••••• 2-1 2.1.2 Dcta Modes .....•.............••.........•....•...•.......• 2-3 2.1 .3 Device Assignment Tables •••••••••••••••••••••••••••••••••••• 2-5 User Program Commands .••••••••••••••••••••••••••••••••••••••••• 2-5 2.2.1 General Commands •••••••••••••••••••••••••••••••••••••••••• 2-6 2.2.2 Mass Storage Device Commands .••••••••.••••••••••••••••••••• 2-10 2.3 2.4· Device Assignments .....................•......•................. 2-18 Programm i ng wi th User Program Commands .••.•••••••••••••••••••••• 2-19 2.4.1 Defining Line Buffers .....•......•.......•..........•....•.•. 2-20 2.4.2 Specifying Devices Used to the Linking Loader .••.••••••.•.•••.• 2-20 2.4.3 Using Program Commands with MACRO-9 .•••••••••••••••••••••• 2-21 1.4 2. 2. 1 2.2 iii CON TEN T S (continued) Chapter 2.5 Page Loading Programs with the I/O Monitor .••...••••..•••.•••••..••.••. 2-24 2.5.1 FORTRAN IV Compi ler .•.•.•.•••••••.••••••••.••••••••••••••. 2-24 2.5.2 Macro Assembler (MACRO-9) .•••••••••••••••••••••••••••••••• 2-26 2.5.3 PIP-9 (Peripheral Interchange Program) .••••••.•••.•••••.••••••• 2-27 2.5.4 Text Editor (EDIT-9) .•••..•••.•.••••••••••••••••••••••••••• 2-30 2.5.5 Linking Loader (LINK-9) .••.•.•••••••••••••••.••••••••••••••. 2-31 2.5.6 DDT -9 ............................•........................ 2-33 2.5.7 7 -to-9 Converter ••....•.•.••.•••.•••••.•...•.•.••...•..•.... 2-35 Error Detection arid Handling .•••.••••••••••••••••••••.•••••.••••• 2-35 KEYBOARD MONITOR SYSTEM .••.•.••••••••••••••••.•••••••••••••••• 3-1 Keyboard Monitor Func ti ons ....•••••••.•••••••••••.•••••••••••••• 3-1 3.1.1 System Device and Bootstrap •••.•••••••••••••••••••••••••••••• 3-1 3.1 .2 Keyboard Monitor Structure .••.•••.•••••••••••.••••••••••••••• 3-1 Keyboard Commands .•••••.••••••..•.•••••••••••.••••..••.••••••• 3-2 3.2.1 Device Examination, Assignment, and Information Commands •..••. 3-3 3.2.2 Loading System Programs .••.•.••••••••••••••••••••••••••••••• 3-7 3.2.3 Other Keyboard Commands .•••••••••••••••••••••••••••••••••• 3-8 3.3 Programm i ng for Device Independence .••••.•••••••••••••••••••••••• 3-10 3.4 Operating the Keyboard Monitor System .••••••••••••••••••••••••••• 3-10 3.4.1 Loading the Monitor ......................................•.. 3-11 3.4.2 System Generation .......................................... . 3-11 3.4.3 Assign ing Devices ..............•............................ 3-12 3.4.4 Loading Via Console Commands .••••.•.•••.••••••••••••••..••• 3-13 3.4.5 Error Detection and Handling ••••••••.••••••••.••••••••••••••• 3-31 SUMMARY OF COMMANDS ••.••••••••••.••••••••••••••••••••••••••• 4-1 4. 1 Summary of User Program Commands .••••••••••••••••••••••••••••••• 4-1 4.2 System Communication Table (.SCOM) ••.•••••••••••••••••••••••••• 4-4 4.3 Maximum Line Buffer Sizes (Including 2-Word Header) ••.••.•••••.•••• 4-5 4.4 Summary of Keyboard Commands ...••.•••••••••••.••••••••••••••••• 4~6 4.5 Monitor/lOPS Command Table .••••••••••••••••.••••••••••.••.•••• 4-7 4.6 Summary of Standard I/O Handler Features ••.••••••••••••••.•.•.•.•• 2.6 3 3. 1 3.2 4 4.6.1 LPA (647 Line Printer) ••••••••••••••••••••••••••••••••••••••• 4-8 4-8 4.6.2 TTA (TELETYPE) •••••••.••••••••••••••••••••••••••••••••••••. 4-9 iv CON TEN T S (continued) Page Chapter 4.6.3 PP (PAPER TAPE PUNCH) .• 4.6.4 PR (P APER TAPE READER) •••..••••• 4.6.5 DT (DECT APE) • 4.6.6 CD (Card Readers) .•••• 4.6.7 MT (Magnetic Tape) .•.••••••• 4.6.8 DK (Disk) ..........•......................•................ 4-24 4.6.9 DR {Drum} ...•....•.•....•............•.•..........•......•. 4-24 4.6.10 I/O Handlers Acceptable to System Programs •••••••••• 4-24 4.7 0 •••••••• 0 0 ••• 0 ••••••••••••••• 0 0' •• 0 ••••••••••• ••••••••••••••••••••••• o •••••••••• o •••• 0 0 •••••• 0 4-12 •• 4-13 ••••••••• 0' •••••••••••• 4-15 0 0 •••••••••••• 4-20 • 0 ••• 0' ••• 0 •••••••••••••• 0 o • • 00 • • 0 0 ••••• 0' ••••••• 0 • • 4-24 Description of I/O Hardware and API Software Level Handlers ••••••••• 4-28 4.7. 1 110 Dev i ce Hand lers .•..•.•..•••••••••••••••••••..•.•.•••••• 4-28 4.7.2 API Software Leve I Handlers ••.••.•• 4-31 4.7.3 Standard API Channel/Priority Assignments .••••••••••••••• 0 ••••••••••• 0 ••••••••• 0 ••• 0 ••••• 0 • 4-33 A-1 PDP-9 ASCII/HOLLERITH CORRESPONDENCE .•••••••••• .0. A 1-1 A-2 PDP-9 ASCII CHARACTER SET .••.••••••••••••••••••••••••••••••••••••• A2-1 0 0 •• 0 •••• 0 ILLUSTRATIONS Figure 2-1 Line Buffer Structure •••••••••.••.••••.•••••••••••••••.•••.•.••••••••• 2-1 2-2 Format of Header Word Pair. 2-3 5/7 ASCII Packing Scheme •••.•....•...•.•.•..••.•••.•.•.••....••.• 2-2 2-4 2-4 Device Assignment Table for I/O Monitor •••••••••••••••.••.•••.•.••••• 2-19 2-5 Library File Structure •..•.•••••••.••••.•••••••••••.••....••••••••.••• 2-34 3-1 Function of Slots in • OAT for Keyboard Mon itor ••••...••..•.•••••.••.•• 3-12 3-2 Library File Structure •..•.••.•.•..••••.••.••••..•..•••.•..•.•.•••• ~ •• 3-21 3-3 Memory Maps: Bu Ik Storage Systems•.•••.••••••.•••.••••••.•••••....••• 3-32 3-4 Paper Tape System (I/O Mon itor) •......••••••••..••••.•.•...•.•.••.••• 3-39 4-1 lOPS Binary Inpyt Card Format •••.•..••..•.••.••.•••.••..•.••.•.•..••• 4-22 4-2 Structure of API Software Level Handler ••••••••••.••••..........•.•.•.• 4-32 o 0 ••••••••••••• v 0 •••• 0 ••••••••••••••••••••• 0 0 PREFACE This Monitor programmer's reference manual contains information needed to prepare programs for operation in the PDP-9 ADVANCED Software System. Both the I/O Monitor (paper tape systems) and the Keyboard Monitor (bulk storage systems) are described. Chapter 2 contains information essential to programming both Monitors. The following topics should be studied carefully by all PDP-9 programmers: a. Data flow in and out of the user's program, inc luding avai lable data modes (ASCII, binary, etc.) and device assignment tables, which provide the linkage between the user program and the supplied device handlers. b. System I/O macros to perform all I/O functions. Format and use of each instruction is explained. c. Line buffers, through which all data passes between the user's program and the various I/O devices. d. Buffer headers and standard sizes are discussed. Examples of buffers and some typical input/output operations using system macros. For the convenience of PDP-9 ADVANCED Software System programmers, a new operating guide for users of paper tape systems, prepared especially for use at the computer console, is now available. This manual is called "1/0 Monitor Guide" (Paper Tape Systems) Order Number DEC-9TNGAA-D. The I/O Monitor Guide contains all of the essential information needed to operate the system, including detailed loading procedures for system programs, and summaries of console commands. CHAPTER 1 PDP-9 ADVANCED SOFTWARE SYSTEM 1. 1 INTRODUCTION PDP-9 ADVANCED software provides a complete system for program preparation, compilation, assembly, debugging, and operation. It features total relocatabi I ity and can expand to take full advantage of any hardware configuration. Powerful system programs include FORTRAN IV, a sophisticated macro assembler, an on-line debugging system, an on-line editor, and a peripheral interchange program. A versatile and flexible input/output programming system frees the user from the need to create device-handl ing subroutines and the concerns of device timing. Two monitor systems are avai lable with PDP-9 ADVANCED software. The Input/Output Monitor operates on a basic PDP-9 with 8, 192 (or more) words of memory, high-speed paper tape reader and punch, and a console teleprinter. The I/O Monitor operates in a paper tape (or card) environment and provides for the calling and handling of all input and output functions. A more sophisticated Keyboard Monitor is available for systems with bulk auxiliary-storage units. It allows for device-independent programming and automatic creation, calling, and loading of programs. Since the Input/Output Monitor is a subset of the Keyboard Monitor, all programs prepared for use with it can be run on the more sophisticated system. 1.2 HARDWARE REQUIREMENTS To operate the PDP-9 ADVANCED software system under control of the Input/Output Monitor, a basic PDP-9 is required with: a. 8, 192 words of core memory b. 300 c haracter-per-second paper tape reader c. 50 character-per-second paper tape punch d. Console teleprinter (Teletype Model KSR 33 or KSR 35) Extra memory, the Type KE09A Extended Arithmetic Element and the Type KF09A Automatic Priority Interrupt, if present, can also be utilized by this system. A card reader, Type CR02B, can be used for input in addition to the paper tape reader, and a Type 647 Line Printer can be used for listings. To utilize the Keyboard Monitor, some form of bulk storage must be added to the basic PDP-9: a. Type TC02 DECtape Control and two Type TU55 DECtape Transports. b. Type TC59 Magnetic Tape Control and two 7-channel or 9-channel Magnetic Tape Transports (Type TU20, Type TU20A, or equivalent). c. Type RM09 Block Transfer Drum System d. Type RC09 Fixed-Head Disk System Input/output routines wi" be provided for these devices. 1-1 This system, too, can take full advantage of extra memory, central processor options, and additiona I i nput/output options. 1 .3 MONITOR SYSTEMS PDP-9 ADVANCED software monitor systems exist to simplify the handling of input/output functions and to facilitate the creation, debugging, and use of PDP-9 programs. They allow overlapped input/output and computation, simultaneous operation of a number of asynchron()us peripheral devices, and (in the case of the Keyboard Monitor) device-independent programming -- (JII while freeing the user from the need to create device handl ing subroutines. The Monitors, operating in con junction with the Input/Output Programming System (lOPS), provide a complete interface between the user's programs and the peripheral hardware. 1 .3. 1 Input/Output Monitor The Input/Output Monitor accepts I/O commands from the system or IJser programs and super- vises their execution. By call ing upon the device manipulation routines of lOPS, it can allow simultaneous I/O and computation. The I/O Monitor contains: a. Routines for its own initialization and control. b. Tables to allow communication between the Monitor, system programs, user pro- grams, and the Input/Output Programming System. c. The CAL Handler, which is used to dispatch to the approprklte Monitor subroutines. d. Device handlers for the Teletype and clock. The I/O Monitor resides in lower core and occupies about 775 1.3.2 10 loccltions. Keyboard Mon itor The Keyboard Monitor is designed to operate on a PDP-9 system with some form of auxil iary bulk storage (see Hardware Requirements, Section 1.2). It includes all of the fOlcilities of the I/O Monitor plus routines to accept and act upon keyboard commands, the ability to dynamically modify I/O device assignments for a program, and the facilities for automatically storing, calling, loading, and executing system and user programs. With the ability to alter I/O assignments, the Keyboard Monitor brings to the user true device independence. Programs may be swiftly and simply modified to operate on any configuration, and additions to (or deletions from) an existing system need not result in program reassembly or recompilation. The Keyboard Monitor also frees the user from the problems of tape or card handling. At the keyboard console, programs can be created, stored, retrieved, loaded, debugged, and operated. Both system and user programs can be called from the bulk storage device with a few simple keyboard commands. 1-2 1 .3.3 Input/Output Programming System (lOPS) The Input/Output Programming System (lOPS) consists of an I/O control routine (basically a CAL handler) and individual hardware device handling subroutines which process fi Ie and data level commands to the devices. These handlers exist for all standard PDP-9 peripherals (see Section 4.6). The I/O control routine accepts user program commands and transfers control torhe appropriate device handlers. These device handlers are responsible for transferring data between the program and I/O devices, for initiating the reading or writing of files, for the opening and closing of files, and for the performance of all other functions pecu liar to a given hardware device. They are also responsible for ignoring functions of which they are incapable (e.g., trying to rewind a card reader or skipping files on a non-file-oriented device). All device handlers will operate with or without the automatic priority interrupt (API) option. 1 .4 SYSTEM PROGRAMS PDP-9 ADVANCED software systems include either the Input/Output Monitor (basic systems) or the Keyboard Monitor (bulk storage systems), the Input/Output Programming System, and the followi ng system programs: a. FORTRAN IV Compiler, Operating System, and Library. b. Macro Assembler (MACRO-9) c. Debugging System (DDT -9) d. Text Editor (EDIT -9) e. Peripheral Interchange Program (PIP-9) f. Linking Loader (LIN K-9) g. PDP-7 Assembly Language to MACRO-9 Assembly Language Converter (CONV-9) h. System Generator (SGE N-9) } i. DUMP (DUMP-9) j. Library Update (UPDATE-9) With Keyboard Monitor system only A brief introduction to each is given below. 1 .4. 1 FORTRAN IV The PDP-9 FORTRAN IV compiler is a two-pass system which accepts statements written in the FORTRAN IV language and produces a relocatable object code capable of being loaded by the Linking Loader. It is completely compatible with USA FORTRAN IV, as defined in USA Standard X3.9-1966, with the exception of the following features which were modified to allow the compi ler to operate in 8, 192 words of core storage: 1-3 a. Complex arithmetic wi II not be avai lable. b. Adjustable array dimensions will not be allowed. c. Blank Common will be treated as named Common. d. The implied DO feature will be deleted from the DATA statement. e. Spec ification statements must be strictly positioned and ordered. This FORTRAN IV compiler operates with the PDP-9 program interrupt facility enabled. It generates programs that operate with the program interrupt enabled and can work in conjunction with assembly language programs that recognize and service real-time de'.ti(;~~s. Subroutines written in either FORTRAN IV or MACRO-9 assembly language can be loaded with and called by FORTRAN IV main programs. Comprehensive source-language diagnostics are produced during compi lation, and a symbol table is generated for use in on-line debugging with DDT -9. PDP-9 FORTRAN IV is described fully in the PDP-9 ADVANCED Software FORTRAN IV Manual (DEC-9A-AF40-D). 1 .4.2 Macro Assembler (MACRO-9) With the Macro Assembler, PDP-9 users are able to utilize highly sophisticated macro gen- erating and calling facilities within the context of a symbolic assembler. Among the more prominent features of MACRO-9 are: a. The abil ity to 1• defi ne macros 2. define macros within macros (nesting) 3. re-define macros (in or out of macro aefinitions) 4. call macros within macro definitions 5. have macros call themselves (recursion) b. Conditional assembly based on the computational results of symbols or expressions. c. Repeat functions. d. Boolean manipulation. e. Optional octal and symbolic listings. f. Two forms of radix control (octal, decimal) and two text modes (ASCII and 6-bit trimmed ASCII). g. Global symbols for easy linking of separately assembled programs. h. Choice of output format: relocatable, absolute binary (check summed); or full binary capable of being loaded via the hardware READIN switch. i. Ability to call input/output system macros which expand into lOPS calling sequences. MACRO-9 is described in detail in the MACRO-9 Manual (DEC-9A-AM9B-D). 1-4 1 .4.3 Debugging System (DDT -9) DDT-9 provides on-line debugging facilities within the PDP-9 ADVANCED software system. With it, the user may load and operate his program in a real-time environment while maintaining strict control over the running of each section. DDT -9 allows the operator to insert and delete breakpoints, examine and change registers, patch programs, and search for specific constants or word formats. The DDT -9 breakpoint feature allows for the insertion and simultaneous use of up to four breakpoints, and anyone or all of which may be removed with a single keyboard command. The search facility allows the operator to specify a search through any part 'of all of an object program with printout of the locations of all registers that are equal (or unequal) to a spec ified constant. This search feature also works for portions of words as modified by a mask. With DDT -9, registers may be examined and modified in either instruction format or octal code, and addresses may be specified in symbolic relative, octal relative, or octal absolute. Patches may be inserted in either source language or octal. DDT-9 is described more f':Jlly in the PDP-9 Utility Programs Manual (DEC-9A-GUAB-D). 1 .4.4 Text Editor (EDIT -9) The Text Editor of the PDP-9 ADVANCED software system provides the ability to read alpha- numeric text from any input device (paper tape reader, card reader, disk, drum, DECtape, magnetic tape, etc.), to examine and correct it, and to write it on any output device. It can also be used to creat~ new symbol ic programs. The Editor operates on lines of symbolic text delimited by carriage return (CR) characters. These I ines can be read into a buffer, selectively examined, deleted or modified, and written out. New text may be substituted, inserted, or appended. For further details of EDIT-9 see PDP-9 Utility Programs Manual (DEC-9A-GUAB-D). 1 .4.5 Peripheral Interchange Program (PIP-9) The primary function of PIP-9 is to facilitate the manipulation and transfer of data files from any input device to any output device. It can be used to update file descriptions, delete, insert, or combine fi les, perform code conversions, and rewind tapes. Directions for the use of PIP-9 can be found in the PDP-9 Utility Programs Manual (DEC-9AGUAB-D). 1 .4.6 Linking Loader (UNK-9) The Linking Loader loads any PDP-9 FORTRAN IV or MACRO-9 object program which exists in relocatable or absolute format. Among its tasks are loading and relocation of programs, loading of 1-5 called subroutines, retrieval and loading of implied subroutines and lOPS routines, and building and re location of the necessary symbol tables. Its operation is di scussed in the PDP-9 Uti I ity Program Manual (DEC-9A-GUAB-D). 1 .4.7 PDP-7 Assembly Language to MACRO-9 Assembly Language Converter (CONV-9) This system program converts source programs written in PDP-7 or basic PDP-9 assembly lung- uage to a format acceptable to the MACRO-9 assembler. CONV-9 is described more fully in the PDP-9 Utility Programs Manucd (DEC-9A-GUAB-D). 1 .4.8 System Generator (SGEN-9) The System Generator is a standard system program used to create new system tapes. With it, the user can tai lor his system to his installation's needs and spec ify standard inpul" and output devices, memory size, and special I/O and central processor options present. A more complete description of SGEN-9, and details of its use, are given in Section 3.4.4.7. 1.4.9 DUMP (DUMP-9) This system program gives the user the ability to output on any listing device specified core locations that had been preserved on a bulk storage file via the tQ (control key/Q) monitor dump command (see Section 3.2.3.5). 1 .4. 10 Library Update (UPDATE-9) This system program gives the user the capability to examine and updaj"e the library files on file-oriented devices. A more complete description of UPDATE-9, and details of its use, are given in Section 3.4.4.9. 1-6 , CHAPTER 2 INPUT/OUTPUT MONITOR (Paper Tape Systems) 2.1 INPUT/OUTPUT MONITOR..FUNCTIONS The I/O Monitor of the PDP-9 ADVANCED software system simplifies the programming of input and output functions and allows programs to operate, without modifications, in both the Keyboard Monitor environment and the basic paper-tape' environment. It serves as an interface between the system and user programs and the external world of device hardware, drawing upon the routines and capabilities of the Input/Output Programming System (lOPS) to relieve the programmer of writing his own device and data handling subroutines. The I/O Monitor allows simultaneous operation of many I/O peripherals and overlapped computation. The Input/Output Monitor is designed to take advantage of the automatic priority interrupt (API) if it is present on the system. Both the I/O skip chain for the program interrupt control (PIC) and the API channels are set up to handle all devices which have been requested by the user. All unused channels are tied to an error routine to detect spurious interrupts. 2.1.1 Data Transmission Paths Each system or user program must internally set up line buffers for data transmission to or from the external environment (see Section 4.3 for maximum sizes of I ine buffers for I/O devices). Each I ine buffer of n words consists of a two-word header and n-2 words of data. The structure of a line buffer is shown in Figure 2-1 and the header words are detailed in Figure 2-2. Word 0 First Word of Line Buffer Header Word 1 Second Word of Line Buffer Header 'Word 2 First Word of Data Area I 1 Word n-l 1 Last Word of Data Area Figure 2-1 Line Buffer Structure 2-1 o ------8 HEADER, WORD 0 9---11 12 ,13 o V I 14 - - - - - 17 I/O MODE I I = IGNORE CHECK SUM ON INPUT WORD PAIR COUNT, INCLUDING HEADER WORD PAIR FOR lOPS BINARY ONLY } (CORRESPONDS TO 7-9 PUNCH ON BINARY CARDS) VALIDITY BITS: 00"' DATA CORRECT 01 = PARITY ERROR 10 = CHECK SUM ERROR II = SHORT LINE r (BUFFER OVERFLOW) I/O MODE: 0000" lOPS BINARY 000 I = IMAGE BINARY 0010= lOPS ASCII 0100 = DUMP 010 I = EOF (LOGICAL) 011 0" EOM (PHYSICAL) 011 1 = TAPE LABEL * 00 I 1 .. IMAGE ALPHANUMERIC * J * * lOPS AND IMAGE MODES ONLY 0---------------------------------------------------------------------17 HEADER, WORD 1 y CHECK SUM: TWO'S COMPLEMENT OF HEADER WORD 0 PLUS WORDS (0= CHECK SUM NOT COMPUTED) Figure 2-2 DATA Formclt of Header Word Pair 2-2 For output, the program must set the appropriate word pair count in bits 1-8 of word 0 of the I ine buffer header. This count overrides, the one passed on to lOPS by the. WRITE command to the Mon itor. In lOPS binary mode, bits 9-11 should be set to 101 to indicate binary mode if the output de- vice is a card punch. The checksum word (header word 1) may be left blank,since checksums are computed by lOPS. For input, the user should check the validity bits (bits 12 and 13)of word 0 of the line buffer header to determine if the data was read without error. (lOPS sets the appropriate bits if it senses an error. If multiple errors are detected, priority will be given to parity error then to checksum error. It wi II ignore checksum errors on binary input if bit 0 of word 0 of the I ine buffer header, contained on the input medium, is set to 1.) lOPS will set the I/O mode bits (bits 14-17 of word 0 of the line buffer header) to 6 (0110 ) if it senses a physical end-of-medium (such as end-of-tape in the paper-tape reader). 2 The Monitor accepts commands from the system or user program to initiate input to the line buffers and to write out the contents of the I ine buffers. A fu II I ist of these commands is given in Section 2.2. 2.1.2 Data Modes The Input and Output Programming System (lOPS) will allow data transmission to or from a PDP-9 ADVANCED software system program in one of five general forms: Code 2.1.2.1 a. lOPS Binary Mode 0 b. Image Binary Mode 1 c. lOPS ASCII Mode 2 d. Image Alphanumeric Mode 3 e. Dump Mode 4 lOPS Modes - 7-bit ASCII is used throughout the lOPS system to accommodate the entire 128-character revised ASCII set. In lOPS ASCII, all alphanumeric data, whatever, its original form on input (ASCII, Hollerith, etc.) or final form on output, is converted and stored as "5/7 ASCII." 5/7 ASCII refers to the internal packing and storage scheme for ASCII data. Five 7-bit ASCII characters are packed into two consecutive 18-bit binary words, as shown in Figure 2-3. They are stored as binary data on any bulk storage device. It is recommended that a" input requests in lOPS ASCII mode be made with an even word count to accommodate the paired input. 2-3 0 ......t---------l.~6 WORD 0 7+- 1ST CHARACTER .13 2ND CHARACTER ~ 14" 17 3RD CHARACTI;;l ~--------------------~--------------------~--------~ o +--. 2 WORD 113RD 4.---------.9 3 ..... CHARA~~~RI 4TH CHARACTER Figure 2-3 ~ 16 10 .. 5TH CHARACTER 17 I .. l UNUSED 5/7 ASCII Packing Scheme ASCII data is input to or output from lOPS, ordinarily, via the TeletYlpe or paper tape, although it may exist in 5/7 ASCII form on any mass storage device. lOPS ASCII is normally defined as a 7-bit ASCII character with even parity in the eighth (high order) bit, in keeping with USA standards. lOPS performs a parity check on input of lOPS ASCII data prior to the 5/7 packing. On output, lOPS generates the correct parity. (See Appendices I, II.) Non-lOPS ASCII occurs in data originating at a Model 33, 35, or 37 Teletype, without the parity option. This data always appears with the eighth (high order) bit set to 1. Apart from parity checking, the lOPS routines handle lOPS ASCII and non-lOPS ASCII data identically. An alphanumeric line consists of an initial form control character, the body of the line, and a carriage return (CR) or ALT mode. CR (or ALT mode) is a required line terminator in lOPS ASCII mode. Control character scanning is performed for editing or control purposes (see Section 4.6 for affects of control characters on specific devices). lOPS Binary data is blocked in an even number of words, with each block preceded by a twoword header. On paper tape, lOPS binary util izes six bits per frame, with the eighth channel always set to 1, and the seventh channel containing the parity bit (odd parity) for the olrher seven channels. The parity feature supplements the checksumming as a data validity provision in paper tape lOPS binary. Mixed data {both 5/7 ASCII and lOPS Binary} can be accepted as input (generated as output) by adjacent lOPS ASCII and lOPS binary ·READ's (.WRITE's.) 2. 1 .2.2 Dump Mode - Dump Mode data is always binary and is the mode used lro output from or load directly into any core memory area, bypassing use of line buffers. Each dump mode statement has argu- ments defining the core memory area to be dumped. Although dump mode is normally used with bulk storage devices, it is also possible to use it with paper tape output and input. 2. 1 .2.3 Image Modes - Image Mode data is read, written, and stored in the binary or alphanumeric form of the source or terminal device, one character per word. is perm itted, and character scanni ng is generally om itted. 2-4 No conversion, checking, or packing 2.1.3 Device Assignment Tables Both FORTRAN and MACRO-9· coded user programs, as well as the system programs, specify their input and output operations in terms of I/O commands to logical I/O units. One of the Monitor's functions is relating logical units to actual hardware devices. To do so, the I/O Monitor contains a device assignment table (. DAT) whose slot numbers correspond to logical I/O units. Each. DAT slot referenced contains the device unit number (if applicable) and a pointer to the device handler for this device (see Section 2.3 and Figure 2.4). All communications between programs, their line buffers and the actual device handlers are accomplished via. DAT slot numbers. 2.2 USER PROGRAM COMMANDS Requests to the I/O Monitor for input or output functions are initiated by the system or user programs. In FORTRAN IV, these requests are in the form of READ (u); WRITE (U}i READ (u, f)i and WRITE (u, f) statements which are translated by the compiler into the proper calling sequences for the FORTRAN Object-Time System. The FORTRAN Object-Time System, in turn, executes the required Monitor calls. In MACRO-9, these requests are in the form of I/O macros which are written as part of the program and which expand into the proper Monitor calling sequences. User commands available in MACRO-9 programs include: Name . Purpose . INIT Initializes the device and device handler . . READ Transfers data from the device to the line buffer . . WRITE Transfers data from the Iine buffer to the device . • WAIT Detects avai lab i Iity of the user's Iine buffer . .CLOSE Terminates use of a file. . TIMER Calls and util izes real-time clock . . EXIT Returns control to the Monitor . .SEEK Finds file on file-oriented device and begins data input. . ENTER Primes file-oriented device for file ou!put. . CLEAR Initializes file structure on file-oriented device • . MTAPE Provides special commands for IBM-compatible magnetic tape . .TRAN Reads or records user-specified blocks on bulk storage devices, providing the user with the capability to determine the structure of the fi les on the device. • DLETE Deletes file from file-oriented device . . RENAM Renames file on file-oriented device . • FSTAT Checks presence of fi Ie on file-oriented device . 2-5 A complete discussion of these macros, and their expansions, is given in Sections 2.2.1 and 2.2.2. 2.2.1 General Commands The following commands can be used on all devices, whether file-oriented or not. 2.2.1.1 .INIT (Initialize) FORM: .INIT ....... a, F, R VARIABLES: a = Device Assignment Table (.DAT) slot number (in octal radix) o = Input Fi Ie { 1 = Output File F = File Type: R = User Restart Address* EXPANSION: LOC CAL + F7-8 + a 9 - 17 LOC + 1 .1 LOC + 2 R LOC + 3 n /The CAL handller will place the unit /number (if applicable) associated with /. DAT slot ~ into bits 0-2 of this word. ** /Maximum size of line buffer associated /with • DAT slojt ~; i. e., 225 for DEC10 /tape (see Section 4.2)*** DESCRIPTION: The macro .INIT causes the device and device handler associated with. DAT slot a to be initialized • • INIT must be given prior to any I/O commands referencing .DAT slot~; a separate.INIT command must be given for each. DAT slot referenced by the pr09ram. **** Since a . DAT slot may refer to only one type of file (input or output), only one file type specification (0 or 1) may be made in an .INIT statement. If a • DAT slot first references an input file, then an output file (or vice versa), a second. INIT command must be executed to change the transfer direction prior to the actual data transfer command. * Has meaning only for. INIT commands referencing slots used by Teletype (the last. INIT command encountered for any slot referencing the keyboard or teleprinter takes precedence). When the user types tP, control is transferred to R. For example, the Linking Loader takes advantage of this feature to restart the system when a new medium has been placed in the input device. **Has no direct effect upon the user1s program, but should be noted so that no atl'empt will be made to use LOC + 1 as a constant. ***Size is returned by the handler so that the program, in a device-independent environment, can use it to properly set up I ine buffers. ****Each initialized. DAT slot constitutes an open file to the device handler and must be .CLOSEd (Se c t ion 2. 2. 1 • 5) • 2-6 2.2.1.2 .READ FORM: . READ....... a, M, L, W VARIABLES: a = . DAT slot number (octal radix) o = lOPS Binary 1 = Image Binary 2 = lOPS ASCII 3 = Image Alphanumeric 4 = Dump Mode M = Data mode L = Line bu ffer address W = Line buffer word count (decimal radix), including the two-word header EXPANSION: LOC CAL + M _ + a -- LOC + 1 10 LOC + 2 L 6 8 9 17 /CAL Handler will place unit number /(if applicable) into bits 0-2. .DEC LOC + 3 /Decimal radix -W DESCRIPTION: The. READ command is used to transfer the next I ine of data from the device assigned to • DAT slot ~ to the line buffer in the user's program. In this operation, M defines the mode of the data to be transferred (see Section 2. 1 .2 for a discussion of data modes); L is the address of the line buffer; and W is the count of the number of words in the line buffer ( including the two-word header). Since I/O operations and internal data transfers may proceed asynchronously with computation, a . WAIT command (see Section 2.2.·j .4) must be used after a .READ command before the user attempts to use the data in the line buffer or to read another line into it. When a . READ (non-dump mode) has been completed, the program should interrogate bits 12-13 of the first word of the I ine buffer header to ascertain that the line was read without error. Bits 14-17 should be checked for end-of-medium and end-of-file conditions. 2 . 2. 1 . 3 . WR IT E FORM: .WRITE ....... a, M, L, W VARIABLES: a = .DAT slot number (octal radix) M = Data Mode 0= lOPS Binary 1 = Image Binary 2 = lOPS ASCII 3 = Image Alphanumeric 4 = Dump Mode 2-7 L = Line buffer address W:::: Line buffer word count (decimal radix), includinSI the two-word header EXPANSION: LaC CAL + M _ + a 6 8 9 17 LaC + 1 11 LaC + 2 L /The CAL Handler will place the unit /number (if applicable) associated with /. DAT slot ~ into bits 0-2 .DEC LaC + 3 DESCRIPTION: /Decimal radix -W • WRITE is used to transfer a line of data from the user's line buffer to the device associated with. DAT slot a • . WAIT must be used after a • WRITE command, before the Iine buffer is; used again, to insure that the tranfer to the device has been completed. Only in the lOPS binary mode are headers output with the data (bits 9 and 11 of header word o shou Id be set to 1). In image modes the header space cannot be used for data, even though the headers are not written out. The word pair count in the header takes precedence in all modes and must be inserted by the user. For both • READ and • WRITE macros, dump mode causes the transfer of the spec ified core area to or from one record on magnetic or paper tape. One or more blocks on DECtape, disc or drum may be occupied by a single dump command. A subsequent. WRITE in DUMP mode will utilize the unfi II ed portion of the last block. 2.2.1.4 . WAIT FORM: • WAIT ' - I a VARIABLES: a = • DAT s lot number (octal radix) EXPANSION: LaC CAL + a 9 17 LaC + 1 12 /The CAL Handler will place the unit /number (if applicable) associated with /. DAT slot ~ int'o bits 0-2. DESCRIPTION: • WAIT is used to detect the availability of the user's line buffer (being filled by . READ or emptied by • WRITE). If the I ine buffer is available, control is returned to the user immediately after the. WAIT macro expansion (LaC + 2). If the transfer has not been completed, control ;s returned to the . WAIT macro. . WAIT must also be used after the . TRAN command. 2-8 2.2.1.5 .CLOSE FORM: .CLOSEL...Ia VARIABLES: a = • DAT slot number (octal radix) EXPANSION: LaC CAL + a 9 17 . LaC + 1 6 /The CAL Handler will place the unit /(if applicable) associated with. DAT /slot.2 into bits 0-2 DESCRIPTION: Whenever action has been initiated (.INIT or .SEEK or .ENTER) on a file {whether the device is file-oriented or not} this action must be terminated by a • CLOSE command. On input, it is assumed that the user is finished with the file when the .CLOSE macro is used, so the file is closed. On output, all associated output is allowed to finish, and then an EOF I ine is output before the file is finally closed. If ~ refers to a file-oriented device, earlier files of the same name and extension, as currently referenced, will be deleted from its directory providing automatic storage retrieval. 2.2.1.6 . TIMER FORM: . TIMER n, C n = number of clock increments (decimal radix) C = address of subroutine to handle interrupt at end of interval. EXPANSION: LaC CAL LaC + 1 14 LaC + 2 C • DEC LaC + # /Decimal radix -n DESCRIPTION: • TIMER is used to set the real-time clock to n and to start it. Each clock increment represents 1/60 sec for 60 cycle systems and 1/50 sec for 50 cycle systems. C + 1 is the location to which control will be returned when the Monitor has finished servicing the clock interrupt. The coding at C should be in subroutine form; i.e., C o /C + 1 IS REACHED VIA JMS DAC SAVEAC LAC C /DO NOT DBR TO RESTORE LIN K. RAL LAC SAVEAC XIT JMP* C 2-9 so that control will return to the originally-interrupted sequence when the intervc:ll-handling routine has been completed. The Monitor automatically re-enables the interrupt system before transferring control to C + 1. 2.2.1.7 .EXIT FORM: • EXIT EXPANSION: LOC CAL LOC + 1 15 DESCRIPTION: • EXIT provides the standard method for returning to the Monitor after completion of a system or· user pr ogram. In the I/O Monitor environment I it causes a program halt; in the Keyboard Monitor environment, it causes the Keyboard Monitor to be reloaded. When the reloading process has been completed, the Monitor types MONITOR $ on the teleprinter, indicating that it is ready to accept the next command. 2.2.2 Mass Storage Dev i ce Commands The macros · SEEK • ENTER .CLEAR .TRAN • DLETE .RENAM • FSTAT normally apply to the file-oriented devices DECtape (DT), disc (OK), drum (DR), and magnetic tape (MT)i they are ignored by non-file-oriented devices. Another macro, .MTAPE, handles the none-file-oriented functions of magnetic tape (REWIND, BAC KSPACE, etc). If these non-file-oriented commands are given to fi Ie-oriented devices, they are generally ignored by the device-handling routines. Two of the .MTAPE commands (REWIND TO LOAD POINT, BACKSPACE RECORD), however, are bulk storage device independent if encountered prior to a • SEEK or • ENTER command for the referenced device. 2-10 Non-File Oriented DECtape The terms fi Ie oriented and non-file oriented seem to evoke considerable confusion. A DECtape is said to be non-file oriented when it is treated as magnetic tape by issuing the MTAPE commands: REWIND, BAC KSPACE, followed by READ or WRITE. kind is recorded on the tape. No directory or identifying information of any A block of data (255 word maximum), exactly as presented by the 10 user program, is transferred into the handler buffer and recorded at each WRITE command, where the final (256th) word is the "data link" to the next DECtape block of data. with a simulated end-of-file consisting of two words: tape block is 777777. A CLOSE terminates recording 1005, 776773. The data link of this EOF DEC- Note that the simulated end-of-file is identical whether executing a CLOSE in a file oriented or non-file oriented environment. (See Figure 2-2). Because braking on DECtape allows for tape roll, staggered recording of blocks is employed in the PDP-9 ADVANCED Software System to avoid the constant turn-around or time consuming back and forth motion of sequential block recording. When recorded as a non-file oriented DECtape, block ° is the first recorded in the forward direction. Thereafter, every fourth block is recorded until the end of the tape is reached, at which time recording, also staggered, begins in the reverse direction. Four passes over the tape are required to record 576 blocks (0-1077 ). 10 a Just as a REWIND or BACKSPACE command declare a DECtape to be non-file oriented, a SEEK or ENTER implies that a DECtape is to be considered file oriented. The term file oriented means simply that a directory exists on the DECtape to identify as to name and location the files which are recorded on this DECtape. A directory listing of any DECtape so recorded is available via the (L)ist command in PIP-9 or the (D)irect command in KM-9. A fresh directory may be recorded via the (N)ew- dir in KM-9 or Z switch in PIP. The directory occupies the first 200a locations of DECtape block 1008. It is divided into two sections: (1) a 408 word ,Directory Bit Map; and (2) a 1408 word Directory Entry Section. The Directory Bit Map defines block avai labil ity. One bit is allocated for eac h DECtape bits = 32 words). When set to 1, the bit indicates that the DECtape block is occupied 10 10 and may not be used to record new information. block (576 The Directory Entry Section provides for a maximum of 24 files on a DECtape. A four word 10 entry exists for each file on DECtape, where each entry includes the 6-bit trimmed ASCII file name (6 characters maximum), and file name extension (3 characters maximum), a pointer to the first DECtape block of the file, and a file active or present bit. The second 2008 words of DECtape block 10° contain basic directory information (blocks 8 occupied by system programs), used by KM-9, PIP-9 and SGEN-9. * Early versions of the PDP-9 ADVANCED Software System stagger recording on every fifth block. 2-11 DECTAPE DIRECTORY ~ 1 ~Block 0 BIoc k 1077 ----".r- .....I---Directory Bit Map - - 37 40 Entry 0 I-- - - - - - - - - - - - _. - - - - --t.~,.....-- Directory Entry Section ~--------------- Entry 24 177 10 A DIRECTORY ENTRY 0 11 12 56 17 FILE Wd. 0 NAME 2 3 FILE NAME EXTEN SION 1 Data Link (Next File Block) Sign Bit: 1 = File Active Note: Nulls (0) fill in short file names. name extension is not required. A file Additional file information is stored in blocks 71, 72 and 73 of every file oriented DECtape. These are the File Bit Map Blocks. For each file in the Directory a 32 word File Bit Map is reserved 10 in block 71, 72 or 73 as a function of file name position in the Directory Entry Section of block 100. Each block (71, 72, 73) is divided into eight File Bit Map Blocks. A File Bit Map specifies the blocks occupied by that particular file and provides a rapid, convenient method to perform DECtape storage retrieval for deleted or replaced files. Note that a file is ~ deleted until the new one of the same name is completely recorded, i.e., on the CLOSE of the new file. FILE BIT MAP BLOC KS Bloci( 71 Fi Ie Bit Map for Fi Ie 0 File 7 2-12 Block 72 File 8 10 File 15 Block 73 File 16 10 10 File 23 10 When a fresh Directory is written on DECtape, blocks 100, 71, 72 and 73 are always indicated as occupied in the Directory Bit Map. Staggered recording (at least every fourth block) is used on file oriented DECtapes, where the first block to be recorded is determined by examination of the Directory Bit Map for a free block. The first block is always recorded in the forward direction. Thereafter, free blocks are chosen which are at least four beyond the last one recorded. When turnaround is necessary, recording proceeds in the same manner in the opposite direction. When reading, turnaround is determined by examining the data link. If reading has thus far been in the forward direction, and the data link is smaller than the last block read, turnaround is required. If reverse, a block number greater than the last block read impl ies turnaround. A simulated end-of-file terminates every file and consists of a two word header (1 005, 7~773) as the last line recorded. The data link of this final block is 777777. Sections 2.1.1 and 2.1.2 of this manual discuss lOPS data modes. Data organization for each I/O medium is a function of these data modes. On file oriented DECtape there are two forms in which data is recorded: (1) packed lines - lOPS ASCII, lOPS binary, Image ASCII and Image binary; (2) dump mode data - Dump Mode. In lOPS or image modes, each I ine (inc luding header) is packed into the DECtape buffer. A 2s complement checksum is computed and stored for each line of information. When a line is encountered which will exceed the remaining buffer capacity, the buffer is output, after which the new I ine is placed in the empty buffer. No I ine may exceed 254 words, inc luding header, because of 10 the data link and even word requirement of the header word pair count. An end··of-file is recorded on a CLOSE. It is packed in the same manner as any other line, i.e., if the buffer will contain it, fine. Otherwise, it goes into the next free block chosen. In dump mode, the word count is always taken from the I/O macro. If a word count is specified, which is greater than 255 (note that space for the data link must be allowed for again), the 10 DECtape handler wi II transfer 255 word increments into the DECtape buffer and from there to DECtape. 10 2-13 If some number of words less than 255 remain as the final element of the dump mode WRITE, they will 10 be stored in the OECtape buffer, which will then be filled on the next WRITE, or with an EOF if the next command is CLOSE. DECtape storage use is thus optimized in dump mode, since data is stored back to back without headers. 2.2.2.1 .SEEK FORM: . SEE KL...Ja, D VARIABLES: a = .DATslot number (octal radix) D = Address of user directory entry block EXPANSION: DESCRIPTION: LaC CAL + 09-17 LaC + 1 3 LaC + 2 D /The CAL Handler will place unit /number (if applicable) into bits 0-2 • SEE K is used to search the directory of file-oriented device 2...for a desired file and to begin input for subsequent .READ commands. D is a pointer to (i.e., the address of) a three-word entry in the user's program containing the file name and extension information. The device's file directory block is searched for a matching entry and if found, input of the file into the handler's internal buffer begins. If no matching entry is found, control is transferred to an error-handling routine in the Monitor, an error message is printed on the teleprinter and the Monitor resumes control. Execution of the. FSTAT command (2.2.2.8) allows the user to c heck the directory for a named fi Ie and to retain control if it is not found. The entry format in the user's file directory entry block (in core) is as follows: 0 11 12 5 6 17 D N A M 0+1 E 0 0 0+2 E X T File Name: up to six 6-bit trimmed ASCII characters, padded, if necessary, with zero bits. File Name Extension: Up to three 6-bit trimmed ASCII characters, padded with zero bits. The file name is essentially nine characters (six of file name and three of file name extension); the file-searching of the. SEEK command takes into account all nine characters. System programs use predetermined filename extensions in their operation. For example, if FORTRAN IV or MACRO-9 wishes to . SEEK program ABCDEF as source input, it :searches for ABCDEF SRC (ABCOEF, Source). The binary output produced would be named ABCDEF BIN (ABCDEF, Relocatable Binary), while the listings produced would be named ABCDEF LST (ABCDEF, Listing). The Linking Loader, if told to 10adABCDEF, would .SEEK ABCDEFBIN. 2-14 2.2.2.2 .ENTER FORM: .ENTER ....... a, D VARIABLES: a = . DAT slot number (octal radix) D = Address of user directory entry block EXPANSION: LOC CAL + a 9 17 LOC + 1 4 LOC + 2 D /The CAL Handler will place the unit /number (if applicable) associated with /.DAT slot ~ into bits 0-2. DESCRIPTION: • ENTER is used to examine the directory of the device referenced by • DAT slot ~, to find a free four-word directory entry block in which to place the three-word block at D and one word of retrieval information when .CLOSE is later issued. Deletion of earlier files with the same name and ex- tension is performed by the .CLOSE macro. Control is transferred to the error handling routine in the Monitor to output an appropriate error message if there is no available space in the file directory at the time when. ENTER is executed. 2.2.2.3 .CLEAR FORM: .CLEAR ....... a VARIABLES: a = • DAT slot number (octal radix) EXPANSION: LOC CAL + a - 17 9 LOC + 1 5 /The CAL Handler will place the unit /number (if applicable) associated with /.DAT slot a into bits 0-2. DESCRIPTION: .CLEAR is used to initiate the lOPS file structuring of the device referenced by . DAT slot 2. or to re-initialize its existing directory. The directory area and file bit map blocks on the file- structured device are set to O. In order to avoid clearing a directory when its files are still in use, the directory is checked for open fi les. If there are no open files, the directory is cleared; if not, control is transferred to the monitor error handling routine to output an appropriate error message. 2.2.2.4 .MTAPE FORM: .MTAPE ....... a, XX VARIABLES: a == • OAT slot number (octal radix) XX = Number of a magnetic tape function Rewind to load point = 00 Backspace record = 02 Backspace fi Ie = 03 Write end-of-file = 04 Skip record = 05 2-15 Skip file = 06 Skip to logical end-of-tape = 07 Describe tape configuration = 10 --+ 16 7-channel, even parity, 200 BPI = 10 7-channel, even parity, 556 BPI = 11 7-channel, even parity, 800 BPI = 12 9-channel, even parity, 800 BPI = 13 7-channel, odd parity, 200 BPI = 14 7-channel, odd parity, 556 BPI = 15 7-channel, odd parity, 800 BPI == 16 9-channel, odd parity, 800 BPI = 17 EXPANSION: LOC CAL + XX _ + a 9 17 5 8 /The CAL Handler wi" place the unit /number (if apl:>licable) associated with /. DAT slot ~ into bits 0-2. LOC + 1 DESCRIPTION: .MTAPE is used to perform functions unique to non-file-oriented bulk storage devices. In general, these functions are device dependent for non-fi Ie-oriented magnetic: tape. However, two of the functions, REWIND TO LOAD POINT and BAC KSPACE RECORD may be used with any bulk storage device that is to be employed in a non··file-oriented manner. For example, the DECtape Handler is directed to work in a file-oriented mode for a particular. DAT slot if it encounters a • SEEK or . ENTER as the next command after the .INIT command for that • DAT slot. If it encounters . MT APE REWIND or BACKSPACE as the first command after .INIT, it sets up to work in non-file-oriented modes and interprets subsequent . READ and . WRITE commands appropriately. After the mode is establ ished, commands in the other mode must not be executed. 2.2.2.5 .TRAN FORM: . TRAN ....... a, D, B, L1• W VARIABLES: a = . DAT slot number (octal radix) D = Transfer direction Input Forward = 0 Output Forward =1 *Input Reverse = 2 * Output Reverse = 3 B = Device address e. g., block number (octal radix) for DECtape L = Core starting address W = Word count (decimal radix) *DECtape on!y 2-16 EXPANSION: LOC CAL + D _ + a 9 17 7 8 LOC + 1 13 LOC + 2 B LOC + 3 L /The CAL Handler wi" place the unit / number (if appl icabl e) assoc iated with /. DAT slot ~ into bits 0-2. .DEC LOC + 4 DESCRIPTION: /Decimal radix -W . TRAN is employed when the user desires total freedom in data structuring of random access bulk storage devices. It provides the facility to read or record user specified areas on the device. . TRAN should be followed by a . WAIT macro to ensure that the transfer has been completed. 2.2.2.6 .DLETE FORM: . DLETE'-Ia, D VARIABLES: a = . DAT slot number (octal radix) D = Starting address of three-word block of storage in user area containing the file name and extension of the file to be deleted from the device associated with. DAT slot a. EXPANSION: DESCRIPTION: LOC CAL + 1000 + a 9 17 LOC + 1 2 LOC + 2 D /The CAL Handler wi" place the unit /number associated with. DAT slot a . /into bits 0-2 of LOC + 1 . - • DLETE deletes the file specified by the file entry block at D from the device associ- ated with. DAT slot ~ and retrieves the storage blocks released by that file. The contents of the AC wi" be 0 on return if the specified file could not be found. 2.2.2.7 . RENAM FORM: . RENAM '-la, D VARIABLES: a = • DAT slot number (octal radix) D = Starting address of two 3-word blocks of storage in user area containing the file names and extensions of the file to be renamed and the new name, respectively. 2-17 EXPANSION: LOC CAL + 2000 + a9~17 LOC + 1 2 LOC + 2 D /The CAL handler wi II place the unit number /assoc iated with. DA T slot a into bits 0-2 /of LOC + 1 - .RENAM renames the file specified by the file entry block at D with the name in j"he DESCRIPTION: fi Ie entry block at D + 3 on the device assoc iated with . DA T slot 2. The contents of the AC wi II be zero on return, if the file specified at D could not be found. 2.2.2.8 . FSTAT FORM: . FSTAT L....I a, D VARIABLES: a = . DA T slot number (octal radix) D =- Starti ng address of three-word block of storage in user area conta i ning the fi Ie name and extension of the file whose presence on the device associated with .DAT slot a is to be examined. EXPANSION: DESCRI PTI ON: LOC CAL + 3000 + a 9 17 LOC + 1 2 LOC + 2 D* /The CAL handler will place the unit number /associated with. DAT slot a into bits 0-2 /of LOC + 1 - .FSAT checks the status of the file specified by the file enj'ry block at D on the device assoc iated with. DAT slot ~. On return, the AC will contain the first block number of the fi Ie if found. The contents of the AC will be zero on return, if the specified file is not on the device. It is recommended that .FSTAT be used prior to .SEEK, if the user prefers to retain program control when a fi Ie is not found in the Directory. 2.3 Otherwise, control is automatically returned to the Monitor. DEVICE ASSIGNMENTS The device assignment table used by the I/O Monitor is fixed both in length and in the as- signments it conta ins. I t is composed of two sections: the .upper section is for use by system programs; the lower section is referenced by all user programs. The upper portion of the . DA T conto ins 13 slots, referenced as -1 through -15 , The lower 8 section has 8 slots numbered 1 through 10 , The fixed assignments for the device assignment table are 8 shown in Figure 2-4. *Bits 0-2 of LOC + 2 must be set to zero prior to the execution of the CAL at LOC. On return, bits 0-2 of LOC + 2 wi II contain a code indicating the type of device associated with. DAT slot a. 0= Non-file-oriented devices 1 = DECtape (2-7 To be specified) 2-18 These assignments will be changed by Digital as additional peripherals are added to a PDP-9 system. For example, .DAT slot 3 might be associated with a card reader, while .DAT slot 4 could be assigned to a line printer. 2.4 PROGRAMMING WITH USER PROGRAM COMMANDS In the FORTRAN IV system, I/O commands, READ (u), WRITE (u), READ (u, f), WRITE (u, f), automatically generate cal~s to the FORTRAN IV Object-Time System, which performs data level I/O via .DATslotu. In MACRO-9 programs, the user program commands (discussed above) must be used expl ic itly. . DATBG USE DEVICE HANDLER* -15 Paper Tape Punch (PPA. ) Editor and Converter Output -14 Paper Tape Reader (PRA. ) Editor and Converter Input -13 Paper Tape Punch (PPB. ) MACR 0-9, FORTRAN IV Output -12 TTY Printer (TTA. ) MACRO-9, FORTRAN IV and Converter Listi ng -11 Paper Tape Reader (PRB. ) MACRO-9, FORTRAN IV Input -10 Paper Tape Reader (PRA. ) DDT -9 Input and Editor, MACRO-9 Secondary Input -7 0 -6 Paper Tape Punch -5 0 -4 Paper Tape Reader (PRA. ) System Input (Li nk i ng Loader) -3 TTY Printer (TTA. ) Teleprinter Output -2 TTY Keyboard (TT A.) Keyboard Input -1 Paper Tape Reader (PRA. ) System Device (Linking Loader) .DAT .DAT TTY Printer (TTA. ) Teleprinter Output 2 TTY Keyboard (TT A.) Keyboard Input 3 Paper Tape Reader (PRA. ) Input 4 TTY Printer (TTA. ) Listi ng 5 Paper Tape Punch (PPA. ) Output 6 Paper Tape Reader (PRA. ) Scratch • DAT SLOT Figure 2-4 Not Used (PPA.) DDT -9 Output Not Used Device Assignment Table for I/O Monitor *See Section 4.6 for a description of the handlers. 2-19 ·DAT SLOT DEVICE HANDLER* USE 7 Paper Tape Punch (PPA. ) Scratc h 10 Paper Tape Reader (PRA. ) Scratc h .DATND = . Figure 2-4 2.4.1 Device Assignment Table for I/O Monitor (cont) Defining Line Buffers Each device (.DAT slot) to be utilized in a user program should have at least one line buffer associated with it. This buffer(s) is used to set up output lines, before their transmittal to the output device, or to receive input lines from the associated input device. Line buffers are internal to the user's program and must be defined and tagged within it. Th.e • BLOC K pseudo-·op can be used to reserve space for a I ine buffer; the tag is necessary to allow referencing by . READ or . WRITE macros. Section 4.3 shows the maximum sizes for I ine buffers. EXAMPLES (all examples assume decimal radix): LINEIN . BLOCK 52 /creates 52-word line buffer named LINEIN LINOUT .BLOCK 52 / creates 52-word I ine buffer named LINOUT 2.4.2 Specifying Devices Used to the Linking Loader Whenever a MACRO-9 program wishes to utilize the user program commands discussed above, a pseudo-op (.IODEV) must appear somewhere in the program to specify to the Linking Loader which . DAT slots wi" be used. The appearance of this pseudo-op causes a code to be generated; the Linking Loader recognrzes this code and employs it in loading the appropriate device hClndling routines. (FORTRAN IV programs cause the compiler to generate this code based on the units specified in the READ and WRITE statements. EXAMPLE: .IODEV 3, 5, 6 The macro assembly language program containing this statement can utilize. DAT slots 3, 5, and 6. The Linking Loader then calls for the device handlers specified by these slots; if a slot caller! by a user program is unassigned (has not been set up at system generation or ASSIGN time), an error message wi" result. *See Section 4.6 for a description of the handlers. 2-20 2.4.3 Using Program Commands with MACRO-9 . In addition to setting up line buffers within its own area and informing the Loader of the. DAT slots it will use, a MACRO-9 program must also initialize its devices and device handlers via .INIT commands and call for input or output via. READ or . WRITE commands. Consider the following example, where input will be read from the device specified by . DAT slot 3, and output will be to the device specified by . DAT slot 5. It is assumed that the devices are not file-oriented, and only the I/O and related commands are shown. be set to the word pair count (i. e., 26 10 Note that bits 1-8 of LINOUT must ) before the . WRITE at OUT is executed. Bits 9 and 11 of LINOUT should be set to 1 to indicate binary mode. EXAMPLE: .IODEV 3, SOURCE = 3 OBJECT = 5 · BLOCK 52 · BLOCK 52 .INIT SOURCE, 0, R • INIT OBJECT, 1, R LINEIN LINOUT IN /SET UP INPUT LINE BUFFER /SET UP OUTPUT LINE BUFFER /INITIALIZE INPUT (R=RESTART ADDRESS) /INITIALIZE OUTPUT (R=REST ART ADDRESS) .READ SOURCE, 2, LINEIN, 52/READ STATEMENT IN lOPS ASCII • WAIT SOURCE • WRITE OBJECT, 0, LINOUT ,52/WRITE STATEMENT IN lOPS BINARY OUT • WAIT OBJECT .CLOSE OBJECT .CLOSE SOURCE /TERMINATE OUTPUT /TERMINATE INPUT .EXIT Notice that the input mode is specified as lOPS ASCII (2), while output is lOPS Binary (0). The user restart address, R, specified in the .INIT commands, is ignored unless the device is the Teletype keyboard or pri nter. It is important, also, to note that double or triple buffering is left to the discretion of the user. The following example shows a means of double buffering an input device. 2-21 EXAMPLE: /THIS PROGRAM READS IN lOPS BINARY MODE /THE INPUT DEVICE ASSOCIATED WITH. DAT /SLOT 3 UNTIL THE END OF MEDIUM /IS SENSED. · IODEV 3 . INIT 3,0, R START /INITIALIZE INPUT DEVICE . LAC LNBUF /SET UP BUFFER POINTER DAC LNBUFP /TO POINT TO BUFFER #1. LAC LNBUF2 /SET UP SECOND .READ DAC READ 2+2 /TO READ IN TO BUFFER #2. . READ 3,O,L1BUFF,52 /READ INTO BUFFER #1 . WAIT /. WAIT ON READ · WAIT 3 LAC* LNBUFP /CHECK FOR END OF AND (17 /MEDIUM SAD (6 JMP EOM /END OF MEDIUM LAC* LNBUFP /CHEC K FOR CHEC KSUM, AND (60 /PARITY, SHORT BUFFER SZA /ERRORS .. JMP ERROR /VALIDITY ERROR. . READ 3,O,X, 52 READ 2 /READ INTO BUFFER X . /THIS SPACE /RESERVED TO /PROCESS LINE BUFFER / ALREADY IN. LAC READ2+2 /SET UP TO PROCESS DAC LNBUFP /BUFFER X. SAD LNBUF /SWITCH .READ AT JMP DBLRD1 /READ 2 TO INPUT LAC LNBUF /INTO OTHER BUFFER DAC READ2+2 DBLRD2 /(NOT X). JMP WAIT /GO TO .WAIT LAC LNBUF2 DBLRD1 JMP DBLRD2 .CLOSE 3 EOM /CLEAN UP ON /END OF MEDIUM. · EXIT LNBUF L1 BUFF LNBUF2 L2BUFF LNBUFP L1BUFF .BLOCK L2BUFF .BLOCK o / ADDRESS OF LINE BUFFER #1 . 52 / ADDRESS OF LINE BUFFER :#2. 52 /BUFFER PROCESSING POIt'--ITER. 2-22 If the input and output devices had been file-oriented, the,. SEE K, and. ENTER commands wou Id have been used. EXAMPLE: LINEIN LINOUT IN .IODEV 3, 5, 6 .BLOCK 52 .BLOCK 52 .INIT 3, a, R • INIT 5, 1, R · •SEE K 3, FILEA · .READ 3, 2, LINEIN, 52 · /INPUT LINE BUFFER /OUTPUT LINE BUFFER /INITIALIZE INPUT /INITIALIZE OUTPUT /LOCATE FILEA /READ FILEA INTO LINEIN. .WAIT 3 OUT .ENTER 5, FILEB •WRITE 5, a, LINOUT, 52 · /LOCATE FILE /WRITE .WAIT 5 .CLOSE 3 .CLOSE 5 .EXIT /CLOSE INPUT FILE /CLOSE OUTPUT FILE If the user had wished to dump a section of core onto (non-file-oriented) device 5, .IODEV 5 COUNTl = 1000 .INIT 5, 3, R /INIT FOR DUMP · · .WRITE 5, 4, DUMP, COUNTl /DUMP COMMAND .WAIT 5 .CLOSE 5 .EXIT In th is example, the •WRITE command spec ified dump mode (4) and the start (DUMP) and size (COIJNTl) of the area to be output. The result of this section of coding is the dumping on device 5 of 1000 words from DUMP to DUMP + 999. 2-23 2.5 LOADING PROGRAMS WITH THE I/O MONITOR In the paper tape system, each system program, accompanied by the necessary I/O device handlers and an appropriate version of the I/O Monitor, resides on a separate paper tape in absolute format. The eight system tapes supplied are: FORTRAN IV MACRO-9 PIP-9 Editor (EDIT -9) link ing Loader (LIN K-9) DDT -9 (without Patch Fife Capabilities) DDT -9 (with Patch File Capabilities) 7-TO-9 CONVERTER (CONV-9) See Figure 3-4 for Memory Maps of I/O Monitor System. At the beginning of each tape is a Bootstrap Loader in hardware READIN mode. By setting the starting address of the Loader* on the console address switches, depressing I/O RESET, and then depressing the READIN switch, these system tapes may be loaded. Since the tape also contain appropriate versions of the I/O Monitor and the necessary I/O device handlers, the system programs (FORTRAN IV, MACRO-9, Editor, CONV·-9 and PIP-9) can be loaded, ready for operation, in a single step. User programs, however, normally exist in relocatable form, as output from FORTRAN IV or MACRO-9i these tapes do not contain copies of the I/O Monitor. To load these programs, a copy of the linking Loader or DDT -9, should be loaded first. The version of the I/O Monitor (including the device handlers) contained on the Linking Loader or DDT -9 tape may be used with user programs, and the Linking Loader or DDT -9 can be used to load the necessary device handlers as well as the object programs. Once the system program (FORTRAN IV, MACRO-9, Editor, CONV-9, PIP-9 or Linking Loader/DDT -9) has been loaded and takes control, the individual operating procedures (Section 2.5. 1 through 2.5.7) come into use. 2.5. 1 FORTRAN IV Compiler When FORTRAN IV is loaded and ready for operation, it prints the fol lowing statement on the teleprinter: FORTRAN 4 > *17720 for 8, 192-word systems, 37720 for 16,384 words, 57720 for 24,576 words, and 77720 for 32,768 words. 2-24 This indicates that FORTRAN IV is ready to accept a command string {on the same line as the >} telling it what action to take. At this point, the user should set up the input device for pass I of the source tape (if the input device is the paper tape reader, the tape-feed control should be depressed momentarily after that tape is in the reader to c lear the reader-out-of-tape flag). The format expected by the FORTRAN IV command string processor is as follows: Options 0, S, L, B Terminator File Name FILEX, or ALT mode ...-. where o = object listing S = symbol map L = source Iisti ng B = binary l L must be a legal FORTRAN name return control to monitor after compiling current program. indicates batch compi lation; after compil ing current program, types FORTRAN 4 > and waits for next command string. Default Assumptions NO object Listing NO symbo I map NO source listing NO binary The op~ions desired may appear in any order, separated by commas and terminated bY4--' If default conditions are wanted, + - is sufficient, with the sole output being compiler diagnostics on the te lepri nter. The comma after the fi Ie name is absol ute Iy essential. Rubouts may be used to de lete unwanted characters prior to typing the command string terminator. At the end of pass 1 {when the END statement is encountered for the first time}, FORTRAN IV indicates: END PASS 1 This allows the user to prepare his input device for pass 2 (if the input device is the paper tape reader, depressing the tape-feed control after loading the source tape will again clear the flag). The second pass is then initiated by typing: tP If the input device is a form of bulk storage (DECtape, magnetic tape, drum, or disc) FORTRAN IV automatically starts pass 2 without operator intervention. 2-25 NOTE: At the end of pass 1 when FORTRAN IV or MACRO-9 is waiting for a t P to begin pass 2, two (2) tPs will force control to pass 1. Something must be in the reader during the interval between the two t Ps. 2.5.2 Macro Assembler (MACRO-9) When MACRO-9 is loaded and reay to accept the command string from the keyboard, it indi- cates readiness by typing on the teleprinter MACRO > At this point the user should set up the input device for pass 1 (if the paper tape reader, momentarily depresses the tape feed control to clear reader-out-of-tape flag). The format expected by the MACRO-9 command string processor is as fed lows: Options File Name S, L, B, P 4 - - FILEX Terrn i nator ~ or ALT mode L where return control to monitor after assembl in~, current program. B = binary L :=; listing S = symbol table (on listing device) P = secondary input is to be used return to MACRO··9 after assembling current program, types MACRO > and waits for next assembly command string. Default Assumptions NO binary NO symbol table No assembly listing - if no assembly listing requested, all errors will he listed on the teleprinter. N a secondary input The options may appear in any order, separated by commas and terminClted bY4---. If no options are wanted, '4-- is sufficient and the sole output will be assembly error messages on the teleprinter. Rubouts may be used to delete unwanted characters, prior to typing the command string terminator. If this is a multi-medium assembly (where the first n mediums are terminated with. EaT and the last is terminated with. END), MACRO-9 indicates the end of each segment by typing. EaT on the teleprinter. This allows the user to prepare for the next segment of his input (if paper tape reader, de- press the tape-feed control) and then type tP. 2-26 At the end of pass I (. END encountered for the first time), MACRO-9 outputs PASS 1 COMPLETED on the teleprinter. This tells the user to prepare the input device for the beginning of poss 2 (if paper tape reader depress the tape-feed control) and then type t P. If the input dev ice is bulk storage (DECtape, magnetic tape, disk, drum) and .EOT was not encountered during pass 1, MACRO-9 automatically starts processing pass 2 without receiving a tP from the Teletype keyboard. A secondary input is allowed at assembly time. This must contain only direct assignment statements, and is specified by writing "PI! (for parameter tape) in the command string. Format of Secondary Input. must terminate with-..!. EOT ;,. an additional ~ Secondary input must consist of direct assignments only, and If the secondary input is assigned to the Teletype, the user must type (for double buffering purposes) or may terminate with t D. The parameter tape will be inputted in pass 1 only, and not in pass 2. Secondary input is useful, for example, to enter octal codes of lOTs deleted from the Permanent Symbol Table, such as: PSF=700201 RSB=700144 2.5.3 PIP-9 (Peripheral Interchange Program) PIP-9 is a utility program in the PDP-9 ADVANCED Software System used to transfer data fi les from one standard peripheral storage device to another. descriptions, rename, delete, insert and combine files. During transfer, PIP-9 can update fi Ie Since automatic storage retrieval is a standard function of the Monitor I/O Handlers, no provision for it is necessary in PIP-9. PIP-9 operates under control of the Monitor, using the Monitor I/O Handler routines. The user directs PIP-9 functions by typing Teletype commands. When PIP-9 is loaded and ready for operation, it outputs the following on the teleprinter. PIP > This indicates that PIP is ready to accept a keyboard command typed on the same line as the right angle bracket (». At this point, the user should prepare the I/O devices required in the operation and then type the PIP command. Successful completion and readiness for the next comm~nd is normally acknowledged by > unless there has been intermediate output ot the teleprinter by PIP. In the latter case, PIP > is output once again for ease of late printout examination. 2-27 The general format of a PIP command string is as follows. F DDU:FILEl ;EX1, FILE2;EX2(S)4--SDU:FILE3;EX3 terminated by a carriage return or ALT mode. Colon (:) and semicolon (;) are noit required to delimit the device and file names, respectively. A space may be used instead of a ":" or ";11. Spaces are mean- ingless elsewhere in the command string and may be used freely except within the body of the device or fi Ie names. F is a function character T = transfer fi Ie L = list directory D = delete file C = copy N = rename file DDU is the destination device (and unit if applicable) PR = paper tape reader PP = paper tape punch TT = teletype LP = I ine printer D Tu = DECtape MTu = Magnetic tape CD = card reader DRu = drum DKu = disk FILEN;EXN are the file names and extensions involved in the operations (they are omitted if device is not file oriented) S indicates the switch options A = lOPS ASCII B = lOPS binary I = Image alphanumeric H = Image bin~ry D = Dump W = strip. EaT from lOPS ASCII input or W = strip EOF from lOPS binary input C = convert multiple spaces to tabs S = create new system directory Z = zero out directory 2-28 E = directs PIP to convert horizontal tabs to spaces for off-line listing on Model 33 Teletypes. It may be used only with lOPS ASCII (A) as the data mode. T PP..-DTl FILEA SRC (AE) ~ will punch FILEA on paper tape, with spaces instead of horizontal tabs. Example: G = directs PIP examine input parity, allowing the user to modify input lines in error from the teletype. It is legal with lOPS ASCII only. On the occurrence of an input parity error, PIP always displays the following message on the teletype: INPUT PARITY ERROR If the G switch has been omitted from the input string, control returns immediately to the Monitor at this point. However, with the G switch on, the line in error is also typed out and the user may take one of four possible actions: a. The line may be deleted by typing D~ b. The I ine may be accepted as is by typing c. The line may be replaced by typing a new line to replace the one in error, followed by a carr iage return. d. PIP may be restarted by typi ng tP tP Example: T DTl FILEA SRC (AG)+-PR,. SDU is the source device (and unit if applicable) (same options as DDU) Use of ALT mode to terminate a command string, forces PIP-9 to exit to the Monitor upon successfu I compl etion of the command. Use of carriage return as the term inator causes PIP-9 to wait for another command upon completion of the current one. Correction Procedures = Procedures avai lable for command string corrections are o. The rubout (RO) key deletes the input character immediately preceding. for each RO input. b. A \ is echoed tu deletes the entire input line. The user begins the line from the first input character. When PIP-9 detects a command string error, the questionable command string is output up to but not including the offending character or element followed by II? II, requiring correct completion by the user. If the user prefers to retype the command, a carriage return will in this instance signal PIP-9 to accept a new command from the beginning. The character RO and tu may not be used since the Teletype handler (which no longer has access to the erroneous command string) and not PIP-9 interprets and acts upon Ra and t U. A task may be aborted and PIP-9 restarted by typing in the tP character at any time. a secondary use in PIP-9 which is to indicate loading of the next in a series of paper tapes. 2-29 tP has For example, at the end of each of several paper tapes to be combined into one output file, PIP-9 will output to the teleprinter tp, informing the user that he may load the next paper tape and type tP for PIP-9 continuation. Refer to the PDP-9 Uti I ity Systems Manual (DEC-9A-GUAB-D) for detai led descriptions of all the functions available accompanied by pertinent examples. 2.5.4 Text Editor (EDIT -9) When the Text Editor is loaded and ready to accept an input command string, it prints EDITOR > on the Teletype. If the input device is the paper tape reader, the user should 10(Jd the tape be be edited, then momentari Iy depress the tape-feed control button to c Iear the reader-out-of-tape flag. At this point the user may type OPEN FILNME EXT ~ or ) The first format (OPEN FILNME ~XT ). ) is used when a current file, called FILI'IME with an extension EXT (SRC is assumed if the extension is ~mitted) is on the device associated with. OAT slot -14 and is to be modified. The editing process results in a new file, with a temporary name, being created on the device assoc iated with. OAT slot -15. At the end of the editing process, the temporary file in the device associated with. OAT slot -15 replaces FILNME EXT (and is renamed FILNME EXT) on the device associated with. OAT slot -14. Of course, this replacement only occurs when both devices (.DAT slot -14 and -15) are bulk storage. Otherwise the final output is on . OAT slot -15. The second format (CR) is used when a new file is to be created via Teletype keyboard input on . the device assoc iated with • OAT slot -15. If the devices assoc iated with . OAT s.lots -14 and -15 are both bulk storage, at the end of the editing process, the temporary file on . OAT slot -15 will be written onto • OAT slot -14 with the file name and extension specified in the command string of the CLOSE command to the Editor. Whenever the Editor is waiting for a command from the keyboard, it indicates th is by outputting > on the teleprinter. The CLOSE command to the Editor closes the current file and causes the Editor to cycle back to its initial printout EDITOR > 2-30 The EXIT command to the Editor causes a . EXIT return to the MONITOR. 2.5.5 Linking Loader (UNK-9) When the Linking Loader is loaded into core and is ready to accept an input command string from the keyboard, it will type: LOADER > on the Teletype. At this point, the input device should be set up. If it is the paper tape reader, the tape-feed control button should be depressed momentarily, after the paper tape is loaded, to clear the reader-out-of-tape fl ag. The input command string to the Linking Loader should consist of the list of file names of all programs to be unconditionally loaded from the system input device (. DAT slot -4). The file names specified to the Linking Loader should agree with the names originally used in the FORTRAN IV compilation or MACRO-9 assembly of the programs; they should be typed on the Teletype keyboard in the following format LOADER >NAME 1, NAME 2, NAME 3 ~ >NAME 4, NAME 5 (ALT MODE) The main program must be requested first, fol-Iowed by any desired subprograms. The file names should be one to six characters in length, with any characters over six being ignored. Only the file names should be specified; the Linking Loader will automatically assume that the file name extension is BIN (relocatable binary) and will search on both file name and extension. A file name, in the input command string, is terminated by a comma (,), a carriage return (,.), or an ALT MODE. Unti lone of these three characters is encountered, n rubouts may be used to delete the previous n characters of the file name. ALT MODE terminates the input command string, and carriage return (#) causes the LOADER to echo a line feed 0), close angle bracket (», so that the following format may also be used >NAME 1 ~ >NAME 2~ >NAME (ALT MODE) When the input device is not file-oriented, n commas, followed by the ALT mode character, prepares the Linking Loader to load n+l programs from the system input device. After loading the programs requested in the keyboard input command string, the Loader scans the system library (.DAT slot -1) and attempts to resolve all unsatisfied subroutine requests. The Loader prints a memory map on the Teletype during loading. 2-31 If the Loader detects an end-of-medium condition on either the system input device (. DAT slot -4) or the system I ibrary device (. DAT slot -1)*, it wi II type tP on the Teletype. Additional input should be placed in the device (and the tape feed control button depressed momentarily to clear the reader-out-of-tape flag, if the device is the paper tape reader). To continue, the user should also type tP on the keyboard. After printing the memory map (Section 2.5.5.1), if all requested pnograms have been loaded and all I ibrary requests satisfied, the Loader wi II print tS on the Teletype and sit in a program loop (JMP.). At this point, any changes in input and output de- vices should be made (including depressing the tape-feed control button on the paper tape reader, if it is to be used). When all I/O devices are properly set up, the user should type tS on the keyboard. This transfers control to the starting address of the user's main program. When the user's program has completed its operation and has terminated by means of an • EXIT command, the computer halts (I/O Monitor). 2.5.5.1 Linking Loader Memory Map - The memory map printed on the Teletype during loading con- sists of a I ist of names or programs loaded, a I ist of subroutines loaded or required, but not found, and their relocation factors (or starting load addresses). The format of the memory map is as follows (note that programs are loaded starting at the top of core). NAME 1 NAME 2 NAME 3 NAME 4 NAME 5 LIBR1 LIBR2 2.5.5.2 16572 14301 10765 06427 06313 05304 04112 Error Messages - If an error occurs during loading, the Linking Loader types . LOAD n on the Teletype:: and halts. The type of error in indicated by n, as shown in the following table. *The system library can consist of n paper tapes as long as only the last one is t,erminated by an end-offile unit. 2-32 Error Code Meaning Memory overflow - the Loader's symbol table and the user's program have overlapped. At this po i nt the Loader memory map wi II show the addresses of all programs loaded successfu Ily before the overflow. Increased use of COMMON storage may allow the program to be loaded as COMMON can overlay the Loader and its symbol table, since it is not loaded into until run time. 2 Input data error - parity error, checksum error, illegal data code, or buffer overflow (input line bi gger than Loader's buffer). 3 Unresolved Globals - Any programs or subroutines required but not found, whether called explicitly or implicitly, are indicated in the memory map with an address of 00000. If any of the entries in the memory map have a 00000 address, loading was not successful; the cause of trouble should be remedied and the procedure repeated. 4 l"egal . DAT slot request - The. DAT slot requested was: a. Out of range of legal. DAT slot numbers, b. Zero, or c. Unassigned, i. e., was not set up at System Generation Time or (in the case of the Keyboard Monitor) was not set up by an ASSIGN command. 2.5.5.3 File Structure of the System Library - The System Library (on. DAT slot -1) consists of one file named. LIBR. It is composed of program units, so ordered on the medium that only one pass through the library loads a" requested subroutines, the subroutines that they might require, and all necessary I/O device handlers. The library file may consist of more than one paper tape with only the last tape terminated by the end-of-file. A program unit consists of the following elements: a program size descriptor, internal GLOBALS, the loading address descriptor, the actual program, virtual GLOBALS, and an end code. It appears on the storage medium as one or more lOPS binary buffers. An lOPS binary buffer consists of 50 other 48 words. The first two words are a 2-word header; the 10 words are twelve (12) 4-word groups. Each 4-word group contains one (1) descriptor word 10 and three (3) data words, so each 50-word lOPS binary buffer contains 36 data words. The full structural break-down of the library file is shown in Figure 2-5. 2.5.6 DDT-9 DDT -9 is identical to the Linking Loader (Section 2.5.5) except that, on completion of loading and building of the DDT symbol table (exclusive of the symbol for the library routine and DDT), control is automatically transferred to the starting address of DDT -9. 2-33 DDT -9 types DDT > to inform the user that it is waiting for a command. The user can force control back to the starting address of DDT -9 at olny time by typing: tT on the Teletype keyboard. All previous DDT conditions are left intact; i. e. br1eakpoints, register modifications. ONE FILE: .LISR r~--------------------------------A~-------------------------~ PROGRAM UNIT PROGRAM UNIT l PROGRAM SIZE DESCRIPTOR PROGRAM UNIT INTERNAL GLOBALS rr----------~A~----------~\ LOAD ADDRESS DESCRIPTOR DATA PROGRAM UNIT ONE lOPS BINARY BUFFER - - - lOPS - lONE BINARY BUFFER I J HI VIRTUAL GLOBALS H2 END CODE CII C2/C3 TWO-WORD HEADER ...., -< j 01 ?- FOUR-WOR'D 02 Cn-231O TERMINATES A PROGRAM UNIT. THE NEXT UNIT MUST BEGIN A NEW lOPS BINARY BUFFER. - GROUP 03 C4 /C 5 /C 6 -DESCRIPTOR °4 05 >- 48 10 WORD S 06 I I I C34 /C 35 /C 36 034 035 036 0-8 9 - WORD 0 WORD I ... 17 \--_-L-_-I} END-OF-FILE .....J - - - - - . J UNIT END-OF-FILE UNIT ONLY PRESENT AT ENO' OF .LlBR FILE. MUST BE REMOVED FROM END OF ALL PROGRAM UNITS, SINCE FORTRAN IV AND MACRO-9 ALWAYS CREATES E-O-F UNIT. Figure 2-5 Library Fi Ie Structure 2-34 2.5.7 7-to-9 Converter (CONV-9) The 7-to-9 Converter converts source programs written for the PDP-7 or basic PDP-9 assemblers to a format acceptable to the ADVANCED Software PDP-9 MACRO-9 Assembler. When CONV-9 is loaded and ready for operation, it prints the following on the teleprinter. 7-TO-9 CONVERTER > This indicates that CONV-9 is ready to accept a command string (on the sa~e line as the » telling it what action to take. The command string format is: Options Terminator Fi Ie Name(s} L, A, R, E, Tn ~ 'decimal no. of input tapes 1 multiple input tapes terminate output with. EOT instead of . EN D FILE1, FILE2 1 tutput program name (. DAT slot -15) input program name (. DAT slot -14). It is ommitted if the same as output fi Ie name ;. or AL T mode I + Teturn control to the Monitor. return to CONV-9 to perform more conyers ions. remove origin settings insert . ABS pseudo op list output (.DAT slot -12) Defau It Assumptions NO listing NO inserting of .ABS pseudo-op NO removal of original settings • END instead of . EOT ONE input tape The options desired may appear in any order, separated by commas and terminated bY4-- . If no options are desired, . - is sufficient. Rubouts may be used to delete unwanted characters prior to typing the command sf'ring terminator. If an error in the command string is detected, CONV-9 types COMMAND STRING ERROR > and waits for a new command string. Refer to PDP-9 Uti I ity Programs Manual (DEC-9A-GUAB-D) for Iists of items that cannot be correctly converted by CONV-9 and must be modified by the programmer hims~lf. 2.6 ERROR DETECTION AND HANDLING When either .IOPS or a device handler detect an illegal situation, .IOPS will output an appropriate error message on the teleprinter in one of the two following formats: 2-35 a. .IOPS NN XXXXXX where NN is the appropriate error code and XXXXXX is additional related information (as shown below): Error Code (octal radix) Error xxxxxx 00 Illegal function CAL Address of CAL 01 Illegal CAL indirect Address of CAL 02 Illegal. DAT slot request or no device assigned to . DAT slot Address of CAL 03 Illegal I/O interrupt lOR S status word 05 Illegal. SETUP CAL (associated skip lOT not in the skip chain) Address of CAL 06 Illegal function for device handler Address of CAL 07 Illegal data mode for device handler Address of CA L 10 Previous file still active when .CLEAR • SEE K . ENTER executed to same • DAT slot Address· of CA L 11 . SEEK (. ENTER) not executed prior to . READ (. WRITE) to fi I e oriented device Address of CA L 12 Irrecoverable data error (mark track error or EOT during. READ or . WRITE) DECtape status register B 13 File not found (on. SEEK) Address of CAL 14 Directory full (on . ENTER) Address of CAL 15 DECtape full (on. ENTER or . WRITE) Address of CAL 16 Output buffer overflow (excessive word pair count) Address of CAL 17 Excessive number of files simultaneously referenced Address of CAL API software level error (channe I registers API status register 30 40-43 not setup prior to interrupt request at associated software level) After outputting the message, the processor will halt. b. lOPS 4 - indicates that I/O was requested on a Iinot ready" device. make the device ready and type tR on the Teletype keyboard to continue. 2-36 The user should CHAPTER 3 KEYBOARD MONITOR SYSTEM 3.1 KEYBOARD MONITOR FUNCTIONS The Keyboard Monitor is desi gned to operate on PDP-9 systems with some form of auxi I iary bulk storage (see Hardware Requirements, Section 1.2).. It includes all of the elements of the Input/ Output Monitor plus routines to accept keyboard commands, change device assignments, and automatically load and initiate system and user programs. (The user should be completely familiar with Sec- tion 2: Input/Output Monitor System, before utilizing the Keyboard Monit~r.) 3, 1 . 1 System Device and Bootstrap Each installation employing the Keyboard Monitor version of PDP-9 ADVANCED software must reserve tape unit 0 (DECtape or magnetic tape) or a lower section of the disc or drum as the system device. This unit contains the System Tape including the Monitor, the entire input/output programming system and all system and library programs needed by the user. The System Bootstrap is supplied as a paper tape in hardware READIN format. By setting the starting load address of the bootstrap (17637 of the highest memory bank available) on the console address switches, depressing I/O RESET and then the READIN switch, the bootstrap is loaded into upper core. It clears the flags, turns on EXTEND MODE, disables the program interrupt (and the automatic priority interrupt, if available), loads the Keyboard Monitor into lower core, and transfers control to it. 3,1 .2 Keyboard Monitor Structure The Keyboard Monitor has five major sections: keyboard listener, monitor command decoder, the input/output programming system, a monitor error diagnostic program, and the necessary tables for communication between the programs and the I/O handlers, The first two of these five sections are non-resident, in the sense that they are overlaid by user and system programs, w~lile the last three smaller sections are always resident in core, An ,EXIT from a user of system program transfers control to the System Bootstrap which then brings the non-resident sections of the Keyboard Monitor back into core. 3,1 ,2. 1 Non-Resident Sections of the Keyboard Monitor - The keyboard listener (. KLIST) accepts user commands from the Teletype keyboard to process system information request commands, to change the device assignment table and to load and run system and user programs. handles 'Monitor initialization and some system bookkeeping, 3-1 The keyboard I istener also The monitor command decoder (.MCD) acts upon the commands accepted by . KLiSTi it responds to requests for system programs by loading the System Loader and by initiating loading of the desired package. 3.1.2.2 It is also responsible for making dynamic changes to the device assignment table. Resident Sections of the Keyboard Monitor - Includes the I/O control routine (.IOPS) and the device handlers and interrupt service routines for the Teletype keyboard and printer, and the internal clock. The monitor error diagnostic (.MED) program utilizes the PDP-9 system teleprinter to output error messages to the user. The device assignment table (. DAT) is created by the user with the System Generator at system generation time (see Sections 3.4.2 and 3.4.4.7) . . DAT contains all of the standard I/O device assignments that the user normally employs for system, FORTRAN IV, and MACRO-9 programs. Key-board commands by the user may be used to vary. DAT slot assignments prior to the loading of system or user programs. Th is fac i I ity provides the user with true dynam ic dev ice iindependence. Two other tables are conta ined in the resident portion of the Monitor and are used to control the I/O functions: a. The system communication table (. SCOM) provides a list of registers which may be re- ferenced by the Monitor, lOPS, and system programs. Included in . SCOM are the starting location addresses of system programs (. SCOM+5) and user programs (. SCOM+6) when loaded into core. b. Table 4 of the appendix contains a complete list of . SCOM entries. The monitor/lOPS command table (.COMTB) contains pointers to the routines utilized by user programs (.READ, • WRITE, .SEEK, etc.). The structure of .COMTB is shown in Table 5 of the appendix. 3.2 KEYBOARD COMMANDS The Keyboard Monitor provides three advantages over the Input/Output Monitor: a. The abi I ity to request system information and directions for system operation. b. I/O device independence, through the ability to dynamically change I/O device assign- ments before load ing a program. c. The ability to call, load, and execute system and user programs via simple keyboard commands. When the Keyboard Monitor initially gets control it outputs MONITOR $ to the te lepr inter to ind icate read iness to accept (J keyboard command. to indicate readiness. Subsequently, it outputs "$" In both cases, the keyboard command should be typed on the same line as the 3-2 dollar sign ($). Three different groups of commands are avo i lable to the user: NOTE: All numbers typed in Mon itor Keyboard commands are interpreted in octal radix. a. Device examination, assignment, and information commands LOG SCOM INSTRUCT NEWDIR REQUEST ASSIGN DIRECT b. Commands to load system programs LOAD GLOAD EDIT MACRO UPDATE CONY DDT DDTNS (DDT without symbol table) PIP F4 SGEN DUMP c. Commands affecting program operation tS tC tT tR tQ GET tP SDUMP HALT Most commands to the Keyboard Mon itor are of a symbol ic nature and are term inated by a carriage return (CR) or AL T mode (ESC) • However, some spec ial 1-character commands, such as t S (control S) are used when only the resident portion of the Monitor is available. 3.2.1 Dev ice Exam ination, Assignment, and Information Commands The first letter of the command may be used instead of the entire command. 3.2.1 .1 LOG - The LOG command is used to make hard copy records of the user's comments on the Teletype. Upon encountering the LOG command, the Monitor enters LOG mode and ignores all typing up to and inc Iud ing the next AL T mode (ESC). EXAMPLE: $LOG THIS IS AN EXAMPLE OF A LOG COMMAND TO KM9 3-3 3.2.1.2 SCOM - The SCOM command prints out certain system information. EXAMPLE: $SCOM SYSTEM COMMUNICATIONS 17645 1 ST FREE LOCATION BELOW BOOTSTRAP 1447 1ST FREE LOCATION ABOVE RESIDENT MONITOR CONFIGURATION HAS API CONFIGURATION HAS EAE DEVICE HANDLERS AVAILABLE: TTA TELETYPE: INPUT/OUTPUT, ASCII MODES, ALL FUNCTIONS PRA PAPER TAPE READER: INPUT, ALL MODES, ALL FUNCTIONS PRB PAPER TAPE READER: INPUT, lOPS ASCII MODE, ALL FUNCTIONS PPA PAPER TAPE PUNCH: OUTPUT, ALL MODES, ALL FUNCTIONS PPB PAPER TAPE PUNCH: OUTPUT, ALL MODES LESS lOPS ASCII, ALL FUNCTIONS PPC PAPER TAPE PUNCH: OUT'PUT, lOPS BINARY MODE, AILL FUNCTIONS LPA LINE PRINTER: OUTPUT, lOPS ASCII MODE, ALL FUNCTIONS CDE CARD READER: CR01 E CDB CARD READER: CR02B DTA DEC TAPE: 3 FILES, INPUT/OUTPUT, ALL MODES, ALL FUNCTIONS DTB DEC TAPE: 2 FILES, INPUT/OUTPUT, lOPS MODES, LItv\ITED FUNCTIONS DTC DEC TAPE: 1 FILE, INPUT, lOPS MODES, LIMITED FUNCTIONS DTD DEC TAPE: 1 FILE, INPUT/OUTPUT, ALL MODES, ALL 'FUNCTIONS 3.2.1.3 INSTRUCT - The INSTRUCT command prints out the basic operational instructions for the various system programs. The command takes the following form: INSTRUCT XXXXXX where XXXXXX is the system program name, null for Monitor operational instructions, or ERRORS for explanation of • lOPS error printouts. EXAMPLES: $INSTRUCT MONITOR: INFORMATION AND MODIFICATION COMMANDS LOG: USER COMMENTS TERMINATED BY ALTMODE SCOM: SYSTEMS INFORMATION INSTRUCT OR INSTRUCT PRGNAM: OPERATING INSTRUCTIONS REQUEST, REQUEST USER, OR REQUEST PRGNAM: .DA.T SLOT USAGE ASSIGN DEVN A, B, ••• /ETC.: .DAT SLOT MODIFICA.TIONS DIRECT OR DIRECT N: DIRECTORY LISTING OF UNIT OF SYSTEM DEVICE SDUMP: SET TO SAVE CORE ON .IOPS ERROR HALT: SET TO HALT ON .IOPS ERROR tQ: SAVE CORE GET OR GET XXXXX: RESTORE SAVED CORE tC: RESTORE MONITOR MONITOR: PROGRAM LOADING COMMANDS AND ALSO PRGNAM IN ABOVE LOAD: LINK LOADER AND STOP GLOAD: LINK LOADER AND GO DDT: LINK LOADER AND GIVE CONTROL TO DDT 3-4 MACRO: MACR09 ASSEMBLER F4: FORTRAN IV COMPILER EDIT: SYMBOLIC EDITOR PIP: PERIPHERAL INTERCHANGE PROGRAM SGEN: SYSTEM GENERATOR DUMP: BULK STORAGE DEVICE DUMP UPDATE: LIBRARY FILE UPDATE CONV: 7-TO-9 CONVERTER $INSTRUCT DUMP DUMP: LISTING DUMP OF BULK STORAGE DEVICE TERMINATE COMMAND STRING BY ALTMODE FOR EXIT ALL: DUMP OF ALL OF SAVED CORE XXX, YYY: DUMP OF SAVED CORE FROM XXX TO YYY N#: DUMP OF BLOCK N 3.2.1.4 REQUEST - The REQUEST command allows examination of the .DAT slots associated with various system programs. * The command takes the following form: REQUEST XXXXXX where XXXXXX is the system program name (i.e., the system program load command) or USER for all positive .DAT slots or blank for an entire • DAT table printout. EXAMPLES: $REQUEST .DAT DEVICE -15 -14 -13 -12 -11 -10 -7 -6 -5 -4 -3 -2 -1 1 2 3 4 5 6 7 10 DTA DTA PPC TTA DTC PRA DTC PPC NONE PRA TTA TTA DlC NONE NONE NONE NONE NONE NONE NONE NONE UNIT USE 2 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 OUTPUT - EDITOR, UPDATE, SYSGEN, CONV INPUT - EDITOR, UPDATE, SYSGE N, DUMP, CONV OUTPUT - MACRO, FORTRAN LISTING - MACRO, FORTRAN, UPDATE, DUMP, CONV INPUT - MACRO, FORTRAN INPUT - DDT, EDITOR, UPDATE SYSTEM DEVICE - SYSTEM LOADER OUTPUT - DDT EXTERNAL LIBRARY - LINKING LOADER INPUT - LINKING LOADER TELEPRINTER OUTPUT - ALL SYS .PROGS. KEYBOARD INPUT - ALL SYS. PROGS. SYSTEM LIBRARY - LINKING LOADER. USER USER USER USER USER USER USER USER * See Sec t ion 4.6. 10 for • DAT slots used by system programs, the ir uses, and I/O hand lers that are acceptable. 3-5 $REQUEST MACRO .DAT DEVICE -13 -12 -11 -10 -3 -2 3.2.1.5 PPC TTA DTC TTA TTA TTA UNIT USE o o OUTPUT LISTING INPUT SECONDARY INPUT CONTROL AND ERROR MESSAGES COMMAND STRING 1 o o o ASSIG N - The ASSIG N command allows reassignment of • DA T slots to dev ices other than those set at system generation time. The change of assignment is only effective for the current job, since the permanent assignments are restored whenever control is returned to the AAonitor. The command takes the following form: ASSIGN DEVn a, b, etc/DEVm x, y, etc where DEV is the device handler name (the I ist of legal handlers for a particu lar system may be requested via the SCOM command*). n, m are unit numbers, a, b, x, y, etc are • OAT slot numbers. EXAMPLES: $ASSIGN DTA4 -10, -6/PRA $ASSIG N PPB -6/DTB2 $ASSIGN DTAl 6, 7, 10 -5 3/DTB3 5 DEVn can be replaced by N ONE to clear • DAT slots. $ASSIGN NONE 4, 5, 10 .DAT slots -2 and -3 are permanent and may not be modified • • DAT slot -7 may be mod ified on Iy at system generation time. 3.2.1.6 DIRECT - The DIRECT command allows printout of the directory associated with any unit on the system device control (i.e., eight units on DECtape control). The command takes the following form: DIRECT N where N is the unit number (unit 0 is the default assumption). *See Section 4.6.10 for. DAT slots used by system programs, their uses, and I/O handlers that are acceptable. M'lny of the devices, DECtape for example, have more than one I/o handler associated with them. It is imperative that only one version of a device handler be present during a particular run as confusion occurs because of lack of communication between the two interrupt handlers. 3-6 EXAMPLE: $DIRECT FILE NAME EXTENSION START BLOCK .LOAD . LIBR CREATE DDT9 PPTEST PPTEST PPTEST .SGEN BIN BIN BIN BIN BIN SRC LST BIN 31 27 32 47 167 166 171 234 556 FREE BLOC KS 3.2.1.7 N (NEWDIR) = The liN (NEWDIR) unit number" will clear the directory on the specified unit of the system device control (unit 0 illegal). 3.2.2 Loading System Programs Loading commands instruct the Keyboard Mon itor to bring in the System Loader wh ich is used to load all system programs from the system device. The commands available to the user for loading systems programs via the Keyboard Monitor are: Command Program Called LOAD Linking Loader GLOAD Link ing Loader and Go EDIT Symbolic Editor MACRO MACRO-9 Assembler DDT Debugging Program (DDT -9) DDTNS Debugging Program (DDT -9) without user symbol table PIP Peripheral Interchange Program (PIP-9) F4 FORTRAN IV Compiler SGEN System Generator DUMP Dump Program for saved file UPDATE Update the I ibrary file of a file oriented dev ice CONV 7-to-9 Converter All commands shou ld be term inated by a carriage return (CR) or AL T mode (E SC). When the requested program has been loaded and is waiting for Keyboard input, an indication is given on the teleprinter with an appropriate message; such as 3-7 LOADER > or FORTRAN 4 > or EDITOR > etc. 3.2.3 Other Keyboard Commands The following keyboard commands are also available to the operator: 3.2.3.1 tS (Control S) FORM: t S (echoed by the Monitor) DESCRIPTION: tS is used to start a program after the Linking Loader has bro,ught it into core via a LOAD command. 3.2.3.2 tC (Control C) FORM: tC (echoed by the Mon itor) DESCRIPTION: tC forces control back to the Keyboard Monitor which types MONITOR $ to ind icate that it is wa iting for a keyboard command. tC wi II be honored whenever typed. If the non- resident section of the Monitor was in core, the Monitor is not reinitialized; thus, previous conditions, such as . DAT slot assignments, are as they were prior to the tC. If the non-resident section of the Monitor was not in core, it is brought in and all conditions revert to the standard. 3.2.3.3 tT (Control T) FORM: tT (echoed by the Monitor if DDT present; otherwise ignored) DESCRIPTION: tT forces control back to DDT which types DDT > to indicate its readiness for another DDT command. * tT wi II be honored whenever typed with DDT in memory. Otherwise it will be ignored. * All previous DDT conditions are left intact; i.e., breakpoints, register modificCltions. 3-8 3.2.3.4 t P (Control P) FORM: t P (echoed by the Monitor) DESCRIPTION: tP may be used at any time to force control to the user's restart address (the address specified in the user's last .INIT to reference the Teletype). Action is unspecified if the user did not .IN IT the Teletype. 3.2.3.5 tQ (Control Q) FORM: tQ (echoed by the Monitor) N** VARIABLE: N =- number (0-7) of unit on system device control where file is to be saved. DESCRIPTION: tQ dumps the current job, in core image, onto prespecified blocks of unit N on the system device control (the WRITE switch on this unit must be enabled). For example, when the system device is DECtape unit 0, tQ requests may be made only to DECtape. These core images may be retrieved and re loaded by GE T commands (see Section 3.2.3.6) or exam ined by a DUMP command (see Section 3.4.4.8). 3.2.3.6 tQ will be honored whenever typed. GET (Retrieve File) FORM: GET N or GET N XXXXX or GET N HALT VARIABLES: XXXXX = program starting address N = number (0-7) of unit on system device control that contains file to be retrieved. DESCRIPTION: GET retrieves the core image (including the Monitor) stored on specified blocks of unit N on the system device control by tQ commands, and restores it to memory. Control is transferred to XXXXX, if specified; control halts if HALT was specified. To start, in this case, the starting address shou Id be placed in the ADDRE SS switches and the START button depressed (P IC and AP I are enabled). If neither XXXXXX of HALT are specified., the job will be restarted where it was terminated. 3.2.3.7 SDUMP (Set Dump) FORM: SDUMP DESCRIPTION: SDUMP is us'ed to force automatic execution of the tQ command (on unit 0) on non- recoverable error calls to the monitor error diagnostic program (.MED). It must be issued prior to the LOAD, GLOAD, DDTNS or DDT command used to load the user program.** Note that the WRITE switch on the system device should be enabled in case of error; otherwise an .IOPS 4 (not ready) error will follow the initial error. *Wait for echoing of tQ before typing the unit number N. No error checking is done on the unit number. ** SDUMP or HALT issued prior to a GET has no effect as the Monitor at tQ time overlays the Monitor primed by SDUMP or HALT. 3-9 3.2.3.8 tR (Continue After Readying I/O Device) FORM: tR (echoed by the Monitor) DESCRIPTION: When .IOPS detects a not ready condition on a called I/O device, it prints: .IOPS 4 on the teleprinter. The user may ready the device and then continue by typing tR. 3.2.3.9 HALT (Halt after Error Message Printout) FORM: HALT DESCRIPTION: When the mon itor detects an error cond ition and prints out the assoc iated error message, it will halt. Depressing the CONTINUE button will reload the Keyboard Monitor. HALT must be issued prior to the LOAD, GLOAD, DDTNS or DDT command. * 3.3 PROGRAMMING FOR DEVICE INDEPENDENCE When writing programs with the PDP-9 ADVANCED Software System j' recognition should be made of its device-independent programming capabilities, even when there are no immediate plans to use them. Several simple steps can be taken, when the programs are being coded, to insure that they will operate in a device-independent environment. a. In. READ and • WRITE instructions, the line buffer size spec ified should be large enough to satisfy the requirements of any device that may be associated with a particular .DAT slot. b. File manipulation commands should be included even when the 'originally contemplated use of the program is with hard copy devices. These commands will be ignored if not needed, and the program will not have to be rewritten for use with file-structured mass storage devices. c. Only lOPS ASCII and lOPS binary data modes should be used, since image modes are device dependent. 3.4 OPERATING THE KEYBOARD MONITOR SYSTEM PDP-9 ADVANCED software is a complete system for program prepanJtion and use. It can generate its own system tape, change device assignments, call system or user programs, control their input/output functions, and report system errors to the user. *SDUMP or HALT issued prior to a GET has no effect as the Monitor at tQ time overlays the Monitor primed by SDUMP or HALT. 3-10 3.4.1 Load ing the Mon itor The System Bootstrap is provided as a self-starting paper tape in hardware READIN format and is loaded into upper memory. * It puts the system into EXTEND mode, turns off the program interrupt and API, loads the Keyboard Monitor from the system device and transfers control to it. The Monitor will type MONITOR $ when it is ready to accept commands from the user. The System Bootstrap may be restarted without re load ing the paper tape, if it has not been destroyed. Setting the ADDRESS switches to 17646 of the highest memory bank, depressing I/O RESET and then START will restart it. 3.4.2 System Generation PDP-9 insta Ilations without DECtape or magnetic tape rece ive the ir PDP-9 ADVANCE D soft- ware as a set of paper tapes wh ich can be used to create a system tape. ** Those insta Ilations hav ing DECtape of magnetic tape systems will receive a system tape on DECtape or magnetic tape. The System Generator (. SGEN) is a standard system program used to create new system tapes. Upon first rece ipt of a PDP-9 bu Ik-storage system, the user shou Id immed iate Iy create a standard system tape for his installation. This is done by loading the System Bootstrap, which calls the system into core, and using the Keyboard Mon itor to ca II the System Generator. . SGEN wi II output the new system tape on the device assoc iated with. DA T slot -15; so, the ASSIGN command shou Id be used prior to ca II ing .SGEN to assign a bulk storage device to slot -15 and the old system device to slots -10 and -14, i.e, $ASSIGN DTA 2 -15 /DTA 0 -14, -10 $SGEN Once loaded, . SGEN communicates with the user in a conversational mode via the Teletype to obtain the information needed to create a system tape. a. b. Among the items of information it needs to know are: On which device the system tape will operate, so that 1. The system device slots in the device assignment table (. DAT) can be set. 2. A new System Bootstrap can be punched out for this device. 3. The PIC skip chain and API channels can be set up for the system device. All devices present in the PIC skip cha in and the ir order. Non-basic devices can be added to the skip chain at this time, by supplying the device mnemonic and the skip 10T(s). *Set the console address switch(~s to 17637 of the highest memory l:;;~;lk available, depress I/O RESET and then the READIN switch. **In this context, "tape ll means any applicable bulk storage device, DECtape, disk, or drum. 3-11 c. Total core capacity {8, 16, 24, or 32K) of the installation. d. Special options present at the installation, API, EAE, etc. e. The structure of . OAT. All system slots (-1 to -15) and slots 1 j"O 10 should be assigned. When .SGEN has received all of the information necessary, it creates a new system tape, then returns control to the Monitor. New system tapes can be created whenever a significant change in the installation configuration occurs. 3.4.3 Assigning Devices Before ca II i ng a system or user progmm, the operator shou Id make a II dev ice ass ignments necessary to the program{s) to be run. The ASSIGN command (see Section 3.2.1.5) is used to attach hardwClre devices to the slots of the device assignment table. Figure 3-1 shows the normal setup of .DAT. Only system slots -2, -3, and -7 cannot be modified by the ASSIGN"command, since these must be used by the Mon itor. System programs use the negative . OAT slots wh i Ie user programs sholl Id use the positive . DA T slots . P IP-9 (Periphera I Interchange Program) is an exception to this rule in that it uses all the positive . DAT slots (1 to 10) . .DATBG . DAT Slot Device Handler* Unit -15 DTA. 2 -14 DTA. Input (EDITOR, UPDAT, CONVERTER, SYSGEN, DUMP) -13 PPC. Output (MACRO-9, FORTRAN IV) -12 TTA. Listing (MACRO-9, FORTRAN IV, UPDATE, DUMP, CONVERTER) -11 DTC. Input (MACRO-9, FORTRAN IV) -10 PRA. Input (DDT) Secondary Input (EDITOR UPDATE, MACRO-9, SYSGEN) -7 DTC. -6 PPC. Output (DDT) -5 NONE Externa I Library (Linking Loader) -4 PRA. Input (linking loader) } -3 TTA. Teleprinter Output -2 TTA. Keyboard Input -1 DTC. Figure 3-1 0 0 Use Output (EDITOR, UPDAT, CONVERTER, SYSGEN) System Dev ice (System Loader) System Library (Linking Loader) Functions of Slots in • OAT for Keyboard M,onitor * See Section 4.6 for a description of the handlers. 3-12 All system programs .DAT Slot .DAT Device Handler* Unit Use .DAT NONE 2 NONE 3 NONE 4 NONE 5 NONE 6 NONE 7 NONE 10 NONE User and PIP-9 . DAT slots . DATND=. Figure 3-1 3.4.4 Function of Slots in . DA T for Keyboard Mon itor (cont) Loading Via Console Commands The FORTRAN IV Compiler, Macro Assembler, Symbolic Editor, Peripheral Interchange Program, DUMP Program, Library Update Program, 7-to-9 Converter and System Generator are called by unique keyboard commands (F4, MACRO, etc.). All user programs are called by loading the Linking Loaded (via LOAD, GLOAD, DDTNS, or DDT commands) and asking it to load the desired program. (See Figure 3-3 for memory maps of programs loaded in the Keyboard Monitor System.) Whenever a keyboard command requests a new program, the Keyboard Monitor' loads the System Loader and the system device handler into core. The System Loader is basically the Linking Loader in absolute form and always requires the same device handler to acquire input from the system device. The Linking Loader, on the other hand, is relocatable and device independent. The System Loader is used to bring in all system programs; including the Linking Loader, and their associated device handlers. Once loaded, the Linking Loader is used to bring in user pro- grams, their subroutines, and their device handlers. The System Loader can print the same error messages as the Linking Loader (see Section 2.5.5.2), except that it precedes the error code with the symbol . SYSLD. It returns control to the System Bootstrap to re-i nitia I ize the Keyboard Mon itor if an error occurs. Once a system program is loaded by the System Loader, the loaded program assumes control. At this stage, it is ready to accept an input command string from the keyboard lelling it how to proceed. The specified procedures for each system program are shown in Sections 3.4.4.1 - 3.4.4.10; in most cases they are identical to procedures followed by the same program in the I/O Monitor environment. Note that all system programs assume that a file oriented device is file structured. *See Section 4.6 for a description of the handlers. 3-13 3.4.4.1 FORTRAN IV Compi ler - When FORTRAN IV is loaded and ready for operation, it prints the following on the teleprinter: FORTRAN 4 > Th is indicates that FORTRAN IV is ready to accept a command string te II ing it what action to take. At th is po int, the user shou Id set up the input dev ice for pass 1 of the sourec tape (if the input device is the paper tape reader, the tape-feed control should be depressed momentarily to clear the reader-outof tape flag). The format expected by the FORTRAN IV command string processor is CIS follows: Options 0, S, L, B Term inator File Name "'~I--- F ILEX, ~ or AL T mode where o = object listing i-must be a legal S = symbol map = source listing FORTRAN name L B = binary treturn control to monitor after compi ling current program. ind icates batch comp i lation; after comp i I ing current program, types FORTRAN 4 > and wa its for next command string Default Assumptions NO object listing NO symbol map NO source listing NO binary The options desired may appear in any order, separated by commas and terminated bY"'~I--_ If default conditons are wanted, 4---is sufficient. Rubouts may be used to delete unwanted charac- ters pr Lor to typ ing the command string term inator. At the end of pass 1 (when the END statement is encountered for the first time), FORTRAN IV ind icates END PASS 1 Th is a Ilows the user to prepare his input dev ice for pass 2 (if the input dev ice is the paper tape reader, depressing the tape-feed control after loading the source tape will again clear the flag). The second pass is then initiated by typing tP If the input device is a form of bulk storage (DECtape, magnetic tape, drum, or disc) FORTRAN IV automatically starts pass 2 without operator intervention. 3-14 NOTE: At the elld of pass 1 when FORTRAN IV or MACRO-9 is waiting for a t P to begin pass 2, two (2) tPs will force control to pass 1. Something must be in the reader dur ing the interva I between the two t Ps. 3.4.4.2 Macro Assembler (MACRO-9) - When MACRO-9 is loaded and ready to accept the command stri ng from the keyboard, it ind icates read iness by typ ing on the te leprinter MACRO > At this point the ·user should set up the input device for pass 1 (if the paper tape reader, momentarily depress the tape -feed control to clear reader-out-of-tape flag). The format expected by the MACRO-9 command string processor is as follows: Options Terminator File Name S, L, B, P ...1---- FILE X ~ where or ALT mode I.return control to mon itor after assembl ing current program. B = binary L = listing S = symbol table (on Iisting device) P = secondary input is to be used. return to MACRO-9 after assembl ing current program, types MACRO > and waits for next assembly command string. Defau It Assumptions NO binary NO symbol table NO assembly listing - if no assembly listing requested, all errors will be listed on the teleprinter. NO secondary input The options may appear in any order, separated by commas and termined by +-. options are wanted, If no + - is sufficient. Rubouts may be used to delete unwanted characters, prior to typing the command string terminator. If this is a multi-medium assembly (where the first n media are terminated with .EOT and the last is terminated with .END), MACRO-9 indicates the end of each segment by typing .EOT on the teleprinter. This allows the user to prepare for the next segment of his input (if paper tape reader, de- press the tape-feed control after loading the tape) and then type t P. At the end of pass 1 (.END encountered for the first time), MACRO-9 outputs PASS 1 COMPLETED on the te leprinter. Th is informs the user to prepare the ·input device for the beginn ing of pass 2 (if paper tape reader depress the tape-feed control) and then type t P. 3-15 If the input device is bulk storage (DECtape, magnetic tape, disk, drum) and .EOT was not encountered during pass 1, MACRO-9 automatica Ily starts processing pass 2. A secondary input is allowed at assembly time. This must contain only direct assignment statements, and is specified by writing "p" (for parameter tape) in the command string. Secondary input must consist of direct assignments only, and must term inate with ---..1. EOT ~ . If the secondary input is assigned to the Teletype, the user must type an additional ~ (for double buffering purposes) or may terminate with tD. The parameter tape will be inputted in pass 1 only, and not in pass 2. Secondary input is useful, for example, to enter octal codes of lOTs deleted from the Permanent Symbol Table, such as: PSF=700201 RSB=700144 3.4.4.3 PIP-9 (Peripheral Interchange Program) PIP-9 is a uti Iity program in the PDp·-9 Advanced Software System used to transfer data files from one standard peripheral storage device to another. During transfer, PIP-9 can update file descriptions, rename, delete, insert and combine files. Since automatic storage retrieval is a standard function of the Monitor I/O Handlers, no provision for it is necessary in PIP-9. PIP-9 operates under control of the Mon itor, using the Mon itor I/O Hand ler routines attached to • DAT slots I to 10 (unwanted hand ler requests shou Id be removed from • DAT sllots 1 to 10 v ia the ASSIGN NONE feature). The user directs PIP-·9 functions by typing Teletype commands. When PIP-9 is loaded and ready for operation, it outputs the following on the teleprinter PIP > This indicates that PIP is ready to accept a keyboard command typed on the same line as the right angle bracket (». At this point, the user should prepare the input/output devices required in the operation and then type the PIP command. Successful completion and readiness for the next command is normally acknowledged by > unless there has been intermediate output to the teleprinter by PIP. In the latter case, PIP > is output once again for ease of later printout examination. The general format of a PIP command string is as follows: F DDU: FILE 1; EX 1, FILE2; EX2 (S) term inated by a carriage return or AL T mode. 3-16 +- SDU: FILE3; EX3 Colon (:) and sem icolon (;) are not requ ired to de I im it the device and fi Ie names, respective Iy. A space may be used instead of a ":" or 11;". Spaces are meaningless elsewhere in the command string and may be used freely except within the body of the device or file names. where F is a function character T = transfer file L = list directory D = delete file C = copy N = rename file DDU is the destination device (and unit, if applicable) PR = paper tape reader PP = paper tape punch TT = Teletype LP = I ine printer DTu = DECtape MTu = Magnetic tape CD = card reader DRu = drum DKu = disc FILEN; EXN are the file names and extensions involved in the operation. (They are omitted if dev ice not fi Ie oriented.) Sind icates the sw itch options A = lOPS ASCII B = lOPS Binary I = Image Alphanumeric H = Image Binary D = Dump W = strip .EOT from lOPS ASCII input or W = strip EOF from lOPS Binary C == convert multiple spaces to tabs S == create new system directory Z = zero out directory E :: directs PIP to convert horizontal tabs to spaces for off-line listing on Model 33 Teletypes. It may be used only with lOPS ASC II (A) as the data mode. T PP..- DTl FILEA SRC (AE) ~ will punch FILEA on paper tape, with spaces instead of horizontal tabs. Example: G = directs PIP to examine input parity, allowing the user to modify input lines in error from the teletype. It is legal with lOPS ASCII only. On the occurrence of an input parity error, PIP always displays the following message on the teletype. INPUT PARITY ERROR If the G switch has been omitted from the input string, control returns immediately to the Monitor at this point. 3-17 However, with the G switch on, the I ine in error is also typed out and the user may take one of four possible actions: a. The line may be deleted by typing D.~ b. The I ine may be accepted as is by typing ~ c. The line may be replaced by typing a new line to replace the one in error, followed by a carriage return. d. PIP may be restarted by typing tP Example: T DTl FILEA SRC (AG) "'--P~~ SDU is the source device (and unit if applicable) (Same options as DDU.) Use of ALT mode to terminate a command string, forces PIP-9 to exit to the Monitor upon successful completion of the command. Use of carriage return as the terminator, causes PIP-9 to wait for another command upon completion of the current one. Correction Procedures Procedures ava i lable for command string correction are: a. The rubout (RO) key deletes the input character immediate Iy preceding. A~s echoed for each RO input. b. tUde letes the entire input line. The user begins the I ine from the first input characater. When P IP-9 detects a command string error, the questionable command string is output up to but not including the offending character followed by "?", requiring correct completion by the user. If the user prefers to retype the command, a carriage return will in this instance· signal PIP-9 to accept a new command from the beginning. The character RO and t U may not be used in this context since the Teletype handler (which no longer has access to the erroneous command string) and not PIP-9 interprets and acts upon RO and t U. A task may be abort ed and PIP-9 restarted by typing in the t P character at any time. t P has a secondary use in PIP-9 which is to indicate loading of the next in a series of paper tapes. For example, at the end of each of several paper tapes to be combined into one output file, P'IP-9 will output to the teleprinter t P, informing the user that he may load the next paper tape and typE~ t P for PIP-9 continuation. Refer to the PDP-9 Util ity Systems Manual (DEC-9A-GUAB-D) for detailed descriptions of a II the funct ions ava i lable accompan ied by pertinent examp les. 3-18 3.4.4.4 Text Editor (EDIT-9) - When the Text ~ditor is loaded and ready to accept an input command string, it prints: EDITOR > on the Teletype. If the input device is the paper tape reader, the user should load the tape to be edited, then momentarily depress the tape-feed control button to clear the reader-out-of-tape flag. At this point the user may type: OPEN FILNME EXT ~ ~ or The first format (OPEN FILNME EXT ~ ) is used when a current file, called FILNME with an extension EXT (SRC is assumed if the extension is omitted) is on the device associated with .DAl slot -14 and is to be modified. The editing process results in a new file, with a temporary name, being created on the device associated with .DAT slot -15. At the end of the editing process, the temporary file on the device associated with .DAT slot -15 replaces FILNME EXT (and is renamed FILNME EXT) on the device associated with .DAT slot -14. Of course, this replacement only occurs when both devices (.DAT slot -14 and -15) are bulk storage. Otherwise the final output is on .DAT slot -15. The second format (CR) is used when a new file is to be created, via Teletype keyboard input on the device associated with .DAT slot -15. If the devices associated with .DAT slots -14 and -15 are both bu Ik storage, at the end of the ed iting process, the temporary fi Ie on • DAT slot -15 wi II be written on • DAT slot -14 with the fi Ie name and extension spec ified in the command string on the CLOSE command to the EDITOR. Whenever the EDITOR is waiting for a command from the keyboard, it indicates th is by outputting > on the te leprinter • The CLOSE command to the EDITOR closes the current file and causes the EDITOR to cycle back to its initial printout EDITOR > The EXIT command to the EDITOR causes an .EXIT return to the Monitor. 3.4.4.5 Linking Loader (UNK-9) - When the Linking Loader is loaded into core and is ready to accept an input command string from the keyboard, it will type: LOADER > 3-19 on the Teletype. At this point, the input device should be set UPi if it is the pClper tape reader, the tape-feed control button should be depressed mc>mentarily, after the paper tape is loaded, to clear the reader-out-of-tape flag. The input command string to the Linking Loader should consist of the list of file names of all programs to be uncond itiona IIy loaded from the 'sytem input device (. DA T slot -4). The fi Ie names specified to the Linking Loader should agree with the names originally used in the FORTRAN IV compilation or MACRO-9 assembly of the programs; they should be typed on the Teletype keyboard in the following format: LOADER >NAME1, NAME 2, NAME3~ >NAME 4, NAME 5, (ALT MODE) The main program must be requested first, followed by any desired subprograms. The file names should be one to six characters in length, with any characters over six being ignored. Only the file names should be specified; the Linking Loader will automatically assume that the file name extension is BI N (re locatable binary) and wi II search on both fi Ie name and extension. A file name, in the input command string, is terminated by a comma i(,), a carriage return (*), or an AL T MODE. Unti lone of these three characters is encountered, n rubouts may be used to delete the previous n characters of the file name. ALT MODE terminates the input command string, and carriage return (~) causes the loader to echo a line feed 0), close angle bracket (», so that the following format maya Iso be used. >NAME 'j '" ~ >NAME 2~ J > NAMEtv\ (ALT MODE) When the input device is not file-oriented, n commas, followed by the ALT mode character, prepares the Linking Loader to load n + 1 programs from the system input device. After loading all programs requested in the keyboard input command string, the Loader wi II attempt to resolve a" unsatisfied subroutine requests by scanning the externa I library (. DA T slot -5) and system library (.DAT slot -1), in that order. If an external (user) library file exists and should be used for the programs being loaded, inform the Linking Loader of this by using the ASSIGN command to assign the I/O device on which the file is contained to .DAT slot -5 (before using the LOAD, DDT, DDTNS, or GLOAD command). EXAMPLE: ASSIGN $LOAD DTA4 3-20 -5 The externa I I ibrary file must be named . LlBR, with a file name extension of BIN; it must be in the format shown in Figure 3-2. ONE FILE, ~ ________________________________ ~A~ LIBR ___________________ PROGRAM SIZE DESCRI PTOR PROGRAM UNIT INTERNAL GLOBALS ~ LOAD ADDRESS DESCRIPTOR __________ ONE rops BINARY BUFFER PROGRAM UNIT - ~A~ ___________ - - - ~ lOPS - lONE BINARY BUFFER I ~ DATA H, TWO-WORD HEADER VIRTUAL GLOBALS H2 END CODE C, I C2/C3 -< D, '> FOUR-WORD GROUP D2 Cn=2310 TERMINATES A PROGRAM UNIT THE NEXT UNIT MUST BEGIN A NEW rops BINARY BUFFER, "" D3 C4 /C 5 /C 6 ~DESCRIPTOR r'I "'+ D5 48 > WORD 10 S D6 I I I C34 /C 35 /C 36 D34 D35 D36 - 0-89-'7 ~_-L. WORD 0 __----I WORD 1 } END-OF-FILE UNIT END-OF- FILE UNIT ONLY PRESENT AT END' OFLI BR FILE. MUST BE REMOVED FROM END OF ALL PROGRAM UNITS, SINCE FORTRAN IV AND MACRO-9 ALWAYS CREATES E-O-F UNIT, Figure 3-2 Library File Structure 3-21 If a load ing error occurs, an appropriate error message (see Section 2'.5.5.2) is printed on the Teletype, and control transfers to the System Bootstrap to re-initialize the Keyboard Monitor. When a II requested programs are loaded and a II I ibrary requests (expl ic it and impl ic it) are satisfied, the Linking Loader will either: a. (If the Linking Loader was called via LOAD) output tS and wait for the user to type t S on the Teletype, then transfer control to the starting address of the user's main program, or b. (If called by GLOAD) immediately transfer control to the starting address of the user's ma in program. When the user program finishes and returns control to the Monitor via an . EX IT command, the System Bootstrap is called to re-initialize the Keyboard Monitor. It then awaits its next command. A memory map of the program(s) is printed during loading. It will have the same format as discussed in Section 2.5.5.1. 3.4.4.6 Debugging System (DDT -9) - The procedures for load ing a program with DDT -9 are ident ica I to those used with the Linking Loader (see Section 3.4.4.5) with one exception: after loading the program and the DDT symbol table*, control is automatically transferred to the starting address of DDT -9. When ready, DDT -9 will type DDT > inform ing the user that it is ready to accept a command. The user can force control back to the starting address of DDT -9 at any time by typing tT on the Teletype keyboard. DDT-9 uses .DAT slots -6 and -10 for hard copy patch output and input, respectively. If the user is not going to take advantage of the pCltch capabil ities of DDT -9, he shou Id assign NONE to those . DA T slots so that unnecessary device handlers are not loaded into core, i. e.; ASSIGN $DDT 3.4.4.7 NONE -6, -10 System Generator (SGEN -9) - Prior to requesting the System Generator via the SGEN Key- board command, request information about "the current'operating environment by entering the following device examination and information keyboard commands: 'kThe DDT symbol table will not be loaded if DDTNS, instead of DDT, keyboard command was used to initiate loading. 3-22 SCOM Causes output of certain system information, including a Iist of the device handlers available and a brief description of each of their features. REQUEST SGEN Causes output of • DAT slot assignments used by the System Generator and the use made of each • DAT slot. If any assignment does not agree with the user's need, it can be changed via the ASSIGN keyboard command (being aware of the handlers available as listed by the SCOM command and the handler requ irements of SGE N (Section 4.6.10). INSTRUCT SGEN Causes printout of the basic operational instructions for the System Generator. NOTE: It is imperative that your old system device be assigned to .DAT slots -10 and -14 and the unit that will conta in your new system device be assigned ·to . DA T -15. When the System Generator is loaded (via the SGEN command) and ready to begin questioning the user on items pertinent to the building of a new system tape, it outputs the following introduction and then proceeds with the questioning*. SYSTEM GENERATOR THIS PROGRAM WILL GENERATE A NEW SYSTEM TAPE ON THE DEVICE SPECIFIED IN .DAT SLOT -15. IT WILL DETERMINE THE CHARACTERISTICS OF THIS SYSTEM TAPE BY ASKING YOU A SERIES OF QUESTIONS. IF IT CANNOT UNDERSTAND THE ANSWER YOU GIVE, IT WILL REPEAT THE QUESTION. HERE GOES! HOW MUCH CORE IS AVAILABLE? TYPE 8, 16, 24, OR 32. >16 IS AN API AVAILABLE? TYPE Y OR N. >N IS AN EAE AVAILABLE? TYPE Y OR N. >Y INDICATE THE PRESENCE OR ABSENCE OF THE FOLLOWING DEVICE HANDLERS BY TYPING Y OR N: *The answers to questions must be term inated by a carriage return. 3-23 PRA? PRB? PPA? PPB? PPC? LPA? CDE? CDB? DTA? DTB? DTC? DTD? >Y >Y >Y >N >Y >N NOTE: Refer to Section 4.6 for detailed description of all Vo Device Handlers .• >N >N >Y >Y >Y >Y ARE ANY OTHER DEVICE HANDLERS PRESENT? TYPE Y OR N. >Y HOW MANY? TYPE OCTAL NUMBER. >2 TYPE THREE CHARACTER HANDLER NAME FOR NO. 01 • >AAA HOW MANY SKIP lOTS SHOULD BE IN SKIP CHAIN FOR THIS DEVICE HANDLER? TYPE OCTAL NUMBER. >1 TYPE UP TO FIVE CHARACTER MNEMON IC FOR SKIP lOT NO. 01, A COMMA, AND OCTAL SKIP lOT. >AASF, 701111 TYPE THREE CHARACTER HANDLER NAME FOR NO. 02. >ZZZ HOW MANY SKIP lOTS SHOULD BE IN SKIP CHAIN FOR THIS DEVICE HANDLER? TYPE OCTAL NUMBER. >3 TYPE UP TO FIVE CHARACTER MNEMONIC FOR SKIP lOT NO. 01, A COMMA, AND OCTAL SKIP lOT. >ZSF, 702221 TYPE UP TO FIVE CHARACTER MNEMONIC FOR SKIP lOT NO. 02, A COMMA, AND OCTAL SKIP lOT. >ZZSF, 703331 TYPE UP TO FIVE CHARACTER MNEMONIC FOR SKIP lOT NO. 03, A COMMA, AND OCTAL SKIP lOT. >ZZZSF, 704441 3-24 THE FOLLOWING SKIP lOTS ARE TO BE INCLUDED IN THE SYSTEM SKIP CHAIN: CLSF KSF TSF RSF PSF DTDF DTEF AASF ZSF ZZSF ZZZSF TYPE THEM IN SKIP CHAIN ORDER, ONE PER NUMBER. NO. Ol? NO. 02? NO.03? NO. 04? NO. 05? NO. 06? NO.07? NO.10? NO. 11? NO.12? NO. 13? >ZSF >ZZSF >ZZZSF >AASF >CLSF >DTDF >RSF >PSF >KSF >TSF >DTEF NOTE: Structure the skip chain so that those devices requiring faster service have their skip 10T(s) at the beginning of the chain. WHICH DEVICE HANDLER IS TO BE USED FOR THE SYSTEM DEVICE? (NOTE: THIS MUST BE SMALLEST INPUT ONLY HANDLER) >DTC TYPE THE DEVICE HANDLER NAME (NON FOR NONE) AND THE UNIT NO. FOR THE FOLLOWING .DAT SLOTS: -15? -14? -13? -12? -11 ? -10? -6? -5? -4? -1? 1? 2? 3? 4? 5? 6? 7? 10? >DTA4 >DTA3 >DTB1 >TTA >DTB3 >PRA >PPC >DTC2 >DTC1 >DTCO >TTA >TTA >DTA1 >TTA >DTAl >PRA >AAA >ZZZ NOTE: Refer to Section 4.6.10 for system program • DAT slot requ irements in setting up the negative .DAT slots. The positive .DAT slots belong to the user, and the standard setup should bea function of the needs of the users at your installation. 3-25 Once the new system tape has been constructed, it can then be used as the installation standard tape by mounting it on the system dev ice un it (i.e., un it 0 for DECtape), read ing in the paper tape system bootstrap, etc. 3.4.4.8 Dump Routine (DUMP-9) - This system program gives the user the ability to output on any listing device specified core locations that had been preserved on a bulk storage file via the to monitor dump command (see Section 3.2.3.5). When DUMP-9 is ready to accept the user's dump command string from the keyboard, it prints: DUMP > on the Te letype . The formats expected by the DUMP-9 command string processor are as follows: COMMAND MEANING ALL The entire to area (from location 10 to the address in . SCaM) on the device assoc iated with . OAT slot -14 (at to time, th is device was the spec ified output device) is I isted on the device associated with .DAT slot -12. XXXXX-YYYYY The to area between absolute addresses XXXXX and YYYYY on the device assoc iated with . DA T slot -14 is I isted on the device associated with .DAT slot -12. At tQ time, this device (.DAT slot -14) was the specified output device and XXXXX and YYYYY were the absolute (octal) bounds of the core area to be dumped. zzz# The content of block # ZZZ on the dev ice assoc iated with . DA T slot -14 is I isted on the device assoc iated with . OAT slot -12. The block number is in octal radix. If a command is term inated by a carriage return (~), control returns to the command string processor after completion of the request. DUMP > will be printed on the teleprinter indicating readiness for another command. If a command string is terminated by the ALT mode character, control returns to the Monitor upon completion of the request. Any u nrecogn izable commands cause? to be typed and control to re1'urn to the command string processor will type> to indicate its readiness for a command. EXAMPLE: MONITOR $ASSIGN DTDO-14 $ DUMP 3-26 DUMP >16730-16750 16730 000032 003740 013777 000000 000000 413420 013422 463356 16740 127400 463356 127400 000612 003766 003773 000000 020202 1 6750 000000 DUMP > 3.4.4.9 Library Update Program (UPDATE-9) - This system program gives the user the capability of bu i Id ing, exam in ing and updat ing library fi les. When UPDATE -9 is ready to accept the user's fi Ie spec ifying command string from the keyboard, it outputs UPDATE > on the te leprinter. The user should then type, on the same line as the right angle bracket (>), a file specifying command string in the following format: Options L, U, N File Name Term inator j; or ALT mode +--FILEX L - Li bra ry f i Ieli st i ng on . DA T -1 2 U - Update from . DAT -14 to . DAT "" 15 with secondary input on . DAT -10 N - Create from . DA T -10 onto . DAT -15 Ne ither U or N - Input on . DA T -14 (no output on . DA T -15 or secondary input on secondary input on .DAT -10) used primarily with CLOSE command to get clean library file listing on .DAT -12. The default library file name is .LlBR (the file name used in library .SEEK's by the Linking Loader). The fi Ie name extension is a Iways assumed to be BIN. If the file specifying the command string is terminated by a. AL T mode, control wi /I be returned to the Mon itor when updating of the current fi Ie is completed. b. carriage return (~), control will remain with UPDATE when work on the current file is complete and it will output UPDATE > to the teleprinter to indicflte readiness for the next file specifying command. 3-27 When UPDATE is ready for a I ibary file manipulation command, it outputs> to the teleprinter. The user should now type a file manipulation command on the same line as the right angle bracket (» terminated by carriage return ()) and in the following format. DELETE [D]* NAME Delete the named routine from file, copying all previous routines (valid command only if U option) REPLACE [R]* NAME 1, NAME 2 Replace NAME 1 with NAME 2 (default is NAME 1), copying all previous routines, (val id command only if U option). INSERT [1]* NAME3, NAME 4 Replacement comes from . DA T -10. Insert NAME 3 after NAME 4 (default is last routine processed or beginning of file) (copying all previous routines if U option). Spec ifying a second argument (NAME 4) is only val id in U mode. Insert comes from .DAT -10. END [E] * Position at end of fi Ie (copying a /I routines if U option). KILL [K] * Abort operations on current file, destroying bad output file. Issued when user detects trouble with up- dating process. CLOSE [C]* FILENM Performs EN D if not done; clears up at end of update satisfying a II options and giving the output fi Ie the name FILENM (default is . LlBR even if a NAME was given in fi Ie spec ifyir.g command string, i. e.i U ---NAME~). EXIT to t\~onitor or remain in UPDATE for next file as a function of the fi Ie specifying command string terminator (ALT mode or~ . The library file listing on .DATslot -12will be in the followingforrnat. LIBRARY FILE LISTING FOR ALE NM PAGE 1 PROGRAM NAME PROGRAM SIZE ACTION NAME 2 DELETE NAME REPLACE NAM.E 1, NAME 2 NAME 4 NAME 3 INSERT NAME 3, NAME 4 *Entire name or first character of name will suffice as file manipulation commands. 3-28 PDP-9 MONITORS Error messages - recoverable If command completely unintell igable ? > If Delete, Replace, Insert (with 2 arguments) used with other than U option VALID ONLY IN U MODE - COMMAND IGNORED > If Delete, Replace, Insert (with 1 argument) used without U or N option VALID ONLY IN U OR N MODE - COMMAND IGNORED > If no name given after Insert, Delete, Replace ILLEGAL COMMAND STRUCTURE - COMMAND IGNORED > If program requested in any command not found in forward directi~n (tape at end) EOF REACHED BY SEARCH - COMMAND IGNORED > This file is still open and may be accessed via INSERT, CLOSE and KILL commands. If wrong program used as input on • DAT slot -10 for Replace or Insert command WRONG PROGRAM AS INPUT - CORRECT INPUT AND tP Set up input device with the correct program and then type tP on the keyboard. Error messages - terminal (new file specifying command required) If end code found before program name on binary input PROGRAM NAME MISSING - DYNAMIC KILL UPDATE > If not enough room in core for program BUFFER OVERFLOW - DYNAMIC KILL UPDATE > If read error on input buffer UNRECOVERABLE READ ERROR ON .DAT N - DYNAMIC KILL UPDATE > 3-29 PDP--9 MONITORS 3 .4.4.1 ~ 7-to-9 Converter, (CONV-9) - The 7-to-9 Converter converts source programs written for the PDP-7 or basic PDP-9 assemblers to a format acceptable to the ADVANCED Software PDP-9 MACRO-9 Assembler. When CONV-9 is loaded and ready for operation, it prints the following on the teleprinter. 7- TO-9 CONVERTER > Th is ind icates that CONV-9 is ready to accept a command string (on j-he same I ine as the » te II ing it what action to take. The command string format is: Options L, A, R, E, Tn ll Term inator File Name(s) .-. L dec im.al number of input tapes multiple input tapes ·th EOT term .mate ou t pu t WI. .mstea d 0 fEND • ! FILE1, FILE2 . ~outPut program name (.DAT slot -15) J or ALT mode 1 ~ return control to the Monitor input" pro~ram ~ame .( .DAT slot return to CONV-9 to per- -14)., It IS. om Itted If the same form more conversions as output file name remove origin settings insert .ABS pseudo-op list output (.DAT slot -12) Default Assumptions NO listing NO inserting of .ABS pseudo-op NO removal of orig in settings .END instead of .EOT ONE input tape The options desired may appear in any order, separated by commas and term inated by +-. If no options are wanted,..- is sufficient. Rubouts may be used to delete unwanted characters prior to typing the command string term inator. If an error in the command string is detected, CONV-9 types COMMAND STRING ERROR > and waits for a new command string. Refer to PDP-9 Utility Programs Manual (DEC-9A-GUAB-D) for lists of items that cannot be correctly converted by CONV-9 and must be modified by the programmer himself. 3-30 PDP-9 MONITORS 3.4.5 Error Detection and Hand ling Error detection in the Keyboard Monitor system is handled in the same manner as in the I/O Monitor environment (see Section 2.6) except that after error messages are output, control automatically returns to the System Bootstrap for re-initialization of the Keyboard Monitor. If SDUMP has been issued prior to execution of this program, an automatic tQ (dump the current job, in core image, onto prespecified blocks of the system device) takes place before control is returned to the Bootstrap. This dumped file can than be selectively interrogated (I isted) by the system program DUMP. 3-31 PHASE I 8K or 16K or 24K or 32K RESIDENT BO~~~~~~P 96 10 1 - - - - - - - - 4 • SCOM The System Bootstrap is loaded via the paper tape reader in H RM mode. o Figure 3-3 Memory Maps: Bulk Storage Systems 3-32 PHASE 2 8K or 16K or 24Kor32K RESIDENT SYSTEM BOOTSTRAP NON- RESIDENT SYSTEM BOOTSTRAP SCOM The System Bootstrap loads {DUMP mode} the Keyboard Monitor {resident and nonresident} from the system device. NON-RESIDENT KEYBOARD MONITOR: INITIALIZATION AND KEYBOARD COMMAND DECODER • RESIDENT KEYBOARD MONITOR (INCLUDING TELETYPE HANDLER) SCOM + 1 AND. SCOM +2 840 ,0 o Figure 3-3 Memory Maps: Bulk Storage Systems {cont} 3-33 PHASE :3 8K or 16K or 24K or :32K RESIDENT SYSTEM BOOTSTRAP • The Keyboard Monitor looids (DUMP mode) the System Loader and the system devi ce handler from the system dEwice. SCOM SYSTEM LOADER The System Loader, durin~} loading of a system program from the system devi ce, bui Ids the loader (GLOBAL) symbol table down from .SCOM+3 and the programs up from .SCOM+2. -------SYSTEM DEVICE HANDLER 620 ,0 • SCOM+:3 • SCOM+I 1 i a • SCOM+2 RESIDENT KM-9 (INCLUDI NG TELETYPE HANDLER) o Figure 3-3 Memory Maps: Bulk Storage Systems (cont) 3-34 PHASE 4A (SYSTEM PROGRAM IS NOT LINKING LOADER) 8K or 16K or 24K or 32K The System Loader learns which I/O handlers are requ i red by the requested system program from its table of .IODEV info for system programs, loads the handlers relocatably just above the resident KM-9 and then modifies the System Bootstrap to bring in the system program in Dump mode just below the Bootstrap. RESIDENT SYSTEM BOOTSTRAP • SCOM SYSTEM PROGRAM: FORTRAN IV MACRO-9 EDITOR PIP SYS. GEN. DUMP UPDATE • . EX 1T from the system program takes the process back to PHASE 2 where the system bootstrap reinitializes the Keyboard Monitor. SCOM+3 SYSTEM PROGRAM TABLE SPACE ie: MACRO-9 AND FORTRAN IV SYMBOL TABLES. Refer to Section 4.6 for the sizes of the device handlers that may be assoc iated with the . DA T slots used by the System program. , • SCOM+2 SYSTEM PROGRAM DEVICE HANDLER SYSTEM PROGRAM DEVICE HANDLER • RESIDENT KM-9 (INCLUD!NG TELETYPE HANDLER) SCOM+l 64010 o Figure 3-3 Memory Maps: Bulk Storage Systems (cont) 3-35 8K or 16K or 24K or 32K PHASE 4B (SYSTEM PROGRAM IS LINKING LOADER) LOAD GLOAD DDT DDTNS RESIDENT SYSTEM BOOTSTRAP • SCOM a The System Loader learns which I/O handlers are required by the Linkin!~ Loader, loads them relocatably and then loads the Linking Loader relocatably. • SCOM+3 1 The Li nki ng Loader, duri nB loading of user programs down from. SCOI\'\+3, builds the loader (GLOBAL) and DDT (if DDT) symbol tables up from . SCOM+2. DDT symbol table will not be built if a LOAD, GLOAD, or DDTNS load. i LINKING LOADER • SCOM+2 1100 10 LINKING LOADER DEVICE HANDLER LINKING LOADER DEVICE HANDLER If a DDT load, the Linking Loader just prior to giving control to DDT moves the DDT symbol table down in core so that is overlays all of the Linking Loader except for the small routine tl-xlt makes the block transfer. { The Linking Loader will not load a device handler that is already in c:ore for its own use. REFER TO SECTION 4.6 FOR DEVICE HANDLER SIZES. • SCOM+1 RESIDENT KM-9 (INCLUDING TELETYPE HANDLER) o Figure 3-3 Memory Maps: Bulk Storage Systems (cont) 3-36 PHASE 5A (NOT DDT OR DDTNS) 8K or 16K or 24K or 32K . EXIT from the user program takes the process back to PHASE 2 where the system bootstrap re-initializes the Keyboard Monitor . RESIDENT SYSTEM 800TSTRAP • SCOM Refer to Section 4.6 for si zes of device handlers. USER PROGRAM(S) . SCOM+ 1 and. SCOM+2 both point to one of two places and non-BLOCK DATA COMMON (FORTRAN IV or MACRO-9) output may make use of core as low as they point. USER DEVICE HANDLER USER DEVICE HANDLER USER DEVICE HANDLER • ------_. SCOM +3 (b.l LINKING LOADER DEVICE HANDLER ------- a. If the user program did not have any device handlers in common with the Linking Loader. b. If the user program did have at least one device handler in common with the Linking Load. LINKING LOADER DEVICE HANDLER (0.1 RESII)ENT KM-9 \INCLUDING TELETYPE HANDLERl 840,0 o Figure 3-3 Memory Maps: Bulk Storage Systems (cont) 3-37 PHASE 5B (DDT OR DDTNS1 . EXI T from the user program takes the process back to PHASE 2 where the system bootstrap re-initializes the Keyboard JMonitor 8K or 16K or 24Kor32K RESIDENT SYSTEM BOOTSTRAP Refer to Section 4.6 for sizes of device handlers. • SCOM DDT 1600 10 Non BLOCK DATA COMMON (FORTRAN IV of MACRO-9 output) may mClke use of core as low as the DDT symbol table*. However I trouble wi II occur if the user requests DDT to create symbols or make patches that cause overlaying of the COMMON area. USER PROGRAM (Sl USER/DDT DEVICE HANDLER USER/DDT DEVICE HANDLER • The Linking Loader device h:mdlers would have been used to satisfy user device requests. SCOM + 3 1 *There is no DDT table if a DDTNS load. DDT CREATED SYMBOLS AND PATCH SPACE • SCOM +2 • SCOM + I DDT SYMBOL TABLE VI IIIIIIIIIIIIIJ LINKING LOADER DEVICE HANDLER L LINKING LOADER DEVICE HANDLER LINKING LOADER BLOCK TRANSFER ROUTINE RESIDENT KM-9 (INCLUDING TELETYPE HANDLER) o * IFTHERE IS NO DDT TABLE A DDTNS LOAD. Figure 3-3 Memory Maps: Bulk Storage Systems (cont) 3-38 liNKING LOADER TAPE 8K or 16K or 24K or :32K BOOTSTRAP LOADER IN HRM FORMAT I • SCOM AND • SCOM +:3 USER PROGRAMS + Refer to memory map 5A of Bu Ik Storage Systems for results of Link Loading. + GLOBAL SYMBOL TABLE I • SCOM LINKING LOADER 11°°10 PAPER TAPE READER HANDLER 395 10 • +2 SCOM + 1 1/0 MONITOR WITH TELETYPE -IN AND TELETYPE-OUT DEVICE HANDLERS o Figure 3-4 Paper Tape System (I/O Monitor) 3-39 DDT TAPE 8K or 16K or 24K or 32K BOOTSTRAP LOADER IN HRM FORMAT • SCOM DDT 1600 10 , • I SCOM +3 USER PRORAMS Refer to memory map 5B of Bulk Storage Systems for results of Link Loading in DDT mode. ~ Paper Tape Punch Handler is only present in DDT versions with patch file capabilities. GLOBAL AND DDT SYMBOL TABLES I • LINKING LOADER SCOM +2 1100 10 PAPER TAPE PUNCH HANDLER PAPER TAPE READER HANDLER 395 10 • SCOM + 1 lIO MONITOR WITH TEL ETYPE -IN AND TELETYPE -OUT DEVICE HANDLER o -- Figure 3-4 Paper Tape System (I/O Monitor) (cont) 3··40 OTHER SYSTEM PROGRAMS: 8K Or '6K or 24K or 32K BOOTSTRAP LOADER IN HRM FORMAT FORTRAN MACRO-9 EDITOR PIP-9 nz: 5010 • SCaM Refer to Section 4.6 for sizes of device handlers. SYSTEM PROGRAM • SCOM +3 • SCOM + 2 SYSTEM PROGRAM TABLE SPACE SYSTEM PROGRAM DEVICE HANDLER REFER TO SECTION 4.6 FOR SIZES OF DEVICE HANDLERS SYSTEM PROGRAM DEVICE HANDLER • 1/0 MONITOR WITH TELETYPE-IN AND TELETYPE-OUT DEVICE HANDLERS SCaM +' 775,0 o Figure 3-4 Paper Tape System (I/O Monitor) (cont) 3-41 CHAPTER 4 SUMMARY OF COMMANDS 4. 1 SUMMARY OF USER PR OGRAM C aMMAN D S To initialize a device and device handler: .INIT a,f,r LJ where a . DAT slot number in octal f 0 for input files; 1 for output files. r user restart address* To read a I ine of data from a device to a user's buffer • • READ a,m,l,w LJ where a = • DAT slot number in octal. m = a number,O-4, specifying the data mode: o lOPS binary 1 Image binary 2 lOPS ASCII 3 = Image alphanumeric 4 Dump mode = Line buffer address w = word count of the line buffer in decimal, including the I two word header To write a I ine of data from the user's buffer t.O a device: • WRITELJa, m, I, w where = . DAT slot number in octal m = a number, 0-4, spec ifying the data mode: o lOPS binary a 1 2 3 4 Image binary lOPS ASCII Image alphanumeric Dump mode = Li ne buffer address w = word count of line buffer in decimal, including the I two word header *Only meaningful when device associated with ·DAT slot..9. is the Teletype. Typing tP on the keyboard will force control to location r. 4-1 To detect the availability of a line buffer: .WAIT a w where • DAT slot number in octal. After the previous. READ, • WRITE or • TRAN command is completed, control is returned to the user immediately after the. WAIT. a To close a file and update the device directory to include the new file name: .CLOSE where a LJ a = • DAT slot number in octal To set the real-time clock to n and start it: • TIMER where LJ n, c n = number of clock increments in decimal. Each increment is 1/60 second (in 60 cycle systems) or 1/50 (in 50 cycle systems) . c = address of subroutine to handle interrupt at end of interval To return control to Keyboard Monitor ?r I/O Monitor: .EXIT Mass Storage Commands for DECtape, Magnetic Tape, Disk and Drum Only To search for a file, and position the device for subsequent. READ commands: .SEEK w a,d where a d ] . DAT slot number in octal address of user directory entry block ' - - - - - - - To examine a file directory and find a free directory entry block: .ENTERLJa,d where a . DAT slot number in octal d address of user dimctory entry block ] ' - - - - - - To clear a file directory to zero: .CLEARLP where a = . DAT slot number in octal 4-2 To rewind, backspace, skip, write end-of-file or write blank tape on non-fi Ie-oriented magnetic tape: .MTAPE a,xx LJ where a xx .DAT slot number in octal a number, 00-07, specifying one of the functions shown below: 00 02 03 04 05 06 07 Rewind to load point* Backspace one record* Backspace one fi Ie Write end-of-file Skip one record Skip forward one fi Ie Skip to logical end-of-tape or a number, 10-16, to describe the tape configuration: 10 7-channel, even parity, 200 BPI 11 7-channel, even parity, 556 BPI 12 7-channel, even parity, 800 BPI 13 9-channel, even parity, 800 BPI 14 = 7-channel, odd parity I 200 BPI 15 7-channel, odd parity, 556 BPI 16 7-channel, odd parity, 800 BPI 17 9-channel, odd parity, 800 BPI To read from, or write to any user file-structured mass storage device: .TRAN a,d,b,I,w where, a . DAT slot number in octal d Transfer direction: LJ o 1 2 3 b Input forward Output forward Input reverse (DEC tape only) Output reverse (DECtape only) Device address in octal, such as block number for DECtape core starting address w word count in decimal To delete a file: where a d . DAT slot number in octal = starting address of the 3-word block of storage in user area contain ing the fi Ie name and extension of fi Ie to be de leted from the device. *May be used with any non-file structured mass storage device. 4-3 To rename a file: .RENAMwa,d where a . OAT slot number in octal d starting address of two 3-word blocks of storage in user area containing the file names and extensions of the file to be renamed, and the new name, respectively. To determine if a file Is present on a device: · FSTATwa,d where 4.2 a . OAT slot number d starting address of 3-word block in user area contclining the file name and extension of the file whose status is desired. SYSTEM COMMUNICATION TABLE (. SCOM) Beginning at Location 1008 Word Purpose .SCOM+ a First free register below resident portion of System Bootstrap (constant) .SCOM+ 1 First free register above resident KM··9 (constant) .SCOM + 2 First free register .SCOM+ 3 Last free register .SCOM+ 4 Hardware options available .SCOM+ 5 System program starting location .SCOM+ 6 User starting location · SCOM + 7-11 8 • SC OM + 12-1 58 Device numbers of Linking Loader1s devices. These are used to avoid loading user handlers already in core for the Loader itself. . SCOM + 16 Transfer vectors associated with API software level channel registers 40-43 • 8 Contains PC on Keyboard interrupts . • SCOM + 17 Contains AC on Keyboard interrupts. ~.----------------------------------------------------------------------------------------.--------------~ 4-4 4.3 MAXIMUM LINE BUFFER SIZES (INCLUDING 2-WORD HEADER) Maximum Line Buffer Size Data Modes* PR (paper tape reader) 52 All 34 sufficient if A mode only. 10 Heaaers accepted for B; generated for A, I, Z PP (paper tape punch) 52 All 34 sufficient if A mode only. 10 Heaaers output for B ~:>n Iy . TT (Teletype) 34 CD (card reader) 52 LP (line printer) 52 DTO-7 (DECtape) 255 MTO-7 (MAG. Tape) 255 DK (disk) 255 DR (drum) 255 Device * Data Modes are: 10 10 10 10 10 10 10 10 10 A, Z only All A only Notes AI lows for 80 characters. Headers 10 generated on mput. Headers not output on output. 52 for B mode; 82 for I, Z 10 10 moaes. Headers accepted for Bi generated for A, I, Z. Allows for 125 characters. 10 headers output. No All lOPS mode allows for several line buffers or logical records/physical block. All Where lOPS ASCII and binary lines may be intermixed on a given lOPS mode block. Headers generated only for lOPS modes. Modes I, Z allow for only one line buffer or logical record/physical block. All All A = lOPS ASCII B = lOPS Binary D = Dump Mode I = Image Binary Z = Image Alphanumeric 4-5 4.4 SUMMARY OF KEYBOARD COMMANDS Form LOG Page any comment (ALT mode) SCOM INSTRUCT XXXXXX REQUEST or REQUEST XXXXXX ASSIGN DEYn a, b, etc/DEYm, X, Y, etc. DIRECT or DIRECT n NEWDIR n LOAD GLOAD EDIT MACRO DDT DDTNS PIP F4 SGEN DUMP UPDATE CONY GET N or GET N XXXXX or GET N HALT tS tC tT tQ&.....I tP SDUMP tR HALT 4-6 4.5 MONITOR/lOPS COMMAND TABLE .COMTB contains n 1-word entries, where each entry is a 15-bit address of the entry point of the corresponding Monitor/lOPS handler. -n .COMTB .INIT 2 • DLETE, . RENAM • FSTAT 3 · SEEK 4 • ENTER 5 .CLEAR 6 .CLOSE 7 .MTAPE 10 .READ 11 • WRITE 12 . WAIT 13 .TRAN 14 •TIMER 15 . EXIT 4-7 -n = 1s complement of table length • 4.6 SUMMARY OF STANDARD I/O HAI\JDLER FEATURES 4.6.1 LPA-(647 LINE PRINTER) A. Function 1. .INIT (a) Return standard Iine buffer size (52 10 (b) . SETUP --- API channel register 56 8 (c) Clear line printer buffer (d) 2. Form feed • DLETE .RENAM · FSTAT Ignore 3. .SEEK Illegal function 4. · ENTER Ignore 5. .CLEAR Ignore 6. .CLOSE (a) Allow previous output to terminate (b) Form feed (c) Allow form feed to terminate 7. .MTAPE Ignore 10. .READ Illegal function 11. . WRITE (a) Allow previous output to terminate (b) Output line B. 12. •WAIT Allow previous output to terminate 13. .TRAN Illegal function Lega I Data Modes 1. C. lOPS ASCII Vertical Control Characters (when first character of line) 12 Pri nt every line 21 Print every second line 22 Print every third line 13 Print every sixth line 23 Print every tenth line 24 Print every twentieth line 20 Overprint 14 Form feed 4-8 ) D. Horizontal Control Characters (anywhere in line) 11 Horizontal tab -- converted to N spaces, where N is the number necessary to have the next character in column 11, 21, 31, 41, ... E. Recoverable Errors 1. F. Device not ready Monitor error message, .IOPS 4. f\,~ake device ready, then type tR to continue. Unrecoverable Errors 1. 2. Illegal function Illegal data mode Monitor error message, . lOPS 06 XXXXXX, where XXXXXX is address of error CAL. (a) . SEEK (b) • READ (c) • TRAN Monitor error message, • lOPS 07 XXXXXX, where XXXXXX is address of error CAL. Any mode other than lOPS ASCII. I. Program Size 275 (decimal) registers. 4.6.2 A. TT A ·(TELETYPE) Functions - All function descriptions (except READ and WRITE) refer to action taken when either the teleprinter or the keyboard is addressed. Wait for previous I/O to fin ish on all functions. 1. .INIT (a) Return standard buffer size (3410). (b) Assign return addresses for certain control characters from contents of CAL ADDRESS + 2. Bits 0-1 in CAL + 2 address are set to designate caller: BO, 1 = 01 BO, 1 = 10 BO, 1 = 00 2. . DlETE .RENAM • FSTAT caller = KM9 caller = DDT caller = any other user (c) Set I/O UNDERWAY indicator .. (d) Print CR/LF. Ignore 4-9 3. .SEEK Ignore 4. .ENTER Ignore 5. .CLEAR Ignore 6. • CLOSE 7. .MTAPE 10. • READ 11. B. C. • WRITE (a) Set I/O UNDERWAY indicator . (b) Print CR/LF. (c) Wait on .CLOSE for completion of I/O. Ignore Set (b) Set up to accept characters from keyboard. (a) Set I/O UNDERWAY indicator. (b) Print line . 12. . WAIT Ignore 13. . TRAN IIIegClI function • Legal Data Modes 1• lOPS ASCII 2. IMAGE ASCII Vertical Carriage Control Characters 1. Output (a) (b) 2. D. VO UNDERWAY indicator • (a) Li ne feed (12 ) (1) 8 lOPS ASCII: Ignore all leading I ine feeds; otherwise output (2) IMAGE: Output Others (vertical tab, form feed) outpul~ Inserted in buffer. Input Horizontal Carriage Control Characters Tab (11 ) in or out 8 1. lOPS ASCII 2. IMAGE (a) Model 33 - output sufficient number of spaces to place the next typed character in column 11, .•• , 71 • Insert only 118 in buffer on input. (b) Model 35 - input, insert 118 in buffer. Input, insert 118 in buffer. 4-10 Output, print tab. Output, print l"ab. E. F. Program Control Characters-IN 1. Stop current I/O . to Teletype. 2. Decode character and echo on Telepri nter. * (a) fC transfers control to the address spec ifi ed as return in the.INIT performed by KM9. (b) tP transfers control to the address specified as return in the.INIT performed by the user (other than KM9 or DDT). (c) tT transfers control to the address specified as return in the .INIT performed by DDT. (d) t S transfers control to the address spec ified in . SCaM + 6. (e) to transfers control to KM9SAV. Data Control Characters-IN 1. IMAGE Mode All characters inserted in buffer 2. lOPS ASCII Mode (a) Rubout. Delete previous character typed. Type out reverse slash (\). tu (b) G. delete entire line typed so far. Type out commercial at (@). If output is UNDERWAY, printing is terminated and a CR/LF is output. Data Control Characters-OUT (both modes) Ignore rubout (177 ) and null (00). 8 In image a I pha mode, a rubout should be used to fi II the last word pair when an odd number of characters is to be output H. I. Errors (no program-initiated recovery) 1. Illegal data mode Error code 7 2. Illegal function Error code 6 Program Si ze 410 J. 10 registers (this is inc luded in resident MONITOR) Teletype I/O - Can be requested only from mainstream in API systems, since the Teletype is not connected to the API. *Character will be ignored (not echoed) in cases (a), (b), and (c) if respective .INIT has not been performed. 4-11 4.6.3 A. PP (PAPER TAPE PUNCH) Functions 1. .INIT (a) Return standard buffer size (52 (b) 10 ), . SETUP - no API. (c) Punch 'two fanfolds of leader. 2. · DLETE .RENAM · FSTAT ignore 3. · SEEK Illega I function. 4. · ENTER Ignore 5. .CLEAR Ignore 6. .CLOSE (a) Allow previous output to terminate. (b) Punch EOF if lOPS Binary (c) Punch j'wo fanfolds of trailer (d) Allow trailer punching to terminate 7. .MTAPE Ignore 10. .READ Illega I function 11. . WRITE (a) Allow previous output to terminate . (b) Output buffer B. C. 12. . WAIT Allow previous output to terminate . 13. .TRAN Illegal function Lega I Data Modes 1. lOPS Binary 2. IMAGE Binary 3. lOPS ASCII 4. IMAGE ASCII 5. Dump Vertical Control Characters (lOPS ASCII only) May appear only as first character of line, if elsewhere in line will be ignore!d; if no vertical control character at beginning of line, a line feed (012) will be used. 1. 012 Line feed 2. 013 Vertical tab, followed by four deletes (177) 3. 014 Form feed, followed by 40 nulls (000) 8 4-12 D. Horizontal Control Characters (lOPS ASCII only) 1. E. 011 Horizontal tab, followed by one delete (177) Recoverabl e Errors 1. No tape in punch Monitor error code 4 (a) Put tape in punch (b) Type tR F. Unrecoverable Errors 1. 2. Illegal function Illegal data mode Mon itor error code 6 (a) . SEE K (b) . READ (c) . TRAN Mon itor error code 7 I. Program Size J. In API systems, the paper tape punch can be called only from mainstream, since the punch is not PPA. (all data modes) PPB. (all except lOPS ASCII) PPC. (lOPS binary only) 361 decimal registers 254 decimal registers 194 decimal registers connected to the API. 4.6.4 A. PR (PAPER TAPE READER) Functions 1. .INIT (a) Return standard I ine buffer size (52 (b) . SETUP API channel register 50 10 ) a (c) Clear I/O UNDERWAY indicator 2. . DLETE .RENAM . FSTAT Ignore 3. . SEEK Ignore 4. .ENTER III ega I function (error code 6) 5. .CLEAR Illegal function (error code 6) 6. .CLOSE Allow previous input to finish and th0n clear I/O UNDERWAY indicator. 7. .MTAPE Ignore 4-13 10. B. .READ (a) Allow previous input to be completed. (b) Input line or block of data (see modes below). 11. . WRITE Illegal function (error code 6). 12. . WAIT Allow previous input to be completed before allowing user program to cont i nue . 13. . TRAN I IIega I function. Lega I Data Modes (A 11 ) 1. lOPS ASCII (a) Constructs I ine buffer header, computi ng: (b) (1) Word pair count (2) Data mode (3) Data validity bits Packs characters into the line buffer in 5/7 ASCII, checking parity (eighth bit, even) on each chawcter. (c) Allows vertica I form control characters (FF, LF, VT) only in character pos ition 1 of the I ine buffer. Otherwise, ignored. (d) Term i nates reading on CR or I ine buffer overflow. In the latter case, tape is moved past the next CR ,(0 be encountered. 2. 3. lOPS BINARY IMAGE ASCII (a) Reads binary data in alphanumeric mode, checking parity (seventh hole, odd) on each frame. (b) Accepts line buffer header at head of input data, modifying data validity bits if parity or checksum errors (or short line) have occurred. (c) Terminates reading on overflow of word pair count in line buffer header or word count in .READ macro, whichever is smaller, moving tape to end of I ine or block if necessary. (a) Constructs I ine buffer header, computing: (1) Word pair count (2) Data mode (b) Stores characters, without editing, or parity checking in the I ine buffer, one per register. (c) Terminates reading as a function of .READ macro word count. 4. IMAGE BINARY Same as 3 (a), (b), (c) above; however, a binary read is issued to the PTR. 5. DUMP Same as 3 (b), (c) above. A binary read is issued to the PTR. No header is constructed; loading begins at the core address specified in the . READ macro. 4-14 NOTE: An end of tape condition causes the PTR interrupt service routine to terminate the input line, turning off the I/O UNDERWAY program indicator and marking the header (data mode bits) as an EOM (end of medium) for all modes except DUMP. C. Unrecoverable Errors 1. 2. I. I II ega I Data Mode Mon i tor error code 6 (a) . ENTER (b) .CLEAR (c) . WRITE (d) . TRAN Mon ito~ error code 7 Program Size 4.6.5 A. Illegal Function PRA. (all data modes) 420 decimal registers PRB. (lOPS ASCII only) 271 decimal registers DT (DECT APE) Function 1. .INIT (a) Return standard I ine buffer size (255 (b) • SETUP - API channel register 448 (c) Set direction switch (input or output). 10 ) Note: in order to change transfer direction when operating in a file oriented environment, a new. INIT must first be executed. 2. .OPER (. DLETE) (.RENAM) (. FST AT) (a) • DLETE (1) Examines specified Directory for presence of desired file name. If not found, AC = 0 upon return to user. (2) Deletes file name (clears to O) from the Directory of the specified unit. (3) Clears file bit map corresponding to deleted entry. (4) Clears corresponding occupancy bits in Directory bit map. (5) Records modified Directory and file bit map block on specified unit. 4-15 (b) .RENAM (1) Examines spec ified Directory for presence of des ired fil e name. If not found, AC = 0 upon return to user. (2) Changes file name in Directory to new one spec ified by user program (no change is made to first block pointers) • (3) (c) • FST AT (1) 3. • SEE K Records modified Directory on specified unit. Examines specified Directory for presence of desired file name. If not found, AC = 0 upon return to user. If found, AC = first block number of file. Also, bits o - 2 of CAL ADDRESS + 2 = 1 == DECTAPE Directory type. (d) Other. OPER codes are illegal. (a) Loads into core the Directory of the unit specified if the Directory is not already in core. (b) Checks for presence of named file. if not found.) 4. .ENTER (Error return to Monitor (c) Begins transfer of first block of file into handler buffer area, overlaying Directory Entry Section bl~t not Directory Bit Map. (d) Declares unit to be file oriented. (a) Loads into core the Directory of the unit specified if the Directory is not already in core. (b) Checks for presence of named file. If present, pointer to that entry is saved for update at .CLOSE time. If not present, empty slot is found for file name insertion at .CLOSE time. 5. 6. .CLEAR CLOSE (c) Examine Directory Bit Map for free block and saves that block number for first transfer out and for insertion in Directory Entry Section at • C LOSE time. (d) Declares unit to be file oriented. (a) Zero's out File Bit Map blocks (3) on spec ified DECT APE unit. (b) Zero's out DECTAPE Directory block. (a) On input, clears internal program switches. On output, writes 2 cell EOF line as last line in '::>4tput buffer (lOPS ASCII and binary only) and outputs last data buffer with the data link = 777777. 4-16 (b) loads into core the file bit map corresponding to the Directory Entry in order to clear the Directory Bit Map of bits for blocks formerly occupied by this fi Ie. (c) Records newly constructed file bit map. (d) loads Directory into memory, enters new entry and records Directory again with new entry and updated Directory Bit Map. (e) Clears internal program switches. 7. MTAPE (REWIND) (BACKSPACE) (a) (b) REWIND (1) Sets internal switches such that data transfer will begin at block 0 in the forward direction. (2) Declares the unit as non-file oriented, i.e., data wi" be recorded (starting at block 0) every fourth block. At EOT, recording continues in the reverse direction, etc. Four passes wi II record all 1100 blocks of a 8 DECTAPE. BAC KSPACE (2) 10. 11 • .READ • WRITE Decrements (by 1) the internal pointer to the next b lock to be transferred. (c) Other. MTAPE functions - ignored. (a) Input line from DECTAPE handler buffer or block of data to user area. (see B be low for data modes.) (b) Initiate input of next DECTAPE block when preceding block has been emptied. (a) Transfers I ine or block of data from user area to DECT APE handler buffer. (b) Outputs buffer when full, examing Directory Bit Map for free block number to store as Data link (word 377 ) of cur8 rent block output. 12. • WAIT Allow previous transfer to be completed before allowing user program to continue • 13. • TRAN . Transfer (in or out) the number of wcrds specified by the user's word count to/from the core area indicated in the • TRAN macro to/from the specific block(s) desired by the user. Data will be transferred to/from contiguous DECTAPE blocks in the forward or reverse direction (also ueclared by the user). On input, transfer stops on word count overflow. On output, transfer also stops on word count overflow; however, if the word count is not equivalent to an integral number of DECTAPE blocks, the remainder of the last block will be filled with zeros. 4-17 B. C. Lega I Data Modes 1. lOPS ASCII 2. lOPS Binary 3. Image Alphanumeric 4. Image Bi nary 5. Dump Recoverable Errors 1. Mon itor Error Code 4 Sel ect Error* (a) Ready the desired DECTAPE unit (b) Type tR on the Teletype. D. Unrecoverable Errors 1. Mon itor Error Code 6 Illegal Function (a) 2. 3. Monitor Error Code 7 Illegal Data Mode (a) .SEEK with .INIT for output (b) . ENTER with. INIT for input. (c) See E below for .READ, • WRITE illegal data modes. Fi Ie Sti II Active Monitor Error Code 10 (a) 4. 5. . SEEK, . ENTER Not Executed See E below for illegal functions .SEEK, .ENTER, .CLEAR or .OPER when last file has not been closed. Mon itor Error Code 11 (a) . READ or . WRITE executed prior to . SEE K or . ENTER (or .MTAPE - REWIND). Monitor Error Code 12 DECTAPE Error (a) Mark Track Error (b) EaT during read or write 6. Mon itor Error Code 13 File Not Found (a) 7. DECT APE Directory FIJII File name not found in Directory on a . SEEK. Mon itor Error Code 14 (a) Directory Entry Section found full (24 fi lies) on an . ENTER *A II Select!! error is equivalent to a hardware not ready condition. See the PDP-9 Users Handbook, F95, 5·-12, for a detailed description. 4-18 8. DECT APE Fu II Monitor Error Code 15 {a} All DECT APE blocks occupied on a • WRITE 9. 10. E. Output Buffer Overflow Mon itor Error Code 16 {a} Output line (lOPS ASCII or Binary) greater than 255 cells 10 {including header}. {b} Output block (Image Binary or Image Alphanumeric) greater than 255 cells {excludi,ng header}. 10 Mon itor Error Code 1 7 Excessive Number of Files Referenced See Section E for file reference I imitations. Subprogram Description and Size 1. DT A {which requires 2100 locations} 10 DT A is the most general DECT APE handler issued with the PDP-9 ADVANCED Software System. DTA has a simultaneous 3-file capacity, either input or output. All files may be referenced on the same or different DECTAPE units. All data modes are handled as well as all lOPS functions. Three 256 Bit Maps and three 32 2. 10 -word data buffers, three 32 -word Directory 10 10 word File Bit Maps are included in the body of the handler. DTB {which requires 1664 locations} 10 DTB has a simultaneous 2-file capacity, either input or output. the same or different units. modes. Both files may be on DTB transfers data only in lOPS ASCII or lOPS binary data Included in the handler is space for two 256 word data buffers, two 32 -word 10 10 Directory Bit Maps and two 32 -word File Bit Maps. Functions included are: 10 .INIT • SEEK 3. .READ .WRITE • ENTER .CLOSE .WAIT DTC {which requires 645 locations} 10 DTC is the most limited {and conservative in terms of core allocation} DECTAPE handler in the PDP-9 ADVANCED Software System. DTC is a READ ON LY handler with a 1-file capac ity requiring no space for bit maps and only one 256 -word DECT APE data buffer 10 to handle either lOPS ASCII or lOPS binary input {and no other}. Functions included are: .INIT • SEEK 4. .CLOSE .READ • WAIT DTD {which requires 1400 locations} 10 DTD has full lOPS function capabilities; however, it allows for one and only one file reference, either input or output, at any given time. Sequential file references are permitted. All data modes are acceptable to DTD. One 256 32 10 -word Directory Bit Map and one 32 4-19 10 -word data buffer, one 10 -word File Bit Map are included. 4.6.6 A. CD (Card Readers CROl E and CR02B) Functions l. (a) .INIT (b) 2. B. • DLETE .RENAM .FSTAT } Return standard buffer size (52 ) 10 Call .SETUP to update skip chain with P][C servicer addresses for column ready and card done flags and to place API servicer address in location 55 (API channe I 13). S Ignored 3. .SEEK Ignored 4. . ENTER Illegal function 5. .CLEAR Illegal function 6. .CLOSE Allow previously requested input to terminate. 7. .MTAPE Ignored 10. .READ (a) Allow previously requested input to terminate. (b) Ensure that device is ready. (c) Initiate input of next card. 11. • WRITE Illegal function 12. . WAIT Allow previously requested input to terminate • 13. .TRAN Illegal function LEGAL Data Modes 1. AI phanumeric Input Modes a. lOPS ASCII (Mode 2) (36 locations required to store an SO-column card) 10 Eighty card columns are read and interpreted as Hollerith data, mapped into the correspond ing 64-graph i c subset of ASCII, and stored in the user's Iine buffer in 5/7 format. Compression of internal blanks to tabs and truncation of trailing blanks is not performed; all SO characters appearing on the card are delivered to the caller's line In addition, a carriage return (015 ) character i5 appended to the input line; S a total of Sl ASCII characters are thus returned by the handler in lOPS ASCII mode. buffer. 4-20 All illegal punch configurations (i. e., those not appearing in the 029 Holleri th set) are represented in the userls line buffer area as null (00) characters. In addition, the parity error bit is set in the line buffer header to indicate the illegal punch condition. There is no possibility of confusion between those nulls representing illegal punch combinations and nulls to pad a word-pair containing fewer than five characters. The reason for this lies in the fact that padding nulls are used only in the last pair of the line, and these are always (in lOPS ASCII mode) preceded by a carriage return. Thus any nulls which appear before the handler-supplied carriage return must be considered to represent illegal punches. The single addition to the Hollerith set, one made necessary by the constraints of system programs, is the provision for the internal generation of the ALT mode terminator. The appearance of a 12-1-S punch (multiple-punched A/S) on the card is mapped into the standard PDP-9 AL T mode character (175 ) in the userls Iil1e. S When card processing is complete, word 1 of the header is constructed and stored in the callerls I ine buffer area. Word 2 of the header, the checksum location, is never disturbed by the card reader handler in lOPS ASCII mode. Attention is called to Appendix 1 ("PDP-9 ASCII-Hollerith Correspondence") for a delineation of legal Hollerith codes and their corresponding ASCII graphics. b. Image Alphanumeric (Mode 3) (S2 locations required to store an SO-column card) 10 Eighty card columns are read and interpreted as Hollerith data, mapped into the corresponding 64-graphic subset of ASCII, and stored in the userls line buffer area as SO right-adjusted 7-bit characters, one per word, with leading zero bits. No editing takes place (except in the case of illegal punch combinations), and no terminator is added to the input line. When an illegal (non-Hollerith) punch combination is encountered on the card being read, the corresponding position in the callerls line buffer is set to contain a null (00) character. In addition, the parity-error bit in the line buffer header is raised to indicate the condition. 2. Binary Input Modes a. Image Binary (Mode 1) (S2 locations required to store an SO-column card) 10 Eighty card columns are read as 12-bit binary numbers and stored one per word in the callerls line buffer. The column data appears right-adjusted with leading zero bits. 4-21 b. lOPS Binary (Mode 0) (52 locations required to store 78 data columns) 10 Seventy-eight card columns (columns 1-78) are read as 12-bit bytes and stored, 3 bytes in each 2-word group, in the caller's line buffer area. Punches appearing in columns 79 and 80 are ignored in this mode. Data punched on the card are taken to represent full 18-bit words, each divided into one 6-bit segment and one 12-bit segment. The high-order (leftmost) bit in each column appears in the 12-row of that column; the low-order bit is punched in the 9-row. The organization of words on the card is represented schematically iin Figure 4-1 • COLUMN -- 1 3 4 5 6 12 ..£_"'_~ ON 11 _ '" ..... _ N - CD N J). o 2 ROW 2 1-- ~ 789 76 CIl 0 o -N - en c--- CD N '" ~ ; ~ '" ~ ~ ~ -" CIl 0 -" CIl ..9 __ ~_ "'-_-'2. N CIl ~ ~ ....;;;. 6 CIl ° __ O+-N-+_CIl--+-O=_+__~ ~ -::-+~ --=-'--t;; . . . - ;:; co co _":'. -" ~ I-_~ {Jl N J> - co N -" ;; -" a; ;; -" a; ___ ~ ~ ~ f-~ _~~. _" ~~ 9 0 -"_~ :::~:::;::~:::;_~ ..... ~~~ HEADER PA I R DATA PA I R # 1 Figure 4-1 DATA PA I R # 2 78 r---=-r-L: -..I N -;, co f---- '" ~ --- -" ;. ---- 3°~ - ---=- ~ r---::-:: ~ ~;::, : : 4 77 1--- -- --- 79 80 ~ ~-- 0- 1---=-~~""'''4---::-+---m 0 ;; I--- - - - - '" ~ -----f----+--~ !------"- o --'--" --en 1------ - f----= - ~ ..... '---y-----l '--.r-' DATA PAIR #25 IGNORED lOPS Binary Input Card Format The I ine header pair, punched in columns 1, 2, and 3 of the c1ard, consists of a header word (word 1) and a checksum word (word 2). Header word 1 (column 1; column 2, rows 12-3) includes the following data fields: Bit 0 (column 1, row 12): Ignore checksum indicator; may be punched. Bits 1-8 {column 1 , rows 11-6}: Word Pair Count; must be punched. The handler will halt data transfer upon fulfillment of (1) the word count in the .READ sequence, (2) the word pair count in the card, or (3) 52 first. 4-22 10 words transferred, whichever occurs Bits 9-11 (column 1, rows 7-9): Rows 7 and 9 must be punched. Bits 12-13 (column 2, rows 12-11): Validity Code. This field is ignored by the handler (except for checksum computation) and the punches appearing in it are not passed on to the caller. The handler sets this field in the user's line buffer as dictated by conditions resulting from the read request. Bits 14-17 (column 2, rows 0-3): Mode; this field may contain either no punches or punches in rows 0 and 3 to indicate logical end-of-file. If rows 0 and 3 are punched, columns 4-S0 are ignored. Header word 2 (column 2, rows 4-9; column 3) inc ludes only, in bits 0-17, the checksum word for the card. The checksum must be the 2 1 s complement of the lS-bit, unsigned, arithmetic sum of aU the data words (column 4-7S) on the card and word 1 of the header. c. Dump (Mode 4) (SOlO locations required to store an SO-column card) Identical to Image Binary (2. a), except that no header pair is stored in the line buffer. C. Unrecoverable Errors 1. 2. Illegal Function (Monitor Error Code 6) a. • ENTER b. .CLEAR c. • WRITE d. .TRAN Illegal Data Mode (Monitor Error Code 7) a. CDA.: Not applicable; all modes are legal for this version. b. CDB,CDC.: lOPS ASCII only is legal for these versions. A request for data trans- fer in any other mode results in an error return to the Monitor. D. Program Size 1. locations. 10 2 • . CDB. (lOPS ASCII only): Approximately 360 locations. 10 3. CDC. (lOPS ASCII only): Approximately 270 locations. 10 E. CDA. (All modes): Approximately 450 Program Descri ptions Both CDA. and CDB. utilize SO-word internal buffers for the temporary storage of column data as it is encountered; remapping in these two handlers is performed after all SO columns have been read. This scheme guarantees protection against data loss resulting from the service requirements of 4-23 other active I/O devices. CDC., on the other hand, remaps each column as it Clppears, thus doing away with the need for 80 words of temporary storage. There is some, though sli~3ht, possibility of data loss in the process, since the column data is presented at fixed time intervals which cannot be programspecified. If data loss does occur during reading, the checksum error indicator is set in the validity field of the header for the line in which loss was detected. CDC. is designed for use with programs which have large core requirements but relatively low I/O rates (e.g., FORTRAN 4, MACRO). 4.6.7 MT (Magnetic Tape) Not Yet Implemented 4.6.8 OK (Disk) Not Yet Implemented 4.6.9 DR (Drum) Not Yet Implemented 4.6.10 I/O Handlers Acceptable To System Programs This section lists the· OAT slot requirements of system programs, the uses made of the· OAT slots and which I/O handlers may be assigned to each. It is imperative that one and only one I/O handler for a device be in core at the same time; i.e, DTA. and DTB. should not" be brought in together since there is no communication between the two interrupt handlers • System Program . OAT Slot Use Handler FORTRAN IV -11 Input TTA. PRA. PRB. (recommended) DTA. (required if 3 DT files open) DTB. (recommended if 2 DT fi les open) DTC. (recommended if DT input only) DTD. CDE. COB. MT OK DR -12 Listing TTA. LPA. PPA. 4-24 System Program . OAT Slot -13 Use Handler Output DTA. (required if 3 DT files open) DTB. (recommended if 2 DT files open) DTD. (recommended if DT listing output only) MT OK DR PPA. PPB. PPC. (recommended) DT A. (required if 3 DT fi les open) DTB. (recommended if 2 DT files open) DTD. (recommended if DT output only) MT OK DR MACRO-9 Identical to FORTRAN IV, with two exceptions (1) if .ABS binary output is requested on .DAT slot -13, PPC. and DTB. cannot be used. (2) .DAT slot -10 is the secondary input device (P option in command string) and should be attached to a non bulk storage handler: TTA. PRA. PRB. CDE. COB. DDT-9 -6 Output (paper tape only) PPA. PPB. PPC. (recommended) -10 Input (paper tape only) PRA. NOTE: As DDT handlers can be serially shared with the user program, choice of the DDT output handler (. OAT slot -6) should be a function of the user paper tape output requirements. EDIT -9 -10 Secondary Input 4-25 TTA. PRA. PRB. (recommended) CDE. COB. System Program Linking Loader .DAT Slot Use Handler -14 Input TTA. PRA. PRB. (recommended) DTA. (required if DT input and output) DTD. (DT input only) CDE. CDB. MT DK DR -1 System Library PRA. DTA. DTB. DTC. (recommended if no user DT I/O) DTD. CDE. CDB. MT DK DR -4 Input -5 External User Library (same as for. DAT -1) (same as for. DAT -1) NOTE: As Linking Loader handlers can be used by the user program, clhoice of the DECtape handler for the loader should be a function of the user DECtape requirements. -15 Output LPA. TTA. PPA. DTA. (required if DT input and output) DT D. (DT output on Iy) MT DK DR PIP-9 PIP-9 uses a II the positive . DAT slots (1 - 10) Prior to PIP-9 use, any non-standard peripheral device assignments should be made via the ASSIGN command to the PDP-9 Keyboard Monitor (KM-9). If several PIP functions are to be used with a variety of peripherals, assignment of all these peripherals to Device Assignment TClble (DAT) slots (1-10) wi II avoid returning to KM-9 for reassignment of DAT slots and reloading PIP and its new lOPS routines. into memory. The following should be carefully noted in using the ASSIGN command to set up DAT slots for PIP-9. Since the PDP-9 ADVANCED Software System inc ludes more than one device handler for 4--26 certain peripherals, those used with PIP-9 should normally be the ones with the fullest capabilities, e.g., PRA, PPA and DTA. If both input and output are to occur to the same type device (e.g., DECtape), separate slots must be assigned. Both, however, must be assigned to the same handler, i.e., erroneous results will occur if DTA is assigned to one slot and DTB to another, since there is no communication between the interrupt service routines. The user must be certain to clear (ASSIGN NONE A, B, C~ , where A, B, and C are the OAT slots to be cleared), undesirable assignments. System Program .DAT Slot Use Handler System Generator -14 Input DT A. (I/O both DT) MT DK and -10 DR -15 Output DTA. (I/O both DT) MT DK DR DUMP-9 -12 Listing LPA. TTA. PPA. -14 Input DTA. DTD. (recommended) MT DK DR 7- TO-9 CONVERTER -12 Listing TTA. LPA. PPA. DTA. (required if3 DT files open) DTB. (recommended if 2 DT files open) DT D. (recommended if 1 DT fi Ie open) MT DK -14 Input DR TTA. PRA. PRB. (recommended) DTA. (required if3 DT files open) DTB. (recommended if 2 DT files open) DTC. (recommended if DT input only) DTD. CDE. COB. MT DK DR 4-27 System Program .DAT Slot Use Handler -15 Output LPA. TTA. PPA. DT A. (required if 3 DT files open) DTB. (recommended if 2 DT files open) DTD. (recommended if DT output ol1ly) MT OK Li brary Update -10 Secondary Input DR PRA. DTA. CDE. COB. MT OK DR -12 Listing LPA. TTA. PPA. DTA. MT DK DR -14 Input PRA. DTA. MT DK DR CDE. COB. -15 Output PPA. PPC. PPB. DTA. MT DK DR NOTE: DT A. can only handle three files simultaneously. Thus it should not be assigned to all four Library Update . DAT slots. 4.7 DESCRIPTION OF I/O HARDWARE AND API SOFTWARE LEVEL HANDLERS 4.7. 1 I/O Device Handlers All communications between user programs and I/O device handlers are made via CAL in- structions (see Section 2.2) followed by pertinent argument lists. The CAL Handler in the MONITOR 4-28 (. lOPS), performs preliminary setups, checks on the CAL calling sequence, and then transfers control via a JMP instruction to the entry point of the device handler. When the control transfer occurs, the AC contains the address of the CAL in bits 3-17 and bits 0, 1, and 2 indicate the status of the Link, extend mode and memory protect, respectively, at the time of the CAL. Note that the content of the AC at the time of the CAL is not preserved. On machines that have an API, the execution of a CAL instruction automatically raises the priority to the highest software level (level 4). Control passes to the handler while it is still at level 4, allowing the handler to complete its reentrant procedures before debreaking (DBK) from level 4. This permits the handler to receive reentrant calls from software levels higher than the priority of this call. If a devi ce handler does not contain reentrant procedures, system fai lure caused by inadvertent reentries can be prevented by remaining at level 4 unti I control is returned to the user. If the non-reentrant method is used, the debreak and restore (DBR) instruction should be executed just prior to the JMP* which returns control to the user, allowing debreak from level 4 and restoring the conditions of the Link, extend mode, and memory protect. Any lOTs issued at the CAL level {level 4 if API present, mainstream if no API) should be executed immediately before the DBR exit JMP* sequence to ensure that the exi t takes place before the interrupt from the issued lOT occurs. The CAL instruction must not be used at any hardware priority level (API or PIC), since interrupts to these levels are not closed out by the execution of a CAL and recovery is not possible from such sequences of events as a. An I/O flag coming up during a CAL at level 7, b. Control going to the I/O device handler at level 3, c. The handler at level 3 CALing and thus destroying the content of location 00020 for the previous CAL. The highest API software level {level 4) is also used for processing CALs and extreme care must be taken when executing CALs at this level. For example, a routine that is CALd from level 4 must know that if a debreak (DBR or DBK) is issued control will return to the calling program at a level lower than 4. The calling routine will also debreak; however, this second debreak will not be from level 4 but from the next highest active level. Much confusion can arise as to which level you are on. 4.7. 1 . 1 Setting Up the Skip Chain and API (Hardware) Channel Registers - When the Monitor is loaded, the program interrupt control (PIC) skip chain and the automatic priority interrupt (API) channels are set up to handle the Teletype keyboard, teleprinter and clock interrupts, only. The skip chain contains the other skip lOT instructions, but indirect jumps to an error routine result if a skip occurs, as follows: SKP DTA SKP JMP*INTl /Skip if DECtape flag. /INTl contains error address. 4-29 SKP LPT SKP JMP*INT2 SKP TTl SKP }MP TELINT ISkip if line printer flag. IINT2 contains error address. ISkip if Teletype flag. ITo Teletype interrupt handler. All unused API channels also contain JMP's to the error address. When a device handler is called for the first time via an .INIT user program command, it must call a Monitor routine (. SETUP) to set up its skip chain entry or entries and API channel, prior to performing any I/O functions. The calling sequence is as follows. CAL N 16 SKP lOT DEVINT (norma I return) /N = API channel register 40··77, (see section /4.7.3 for standard channel assignments), 0 if de/vice not connected to API. /. SETUP function code. /Skip LOT for this device. / Address of interrupt handler. DEVINT exists in the device handler in the following format. DEVPIC DEVINT DVSTON DEVION DEVAC DAC LAC* {O DAC DEVOUT DEVION LAC DVSTON JMP DEVPIC JMP DAC DEVAC LAC DEVINT DEVOUT DAC 10RS SMA!CLA LAW 17740 TAD DEVION DAC DVSWCH DEVCF ION /SAVE AC. IOF DEVIOT /DISABLE PIC TO INSURE /DISMISSAL BEFORE INTERRUPT /FROM THIS lOT OCCURS /DISMISS ROUTINE. LAC DAC LAC {JMP DEVPIC DEVINT DEVAC /SAVE PC, LINK, EX.MODE, MEM.PROT. /FORCE ION AT DISMISSAL . /PIC ENTRY. / API ENTRY, SAVE AC. /SAVE PC, LINK, EX.MODE, MEM.PROT. /CHECK STATUS OF PIC /FOR RESTORATION AT DIS~IIISSAL. /PIC OFF, BUILD 10F lOT. /PIC ON, BUILD ION lOT. /CLEAR DEVICE DONE FLAG /ENABLE PIC SO THAT /OTHER DEVICES AREN'T SHUT lOUT. /RESTORE DEVINT IN /CASE API DISABLED. /RESTORE AC 4-30 DVSWCH ION DBR JMP* lION OR IOF /DEBREAK AND RESTORE CONDITIONS /OF LINK,EX.MODE AND MEM.PROT. DEVOUT Since the auto-index registers and EAE registers are not used by the standard I/O device handlers, it is not necessary to save and restore them. The Monitor routine (. SETUP) checks the skip chain for the instruction which matches SKP lOT, if there is a match it places the address, DEVINT, in the appropriate transfer vector (INTn) . and places JMS* INTn in the corresponding API channel register. If a match cannot be found, • lOPS outputs the following error message, • lOPS 05 XXXXXX indicating that the'skip lOT in the CAL calling sequence at location XXXXXX was not in the skip chain. Refer to the operating procedures of the System Generator for the method of incorporating new handlers and associated skip chain entries into the Monitor. 4.7.2 API Software Level Handlers (This section assumes complete fami! iarity with chapter 9 of the PDP-9 User Handbook.) 4.7.2.1 Setting Up API Software Level Channel Registers - When the Monitor is loaded, the API software-level channel registers (40-43) are initialized to JMS* JMS* JMS* JMS* • SCOM+ 12 • SCOM+ 13 • SCOM+14 • SCOM+ 15 /LEVEL 4 /LEVEL 5 /LEVEL 6 /LEVEL 7 where the. SCOM registers are at absolute locations 00112 through 00115 and contain the address of an error routine. Therefore, prior to requesting any interrupts at these software priority levels, the user must modify the contents of the. SCOM registers so that they point to the entry point of the user's software level handlers. EXAMPLE: • SCOM = 100 LAC DAC* (LV5INT (. SCOM+13 LV5INT exists in the user's area in the following format: LV5INT o fpC, LINK, EX.MODE, /Y\EM.PROT. DAC SAV5AC /SAVE AC /SAVE AUTO INDEX REGISTERS /Ifo LEVEL 5 ROUTIN ES fUSE THEM AND LOWER LEVEL /ROUTINES ALSO USE THEM. 4-31 /SAVE MQ AND STEP COUNTER /IF SYSTEM HAS EAE AND IT /IS USED AT DIFFERENT LEVELS • . /RESTORE SAVED REGISTERS. DBR /DEBREAK FROM LEVEL 5 JMP* LV5INT /AND RESTORE L, EX.MODE, MEM.PROT. 4.7.2.2 Queueing - High priority/high data rate/short access routines cannot perform complex cal- culations based on unusual conditions without holding off further data inputs. To perform the calculations, the high priority program segment must initiate a lower priority (interruptable) segment to perform the calculations. Since, in general, many data handling routines will be reques1"ing calculations, there will exist a queue of calculation jobs waiting to be performed at the software level. Each data handling routine must add its job request to the appropriate queue (taking care to raise the API priority level as high as the highest level that manipulates the queue before adding the request) and issue an interrupt request (ISA) at the corresponding software priority level. The general flow chart, Figure 4-2, depicts the structure of a software level handler involved with queued requests. LV5INT SAVE PC'LlNK'ACO AUTO-INDEX REGS, MQ, STEP COUNTER AND CONDITIONS OF EXTEND MODE AND MEMORY PROTECT RAISE TO HIGHES] LEVEL THAT MANIPULATES LEVEL 5 QUEUE Figure 4-2 Structure of API Software Level Handler 4-32 Care must be taken about which routines are called when a software level request is honored; that is, if a called routine is "open" (started but not completed) at a lower level, it must be reentrant or errors will resu It. NOTE: The standard hardware I/O device handlers do not contain reentrant procedures and must not be reentered from higher software levels. 4.7.3 Standard API Channel/Priority Assignments Priority Channel Register Software priority 4 40 Software priority 5 41 2 Software priority 6 42 3 Software priority 7 43 4 DECtape TC02 44 5 MAGtape TC59 45 6 Drum RM09 46 7 Disk 8 Paper Tape Reader 2 50 9 Clock overflow 3 51 10 Power fail KP09 0 52 11 Parity MP09 0 53 12 Display (L. P. flag) 34H 2 54 13 Card readers CR01 E CR02B 2 2 55 14 Line Printer 647 2 56 15 A/D 138/139 0 57 16 DB99A/DB98A DB09A 3 60 17 360 Data Link 3 61 Channel Device 0 Option Number 47 Channe Is 18-31 sti" unassigned. 4-33 ·••• •• •• ,) •• a• •• MONITORS PROGRAMMERS REFERENCE MANUAL DEC-9A-MABO-D o •• •• • ••• •• READER'S COMMENTS •• • Digital Equipment Corporation maintains a continuous effort to improve the quality and usefulness of its publications. It ••• To do this effectively, we need user feedback: your critical evaluation of this manual and the DEC products described. •• ~ Please cqmment on this publication. For example, in your judgment, is it complete, accurate, well-organized, well•• •• written, usable, etc? ______________________________________________ • • • •• •• •• • ••• ••e :• Did you find this manual easy to use? _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ • I' It •• I ••• : ~h~~themo~~riousfuutt~ili~manuan _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ tI •• • II •• •• • "• •• ~hat single feature did you like best in this manual? _____________._ _ _ _ _ _ _ _ _ __ •• •• • •• • • ') ,. f I • Did you find errors in this manual? Please describe. I, • :• :• Please describe your position, __________________________._ _ _ _ _ _ _ _ _~ • Name._ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ : f : •t .,) ") •:> •6 •• •• ,') i :• • " Street._ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ OrganizatioD'-___________________ State: ____._____________ Zip'---_ __ 1: Co •• • •• •• • •• .. ~ • •• •• • ••• • ••• . •• • ••• •• •• • •• ~ ..•...•.•.................................................................................. Fold Here .................................'................................................... -:• ... . .. •• ••• • '" tI -.•, •• •• .. •• ~ ·••.. f') • •• •• · Co • • tt •• •• • •• •• · 1-' • ............................................................................ Do Not Tear - Fold Here and Staple ........................................................... ~... .. •• • FIRST CLASS PERMIT NO. 33 MAYNARD, MASS. BUSINESS REPLY MAIL NO POSTAGE STAMP NECESSARY IF MAILED IN THE UNITED STATES Postage will be paid by: : mamaama Digital Equipment Corporation Software Quality Control Building 12 146 Main Street Maynard, Mass. 01754 • : .. • APPENDIX 1 PDP - 9 AS C I II HaL L E R IT H COR RES paN DEN C E _. *00-37 *140-177 100-137 40-77 HOLLERITH CHAR. ASCII CHAR. 4-8 rev 0 A 12-1 a 1 7-8 B 12-2 b 2 # 3-8 C 12-3 c 3 EaT $ 11-3-8 D 12-4 d 4 5 ENQ 0/0 0-4-8 E 12-5 e 5 6 ACK & 12 F 12-6 f 6 7 BELL I 5-8 G 12-7 g 7 10 BS ( 12-5-8 H 12-8 h 10 11 HT ) 11-5-8 I 12-9 i 11 12 LF * 11-4-8 J 11-1 i 12 13 VT + 12-6-8 K 11-2 k 13 14 FF I 0-3-8 L 11-3 I 14 15 CR 11 M 11-4 m 15 16 SO 12-3-8 N 11-5 n 16 17 SI / 0-1 a 11-6 0 17 20 DLE 0 0 P 11-7 p 20 21 DCl 1 1 Q 11-8 q 21 22 DC2 2 2 R 11-9 r 22 23 DC3 3 3 S 0-2 s 23 4 4 T 0-3 t 24 ASCII CHAR. ASCII CHAR. 0 NUL SP 1 SOH ! 11-2-8 2 STX II 3 ETX 4 - I HOLLERITH CHAR. ASCII CHAR. \ @ 24 DC4 25 NACK 5 5 U 0-4 u 25 26 SYNC 6 6 V 0-5 v 26 27 ETB 7 7 W 0-6 w 27 30 CNCL 8 8 X 0-7 x 30 31 EM 9 9 Y 0-8 y 31 32 SS : 2-8 Z 0-9 z 32 *ASCII code 0-37 and 140-177 have no corresponding codes in the Hollerith set. A1-1 *00-37 ASCII CHAR. 33 ESC ASCII CHAR. i *140-177 100-137 40-77 - -1 - - - - - - - - - - . - - -- HOLLERITH CHAR. ASCII CHAR. 11-6-8 [ 34 FS < 12-4-8 Jl 35 CS - 6-;8 J 36 RS > 0-6-8 37 US ? 0-7-8 HOLLERITH CHAR. ¢ 12-2-,8 11-7-B { --, 33 34 0-2-B } 35 1\ 12-7--8 I 36 (underscore) 0-5-8 de lete 37 .:t- *ASCII code 0-37 and 140-177 have no corresponding codes in the Hollerith SElt. Al-2 ASCII CHAR. APPENDIX 2 PDP-9 ASCII CHARACTER SET Listed below are the ASCII characters interpreted by the PDP-9 Keyboard Monitor and system programs as meaningful data input or as control characters. 00-37 40-77 100-137 140-177 ASCII CHAR. ASCII CHAR. ASCII CHAR. ASCII CHAR. 0 NUL SP \ 0 1 SOH (tA) I A 1 II B 2 # C 3 4 $ D 4 5 0/0 E 5 6 & F 6 7 I G 7 10 ( H 10 ~ 2 3 ETX (tC) 11 HT ) I 11 12 LF J 12 13 VT * + K 13 14 FF I L 14 15 CR M 15 . N 16 16 - 17 SI ( to) / 0 17 20 DLE (tP) 0 P 20 1 Q 21 21 22 DC2 (tR) 2 R 22 23 DC3 (t5) 3 S 23 24 DC4 (tT) 4 T 24 25 NACK (tU) 5 U 25 26 6 V 26 27 7 W 27 8 X 30 9 Y 31 : Z 32 30 CNCL (tX) 31 32 S5 (tZ) A2-1 *33 00-37 40-77 100-137 1401-177 ASCII CHAR. ASCII CHAR. ASCII CHAR. ASCII CHAR. ESC ; RS (t) < = > 34 35 36 37 ESC 33 34 ESC 1\ or ? t 36 delete (RO) *Cocles 33, 176, 175 are interpreted as ESC (AL T Mode) and are converted on input to code 175 by lOPS hand lers. A2-2 35 37 DIGITAL EQUIPMENT CORPORATION .• MAYNARD, MASSACHUSETTS Printed in U.S.A.
Home
Privacy and Data
Site structure and layout ©2025 Majenko Technologies