Trailing-Edge
-
PDP-10 Archives
-
mit_emacs_170_teco_1220
-
info/jsys.manual
There are no other files named jsys.manual in the archive.
**********************************************************************
* *
* *
* PRELIMINARY COPY *
* *
* *
**********************************************************************
This is a preliminary copy of the TOPS-20 MONITOR CALLS REFERENCE
MANUAL which is provided only for field-test purposes. This manual
may not contain the very latest information for a particular JSYS.
There will be some formatting errors, such as spurious running headers
in the middle of a page, etc. Note that all section and page
references in the table of contents and the text are indeterminate.
However, the page numbers in the index are accurate. While the index
is in a very preliminary state, it will offset the lack of accurate
page numbers in the table of contents.
TOPS-20 MONITOR CALLS
REFERENCE MANUAL
Order Number:
AD-4166D-TM
October 1979
This manual describes all of the monitor calls that exist in the
TOPS-20 operating system. For easy reference, the monitor call
descriptions are arranged alphabetically and presented concisely.
This manual replaces the DECSYSTEM-20 Monitor Calls Reference manual,
Order No. AA-4166C-TM and its update, AA-416C-T1.
Operating System and Version: TOPS-20 V4
First Printing, February 1976
Revised: August 1976
Revised: May 1977
Revised: January 1978
Updated: October 1978
Revised: October 1979
The information in this document is subject to change without notice
and should not be construed as a commitment by Digital Equipment
Corporation. Digital Equipment Corporation assumes no responsibility
for any errors that may appear in this manual.
The software described in this document is furnished under a license
and may be used or copied only in accordance with the terms of such
license.
Digital Equipment Corporation assumes no responsibility for the use or
reliability of its software on equipment that is not supplied by
DIGITAL.
Copyright (C) 1976, 1977, 1978, 1979 by Digital Equipment Corporation
The postage prepaid READER'S COMMENTS form on the last page of this
document requests the user's critical evaluation to assist us in
preparing future documentation.
The following are trademarks of Digital Equipment Corporation:
DIGITAL DECsystem-10 MASSBUS
DEC TOPS-20 OMNIBUS
PDP DECtape OS/8
DECUS DIBOL PHA
UNIBUS EDUSYSTEM RSTS
COMPUTER LABS FLIP CHIP RSX
COMTEX FOCAL TYPESET-8
DDT INDAC TYPESET-11
DECCOMM LAB-8
CONTENTS
Page
PREFACE ix
CHAPTER 1 INTRODUCTION 1-1
1.1 SOURCE/DESTINATION DESIGNATORS 1-2
1.1.1 File Designator 1-4
1.1.2 Device Designator 1-4
1.1.3 Byte Pointer to Strings 1-4
1.1.4 Special Designators 1-5
1.2 PROCESS HANDLE 1-5
1.3 PROCESS/FILE HANDLE 1-6
1.4 DATE AND TIME STANDARDS 1-6
1.5 CONVENTIONS USED IN THIS MANUAL 1-6
1.5.1 Number Bases 1-6
1.5.2 Abbreviations 1-6
1.5.3 Symbols 1-7
1.5.4 Unimplemented Features 1-7
CHAPTER 2 FUNCTIONAL ORGANIZATION OF JSYS'S 2-1
2.1 ACCOUNTING FUNCTIONS 2-1
2.2 REFERENCING FILES 2-1
2.2.1 File Specifications 2-1
2.2.2 Logical Names 2-3
2.2.3 File Handles 2-3
2.2.4 File References 2-4
2.2.5 Sample Program 2-5
2.2.6 File Access 2-7
2.2.7 Directory Access 2-8
2.2.8 File Descriptor Block 2-9
2.2.9 Primary Input and Output Files 2-12
2.2.10 Methods of Data Transfer 2-12
2.2.11 File Byte Count 2-12
2.2.12 EOF Limit 2-13
2.2.13 Input/Output Errors 2-13
2.3 OBTAINING INFORMATION 2-15
2.3.1 Error Mnemonics and Message Strings 2-15
2.3.2 System Tables 2-15
2.4 COMMUNICATING WITH DEVICES 2-18
2.4.1 Physical Card Reader (PCDR:) x-xx
2.4.2 Spooled Card Reader (CDR:) x-xx
2.4.3 Physical Card Punch (PCDP:) x-xx
2.4.4 Spooled Card Punch (CDP:) x-xx
2.4.5 Physical Line Printer (PLPT:) x-xx
2.4.5.1 Status Bits x-xx
2.4.6 Spooled Line Printer (LPT:) x-xx
2.4.7 Physical Magnetic Tape (MTA:) x-xx
2.4.7.1 Buffered I/O x-xx
2.4.7.2 Unbuffered I/O x-xx
2.4.7.3 Magnetic Tape Status x-xx
2.4.7.4 Reading a Tape in the Reverse Direction x-xx
2.4.7.5 Hardware Data Modes x-xx
2.4.8 LOGICAL MAGNETIC TAPE (MT:) X-XX
2.4.9 Terminal (TTY:) x-xx
2.4.9.1 JFN Mode Word x-xx
2.4.9.2 Control Character Output Control x-xx
2.4.9.3 Character Set x-xx
CONTENTS (CONT.)
Page
2.4.9.4 Terminal Characteristics Control x-xx
2.4.9.5 Terminal Linking x-xx
2.4.9.6 Terminal Advising x-xx
2.5 SOFTWARE DATA MODES
2.6 SOFTWARE INTERRUPT SYSTEM 2-33
2.6.1 Software Interrupt Channels 2-34
2.6.2 Software Interrupt Priority Levels 2-34
2.6.3 Software Interrupt Tables 2-35
2.6.4 Terminating Conditions 2-35
2.6.5 Panic Channels 2-35
2.6.6 Terminal Interrupts 2-36
2.6.6.1 Terminal Interrupt Modes 2-37
2.6.7 Dismissing An Interrupt 2-38
2.7 PROCESS CAPABILITIES 2-39
2.7.1 Assigned Capabilities 2-39
2.7.2 Access Control x-xx
2.7.3 Processes and Scheduling 2-40
2.7.4.1 Process Freezing 2-40
2.7.4.2 Execute-Only Files
and Execute-Only Processes x-xx
2.8 SAVE FILES 2-41
2.8.1 Format For Nonsharable Save Files 2-41
2.8.2 Format of Sharable Save Files 2-42
2.8.3 Entry Vector 2-43
2.9 INPUT/OUTPUT CONVERSION 2-44
2.9.1 Floating Output Format Control Word 2-44
2.9.1.1 Free Format 2-44
2.9.1.2 General Format Control 2-45
2.9.2 Date and Time Conversion Monitor Calls 2-46
2.10 ARCHIVE/VIRTUAL DISK SYSTEM X-XX
2.11 PRIVILEGED MONITOR CALLS 2-47
CHAPTER 3 TOPS-20 MONITOR CALLS 3-1
ACCES (552) Specifies access to a directory 3-1
ADBRK (570) Controls address breaks 3-3
AIC (131) Activates software interrupt channels 3-5
ALLOC (520) Allocates a device 3-5
ARCF (247) Archive/virtual disk operations x-xx
ASND (70) Assigns a device 3-6
ASNSQ (752) Assigns ARPANET special
message queue x-xx
ATNVT (274) Creates ARPANET Network
Virtual Terminal Connection x-xx
ATACH (116) Attachs a terminal to a job 3-7
ATI (137) Assigns a terminal code to an
interrupt channel 3-8
BIN (50) Performs byte input 3-9
BKJFN (42) Backs up pointer by one byte 3-10
BOOT (562) Performs functions required
for loading front-end software 3-10
BOUT (51) Performs byte output 3-14
CACCT (4) Changes account designator 3-15
CFIBF (100) Clears the input buffer 3-15
CFOBF (101) Clears the output buffer 3-16
CFORK (152) Creates an inferior process 3-16
CHFDB (64) Changes a File Descriptor Block 3-17
CHKAC (521) Checks access to a file 3-18
CIS (141) Clears the interrupt system 3-19
CLOSF (22) Closes a file 3-20
CLZFF (34) Closes the process' files 3-21
COMND (544) Parses a command 3-22
CRDIR (240) Creates, changes, or deletes
a directory 3-38
CRJOB (2) Creates a job 3-42
CRLNM (502) Defines or deletes a logical name 3-47
CVHST (276) Converts ARPANET host number
to primary name x-xx
CVSKT (275) Converts ARPANET local socket
to absolute form x-xx
CONTENTS (CONT.)
Page
DEBRK (136) Dismisses current software interrupt 3-48
DELDF (67) Expunges deleted files 3-48
DELF (26) Deletes files 3-49
DELNF (317) Retains specified number of
generations of a file 3-50
DEQ (514) Removes request from resource queue 3-51
DEVST (121) Translates a device designator
to a string 3-53
DFIN (234) Inputs double-precision floating
point number 3-53
DFOUT (235) Outputs double-precision floating
point number 3-54
DIAG (530) Reserves or releases hardware channels 3-55
DIBE (212) Dismisses until input buffer is empty 3-56
DIC (133) Deactivates software interrupt
channels 3-57
DIR (130) Disables software interrupt system 3-57
DIRST (41) Translates a directory number to
a string 3-58
DISMS (167) Dismisses the process 3-59
DOBE (104) Dismisses until output buffer is empty 3-59
DSKAS (244) Assigns disk addresses 3-60
DSKOP (242) Specifies disk transfers in hardware
terms 3-61
DTACH (115) Detaches a terminal from a job 3-62
DTI (140) Deassigns a terminal code 3-62
DUMPI (65) Reads data in unbuffered data mode 3-63
DUMPO (66) Writes data in unbuffered data mode 3-64
DVCHR (117) Retrieves device characteristics 3-65
EFACT (5) Makes an entry in the FACT file 3-66
EIR (126) Enables software interrupt system 3-67
ENQ (513) Places request in resource queue 3-67
ENQC (515) Obtains status of resource queue 3-73
EPCAP (151) Enables process capabilities 3-76
ERSTR (11) Converts error number to string 3-77
ESOUT (313) Outputs an error string 3-78
FFFFP (31) Finds first free page in file 3-78
FFORK (154) Freezes processes 3-79
FFUFP (211) Finds first used page in file 3-79
FLHST (277) Flushes an ARPANET host x-xx
FLIN (232) Inputs floating-point number 3-80
FLOUT (233) Outputs floating-point number 3-80
GACCT (546) Gets current account designator 3-81
GACTF (37) Gets account designator of file 3-81
GCVEC (300) Gets entry vector of compatibility
package 3-82
GDSKC (214) Gets disk count 3-83
GDSTS (145) Gets device's status 3-83
GDVEC (542) Gets entry vector of RMS 3-84
GET (200) Gets a save file 3-84
GETAB (10) Gets a word from a monitor table 3-85
GETER (12) Returns the last error in a process 3-86
GETJI (507) Gets specified job information 3-86
GETNM (177) Returns the program name currently
being used 3-87
GETOK% (574) Requests access to a
protected resource x-xx
GEVEC (205) Gets entry vector 3-88
GFRKH (164) Gets process handle 3-88
GFRKS (166) Gets process structure 3-89
CONTENTS (CONT.)
Page
GFUST (550) Returns author and last writer
name strings 3-90
GIVOK% (576) Grants access to a
protected resource x-xx
GJINF (13) Gets current job information 3-91
GNJFN (17) Gets the next JFN 3-91
GPJFN (206) Gets the primary JFNs 3-92
GTAD (227) Gets current date and time 3-93
GTDAL (305) Gets disk allocation of a directory 3-93
GTDIR (241) Gets information of directory entry 3-94
GTFDB (63) Gets a File Descriptor Block 3-95
GTJFN (20) Gets a JFN
Short Form 3-96
Long Form 3-103
GTRPI (172) Get trap information 3-107
GTRPW (171) Gets trap words 3-108
GTSTS (24) Gets a file's status 3-109
GTTYP (303) Gets the terminal type number 3-109
HALTF (170) Halts the current process 3-110
HFORK (162) Halts a process 3-110
HPTIM (501) Returns values of high precision
clocks 3-111
HSYS (307) Halts the system 3-111
IDCNV (223) Inputs date and time conversion 3-112
IDTIM (221) Inputs date and time 3-113
IDTNC (231) Inputs date/time without converting 3-115
IIC (132) Initiates software interrupts
on specified channels 3-116
INLNM (503) Lists job's logical names 3-117
JFNS (30) Translates a JFN to a string 3-117
KFORK (153) Kills a process 3-119
LGOUT (3) Kills a job 3-120
LNMST (504) Converts a logical name to a string 3-121
LOGIN (1) Logs in a job 3-121
LPINI (547) Loads VFU or translation RAM 3-122
MRECV (511) Receives an IPCF message 3-123
MSEND (510) Sends an IPCF message 3-125
MSFRK (312) Starts a process in monitor mode 3-129
MSTR (555) Performs structure-dependent
functions 3-129
MTALN (774) Associates magnetic tape drive
with logical unit number 3-142
MTOPR (77) Performs device-dependent functions 3-142
MTU% (600) Performs various functions
for MT: devices x-xx
MUTIL (512) Performs IPCF control functions 3-153
NIN (225) Inputs an integer number 3-158
NODE (567) Performs network utility functions 3-158
NOUT (224) Outputs an integer number 3-158
ODCNV (222) Outputs date and time conversion 3-159
ODTIM (220) Outputs date and time 3-160
ODTNC (230) Outputs date/time without converting 3-162
OPENF (21) Opens a file 3-163
PBIN (73) Inputs the next byte 3-166
PBOUT (74) Outputs the next byte 3-167
PEEK (311) Obtains monitor data 3-167
PLOCK (561) Locks physical pages 3-168
PMAP (56) Maps pages 3-168.1
PMCTL (560) Controls physical memory 3-171
PPNST (557) Translates project-programmer
number to string 3-173
PRARG (545) Reads/sets process argument block 3-174
CONTENTS (CONT.)
Page
PSOUT (76) Outputs a string 3-174
RCDIR (553) Translates string to directory number 3-175
CONTENTS (CONT.)
Page
RCM (134) Reads the channel word mask 3-178
RCVIM (751) Retrieves message from ARPANET
special message queue x-xx
RCVOK% (575) Retrieves access request from
GETOK queue x-xx
RCUSR (554) Translates string to user number 3-179
RDTTY (523) Reads data from primary input
designator 3-180
RELD (71) Releases a device 3-182
RELSQ (753) Deassigns ARPANET special
message queue x-xx
RESET (147) Resets/initializes the current process 3-183
RFACS (161) Reads process' ACs 3-183
RFBSZ (45) Reads files's byte size 3-184
RFCOC (112) Reads file's control character output 3-184
RFMOD (107) Reads a file's mode 3-185
RFORK (155) Resumes a process 3-185
RFPOS (111) Reads terminal's position 3-186
RFPTR (43) Reads file's pointer position 3-187
RFRKH (165) Releases a process handle 3-187
RFSTS (156) Reads a process' status 3-188
RFTAD (533) Reads file's time and dates 3-189
RIN (54) Performs random input 3-190
RIR (144) Reads software interrupt table
addresses 3-191
RIRCM (143) Reads inferior reserved channel mask 3-191
RLJFN (23) Releases JFNs 3-192
RMAP (61) Obtains a handle on a page 3-192
RNAMF (35) Renames a file 3-193
ROUT (55) Performs random output 3-194
RPACS (57) Reads a page's accessibility 3-195
RPCAP (150) Reads process capabilities 3-196
RSCAN (500) Accepts a new string or uses the last
string as input 3-196
RTFRK (322) Returns the handle of a process
suspended because of a monitor
call intercept 3-198
RTIW (173) Reads terminal interrupt word 3-198
RUNTM (15) Returns runtime of process or job 3-199
RWM (135) Reads waiting channel interrupt word
mask 3-199
RWSET (176) Releases the working set 3-200
SACTF (62) Sets account designator of file 3-200
SAVE (202) Saves a file as nonsharable 3-201
SCTTY (324) Changes controlling terminal 3-202
SCVEC (301) Sets entry vector of compatibility
package 3-203
SDSTS (146) Sets device's status 3-204
SDVEC (543) Sets entry vector of RMS 3-205
SETER (336) Sets the last error in a process 3-206
SETJB (541) Sets job parameters 3-206
SETNM (210) Sets program name 3-208
SETSN (506) Sets system name for a process 3-208
SEVEC (204) Sets entry vector 3-208
SFACS (160) Sets process' ACs 3-209
SFBSZ (46) Sets file's byte size 3-209
SFCOC (113) Sets file's control character output 3-210
SFMOD (110) Sets a file's mode 3-211
SFORK (157) Starts a process 3-211
SFPOS (526) Sets terminal's position 3-212
SFPTR (27) Sets file's pointer position 3-212
SFRKV (201) Starts process using its entry vector 3-213
SFTAD (534) Sets file's time and dates 3-214
CONTENTS (CONT.)
Page
SFUST (551) Sets author and last writer
name strings 3-215
SIBE (102) Skips if input buffer is empty 3-216
SIN (52) Performs string input 3-216
SINM (571) Reads data from block-mode
terminals x-xx
SINR (531) Performs record input 3-218
SIR (125) Sets software interrupt table
addresses 3-219
SIRCM (142) Sets inferior reserved channel mask 3-220
SIZEF (36) Gets the size of a file 3-221
SJPRI (245) Sets job's priority 3-221
SKED% (577) Performs services relating
to the class scheduler x-xx
SKPIR (127) Tests the state of the software
interrupt system 3-222
SNDIM (750) Sends a message to ARPANET
special message queue x-xx
SMON (6) Sets monitor flags 3-222
SNOOP (516) Performs system analysis 3-223
SOBE (103) Skips if output buffer is empty 3-227
SOBF (175) Skips if output buffer is full 3-227
SOUT (53) Performs string output 3-228
SOUTM (572) Writes data to block mode terminals x-xx
SOUTR (532) Performs record output 3-229
SPACS (60) Sets a page's accessibility 3-230
SPJFN (207) Sets the primary JFNs 3-231
SPLFK (314) Splices a process structure 3-232
SPOOL (517) Defines and initializes input spooling 3-232
SPRIW (243) Sets the priority word 3-234
SSAVE (203) Saves a file as sharable 3-235
STAD (226) Sets system date and time 3-236
STCMP (540) Compares two strings 3-237
STDEV (120) Translates string to device designator 3-237
STI (114) Simulates terminal input 3-238
STIW (174) Sets terminal interrupt word 3-239
STO (246) Simulates terminal output 3-240
STPAR (217) Sets terminal parameters 3-241
STPPN (556) Translates string to
project-programmer number 3-242
STSTS (25) Sets a file's status 3-242
STTYP (302) Sets the terminal type number 3-243
SWJFN (47) Swaps two JFNs 3-244
SWTRP% (573) Traps for arithmetic underflow
or overflow conditions x-xx
SYERR (527) Writes data to the system error file 3-244
SYSGT (16) Returns information for a system table 3-245
TBADD (536) Adds entry to command table 3-245
TBDEL (535) Deletes entry from command table 3-246
TBLUK (537) Looks up entry in command table 3-246
TEXTI (524) Reads input from a terminal or a file 3-248
TFORK (321) Sets and removes monitor call
intercepts 3-252
THIBR (770) Blocks the current job 3-254
TIME (14) Returns time system has been up 3-254
TIMER (522) Sets time limit for a job 3-255
TLINK (216) Controls terminal linking 3-256
TMON (7) Tests monitor flags 3-258
TTMSG (775) Sends a message to a terminal 3-259
TWAKE (771) Wakes a specified job 3-259
UFPGS (525) Updates file's pages 3-260
USAGE (564) Writes entries into the accounting
data file 3-260
USRIO (310) Places program in user I/O mode 3-262
UTEST (563) Test monitor routines 3-263
UTFRK (323) Resumes a process suspended because
of a monitor call intercept 3-264
CONTENTS (CONT.)
Page
VACCT (566) Validates an account 3-265
WAIT (306) Dismisses process until interrupt
occurs 3-266
WFORK (163) Waits for processes to terminate 3-266
WILD% (565) Compares wild and non-wild strings x-xx
APPENDIX A MONSYM.MAC A-1
APPENDIX B MACSYM.MAC B-1
APPENDIX C ACTSYM.MAC C-1
INDEX Index-1
PREFACE
The TOPS-20 Monitor Calls Reference Manual describes all of the calls
that exist in the TOPS-20 operating system. The manual is written for
the assembly language user who is already familiar with the set of
monitor calls.
Chapter 1 introduces the conventions and types of arguments used with
the monitor calls. Chapter 2 presents the calls in a functional
order. Chapter 3 contains the alphabetical descriptions of all the
monitor calls. Appendix A is a listing of the system file,
MONSYM.MAC, which is the definition of the symbols used in this
manual. Appendix B is a listing of the system file MACSYM.MAC, which
lists various macros useful for assembly-language programming.
Appendix C is a listing of the system file, ACTSYM.MAC, which is the
definition of the macros and symbols used with the USAGE monitor call.
To understand how to use the basic monitor calls, the user is referred
to the TOPS-20 Monitor Calls User's Guide (DEC-20-OMUGA-A-D). This
manual is organized according to the functions an assembly language
user can request of the monitor. It is not a reference manual nor is
it complete documentation on the entire set of monitor calls.
CHAPTER 1
INTRODUCTION
The TOPS-20 Monitor Calls Reference Manual describes every monitor
call in the TOPS-20 system. Monitor calls for ARPANET systems and
DECnet systems are also described. However, the application of these
calls are more completely described in the TOPS-20AN Monitor Calls
User's Guide (for ARPANET) and the DECnet-20 Programmer's Guide and
Operations Manual.
These calls invoke the TOPS-20 monitor through the JSYS instruction
(op code 104). The UUO-type monitor calls (op codes 40-77) invoke the
compatibility package, which simulates the action of these UUO's in
the TOPS-10 monitor. However, programs being written for TOPS-20
should not be written with UUO's.
For easy reference, monitor call descriptions in Chapter 3 are
arranged alphabetically and presented concisely. This concise format
begins with the JSYS name and numeric definition, followed by a brief
description of the JSYS function. The calling sequence for the JSYS
is next, indicated by statements in the format
ACCEPTS IN ACn: description
where n is an accumulator number. Following the list of numeric
accumulators, and a description of their contents, are statements of
the form
RETURNS +1: condition
+2: condition
that define where control returns, and under what conditions, after
execution of the JSYS. The statement RETURNS+1: means control
returns to the calling location plus 1; RETURNS+2: means control
returns to the calling location plus 2. Next, there is an optional
description of the action taken by the JSYS. A list of possible error
mnemonics follows the JSYS definition.
The monitor calls follow the conventions described in the paragraphs
below.
Arguments for the JSYS are placed in accumulators (ACs). The first
argument is in AC1, the second in AC2, and so forth, up to a maximum
of four accumulators. If more than four accumulators are needed by a
JSYS, the arguments are in an argument block pointed to by an AC.
(There are several exceptions to this convention; refer to the
individual descriptions in Chapter 3.)
As mentioned above, after execution of the JSYS, control is returned
to the caller at one of two locations. The +1 return is often used to
indicate failure of the JSYS to perform its intended function, and an
error code is stored (and available via the GETER or ERSTR call) to
indicate the exact cause of the failure. This error code is usually
stored in the right half of AC1. The +2 return is used to indicate
successful completion of the JSYS.
However, some JSYS's have only a single return (+1) to the instruction
following the call. On successful completion of the call, that
instruction is executed. When an error occurs during execution of the
call, the monitor examines that instruction. If it is a JUMP
instruction with the AC field being either 16 or 17, the monitor
transfers control to the address specified in the JUMP instruction.
If the instruction following the call is not a JUMP instruction, the
monitor generates an illegal instruction software interrupt, which the
caller can process via the software interrupt system. If it is not
prepared to process the interrupt, the process is usually terminated
and a message is output. (Refer to Section 2.5.)
To include a JUMP instruction, the programmer can place one of the
following symbols as the instruction following the call:
ERJMP address
ERCAL address
These symbols correspond to JUMP 16, and JUMP 17, respectively, which
are machine no-ops. However, the monitor simulates a
JUMPA address
instruction when an ERJMP is used. This transfers control
permanently, and the routine at the address specified must include a
JRST instruction to return. The monitor simulates a
PUSHJ 17, address
instruction when an ERCAL is used. This is a subroutine call, and the
routine must include a RETURN instruction to return. Note that ERCAL
requires accumulator 17 to be set up as a pushdown pointer. These
symbols (usually defined by OPDEFs) allow the programmer to process an
error without using the software interrupt system and, in fact,
override the interrupt system.
The ERJMP or ERCAL symbol can be used with all JSYS's, independent of
whether the JSYS has one or two returns. The ERJMP or ERCAL will be
"executed" only if it is the next instruction following a JSYS that
fails; otherwise, it is a no-op.
Refer to the JSYS's descriptions in Chapter 3 for specifics on the
returns possible from each JSYS.
Previous JSYS mnemonics have sometimes caused conflicts with
user-defined symbols at assembly time. To avoid this, all release 4
and later JSYS mnemonics will end with the character "%" (e.g.
WILD%). Older, pre release-4 JSYS's may be specified with or without
"%" (e.g. GTJFN or GTJFN%). Newer JSYS's must use "%".
1.1 SOURCE/DESTINATION DESIGNATORS
Many monitor calls operate on or transmit byte streams. The source or
destination of these bytes can be any one of several items, including
a file, a terminal, or a string in the caller's address space. In
these cases, a standard 36-bit quantity, called the source/destination
designator, is used as a JSYS argument to declare the byte stream on
which to operate. It can have one of the following formats.
Symbol Left Half Right Half Meaning
- 0 JFN a job file number. Typically a
small number starting at 1. The
JFN is the job's global handle
on a file and is assigned with
the GTJFN monitor call. (Refer
to Section 2.2.3.)
.PRIIN 0 100 primary input designator(1)
.PRIOU 0 101 primary output designator(1)
.NULIO 0 377777 null designator
.TTDES 0 400000 universal terminal designator
.CTTRM 0 777777 the job's controlling terminal
.DVDES 600000 000000 universal device designator
reasonable left effective adr a byte pointer to the beginning
half of byte ptr of a string
777777 effective adr implicit byte pointer with left
(<777777) half to be changed to 440700.
(Refer to Section 1.1.3.)
777777 777777 universal default (i.e., -1)
5xxxxx xxxxxx immediate numeric value
1. These designators are legal wherever a JFN is expected and cannot
be assigned by the user; that is, when the user is obtaining JFNs via
GTJFN (or GNJFN), 100 and 101 are never assigned.
The most commonly-used source/destination designators are:
1. A JFN identifying a particular instance of a file. This JFN
will have previously been obtained from another monitor call
(GTJFN JSYS, refer to Section 2.2.3).
2. The primary input and output designators. (Refer to Section
2.2.9.) These designators are the recommended ones to use to
refer to the logical controlling terminal because they can be
changed to cause "terminal" input and/or output to be taken
from and/or sent to a file. The controlling terminal
designator (0,-1) cannot be redirected in this way, and its
use is not recommended in normal situations.
3. A byte pointer to the beginning of the string being read or
written in the calling program's address space.
1.1.1 File Designator
A file designator is a subset of the source/destination designator.
It includes all options except byte pointers to strings and numeric
values.
1.1.2 Device Designator
Many monitor calls dealing with devices (refer to Section 2.4) take a
device designator as an argument. This designator can be either
LH: .DVDES(600000)+device type number
RH: unit number for devices that have units, arbitrary code for
structures, or -1 for non-structure devices that do not have
units
or
LH: 0
RH: .TTDES(400000)+ terminal number, or .CTTRM(777777) for
controlling terminal
Thus, terminals can be represented in two ways; the second way is
provided for compatibility with the source/destination designator.
Because designators for structures contain an arbitrary code, these
designators must always be obtained from the monitor (via the STDEV
call) and cannot be created by the program.
Section 2.4 describes the various devices and their type numbers.
1.1.3 Byte Pointers To Strings
Many monitor calls deal specifically with ASCII strings. The
following conventions apply to such strings.
1. A file designator can be used if the file is in 7-bit ASCII
format. This is the usual format for text files.
2. One of the following ways is used to designate a string in
the caller's address space:
a. -1,, ADR to designate a 7-bit ASCII string beginning in
the leftmost byte of ADR. This is for convenience,
making HRROI 1,ADR functionally equivalent to
MOVE 1,[POINT 7,ADR].
b. A full word byte pointer with a byte size of 7 bits. If
the byte size is not 7 bits, the results may be incorrect
because the byte string is referenced via ILDB/IDPB with
no additional checking.
Normally, ASCII strings are assumed to be terminated with a byte of 0
(i.e., ASCIZ). A few calls terminate on other ASCII characters
because of context (e.g., NIN call), and some optionally accept an
explicit byte count and/or terminating byte. These latter calls
(e.g., SIN and SOUT calls) are generally those that can handle
non-ASCII strings and byte sizes other than 7 bits.
After a JSYS is used to read a string, the source byte pointer
argument is updated such that an ILDB would read the character
following the terminating character; an LDB would reread the
terminating character.
After a JSYS is used to write a string, the destination byte pointer
argument is updated to point to the character following the last
nonnull character written. If there is room, a null byte is appended
to the string, but the byte pointer returned is such that an IDPB will
overwrite the null.
1.1.4 Special Designators
The universal default designator of -1 is used to indicate the current
designator, such as the current job or the connected directory. For
example, the GETJI monitor call accepts an argument of -1 as the
designator for the current job.
The designator 5xxxxx xxxxxx (where an immediate numeric value is in
bits 3-35) is used to supply a numeric designator as an argument to a
call. For example, the CACCT monitor call accepts an account number
as 5B2+33-bit number.
1.2 PROCESS HANDLE
Several monitor calls accept an 18-bit argument called a process
handle.
Value Symbol Meaning
400000 .FHSLF current process
-1 .FHSUP superior process
-2 .FHTOP top-level process
-3 .FHSAI current process and all of its inferiors
-4 .FHINF all of the current process' inferiors
-5 .FHJOB all processes in the job
Use of the superior process argument (.FHSUP) is legal only if the
process has the superior process access capability (SC%SUP) enabled in
its capability word. Use of the top level process argument (.FHTOP)
is legal only if the process has the WHEEL or OPERATOR capability
enabled (SC%WHL or SC%OPR) in its capability word. Refer to Section
2.6.1 for information on the capability word.
A process handle may also be in the range 400001 to 400777. These
process handles are called relative process handles and are generated
by the monitor (refer to the CFORK monitor call description) to refer
to specific processes. These handles are valid only within the
context of the process to which they are given. Thus, they may not be
meaningfully passed between processes.
1.3 PROCESS/FILE HANDLE
Some monitor calls accept an 18-bit argument called a process/file
handle. This handle is either a process handle (as defined in Section
1.2) or a JFN. Note that string pointers and terminal identifiers
cannot be used in this context. This is not a limitation, however,
because the operations that use the process/file handle are used for
changing page maps. Such operations are not meaningful for string
pointers or terminals.
1.4 DATE AND TIME STANDARDS
In TOPS-20, day 1 is November 18, 1858. This is consistent with the
Smithsonian Astronomical Date Standard which is used by several
computer systems. The date uniformly increases by one for each day of
the week since day 1. Internal dates are the number of days since
November 17, 1858 . Refer to Section 2.8.2 for more information about
the date and time format.
The internal time of day standard for TOPS-20 is specified as a
fraction of a day.
The internal date and time format is a 36-bit quantity, which
frequently occurs as a JSYS argument or is returned as a value. In
these cases, the day is in the left half, and the fraction of the day
is in the right half.
The monitor calls that convert dates and times change from local dates
and times to internal dates and times and vice versa.
1.5 CONVENTIONS USED IN THIS MANUAL
1.5.1 Number Bases
Except where otherwise noted, numbers used in this manual, including
those in the definition of a JSYS description, are octal. When
indicated, bits in words are numbered in decimal with the leftmost bit
of the word labeled B0 and the rightmost bit of the word labeled B35.
1.5.2 Abbreviations
The following abbreviations are used in this manual:
B0, B1, ... Bit 0, bit 1, ... of the computer word
nBm Field whose rightmost bit is m and whose
value is n (e.g., 5B2).
LH Left Half (B0-B17 of the word)
RH Right Half (B18-B35 of the word)
JFN Job File Number
PSB Process Storage Block (a table containing all
monitor data for the process)
JSB Job Storage Block (a table containing all
monitor data relevant to the job)
CCOC words Control Character Output Control words
(2 words containing 36 2-bit bytes that
determine the way in which control characters
are output. Refer to Section 2.4.4.2.)
FDB File Descriptor Block. Refer to Section
2.2.8.
1.5.3 Symbols
The symbols used in this manual, including the names of the JSYS's,
are defined in the system file MONSYM.MAC. The user must include in
his program the statement
SEARCH MONSYM
before the first occurrence of a symbol to have the symbols defined in
his assembly. Refer to Appendix A for a listing of MONSYM.
1.5.4 Unimplemented Features
The MONSYM file contains symbol names for several JSYS's and bit
positions that are not described in this manual. These features are
not implemented in the TOPS-20. If an unimplemented JSYS is used in a
user program, it causes an illegal instruction interrupt unless
followed by an ERJMP or ERCAL symbol. In this case, the ERJMP will be
"executed." It is recommended that unimplemented or undefined bit
positions be zero to allow for future expansion.
CHAPTER 2
FUNCTIONAL ORGANIZATION OF JSYS'S
2.1 ACCOUNTING FUNCTIONS
The monitor calls in this group are used to initiate and delete jobs
from the system as well as to change and read accounting information
about these jobs.
The monitor calls pertaining to accounting functions are as follows:
LOGIN Logs a job into the system
CRJOB Creates a job and optionally logs it in
LGOUT Kills a job
CACCT Changes a job's account
GACCT Reads a job's account
SACTF Sets a file's account
GACTF Reads a file's account
USAGE Writes entries into the system's accounting data file
VACCT Validates an account
2.2 REFERENCING FILES
All files in the system, including the system's file directory, are
normally referenced with the calls in this group. The privileged
calls for directly referencing the disk are described in Section 2.9.
2.2.1 File Specifications
A file in TOPS-20 is identified by its device name, directory name,
filename, file type, and generation number. These five items uniquely
identify any file on the system that is accessible to a user. The
device name identifies the device on which the file is stored. The
directory name identifies the directory containing the file. The
filename, type, and generation number identify a particular file in
the directory given by the device and directory name.
A file can also have attributes associated with it to further specify
information about the file. See the description of the long-form
GTJFN JSYS for a list of the possible file attributes.
The general format of a file specification is:
dev:<directory>name.typ.gen;attributes
Refer to the TOPS-20 User's Guide for the complete description of file
specifications.
If a field of the specification is omitted, it may be supplied by the
program or from standard system values. (Refer to Section 2.2.3.)
Recognition is done on file specifications in a uniform manner
regardless of the source of input. However, the program can control
certain aspects of recognition. Whenever an ESC is encountered in the
file specification string, the previous input is looked up according
to the field currently being input. A match is indicated if the input
string either exactly matches an entry in the appropriate table or is
an initial substring of exactly one entry. In the latter case, the
portion of the matching entry not appearing in the input string is
output to a specified output file. The field terminator is output
also. Recognition is done on successive fields with the fields being
defaulted if need be. If the file specification cannot be uniquely
determined, as many entire fields as are unique are recognized, and a
bell is output signifying that more input is required from the user.
If the input string cannot possibly match any existing file
specification, an error is returned.
CTRL/F behaves like ESC except recognition stops after the current
field. This allows the filename to be recognized, for example, but
not the file type.
If recognition is not used, then each field must be delimited as
indicated in the general format above. The input must exactly match
some existing file specification unless the program specifies in the
GTJFN call that new specifications are allowed (i.e., an output file).
Without ESC or CTRL/F, no recognition is done, but completely omitted
fields are defaulted if the program has specified default values. The
file specification is complete whenever all fields have been
recognized or a terminator has been input. File specification
terminators are described in the GTJFN call description.
The following editing characters are recognized during the input of
file specifications:
DELETE erases one character. If no more characters remain in
the input, a bell is output.
CTRL/W deletes back to the last punctuation character. If no
more characters remain in the input, a bell is output.
CTRL/U aborts the entire filename-gathering operation.
CTRL/R retypes the entire input as specified so far and awaits
further input.
2.2.2 Logical Names
Logical names are user-specified default values for one or more fields
in a file specification. Through the use of logical names, the user
can override standard file specification fields built into TOPS-20
programs because logical name fields take precedence over default
fields set by a program. However, the user can still specify any
fields explicitly since a logical name defines values to be used only
if none are given by the user. The user defines logical names with
the DEFINE command or the CRLNM monitor call. Refer to the TOPS-20
User's Guide for the complete description of logical names.
Recognition can be performed on a logical name by using ESC or CTRL/F.
When recognition is in effect for the first field of the string being
entered to the GTJFN call, the list of user-defined logical names is
scanned first. If the data entered by the user is sufficient to
uniquely define one of his logical names, then the logical name is
selected. The remaining characters of the logical name and the
terminating colon are output to the user. If the data entered by the
user for the first field does not define a logical name, then the
directory is searched for a unique filename match. Note that logical
names are not searched in conjunction with directory entries and that
a unique logical name will be recognized even though there may be a
filename with the same beginning character string.
There is one exception to the recognition procedure described
above: if an ESC or CTRL/F is typed as the first character, then the
table of logical names will not be searched. This allows programs to
define defaults that can be used by typing only the ESC and that
cannot be circumvented if the user has only one logical name defined.
2.2.3 File Handles
It is necessary to have file handles that can be contained in a few
bits and do not require extensive lookup procedures for each
reference. The file specification is the fundamental handle on a
file, but this specification fits neither criterion above. Therefore
in TOPS-20, files are referenced by handles called JFNs (Job File
Numbers). The JFN is a small number and is valid within the context
of the job (i.e., within any process of the job to which it is
assigned). However, the handle is not valid between jobs. That is,
JFN 2 in job 11 will generally be a handle on a completely different
file than JFN 2 in job 18.
A JFN is associated with a file with either the GTJFN or GNJFN monitor
call. The GTJFN call accepts a file specification and returns a JFN
for the indicated file. If a field of the specification is omitted,
it may be supplied by the program defaults or from standard system
values. If the file specification refers to a group of files (because
of wildcard characters, see below), the GNJFN call can be used to
associate the JFN to the next file in the group.
A logical name can apply to one or more fields of the file
specification passed to the GTJFN call. The logical name must be the
first identifier passed to GTJFN and must be terminated with a colon.
The GTJFN call uses a certain search order when obtaining a field in a
file specification. This order is as follows:
1. Use the field explicitly typed by the user or the one
specified in the primary input string.
2. Use the value for the field that is specified in the logical
name specification.
3. Use the value for the field that is specified in the default
block by the program. This is only for the long form of the
GTJFN call.
4. Use the system default value if all of the above searches
fail.
In the special case of a device field specification where the device
name has been obtained from either the program default or the system
default, the device field is checked to see if it is actually a
logical name. If it is, then the values specified in its definition
become defaults for all fields including the device field.
If the specific call to GTJFN permits, a wildcard character (either an
asterisk or a percent sign) can appear in the device, directory,
filename, type, or generation number fields. (The percent sign cannot
appear in the generation number field.) An asterisk matches any
occurrence of the field, including a null field. An asterisk as part
of a field matches any remaining characters in the field, including a
null character. A percent sign matches any single existing character
in the field. Upon completion of the GTJFN operation, the JFN
returned will reference the first file found when scanning the
directory in the following order:
In alphabetic order by directory name
In alphabetic order by filename
In aphabetic order by file type
In ascending numeric order by generation number
The GNJFN call can then be given to associate the JFN to the next
file. Normally, a program accepting wildcard characters in file
specifications will successively reference all of a class of files
using the same JFN and not obtain a new JFN for each file.
The maximum number of JFNs allowed is dependent upon the space
reserved for JFN-related information in the Job Storage Block (JSB).
Currently the maximum number of JFNs allowed is 140 (octal).
JFNs 100 (.PRIIN) and 101 (.PRIOU) are reserved for the primary input
and output designators, respectively, and are never returned by the
GTJFN (or GNJFN) call. JFN 377777 (.NULIO) is reserved for the null
designator.
2.2.4 File References
All file operations are initiated by acquiring a JFN on a file using
the GTJFN (or GNJFN) call. Some file operations, such as deleting,
renaming, and status queries about the file, may be performed
immediately after the JFN is acquired. Certain operations,
particularly data transfers, require that the file be opened with an
OPENF call on the JFN. When the user opens a file, he specifies the
byte size to be used for byte I/O operations and the access requested
to the file. Several implicit initialization operations, which affect
subsequent references to the file, are also invoked when a file is
opened. For example, a file's position pointer is normally reset to
the beginning of the file such that the first sequential input
operation reads the beginning data of the file.
2.2.5 Sample Program
A sample program follows which acquires JFNs, opens both an input and
an output file, and then copies data from the input file to the output
file in 7-bit bytes until the end of the input file is encountered.
;*** PROGRAM TO COPY INPUT FILE TO OUTPUT FILE. ***
; (USING BIN/BOUT AND IGNORING NULL'S)
TITLE FILEIO ;TITLE OF PROGRAM
SEARCH MONSYM ;SEARCH SYSTEM JSYS-SYMBOL LIBRARY
;*** IMPURE DATA STORAGE AND DEFINITIONS ***
INJFN: BLOCK 1 ;STORAGE FOR INPUT JFN
OUTJFN: BLOCK 1 ;STORAGE FOR OUTPUT JFN
PDLEN=3 ;STACK HAS LENGTH 3
PDLST: BLOCK PDLEN ;SET ASIDE STORAGE FOR STACK
A==1 ;JSYS AC'S
B==2
C==3
D==4
T1==5 ;TEMPORARY AC'S
;....
P==17 ;PUSH DOWN POINTER
;*** PROGRAM INITIALIZATION ***
START: RESET ;CLOSE FILES AND INITIALIZE PROCESS
MOVE P,[IOWD PDLEN,PDLST] ;ESTABLISH STACK
;*** GET INPUT-FILE ***
INFIL: HRROI A,[ASCIZ /
INPUT FILE: /] ;PROMPT FOR INPUT FILE
PSOUT ;ON CONTROLLING TERMINAL
MOVE A,[GJ%OLD+GJ%FNS+GJ%SHT];SEARCH MODES FOR GTJFN
;[EXISTING FILE ONLY , FILE-NR'S IN B
; SHORT CALL ]
MOVE B,[.PRIIN,,.PRIOU] ;GTJFN'S I/O WITH CONTROLLING TERMINAL
GTJFN ;GET JOB FILE NUMBER (JFN)
ERJMP [ PUSHJ P,WARN ;IF ERROR, GIVE WARNING
JRST INFIL] ;AND LET HIM TRY AGAIN
MOVEM A,INJFN ;SUCCESS, SAVE THE JFN
;*** GET OUTPUT-FILE ***
OUTFIL: HRROI A,[ASCIZ /
OUTPUT FILE: /] ;PROMPT FOR OUTPUT FILE
PSOUT ;PRINT IT
MOVE A,[GJ%FOU+GJ%MSG+GJ%CFM+GJ%FNS+GJ%SHT];GTJFN SEARCH MODES
;[DEFAULT TO NEW GENERATION , PRINT
; MESSAGE , REQUIRE CONFIRMATION
; FILE-NR'S IN B , SHORT CALL ]
MOVE B,[.PRIIN,,.PRIOU] ;I/O WITH CONTROLLING TERMINAL
GTJFN ;GET JOB-FILE NUMBER
ERJMP [ PUSHJ P,WARN ;IF ERROR, GIVE WARNING
JRST OUTFIL] ;AND LET HIM TRY AGAIN
MOVEM A,OUTJFN ;SAVE THE JFN
;NOW, OPEN THE FILES WE JUST GOT
; INPUT
MOVE A,INJFN ;RETRIEVE THE INPUT JFN
MOVE B,[7B5+OF%RD] ;DECLARE MODES FOR OPENF [7-BIT BYTES + INPUT]
OPENF ;OPEN THE FILE
ERJMP FATAL ;IF ERROR, GIVE MESSAGE AND STOP
; OUTPUT
MOVE A,OUTJFN ;GET THE OUTPUT JFN
MOVE B,[7B5+OF%WR] ;DECLARE MODES FOR OPENF [7-BIT BYTES + OUTPUT]
OPENF ;OPEN THE FILE
ERJMP FATAL ;IF ERROR, GIVE MESSAGE AND STOP
;*** MAIN LOOP :COPY BYTES FROM INPUT TO OUTPUT ***
LOOP: MOVE A,INJFN ;GET THE INPUT JFN
BIN ;TAKE A BYTE FROM THE SOURCE
JUMPE B,DONE ;IF 0, CHECK FOR END OF FILE.
MOVE A,OUTJFN ;GET THE OUTPUT JFN
BOUT ;OUTPUT THE BYTE TO DESTINATION
ERJMP FATAL ;IF ERROR, GIVE MESSAGE AND STOP
JRST LOOP ;LOOP, STOP ONLY ON A 0 BYTE (FOUND
;AT LOOP+2)
;*** TEST FOR END OF FILE, ON SUCCESS FINISH UP ***
DONE: GTSTS ;GET THE STATUS OF INPUT FILE.
TLNN B,(GS%EOF) ;AT END OF FILE?
JRST LOOP ;NO, FLUSH NULL AND CONTINUE COPY
CLOSIF: MOVE A,INJFN ;YES, RETRIEVE INPUT JFN
CLOSF ;CLOSE INPUT FILE
ERJMP FATAL ;IF ERROR, GIVE MESSAGE AND STOP
CLOSOF: MOVE A,OUTJFN ;RETRIEVE OUTPUT JFN
CLOSF ;CLOSE OUTPUT FILE
ERJMP FATAL ;IF ERROR, GIVE MESSAGE AND STOP
HRROI A,[ASCIZ/
[DONE]/] ;SUCCESSFULLY DONE
PSOUT ;PRINT IT
JRST ZAP ;STOP
;*** ERROR HANDLING ***
FATAL: HRROI A,[ASCIZ/
?/] ;FATAL ERRORS PRINT ? FIRST
PUSHJ P,ERROR ;THEN PRINT ERROR MESSAGE,
JRST ZAP ;AND STOP
WARN: HRROI A,[ASCIZ/
%/] ;WARNINGS PRINT % FIRST
; AND FALL THRU 'ERROR' BACK TO CALLER
ERROR: PSOUT ;PRINT THE ? OR %
MOVE A,[.PRIOU] ;DECLARE PRINCIPAL OUTPUT DEVICE FOR ERROR MESSAGE
MOVE B,[.FHSLF,,-1] ;CURRENT FORK,, LAST ERROR
SETZB C,D ;NO LIMIT,, FULL MESSAGE
ERSTR ;PRINT THE MESSAGE
JFCL ;IGNORE UNDEFINED ERROR NUMBER
JFCL ;IGNORE ERROR DURING EXECUTION OF ERSTR
POPJ P, ;RETURN TO CALLER
ZAP: HALTF ;STOP
JRST START ;WE ARE RESTARTABLE
END START ;TELL LINKING LOADER START ADDRESS
2.2.6 File Access
TOPS-20 provides a general mechanism for protecting files against
unauthorized access. Generally, access to a file depends on the kind
of access desired and the relationship of the user making the access
to the directory containing the file. The possible relationships a
user may have to the file's directory are:
1. The directory containing the file is the user's connected or
accessed directory. Users satisfying this relationship have
owner access to the files in the directory.
2. The directory containing the file is in the same group as the
user. Users satisfying this relationship have group member
access to the files in the directory.
3. The directory containing the file is outside the group
membership. Users satisfying this relationship have world
access to the files in the directory.
Both users and directories may belong to groups. The group-member
relationship is satisfied if both the directory and the user belong to
one or more of the same groups. Groups are assigned by the system
manager or operator. (Refer to the TOPS-20 Operator's Guide.)
The type of access permitted to a file for each relationship is
represented by the value of a 6-bit field. The possible values are:
Value Symbol Meaning
40 FP%RD Read access
20 FP%WR Write access
12 FP%EX+FP%DIR Execute only
10 FP%EX Execute
4 FP%APP Append access
2 FP%DIR Directory listing access. A GTJFN
call for the file will fail if the
user does not have at least this
access.
This 6-bit field and the three relationships (owner, group, remaining
users) are represented by an 18-bit code, with bits 0-5 being the
owner, bits 6-11 being the group, and bits 12-17 being the remaining
users. When a particular bit is on, the corresponding access is
permitted for the particular relationship.
The access given to a group member includes the access given to all
members outside the group. Also, the access given to the owner
includes the access given to group members. Thus, the owner of a file
or a user in the owner's group cannot have less access than users
outside the group.
2.2.7 Directory Access
Access to a directory is protected in a manner similar to, but
distinct from, that of a file. There is an 18-bit code, containing
three 6-bit fields, associated with each directory. Each of the three
fields controls access by users in the same way that access to files
is controlled. For directories, however, each 6-bit field can have
one of the following values.
Value Symbol Meaning
40 DP%RD Accessing files in the directory according to
the access code on the individual files is
allowed. A GTJFN call for a file in the
directory will fail if the user does not have
this access.
10 DP%CN Connecting to the directory without giving a
password is allowed. With this access, a
group member can change the FDB (as the
owner) as well as times, dates, and
accounting information for files in the
directory. Other operations on the files are
subject to the access codes of the files. If
the user is connected to the directory, he
has ownership access to the files; if he is
not connected, he has group membership
access.
4 DP%CF Creating files in the directory is allowed.
When a user requests access to a file, the monitor checks the
directory access code first. If the directory code allows the desired
access, the monitor then checks the access code of the individual
file.
The access actually granted to a file is specified when the user opens
the file with the OPENF call. If the access specified in the OPENF
call is the same as the access permitted by the 18-bit access code,
the user is granted access to the file. Thus, for a user to be
granted access to a specific file, two conditions must be met:
1. The access code (both directory and file) must permit the
user to access the file in the desired manner (e.g., read,
write).
2. The file must not be open for a conflicting type of access.
2.2.8 File Descriptor Block
Each file has an associated File Descriptor Block (FDB). The FDB can
be read with the GTFDB call, and selected words of this block can be
changed with the CHFDB call. The name strings of the author and last
user who wrote to the file can be read with the GFUST call and changed
with the SFUST call.
The format of the FDB is shown in Table 2-1. Words that can be
changed with the CHFDB call are indicated by the listing of the
minimum capability (refer to Section 2.6.1) required to change the
word.
Table 2-1
File Descriptor Block (FDB)
Word Symbol Meaning
0 .FBHDR FDB header word. Individual fields are as
follows:
B0-B28 Reserved for DEC
B29-35(FB%LEN) Length of this file's FDB
1 .FBCTL B0(FB%TMP) File is temporary. This bit
can be changed by owner.
B1(FB%PRM) File is permanent. This bit
can be changed by owner.
B2(FB%NEX) File does not have a file type
yet; file does not really
exist. This bit cannot be
changed.
B3(FB%DEL) File is deleted. This bit can
be changed by the owner
providing that bit FB%ARC (in
.FBCTL) is not set.
B4(FB%NXF) File does not exist because it
has not yet been closed. This
bit cannot be changed.
B5(FB%LNG) File is longer than 512 pages.
This bit cannot be changed.
B6(FB%SHT) Reserved for DEC.
B7(FB%DIR) File is a directory. This bit
cannot be changed.
B8(FB%NOD) File is not to be saved by the
backup system. This bit can be
changed by owner or user with
write access.
B9(FB%BAT) File may have one or more bad
pages. This bit indicates that
I/O errors have occurred for a
page (or pages) of a file and
the contents of these pages are
suspect. This bit is set
whenever the system has a disk
I/O error on a page of an open
file. The faulty disk address
is also added to the list in
the system's BAT blocks for
that disk structure.
If an EXPUNGE is performed for
a file for which bit FB%BAT is
set, the system performs an
additional function as it
releases the pages of the file
back to the available resource
pool: it checks each disk
address in the file against the
list of bad regions in the
structure's BAT blocks and if
it finds a match, it leaves
that page marked as "in use" in
the bit map of available disk
pages, so that the faulty page
is not reused.
B10(FB%SDR) Directory has subdirectories.
This bit cannot be changed.
B11(FB%ARC) File has archive status.
Appropriate words in the FDB
(below) specify where the file
is archived. This bit is
modified by the ARCF JSYS;
CHFDB cannot change it.
B12(FB%INV) File is invisible. Puts the
file in the "invisible" section
of the directory. These files
can be seen only by using the
G1%IIN option to GTJFN. FB%INV
can be modified with the CHFDB
JSYS by anyone having owner
access.
B13(FB%OFF) File is offline. This is set
by DELF when it removes the
contents from disk and cleared
when ARCF restores the contents
to disk. FB%OFF cannot be
changed with the CHFDB JSYS.
Table 2-1 (Cont.)
File Descriptor Block (FDB)
Word Symbol Meaning
1 .FBCTL B14-B17 File class field. This field
(Cont.) (FB%FCF) can be changed by owner. If
value of field is 0(.FBNRM),
file is not an RMS file. If
value of field is 1(.FBRMS),
file is an RMS file.
2 .FBEXL Link to FDB of next file with the same name
but different file type. This word cannot
be changed.
3 .FBADR Disk address of file index block. This
word cannot be changed.
4 .FBPRT File access code.
LH: 500000
RH: file access bits. This field can be
changed by owner.
5 .FBCRE Date and time of last write to the file.
Is modified when any program writes to the
file. This word can be changed by a
process with OPERATOR capability enabled.
6 .FBAUT Pointer to string containing the name of
the author. This name is read with the
GFUST monitor call and can be changed with
the SFUST monitor call.
7 .FBGEN Generation and directory numbers of file.
LH(FB%GEN): generation number of the file.
RH(FB%DRN): monitor internal directory
number of the file (only if B7
of .FBCTL is on).
This word cannot be changed.
10 .FBACT Account information. This word is either a
pointer to an alphanumeric account
designator or 5B2 + numeric account
designator. This word can be changed with
the SACTF monitor call.
11 .FBBYV File I/O information.
B0-B5(FB%RET) Number of generations to
retain (retention count).
If two generations of the
same file have different
retention counts, the
count is taken from the
generation currently being
used. This field can be
changed by owner.
Table 2-1 (Cont.)
File Descriptor Block (FDB)
Word Symbol Meaning
11 .FBBYV B6-B11(FB%BSZ) File byte size. This
(Cont.) field can be changed by
user with write access.
B14-B17(FB%MOD) Data mode of last open of
file. This field can be
changed by user with write
access.
B18-B35(FB%PGC) Page count of file. This
field can be changed by a
process with WHEEL or
OPERATOR capability
enabled. Note that the
monitor keeps the page
count updated, so under
normal curcumstances a
user need not and should
not alter this count.
12 .FBSIZ Number of bytes in the file. (Refer to
Section 2.2.11.) This word can be changed
by user with write access.
13 .FBCRV Date and time of creation of file. This
word can be changed by user with write
access.
14 .FBWRT Date and time of last user write to file.
Is modified only by the user. This word
can be changed by user with write access.
15 .FBREF Date and time of last nonwrite access to
file. This word can be changed by user
with write access.
16 .FBCNT Count word.
LH: number of writes to file.
RH: number of references to file.
This word can be changed by a process with
OPERATOR capability enabled.
17-21 .FBBK0-
.FBBK2 Three words for backup system. The first
word is used by the DUMPER program;
remaining words are reserved for the
future.
22 .FBBBT The right half contains the number of pages
in the file when the contents were deleted
from disk and may be changed with the CHFDB
JSYS. The left half is used for the
following flags:
B1(AR%RAR) User request for a file to
be archived. This can
only be modified by the
ARCF JSYS.
B2(AR%RIV) System request for an
involuntary migration of a
file. The ARCF JSYS is
used to modify this bit,
and the caller must have
WHEEL or OPERATOR
capabilities enabled.
B3(AR%NDL) Do not delete the contents
of the file from disk when
the archival is complete.
Set by ARCF.
B4(AR%NAR) Resist involuntary
migration. This bit is a
note from the user to the
system policy module
asking that the file not
be moved offline if
possible. Set by ARCF.
B5(AR%EXM) File is exempt from
involuntary migration.
Modified only by ARCF with
WHEEL or OPERATOR
capabilities enabled.
B6(AR%1ST) First pass of an
archival-collection run is
in progress. Modified
only by CHFDB and used
only by DUMPER. Requires
WHEEL or OPERATOR
capabilities enabled.
B7(AR%RFL) Restore failed. Set by
ARCF to indicate to
another process that the
restore it is waiting for
has failed.
1B10(AR%WRN) Generate a message warning
that the file offline
expiration date is
approaching. This bit is
currently reserved and
unimplemented.
7B17(AR%RSN Reason file was moved
offline:
.AREXP(1) file expired
.ARRAR(2) archiving was
requested
.ARRIR(3) migration was
requested
B18-B35(AR%PSZ) The right half of .FBBBT
is used to store the
number of pages in a file
when the contents were
removed from disk. This
value is set by the DELF
JSYS (DF%CNO option) and
can be read with CHFDB or
ARCF.
23 .FBNET On-line expiration date and time.
Specifies the date and time at which a file
is considered expired, or specifies an
interval (in days) after which the file is
considered expired. This word is modified
by the SFTAD JSYS.
24 .FBUSW User settable word. This word can be
changed by owner.
25 .FBGNL Address of FDB for next generation of file.
This word cannot be changed.
Table 2-1 (Cont.)
File Descriptor Block (FDB)
Word Symbol Meaning
26 .FBNAM Pointer to filename block. This word
cannot be changed.
27 .FBEXT Pointer to file type block. This word
cannot be changed.
30 .FBLWR Pointer to string containing the name of
the user who last wrote to the file. This
name is read with the GFUST monitor call
and can be changed with the SFUST monitor
call.
31 .FBTDT Archive of collection tape-write date and
time. This is the date and time (in
internal format) that file was last written
to tape (for either archiving or
migration).
32 .FBFET Offline expiration date and time.
Specifies the date and time (or interval)
after which a file in the archives or on
virtual disk is considered expired. Used
for tape recycling. Modified by SFTAD.
This word is currently reserved and not
implemented.
33 .FBTP1 Contains the tape ID for the first archive
or collection run. Modified only by ARCF
with WHEEL or OPERATOR capabilities
enabled.
34 .FBSS1 Contains the saveset and tape file numbers
for the first tape. The left half is the
saveset number the file is recorded in, and
the right half is the tape file number
within that saveset. Modified only by ARCF
with WHEEL or OPERATOR capabilities
enabled.
35 .FBTP2 Tape ID for second archive or collection
run. Otherwise similar to .FBTP1.
36 .FBSS2 Saveset and tape file numbers for the
second archive or collection run.
Otherwise similar to .FBSS1.
The maximum length FDB block that TOPS-20 will create (37 octal) may
be specified with the symbol .FBLEN.
2.2.9 Primary Input And Output Files
Each process in a job has a primary input file and a primary output
file. Both files are normally the controlling terminal, but can be
changed to other files (with the SPJFN call). The primary input and
output files are referenced with designators .PRIIN (JFN 100) and
.PRIOU (JFN 101), respectively. Programs should be coded to do their
"terminal" I/O to these designators, so that they can be used with
command files without modification; only in extreme cases should a
program reference its controlling terminal (0,,-1) directly.
2.2.10 Methods Of Data Transfer
The most simple form of I/O is sequential byte I/O, as shown in the
sample program. (Refer to Section 2.2.5.) This form of data transfer
may be used with any file. A pointer maintained in the monitor is
implicitly initialized when a file is opened and advanced as data is
transferred. For files on disk, there are two other methods of data
transfers. First, random access byte I/O is possible by using the
SFPTR call or the RIN/ROUT calls. Second, entire pages of data may be
mapped with the PMAP call.
2.2.11 File Byte Count
For disk files, TOPS-20 maintains a file byte count (.FBSIZ) in the
FDB. This count is set by the monitor when sequential output (e.g.,
BOUT, SOUT) occurs to the file and thus, on sequential output,
reflects the number of bytes written in the file.
When output occurs to the file using the PMAP call, the monitor does
not set the file byte count. In this case, the number of bytes in the
file may be different from the file byte count stored in the FDB. To
allow sequential I/O to occur later to the file, the program should
update the file byte count (.FBSIZ) and the file byte size (FB%BSZ) in
the FDB before closing the file. The values are updated with the
CHFDB monitor call.
When output occurs to the file using random output calls (e.g., ROUT),
the file byte count is a number one greater than the highest byte
number in the file.
The file byte count is interpreted according to the byte size stored
in the FDB, not the byte size specified when the file is opened. When
a new file is opened, the byte size stored in the FDB is 36 bits,
regardless of the byte size specified in the OPENF call. If the
program executes a CHFDB call to change the file byte count, usually
it must also change the byte size (FB%BSZ) so that both values reflect
the same size bytes.
2.2.12 EOF Limit
There is an EOF limit associated with every opening of a file. This
limit is the number of bytes that can be read with a sequential input
call (e.g., BIN, SIN). When the program attempts to read beyond this
limit using sequential input, the call returns a 0 byte and an
end-of-file condition. This condition may generate a software
interrupt (refer to Section 2.5) if the user has not included an ERJMP
or ERCAL as the next instruction following the call. (Refer to
Chapter 1.)
The EOF limit is computed when the file is opened with the OPENF call.
The monitor computes this limit by determining the total number of
words in the file and dividing this number by the byte size given in
the OPENF call. The total number of words in the file is determined
from the file byte count (.FBSIZ) and the file byte size (FB%BSZ)
stored in the FDB.
2.2.13 Input/Output Errors
While performing I/O or I/O-related operations, it is possible to
encounter one or more error conditions. Some of these are user-caused
errors (e.g., illegal access attempts), and others are I/O device or
medium errors. TOPS-20 indicates such error conditions by setting
error bits in the JFN status word (refer to the GTSTS call) and by
initiating a software interrupt request (refer to Section 2.5) if the
user has not included an ERJMP or ERCAL after the call. If the
process in which an I/O error occurs is not prepared to process the
interrupt, the interrupt is changed into a process terminating
condition with the expectation that the process' immediate superior
will handle the error condition. The TOPS-20 Command Language is
prepared to detect and diagnose I/O errors; thus, a process running
directly beneath the process containing the Command Language need not
do its own I/O error handling unless it chooses to do something
special.
I/O errors can occur while a process is executing ordinary machine
instructions as well as JSYS's. For example, if a PMAP operation is
performed that maps a page of a file into a page of a process, the
file I/O transfer usually does not actually occur until a reference is
made by the process to that particular page of the file. If there is
an I/O error in the transfer, it is detected at the time of this
reference.
An attempt to do I/O to a terminal that is assigned to another job (as
a controlling terminal or with the ASND call) normally results in an
error, but is legal if the process has the WHEEL capability enabled.
The monitor calls used in referencing files are:
GTJFN Assigns a JFN to a file
GNJFN Assigns a JFN to the next file
JFNS Translates a JFN to a string
SPJFN Sets primary JFNs
GPJFN Returns primary JFNs
SWJFN Transposes two JFNs
RLJFN Releases a JFN
OPENF Opens a file
CLOSF Closes a file
CLZFF Closes a process' files
WILD% Compares a wild file spec against a non-wild file spec
PSOUT Outputs string to primary output designator
PBIN Reads byte from primary input designator
PBOUT Output byte to primary output designator
BIN Reads the next byte
BOUT Outputs the next byte
SIN Reads a string
SOUT Outputs a string
SINR Reads a record
SOUTR Outputs a record
SINM Reads data from block-mode terminals
SOUTM Writes data to block-mode terminals
RIN Reads a byte nonsequentially
ROUT Outputs a byte nonsequentially
DUMPI Reads data in unbuffered data mode
DUMPO Outputs data in unbuffered data mode
PMAP Maps pages
RSCAN Reads and outputs rescan buffer
RDTTY Reads data from primary input designator
TEXTI Reads data from terminal or file
CRLNM Creates a logical name
INLNM Outputs logical names
LNMST Translates logical name to string
CHFDB Changes a File Descriptor Block
GTFDB Reads a File Descriptor Block
SFUST Changes the author or last writer name string
GFUST Reads the author or last writer name string
CHKAC Checks access to a file
ACCES Specifies access to a directory
DIRST Translates directory or user number to a string
RCDIR Translates directory name to number
RCUSR Translates user name to number
SIZEF Obtains file's length
SFBSZ Sets file's byte size
RFBSZ Reads file's byte size
SFPTR Sets file's pointer
RFPTR Reads file's pointer
BKJFN Backspaces file's pointer
RNAMF Renames a file
SFTAD Sets file's time and dates
RFTAD Reads file's time and dates
STSTS Sets file's status
GTSTS Reads file's status
UFPGS Updates file's pages
DELF Deletes a file
DELDF Expunges deleted files
DELNF Retains specified number of generations of file
FFFFP Finds first free file page
FFUFD Finds first used file page
2.3 OBTAINING INFORMATION
The monitor calls in this group are used to obtain information from
the system, such as the time of day, resources used by the current
job, error conditions, and the contents of system tables.
Several of these calls return time values (e.g., intervals,
accumulated times). Unless otherwise specified, these values are
integer numbers in units of milliseconds.
2.3.1 Error Mnemonics And Message Strings
Each failure for a JSYS is associated with an error number identifying
the particular failure. These error numbers are indicated in the
manual by mnemonics (e.g., DEVX1) and are listed with the appropriate
calls. Some calls return the error number in the right half of an
accumulator, usually in AC1; however, all calls leave the number in
the Process Storage Block for the process in which the error occurred.
Thus, a process can obtain (via the GETER call) the number for the
last error that occurred.
In addition to the mnemonic of six characters or less, each error
number has a text message associated with it that describes the error
in more detail. These messages are listed along with the mnemonics.
The ERSTR call can be used to return the message string associated
with any given error number. The use of this call is recommended for
handling error returns.
Refer to Chapter 3 and Appendix A for the listing of the error
numbers, mnemonics, and messages.
2.3.2 System Tables
The contents of several system tables are available to programs for
such purposes as generating status reports and collecting system
performance statistics. Each table is identified by a fixed name of
up to six characters and consists of a variable number of entries.
The -1 entry in each table is the negative of the number of data
entries in the table; the data entries are identified by an index
which increments from 0.
Two calls exist for accessing tables. The first, SYSGT, accepts a
table name and returns the table length, its first data entry, and a
number identifying the table. The second, GETAB, accepts the table
number returned by SYSGT or obtained from the MONSYM file and returns
additional entries from the table.
The system tables are as follows. Numeric table indexes are given in
octal.
Name Index Contents
APRID Processor serial number
BLDTD Date and time system was
generated
DBUGSW Debugging information
0 state of operator coverage
0 = unattended
1 = attended
2 = debugging
1 state of BUGCHK handling
0=proceed
1=breakpoint)
DEVCHR Device characteristics word, as
described under the DVCHR JSYS in
Chapter 3, except that B5 (DV%AV)
is not meaningful.
DEVNAM SIXBIT device name including unit
number, e.g., MTA3
DEVUNT LH: Job number to which device is
assigned (with ASND), or -1 if
device is not assigned
RH: unit number, or -1 if device has
no units (e.g., DSK:)
DRMERR Information on drum errors
0 number of recoverable errors
1 to n varies depending on type of drum
being used
DSKERR Information on disk errors
0 number of recoverable disk errors
1 to n varies depending on type of disk
being used
DWNTIM Downtime information
0 date and time when system will be
shut down next
1 date and time when system will
subsequently be up
HQLAV High queue load averages
IMPLT1 c ARPANET - 1 fullword for each
link:
LH: internal connection number, index
for:
NETAWD
NETBAL
NETBTC
NETBUF
NETFSK
NETLSK
NETSTS
or -1 if control link
RH: B18-19 00 receive
01 send
11 free
01 delete
B20-27 host number
B28-35 link number
c (index) is derived from
bits 24-35 of NETAWD.
IMPLT2 c ARPANET - 1 fullword for each link:
LH: B0-9 flags
B10-17 byte size of buffer
RH: address of input buffer
c (index) is derived from bits
24-35 of NETAWD.
IMPLT3 c ARPANET - 1 fullword for each
link:
LH: address of output buffer
RH: message saved for retransmission
c (index) is derived from bits
24-35 of NETAWD.
IMPLT4 c ARPANET - 1 full word for each
link
LH: address of current buffer
RH: message allocation in bits
c (index) is derived from bits
24-35 of NETAWD.
IMPLT5 c ARPANET - 1 full word for each
link:
B4-11 Network number (ARPAnet =
12 octal)
B12-27 IMP
B28-35 host
c (index) is derived from
bits 24-35 of NETAWD.
JBONT Job # Owning job for
CRJOB-created jobs.
JOBNAM Job # LH: reserved for DEC
RH: index into the system program
tables for the system program
being used by this job
(determined by the last SETSN
call executed by the job)
JOBPNM Job # SIXBIT name of program running in
this job
JOBRT Job # CPU time used by the job
(negative if no such job)
JOBTTY Job # LH: controlling terminal line number,
or
-1 if none (i.e., job is
detached)
RH: reserved for DEC
LOGDES Logging information
0 designator for logging
information
1 designator for job 0 and error
information
LQLAV Low queue load averages
NETHST c ARPANET - 1 full word for each
internal connection:
-1 if no foreign host, otherwise
the same as IMPLT5. c
(index) is derived from
bits 24-35 of NETAWD.
NETAWD c ARPANET - 1 full word for each
internal connection:
B0-8 link number
B9-17 unused
B18-23 timeout countdown
B24-35 index to link tables
c (index) is internal connection
(see IMPLT1).
NETBAL c ARPANET - number of bits
allocated to each internal
connection
c (index) is internal connection
(see IMPLT1).
NETBTC c ARPANET - byte count statistics:
the number of bits sent or
received over each internal
connection since the socket was
created.
c (index) is internal connection
(see IMPLT1).
NETBUF c ARPANET - 1 fullword for each
internal connection:
LH: bytes per buffer
RH: buffer location -1
c (index) is internal connection
(see IMPLT1).
NETFSK c ARPANET - foreign socket number
(32 bits) for each internal
connection
c (index) is internal connection
(see IMPLT1).
NETLSK c ARPANET - local socket number for
each internal connection
c (index) is internal connection
(see IMPLT1).
NETRDY ARPANET operational status table
0 0 IMP down
.GT.0 IMP going down
-1 IMP up
1 0 = network off, non-zero =
network on
2 flags for NETSER (not for user)
3 time of last NCP cycle up
4 last IMP GOING DOWN message
B0-15 reserved
B16-17 0 panic
1 scheduled hardware PM
2 software reload
3 emergency restart
B18-21 number of 5-minute
intervals before IMP goes
down
B22-31 number of 5-minute
intervals IMP will be
down
5 time of last IMP ready drop
6 time of last IMP ready up
7 time of IMP GOING DOWN message
NCPGS One-word table containing number
of pages of real (physical) user
core available in system.
NSWPG Default swapping pages
PTYPAR Pseudo-TTY parameter information
0 LH: number of PTYs in system
RH: TTY number of first PTY
QTIMES 0 to n Accumulated runtime of jobs on
the n scheduler queues
SNAMES SIXBIT name of system program, or
0 if this entry is unused in this
and the corresponding four
tables.
SNBLKS Number of samples in working set
size integral
SPFLTS Total number of page faults of
system program
SSIZE Time integral of working set size
STIMES Total runtime of system program
SYMTAB SIXBIT table names of all GETAB
tables
SYSTAT Monitor statistics. The entries
in this table are as follows:
0 time with no runnable jobs
1 waiting time with 1 or more
runnable jobs (waiting for page
swapping)
2 time spent in scheduler
3 time spent processing pager traps
4 number of drum reads
5 number of drum writes
6 number of disk reads
7 number of disk writes
10 number of terminal wakeups
11 number of terminal interrupts
12 time integral of number of
processes in the balance set
13 time integral of number of
runnable processes
14 exponential 1-minute average of
number of runnable processes
15 exponential 5-minute average of
number of runnable processes
16 exponential 15-minute average of
number of runnable processes
17 time integral of number of
processes waiting for the disk
20 time integral of number of
processes waiting for the drum
21 number of terminal input
characters
22 number of terminal output
characters
23 number of system core management
cycles
24 time spent doing postpurging
25 number of forced balance set
process removals
26 time integral of number of
processes in swap wait
27 scheduler overhead time (same as
entry 2) in high precision units
30 idle time (same as entry 0) in
high precision units
31 lost time (same as entry 1) in
high precision units
32 user time
NOTE
This table is subject to
change (usually
additions) as measuring
routines are added to the
system.
SYSVER An ASCIZ string identifying the
system name, version, and date.
TICKPS One-word table containing number
of clock ticks per second.
TTYJOB line # LH: positive job number for which
this is the controlling terminal,
or
-1 for unassigned line, or
-2 for line currently being
assigned, or job number to which
this line is assigned.
RH: -1 if no process is waiting for
input from this terminal; other
than -1 if some process is
waiting for input.
The device tables DEVNAM, DEVCHR, and DEVUNT are parallel in that
the same entry in each table pertains to the same device.
The system program tables SNAMES, STIMES, SPFLTS, SSIZE, and
SNBLKS are parallel in that the same entry in each table pertains
to the same system program. The system program being run by a
specific job may be determined from SNAMES, using an index
obtained from table JOBNAM.
The following monitor calls are used for obtaining information:
GETER Returns the last error condition
SETER Sets the last error condition
ERSTR Translates an error number to a string
ESOUT Returns an error string
SYSGT Returns values for a system table
GETAB Returns a word from a system table
SETNM Sets the program's private name
SETSN Sets the program's system and private names
GETNM Returns the program name being used by the job
SETJB Sets a job's parameters
GETJI Returns job information for specified job
GJINF Returns job information for current job
STAD Sets the system's date
GTAD Returns the system's date
TIME Returns the time since the system was restarted
TIMER Sets the runtime limit of a job
RUNTM Returns the runtime of a job or process
HPTIM Returns the high-precision clock values
GTDAL Returns the disk allocation of a directory
GTRPI Returns the paging trap information
GTRPW Returns the trap words
2.4 COMMUNICATING WITH DEVICES
The monitor calls in this group are used to communicate with the
devices on the system. Some of these devices are line printers,
magnetic tapes, terminals, and card readers.
Many of the monitor calls in this group take a device designator as an
argument. This designator can be either
LH: .DVDES(600000)+device type number
RH: unit number for devices that have units, arbitrary code
for structures, or -1 for non-structure devices that do not
have units
or
LH: 0
RH: .TTDES(400000)+terminal number, or .CTTRM(-1) for
controlling terminal
The STDEV monitor call is used to convert a string to its
corresponding device designator.
The various devices are:
Name Description Type Units Symbol
ATS: application terminal
services device 24 .DVATS
CDP: spooled card punch 21 yes
PCDP: physical card punch 21 yes .DVCDP
CDR: spooled card reader 10 yes
PCDR: physical card reader 10 yes .DVCDR
DCN: DECnet active
component 22 .DVDCN
DSK: disk structure 0 .DVDSK
FE: front-end
pseudo-device 11 .DVFE
LPT: spooled line printer yes
PLPT: physical line printer 7 yes .DVLPT
MTA: magnetic tape 2 yes .DVMTA
MT: logical magnetic tape 2 yes .DVMTA
NET: ARPA network 16 .DVNET
NUL: null device 15 .DVNUL
PTY: pseudo-terminal 13 yes .DVPTY
SRV: DECnet passive
component 23 .DVSRV
TTY: terminal 12 yes .DVTTY
The null device is an infinite sink for unwanted output and returns an
EOF on input.
Device-dependent status bits are defined for some devices. These bits
can be set or returned with the SDSTS or GDSTS call, respectively.
When an assignable device is assigned (by the ASND call) or opened (by
the OPENF call) by one job, other jobs cannot
1. Assign the device with ASND.
2. Execute an OPENF call for the device, even if the JFN
properly represents the device.
Structures are not restricted to these limitations; more than one
user can simultaneously execute the OPENF call for files on
structures.
2.4.1 Physical Card Reader (PCDR:)
The following device-dependent status bits are defined for the card
reader. These bits can be obtained with the .MORST function of the
MTOPR call.
Bit Symbol Meaning
0 MO%COL Device is on line.
10 MO%FER Fatal hardware error. This error generates an
interrupt on software channel .ICDAE. (Refer
to Section 2.5.1.)
12 MO%EOF Card reader is at end of file.
13 MO%IOP I/O in progress.
14 MO%SER Software error (e.g., interrupt character).
15 MO%HE Hardware error. This error generates an
interrupt on software channel .ICDAE.
Bit Symbol Meaning
16 MO%OL Device is off line.
17 MO%FNX Device is nonexistent.
31 MO%SFL Output stacker full.
32 MO%HEM Input hopper empty.
33 MO%SCK Stack check.
34 MO%PCK Pick check.
35 MO%RCK Read check.
2.4.2 Spooled Card Reader (CDR:)
On most systems, the physical card reader devices (PCDR: devices) are
under the control of the card reader spooler, SPRINT and thus the
ordinary user cannot OPEN a PCDR: device and must, instead, OPEN a
spooled card reader device (CDR:).
When a GTJFN is performed on device CDR:, the device characteristics
(returned by DEVCHR) are the same as those for device PCDR:. Thus,
CDR: devices have units, and a unit number may be specified for the
GTJFN. However, when the OPENF is performed, the device
characteristics become the same as device DSK:. This is because data
read from device CDR: is actually read from a file in the spool
directory <SPOOL>. The file is spooled from the PCDR: device to the
spool directory by SPRINT.
Thus device CDR: is effectively a disk device, and no monitor call
that can be used to set the characteristics of a PCDR: device can be
used for a CDR: device. Both ASCII and image mode are supported for
CDR: devices.
2.4.3 Physical Card Punch (PCDP:)
The following device-dependent bits are defined for the card reader.
These functions can be obtained with the .MORST function of the MTOPR
monitor call.
Bit Symbol Meaning
B10 MO%FER Fatal error condition
B12 MO%EOF All pending output has been processed
B13 MO%IOP Output in progress
B14 MO%SER Software error has occurred (would generate
interrupt on an assignable channel)
B15 MO%HE Hardware error has occurred (would generate
interrupt on channel .ICDAE)
B16 MO%OL Card-punch is off-line. This bit is set when
operator intervention is required (card jam,
hopper empty, stacker full).
B17 MO%FNX Card punch doesn't exist
B32 MO%HEM Hopper is empty or stacker full
B33 MO%SCK Stacker is full or hopper is empty
B34 MO%PCK Pick check
2.4.4 Spooled Card Punch (CDP:)
On most systems, the physical card punch devices (PCDP: devices) are
under the control of the card punch spooler, SPROUT and thus the
ordinary user cannot OPEN a PCDP: device and must, instead, OPEN a
spooled card punch device (CDP:).
When a GTJFN is performed on device CDP:, the device characteristics
(returned by DEVCHR) are the same as those for device PCDP:. Thus,
CDP: devices have units, and a unit number may be specified for the
GTJFN. However, when the OPENF is performed, the device
characteristics become the same as device DSK:. This is because data
written to device CDP: is actually written to a file in the spool
directory <SPOOL>. The file is then spooled from the spool directory
to the PCDR: device by SPROUT.
Thus device CDP: is effectively a disk device, and no monitor call
that can be used to set the characteristics of a PCDP: device can be
used for a CDP: device. Both ASCII and image mode are supported for
CDP: devices.
2.4.5 Physical Line Printer (PLPT:)
The line printer normally accepts the 128 7-bit ASCII character codes
(0-177 octal). However, by specifying a byte size of 8 when opening
the printer, a program can transfer 8-bit bytes. Thus, the program
can take advantage of printers that have more than 128 characters.
Each code sent usually causes a graphic to be printed. (Note that on
a 64-character printer, lower case letters are represented as upper
case.) However, the carriage control characters do not cause a graphic
to be printed; instead they cause specific actions to be taken. The
actions taken are determined by the translation RAM and the Vertical
Formatting Unit. These actions can be redefined by the installation,
and the method by which they are redefined depends on the type of
printer being used.
For the LP10 printer, which has a carriage control tape, the
installation must change the tape to redefine the resulting actions.
For the LP05 and LP14 printers, which have a direct access Vertical
Formatting Unit and a programmable translation RAM, the installation
can redefine the resulting actions by:
1. Reprogramming the VFU by changing the VFU file with the
MAKVFU program and reloading this file and the RAM.
2. Reprogramming the translation RAM by changing the RAM file
with the MAKRAM program and reloading this file.
Refer to the LPINI and MTOPR monitor calls for the functions used in
loading the VFU and RAM files.
The default actions taken on the carriage control characters, along
with the default channels that determine these actions, are as
follows:
ASCII Character Default Name Default
Code Channel Action
11 Tab No vertical motion. Skips
to the beginning of every
8th column on the same line.
12 8 Line feed Skips to column 1 on the
next line. The last six
lines of each page are
skipped.
13 7 Vertical tab Skips to column 1 on the
line at the next third of a
page.
14 1 Form feed Skips to column 1 on the top
of the next page.
15 Carriage No vertical motion. Returns
return to column 1 of the current
line and does not advance
the paper.
20 2 Half page Skips to column 1 on the
next half page.
21 3 Alternate Skips to column 1 on the
lines next even line.
22 4 Three lines Skips to column 1 on the
next of every third line.
23 5 Next line Skips to column 1 on the
next line without skipping
the last six lines on a
page.
24 6 Sixth page Skips to column 1 on the
next sixth of a page.
The association between the ASCII code and the channel is determined
by the RAM. The association between the channel and the default
action is determined by the VFU. Therefore, a change in the VFU
changes the association between the channel and the action, which
causes the ASCII code to be associated with the new action.
2.4.1.1 Status Bits - The following device-dependent status bits are
defined for the line printer. These bits can be obtained with the
.MORST function of the MTOPR call.
Bit Symbol Meaning
0 MO%LCP Lower case printer
10 MO%FER Fatal hardware error. This error
generates an interrupt on software
channel .ICDAE (refer to Section
2.5.1).
12 MO%EOF All data sent to the printer has
actually been printed.
13 MO%IOP I/O in progress
14 MO%SER Software error (e.g., interrupt
character, page counter overflow)
15 MO%HE Hardware error. Forms must be
realigned. This error generates an
interrupt on software channel .ICDAE.
16 MO%OL Device is off line
17 MO%FNX Device is nonexistent
30 MO%RPE RAM parity error
31 MO%LVU Optical VFU
33 MO%LVF VFU error
34 MO%LCI Character interrupt. This generates
an interrupt on channel .ICDAE.
35 MO%LPC Page counter register overflow
2.4.6 Spooled Line Printer (LPT:)
On most systems, the physical line printer devices (PLPT: devices)
are under the control of the line printer spooler, LPTSPL and thus the
ordinary user cannot OPEN a PLPT: device and must, instead, OPEN a
spooled line printer device (LPT:)
When a GTJFN is performed on device LPT:, the device characteristics
(returned by DEVCHR) are the same as those for device PLPT:. Thus,
LPT: devices have units, and a unit number may be specified for the
GTJFN. However, when the OPENF is performed, the device
characteristics become the same as device DSK:. This is because data
written to device LPT: is actually written to a file in the spool
directory <SPOOL>. When device LPT: is closed, the file in <SPOOL>
is closed and a message sent to the line printer spooler LPTSPL
causing it to print the file on the line printer.
Thus device LPT: is effectively a disk device, and none of the
monitor calls that can be used to set the characteristics of a PLPT:
device can be used for a LPT: device. Note that LPTSPL only writes
7-bit bytes, so opening an LPT: device with any other byte size will
cause erroneous results. Also, only ASCII mode is supported for LPT:
devices.
2.4.7 Physical Magnetic Tape (MTA:)
The following device-dependent bits are defined for the magnetic tape.
Bit Symbol Meaning
18 MT%ILW Drive is write protected
19 MT%DVE Device error (hung or data late)
20 MT%DAE Data error
21 MT%SER Suppress automatic error recovery procedures
Bit Symbol Meaning
22 MT%EOF Device EOF (file) mark
23 MT%IRL Incorrect record length (not the same number of
words as specified by the read operation or not a
whole number of words)
24 MT%BOT Beginning of tape
25 MT%EOT End of tape
26 MT%EVP Even parity
29-31 MT%CCT Character counter if MT%IRL is on.
Data transfers to and from the magnetic tape can be performed using
either buffered or unbuffered I/O.
2.4.7.1 Buffered I/O - The monitor uses buffered I/O when the
sequential I/O calls (e.g., BIN/BOUT, SIN/SOUT) are used to read from
or write to the magnetic tape. When the tape is opened for sequential
I/O (data mode 0 on the OPENF call), the monitor reserves buffer space
large enough to hold two records of data. The maximum size of the
records is specified with the SET TAPE RECORD-LENGTH command or the
.MOSRS function of the MTOPR monitor call. The buffers reserved by
the monitor allow the user's program to overlap computation with the
transfer of data to and from the tape.
The BIN monitor call is used to read one byte from the tape with the
monitor filling one buffer with data as the user program is reading
bytes from the other buffer. A program reading data from the tape
with successive BIN calls obtains a stream of bytes until a tape mark
is read. The SIN monitor call is used to read a specified number of
bytes with the monitor again performing the double buffering. Both
the BIN and the SIN calls read across record boundaries on the tape.
The SINR monitor call is used to read variable-length records from the
tape because each call returns one record to the user program. If the
record on the tape contains more data than the SINR call request, the
remaining bytes in the record are discarded. The SINR call never
reads across record boundaries on the tape. Thus, each SINR call
begins reading at the first byte of the next record on the tape. With
all three calls, the specified record size must be at least as large
as the largest record being read from the tape.
The BOUT monitor call is used to write one byte on the tape. A
program writing data on the tape with successive BOUT calls writes a
stream of bytes packed into records of the specified size. The SOUT
monitor call is used to write a specified number of bytes into one
record equal to the given record size. The SOUTR call is used to
write variable-length records on the tape because each call writes at
least one record. The size of the record is equal to either the
number of bytes specified in the SOUTR call or the number of bytes
specified in the maximum record size, whichever is smaller. If the
number of bytes requested in the call is greater than the specified
record size, then records of the maximum size are written, plus
another record containing the remaining bytes. If the end of tape
marker is reached during sequential mode output, the data is written
and an error return is given. Bit MT%EOT (bit 25) in the device
status word will be set to indicate this condition.
When a CLOSF monitor call is executed for a magnetic tape to which
buffered output is being done, any data remaining in the monitor's
buffers will be written to the tape. The monitor writes two tape
marks after the last record written and backspaces over the second
mark. This allows a subsequent write operation to overwrite the last
tape mark, and always leaves two tape marks (a logical end of tape)
after the last record written.
The monitor does not write records of less than four words long. Thus
if the user requests less than four words to be written on a SOUTR or
DUMPO (see below) call, the monitor will write a four-word record,
completing it with zeros. On a SOUT call, if less than four words
remain in the buffer at the time of the CLOSF call, the monitor again
fills the record with zeros.
2.4.7.2 Unbuffered I/O - The DUMPI and DUMPO monitor calls are used
to read from or write to the magnetic tape without using buffered I/O.
(Unbuffered I/O is sometimes called dump mode.) Unbuffered I/O uses a
program-supplied command list to determine where to transfer data into
or out of the program's address space. The command list can contain
three types of entries:
1. IOWD n, loc transfers n words from loc through loc+n-1. The
next command is obtained from the location following the
IOWD. Each IOWD word reads or writes a separate magnetic
tape record.
2. XWD 0, y takes the next command from location y.
3. 0 terminates the command list.
Refer to the DUMPI call description for more information.
On input, a new record is read for each IOWD entry in the command
list. If the IOWD request does not equal the actual size of the
record on the tape, an error (IOX5) is returned. The GDSTS monitor
call can then be executed to examine the status bits set and to
determine the number of words transferred. In addition, if a tape
mark is read, an error (IOX4) is returned. On output, a new record is
written for each IOWD entry in the command list.
There are two modes available in unbuffered I/O. In the normal mode,
the monitor waits for the data transfer to complete before returning
control to the program. In the no-wait mode, the monitor returns
control immediately after queueing the first transfer so that the
program can set up the second transfer. The monitor then waits for
the first transfer to complete before queueing the second. If the
first transfer is successful, the second one is started, and control
is returned to the program. If the first transfer is not successful,
an error is returned in AC1, and the second one is not started. The
desired mode is specified by bit DM%NWT in AC1 on the DUMPI or DUMPO
call.
2.4.7.3 Magnetic Tape Status - The status word of a magnetic tape can
be obtained with the GDSTS call or individual status bits can be
obtained with the MTOPR call. The GDSTS call waits for all activity
to stop during sequential mode output, dump mode, and spacing
operations before obtaining the status. A GDSTS call executed during
sequential mode input returns the status of the current record.
Reading from or writing to a magnetic tape cannot be done if there are
any errors set in the device status word. The program can clear
errors with the SDSTS call or the .MOCLE function of the MTOPR call.
2.4.7.4 Reading A Tape in the Reverse Direction - With the .MOSDR
function of the MTOPR call, the program can cause the tape to move in
the reverse direction (toward the beginning of the tape) during read
operations. The data in each record are returned in the forward
order, but the records themselves are returned in the reverse order.
The sensing-foil marking the beginning of tape is treated as an EOF
tape mark.
When the SIN call is used to read data in the reverse direction, it is
recommended that the number of bytes requested by the call and the
record size be equal to the size of the record on the tape. This
returns the bytes in the entire record in the correct order, but
returns the records in reverse order. If the request does not equal
the sizes, the bytes returned will be out of phase with the bytes in
the actual record.
When the SINR call is used to read data in the reverse direction, the
number of bytes requested by the call should be at least as large as
the size of the record on the tape. If the requested number is
smaller than the actual record, the remaining bytes in the record are
discarded from the beginning of the record and not from the end of the
record.
2.4.7.5 Hardware Data Modes - By using the .MOSDM function of the
MTOPR call, the program can set the mode for storing data on a
magnetic tape. The following descriptions indicate how bits are
stored in the tracks and the number of frames required to store a
36-bit word of data. Note that the diagrams demonstrate how data is
transmited to or from the tape controller. Data will not be
physically stored on the tape in the format shown in the diagrams.
Unbuffered (Dump) Mode
This mode stores a word of data as a 36-bit byte in five frames of a
9-track tape. Note that the fifth frame is partially used. This mode
is normally the default mode.
TRACKS FRAMES
9 8 7 6 5 4 3 2 1
B0 B1 B2 B3 B4 B5 B6 B7 P 1
B8 B9 B10 B11 B12 B13 B14 B15 P 2
B16 B17 B18 B19 B20 B21 B22 B23 P 3
B24 B25 B26 B27 B28 B29 B30 B31 P 4
0 0 0 0 B32 B33 B34 B35 P 5
Industry Compatible Mode
This mode stores a word of data as four 8-bit bytes in four frames of
a 9-track tape. On a read operation, four frames of 8-bit bytes are
read, left-justified, into a word. The remaining four bits of the
word are 0 or are copies of the parity bits, depending on the
hardware; these bits are not data. On a write operation, the
leftmost four 8-bit bytes (i.e., bits 0 through 31) of the word are
written in four frames on the tape. The rightmost four bits (i.e.,
bits 32 through 35) of the word are ignored and are not written on the
tape. This mode is compatible with any machine that reads and writes
8-bit bytes.
TRACKS FRAMES
9 8 7 6 5 4 3 2 1
B0 B1 B2 B3 B4 B5 B6 B7 P 1
B8 B9 B10 B11 B12 B13 B14 B15 P 2
B16 B17 B18 B19 B20 B21 B22 B23 P 3
B24 B25 B26 B27 B28 B29 B30 B31 P 4
ANSI ASCII Mode
This mode stores a word of data as five 7-bit bytes in five frames of
a 9-track tape. On a read operation, five frames of 7-bit bytes are
read, left-justified, into a word. The remaining bits (bits 35) of
each frame are ORed together, and the result is placed in bit 35 of
the word. On a write operation, the leftmost five 7-bit bytes of the
word are written in five frames on the tape. Bit 35 of the word must
be zero to conform to ANSI standards. It is written into the
high-order bit of the fifth frame, and the remaining high-order bits
of the first four frames are 0. This mode is useful when transferring
ASCII data from the TOPS-20 to machines that read 8-bit bytes.
TRACKS FRAMES
9 8 7 6 5 4 3 2 1
0 B0 B1 B2 B3 B4 B5 B6 P 1
0 B7 B8 B9 B10 B11 B12 B13 P 2
0 B14 B15 B16 B17 B18 B19 B20 P 3
0 B21 B22 B23 B24 B25 B26 B27 P 4
B35 B28 B29 B30 B31 B32 B33 B34 P 5
SIXBIT Mode
This mode stores a word of data as six 6-bit bytes in six frames of a
7-track tape. This mode is the only supported hardware mode for
7-track tapes.
TRACKS FRAMES
7 6 5 4 3 2 1
B0 B1 B2 B3 B4 B5 P 1
B6 B7 B8 B9 B10 B11 P 2
B12 B13 B14 B15 B16 B17 P 3
B18 B19 B20 B21 B22 B23 P 4
B24 B25 B26 B27 B28 B29 P 5
B30 B31 B32 B33 B34 B35 P 6
High Density Mode
In this mode, two 36-bit words are stored in 9 frames. High density
mode is available on any 9-track drive connected to a DX20 controller.
TRACKS FRAMES
9 8 7 6 5 4 3 2 1
B0 B1 B2 B3 B4 B5 B6 B7 P 1
B8 B9 B10 B11 B12 B13 B14 B15 P 2
B16 B17 B18 B19 B20 B21 B22 B23 P 3
B24 B25 B26 B27 B28 B29 B30 B31 P 4
B32 B33 B34 B35 B0 B1 B2 B3 P 5
B4 B5 B6 B7 B8 B9 B10 B11 P 6
B12 B13 B14 B15 B16 B17 B18 B19 P 7
B20 B21 B22 B23 B24 B25 B26 B27 P 8
B28 B29 B30 B31 B32 B33 B34 B35 P 9
2.4.8 Logical Magnetic Tape (MT:)
Logical magnetic tape devices are used so that the system operator
can fulfill a MOUNT request with any available tape drive that meets
the requirements of the MOUNT request. The user never knows and
need not know which physical drive (MTA:) is mapped to the logical
drive (MT:). Some JSYS functions available for MTA: devices are
not available for MT: devices. Also, MT: devices will commonly be
used in a tape-labeled environment and this environment will cause
further restrictions in the JSYS functions available for MT:
devices. See the appropriate JSYS's for any restrictions that may
apply.
2.4.9 Terminal (TTY:)
Most monitor calls in this group return an error if the device
referenced is assigned to another job. However, a process with
WHEEL capability enabled can reference a terminal assigned to
another job (as controlling terminal or with ASND). The monitor
calls pertaining to terminals have no effect, or return
default-value information, when used with other devices.
2.4.9.1 JFN Mode Word - Each terminal in TOPS-20 is associated with
a mode word. This word can be read with the RFMOD call and changed
with the SFMOD and STPAR calls. The SFMOD call affects only the
modes that are logically program related (i.e., wakeup control, echo
mode, and terminal data mode). The STPAR call affects fields that
describe device parameters (i.e., mechanical characteristics, page
length and width, case conversion, and duplex control). Thus, a
program can execute a SFMOD call without affecting
previously-established device modes.
The format of the JFN word is shown below.
Bit Symbol Changed by Function
0 TT%OSP SFMOD output suppress control (1=ignore output;
0=allow output)
1 TT%MFF STPAR has mechanical form feed
2 TT%TAB STPAR has mechanical tab
3 TT%LCA STPAR has lower case
4-10 TT%LEN STPAR page length
11-17 TT%WID STPAR page width
18-23 TT%WAK SFMOD wakeup control on:
B18: not used
TT%IGN B19: ignore the other TT%WAK bits
TT%WKF B20: formatting control character
TT%WKN B21: non-formatting control character
TT%WKP B22: punctuation character
TT%WKA B23: alphanumeric character
24 TT%ECO SFMOD echos on
25 TT%ECM STPAR echo mode
26 TT%ALK TLINK accept links
27 TT%AAD TLINK accept advice
28-29 TT%DAM SFMOD terminal data mode
.TTBIN 00: no translation
.TTASC 01: translate both echo and output
.TTATO 10: translate output only
.TTATE 11: translate echo only
30 TT%UOC STPAR upper case output control
0: do not indicate
1: indicate by 'X
31 TT%LIC STPAR lower case input control
0: no conversion
1: convert lower to upper
32-33 TT%DUM STPAR duplex mode
.TTFDX 00: Full duplex
.TTHDX 10: Character half duplex
.TTLDX 11: Line half duplex
01: Reserved for DEC
34 TT%PGM STPAR output page mode (1=display mode,
0=hardcopy mode)
35 TT%CAR system carrier state; on if line is a dataset
and the carrier is on.
Bit 0 (TT%OSP) implements the CTRL/O function. If this bit is set,
all program output directed to the terminal is discarded. When the
bit is off, program output is buffered and sent as usual. The current
contents of the output buffer are not cleared when this bit is set;
clearing the buffer must be done explicitly (via the CFOBF call) if
output is to be stopped immediately.
Bits 1, 2, and 3 (TT%MFF, TT%TAB, and TT%LCA) define several of the
mechanical capabilities of the terminal and affect character handling
on both input and output. Form feeds and tabs are simulated if the
terminal does not have the required mechanical capability or if
simulation has been requested by the SFCOC call.
Bits 4-10 (TT%LEN) determine the number of line feeds necessary to
simulate a formfeed or the number of lines to fit on the display
screen. A 0 value means the declared length of the page is
indefinitely large.
Bits 11-17 (TT%WID) determine the point at which the output line must
be continued on the next line by inserting a carriage return-line
feed. If 0, no line folding occurs.
Bits 18-23 (TT%WAK) define the particular class of characters that,
when input from the terminal, will wake up a waiting program. Refer
to Section 2.4.3.3 for the definitions of the wakeup classes. Note
that the class-wakeup scheme is maintained for compatibility with
older programs. Newer programs should use the .MOSBM function of the
MTOPR JSYS as it has more resolution and causes less overhead.
Bit 24 (TT%ECO) defines if echos are to be given. If this bit is off,
echoing is turned off. This is useful when the program is accepting a
password or is simulating non-standard echoing procedures.
Bit 25 (TT%ECM) defines when the echo will occur. If this bit is off,
the echo will occur when the program reads the character. That is,
the echo occurs immediately if the program is waiting for input or is
deferred if the program is not waiting for input. This is the
standard echo mode and produces a correctly-ordered typescript (i.e.,
program input and output appear in the order in which they occurred).
If this bit is on, the echo occurs as soon as the character is typed.
Note that this mode may cause editing to appear out of order on the
typescript. This occurs because editing is performed as the program
reads the character and not necessarily when the echo occurs.
Bits 28-29 (TT%DAM) define the terminal data mode. The four possible
data modes are:
00 Binary (.TTBIN), 8-bit input and output. There is no format
control or control group translation and no echoing.
01 ASCII (.TTASC), 7-bit input and output, plus parity on for
control group output. There is format control as well as
simulation and translation of control group for input (echo)
and output according to the control words given on the SFCOC
JSYS. This is the usual terminal data mode.
10 Disable the translation of echo (.TTATO). In all other
respects, same as .TTASC.
11 Disable the translation of output (.TTATE). In all other
respects, same as .TTASC.
The last two data modes allow the user to selectively disable the
translation of control characters for input or output. When
translation is disabled, control characters are always sent.
Simulation of formatting control characters is still performed if
requested by the control words of the RFCOC or SFCOC JSYS or if the
device does not have the required mechanical capability. The
translation typically results in some control characters being
indicated by graphics instead of being sent as is. For example,
disabling the translation of output characters is appropriate for some
display terminals when the program must send untranslated control
characters to control the display, but requires that the control
characters typed by the user be indicated in the usual way.
Bit 30 (TT%UOC) specifies that upper case terminal output is to be
indicated by 'X (single quote preceding character that is upper case)
on terminals that are not capable of lower case output.
Bit 31 (TT%LIC) specifies that lower case terminal input is to be
translated to upper case and that codes 175 and 176 are to be
converted to code 33.
Bits 32-33 (TT%DUM) define the three duplex modes presently available.
Full duplex (.TTFDX) requires the system to generate the appropriate
echo for each character typed in. Character half duplex (.TTHDX)
assumes the terminal will internally echo each character typed but
will require an additional echo for formatting characters such as
carriage return. Line half duplex (.TTLDX) is similar to character
half duplex but does not generate a line feed echo after a carriage
return.
Bit 34 (TT%PGM) specifies the output mode. In display mode, the user
can create a pause in the output while he reads material that would
otherwise quickly disappear off the screen. The output is stopped
with the CTRL/S character and started with the CTRL/Q character.
Also, output automatically stops whenever a page, as defined by
TT%LEN, has been output; output is resumed with CTRL/Q.
Bit 35 (TT%CAR) indicates the carrier state. If the line is a
dataset, this bit is on if the carrier is on. If the line is not a
dataset, this bit is undefined.
2.4.9.2 Control Character Output Control - Each terminal has two
control character output control (CCOC) words. Each word consists of
2-bit bytes, one byte for each of the control characters (ASCII codes
0-37). The bytes are interpreted as follows:
00: ignore (send nothing)
01: indicate by ^X (where X is the character)
10: send actual code
11: simulate format action
The specific byte for each character is given in the character set
table in Section 2.4.3.3. The CCOC words can be read and manipulated
with the RFCOC and SFCOC monitor calls.
2.4.9.3 Character Set - The following information describes each
character in the TOPS-20 character set that is pertinent to the
monitor calls in this group. The wakeup class (refer to TT%WAK in
Section 2.4.3.1) is abbreviated as follows:
F formatting control character
C non-formatting control character
P punctuation character
A alphanumeric character
Refer to Section 2.4.3.2 for the explanation of the control character
output control (CCOC) words.
ASCII Wakeup CCOC Character or Control Character
Code Class Word(bits)
0 C 1(B0,1) CTRL/@ null,break
1 C 1(B2,3) CTRL/A
2 C 1(B4,5) CTRL/B
3 C 1(B6,7) CTRL/C
4 C 1(B8,9) CTRL/D
5 C 1(B10,11) CTRL/E
6 C 1(B12,13) CTRL/F
7 C 1(B14,15) CTRL/G bell
10 F 1(B16,17) CTRL/H backspace
11 P 1(B18,19) CTRL/I horizontal tab
12 F 1(B20,21) CTRL/J line feed
13 C 1(B22,23) CTRL/K vertical tab
14 F 1(B24,25) CTRL/L form feed
15 F 1(B26,27) CTRL/M carriage return
16 C 1(B28,29) CTRL/N
17 C 1(B30,31) CTRL/O
20 C 1(B32,33) CTRL/P
21 C 1(B34,35) CTRL/Q
22 C 2(B0,1) CTRL/R
23 C 2(B2,3) CTRL/S
24 C 2(B4,5) CTRL/T
25 C 2(B6,7) CTRL/U
26 C 2(B8,9) CTRL/V
27 C 2(B10,11) CTRL/W
30 C 2(B12,13) CTRL/X
31 C 2(B14,15) CTRL/Y
32 C 2(B16,17) CTRL/Z
33 all 2(B18,19) escape (altmode)
34 C 2(B20,21) FS CTRL/backslash
35 C 2(B22,23) GS CTRL/right square bracket
36 C 2(B24,25) RS CTRL/uparrow
37 F 2(B26,27) US CTRL/backarrow
40 P space
41 P !
42 P "
43 P #
44 P $
45 P %
46 P &
47 P '
50 P (
51 P )
52 P *
53 P +
54 P ,
55 P -
56 P .
57 P /
60-71 A 0-9
72 P :
73 P ;
74 P <
75 P =
ASCII Wakeup CCOC Character or Control Character
Code Class Word(bits)
76 P >
77 P ?
100 P @
101-132 A upper case letters A-Z
133 P [
134 P \
135 P ]
136 P ^
137 P
140 P accent (grave)
141-172 A lower case letters a-z
173(1) P left brace
174(1) P vertical bar
175(1) P right brace
176(1) P tilde
177 all delete (rubout)
NOTE
ESC(33) and DELETE(177) are considered
to be in all wakeup classes.
1. If the terminal has B31(TT%LIC) on in the JFN mode word, codes 175
and 176 are converted to code 33 on input.
NOTE
The class-wakeup scheme is maintained
for compatibility with older programs.
New programs should use the .MOSBM
function of the MTOPR JSYS as it has
more resolution (it allows a 4-word
character mask to specify individual
wakeup characters) and causes less
overhead (low-level monitor I/O routines
are subjected to fewer wakeups). Both
SFMOD and .MOSBM set the same mask;
however SFMOD computes wakeup classes
from the mask while .MOSBM uses
character-oriented wakeups.
2.4.9.4 Terminal Characteristics Control - The various types of
terminals have different characteristics for output processing,
depending on their type and speed. The characteristics that can be
associated with terminals are:
1. mechanical form feed and tab
2. lower case
3. padding after carriage return
4. padding after line feed
5. padding after mechanical tab
6. padding after mechanical form feed
7. page width and length
Instead of setting each of these parameters for his line, the user can
specify a terminal type number, which causes the appropriate
parameters to be set. Refer to the STTYP monitor call. The defined
terminal types, along with their characteristics, are listed below.
Number Terminal Symbol Characteristics
0 TTY model 33 .TT33 no mechanical form feed or tab,
has upper case only,
no padding after carriage return
and line feed,
padding after tab and form feed,
page width 72, page length 66
1 TTY model 35 .TT35 has mechanical form feed and tab,
has upper case only,
no padding after carriage return
and line feed,
padding after tab and form feed,
page width 72, page length 66
2 TTY model 37 .TT37 no mechanical form feed or tab,
lower case,
no padding after carriage return
and line feed,
padding after tab and form feed,
page width 72, page length 66
3 TI/EXECUPORT .TTEXE no mechanical form feed or tab,
lower case,
padding after carriage return only
page width 80, page length 66
4-7 reserved for customer
10 Default .TTDEF no mechanical form feed or tab,
lower case,
full padding,
page width 72, page length 66
11 Ideal .TTIDL has mechanical form feed and tab,
lower case,
no padding,
no specified width and length
12 VT05 .TTV05 no mechanical form feed,
has mechanical tab,
has upper case only,
no padding after carriage return
and tab,
padding after line feed and form feed,
page width 72, page length 20
13 VT50 .TTV50 no mechanical form feed or tab,
has upper case only,
no padding,
page width 80, page length 12
14 LA30 .TTL30 no mechanical form feed or tab,
has upper case only,
full padding,
page width 80, page length 66
15 GT40 .TTG40 no mechanical form feed or tab,
lower case,
no padding,
page width 80, page length 30
Number Terminal Symbol Characteristics
16 LA36 .TTL36 no mechanical form feed or tab,
lower case,
no padding,
page width 132, page length 66
17 VT52 .TTV52 no mechanical form feed,
has mechanical tab,
lower case,
no padding,
page width 80, page length 24
20 VT100 .TT100 no mechanical form feed,
has mechanical tab,
lower case,
no padding,
page width 80, page length 24
21 LA38 .TTL38 no mechanical form feed,
has mechanical tab,
lower case,
no padding,
page width 132, page length 66
22 LA120 .TT100 has mechanical form feed and tab,
lower case,
no padding,
page width 132, page length 60
The STTYP monitor call sets the terminal type number for a line, and
the GTTYP monitor call obtains the terminal type number.
2.4.9.5 Terminal Linking - It is possible to link the output of any
line to up to four other lines. The refuse/accept link bit TT%ALK(bit
26) in the JFN mode word controls terminal linking. If the bit is off
for a particular terminal, users cannot link to that terminal.
Although this bit can be read with the RFMOD monitor call, the bit can
only be set with the TLINK call.
Refer to the TLINK monitor call for a description of terminal linking.
2.4.9.6 Terminal Advising - It is possible to receive advice from any
terminal line in the system. The refuse/accept advice bit TT%AAD (bit
27) in the JFN mode word controls terminal advising. If this bit is
off for a particular terminal, users cannot simulate typing on that
terminal via the STI monitor call. Although this bit can be read with
the RFMOD monitor call, it can only be set with the TLINK call.
Refer to the TLINK monitor call for a description of terminal
advising.
The following monitor calls are used when communicating with devices:
ASND Assigns a device
RELD Releases a device
SPOOL Defines and initializes input spooling
LPINI Loads VFU or translation RAM
DVCHR Returns device characteristics
GDSTS Returns the device status
SDSTS Sets the device status
GDSKC Returns disk usage
MSTR Performs structure-dependent functions
MTOPR Performs device-dependent functions
MTU% Performs functions for logical tape devices
(MT: devices)
STDEV Translates a string to a device designator
DEVST Translates a device designator to a string
GTTYP Returns terminal type number
STTYP Sets terminal type number
ATACH Attaches controlling terminal to a job
DTACH Detaches controlling terminal from a job
TLINK Controls terminal linking
RFMOD Returns the JFN mode word
SFMOD Sets program-related fields in the JFN mode word
STPAR Sets device-related fields in the JFN mode word
RFPOS Returns current position of the terminal
SFPOS Sets current position of the terminal
RFCOC Returns control character output control words
SFCOC Sets control character output control words
CFIBF Clears terminal's input buffer
CFOBF Clears terminal's output buffer
SIBE Skips if input buffer is empty
SOBE Skips if output buffer is empty
SOBF Skips if output buffer is full
DIBE Dismisses until terminal input buffer is empty
DOBE Dismisses until terminal output buffer is empty
2.5 SOFTWARE DATA MODES
I/O may be performed in one of several modes, depending on the device.
(The mode is specified with the OPENF call.) The range of possible I/O
modes is from 0 to 17 (octal). However, except for ARPANET devices
and less common hardware devices (such as paper-tape punches/readers)
the only meaningful modes are 0, 10, and 17.
The following discussion lists the major devices supported by TOPS-20
and the applicable I/O modes:
DEVICE MODE SYMBOL EXPLANATION
ATS No mode can be specified. This device
allows a single multiplexed JFN to service
multi-drop block mode terminals. Requires
DECnet and ATS software.
PCDP:
CDP: 0 .GSNRM Normal mode - allows unit-record output.
For card punches, this mode converts each
7-bit ASCII character to a 12-bit
card-column code (Hollerith code) and
outputs that code to the device.
10 .GSIMG Image mode - sends an "image" (rather than
converting to Hollerith) of each byte.
These are 12-bit bytes and are assumed to be
in Hollerith code. If the device is opened
with a byte size smaller than 12-bits, each
byte sent is zero-padded on the left to form
a 12-bit byte.
PCDR:
CDR: 0 .GSNRM Normal mode - allows unit-record input. For
card readers, this mode converts each 12-bit
card-column code (Hollerith code) to a 7-bit
ASCII character and returns the ASCII
character(s) to the program.
10 .GSIMG Image mode - returns an "image" (rather than
converting to ASCII) of the 12-bit card-code
for each character read. In order to
receive the full 12 bits, the program must
use 12-bit bytes.
Augmented image mode - this is a 16-bit
version of image mode. The leftmost 4 bits
are returned by the card reader controller.
The first bit indicates that the column has
a Hollerith error (and thus the card should
be rejected). The next 3 bits contain a
value ranging from 0 to 7. If the value is
from 1 to 7, it indicates that a punch
occurred in that row. If the value is 0, it
indicates that no punch occurred in columns
1 - 7. Effectively, a zero value indicates
that a non-ASCII character was punched.
This mechanism allows conversion to ASCII
using a table with only 256 entries as
opposed to a table with 4096 entries for
12-bit characters. This mode is available
on PCDR: devices only and is used by
specifying mode .GSIMG with a 16-bit
bytesize.
DCN: 0 .GSNRM Normal mode - allows byte I/O. This device
may be opened with 7, 8 or 36-bit bytes.
However, all transfers are actually done
with 8-bit bytes, and opening the device
with an 8-bit bytesize will give the
greatest efficiency. Requires DECnet
software.
DSK: 0 .GSNRM Normal mode - allows buffered byte, string,
and paged I/O in 1 to 36-bit bytes. By
definition, a DSK: device may be opened in
any I/O mode, however the effect is the same
as mode 0.
PLPT:
LPT: 0 .GSNRM Normal mode - allows buffered byte and
string output.
PTY: 0 .GSNRM Normal mode - for a PTY, the "mode" is
merely used to open the device. The PTY
will receive data according to the I/O mode
of the TTY associated with it.
MTA:
MT: 0 .GSNRM Normal mode - allows buffered byte and
string I/O. This is the most common I/O
mode.
17 .GSDMP Dump mode - this mode is unbuffered by
default (it can be set up for
double-buffering) and is usually used to
transfer blocks of data from tape to disk or
disk to tape. For tape, a dump-mode read
(performed by DUMPI JSYS) performs reads on
the basis of physical records. If less than
a physical record is read, the data is
transfered and an error is returned. A
subsequent DUMPI will position the tape at
the start of the next physical record.
NET: Allows buffered or non-buffered byte and
string ARPANET I/O in 8, 32, or 36-bit bytes
as follows:
0 Non-buffered send mode with wait. Waits for
state of connection to be other than
"request for connection sent" before the
OPENF returns. Data is transmitted on every
JSYS.
5 Buffered send mode with wait. Waits for
state of connection to be other than
"request for connection sent" before the
OPENF returns. Data is sent a buffer-load
(8000 bits) at a time. The concept of
buffering does not apply to input.
6 Non-buffered send mode with no wait. Waits
for state of connection to be other than
"request for connection sent" before the I/O
JSYS returns.
7 Buffered send mode with no wait. Waits for
state of connection to be other than
"request for connection sent" before the I/O
JSYS returns. Data is sent a buffer-load
(8000 bits) at a time. The concept of
buffering does not apply to input.
NUL: 0 .GSNRM Normal mode
10 .GSIMG Image mode
17 .GSDMP Dump mode
The NUL device is a pseudo device used to
"throw away" unwanted output from a program.
The device may be opened in any mode.
SRV: 0 .GSNRM Normal mode - allows byte I/O. This device
may be opened with 7, 8, or 36-bit bytes.
However, all transfers are actually done
with 8-bit bytes, and opening the device
with an 8-bit bytesize will give the
greatest efficiency. Requires DECnet
software.
TTY: 0 .GSNRM Normal mode - allows buffered byte and
string I/O. In this mode, format control
and simulation and translation of control
characters are performed by the monitor for
input (echo) and output. (These services
can be turned off by setting the appropriate
bit in the JFN mode word.) Using an 8-bit
bytesize in this mode implicitly changes the
mode to .GSIMG (see below).
10 .GSIMG Image mode - allows buffered byte and string
I/O, but disables format control and
simulation and translation of control
characters. On input, if the byte size is
8-bits, a parity bit (odd) is returned with
the character. The parity bit is on the
left of the 8-bit byte. On output,
attempting to send an 8-bit byte that has
incorrect parity may cause a device error.
However, most terminals will ignore a
user-supplied parity bit.
This mode can cause significant reduction in
system overhead for doing TTY output. The
reduction is small, however, for TTY input.
This is because the average process outputs
many more characters than it inputs (the
average ratio is approximately 20 characters
output for each character input).
2.6 SOFTWARE INTERRUPT SYSTEM
The monitor calls in this group are used for controlling the software
interrupt system. Note that if the program has an ERJMP or ERCAL
after a monitor call that normally causes an interrupt on failure, the
ERJMP or ERCAL overrides the interrupt. Refer to the TOPS-20 Monitor
Calls User's Guide for an overview and description of the software
interrupt system.
2.6.1 Software Interrupt Channels
Each interrupt is associated with one of 36 software interrupt
channels below. The user program can assign channels 0-5 and 23-35 to
various conditions, such as terminal interrupts, IPCF interrupts,
ENQ/DEQ interrupts, PTY conditions, and terminal buffers becoming
empty. The remaining channels are permanently assigned to certain
error conditions. Any channel may be used for program-initiated
interrupts (IIC call).
Channel Symbol Meaning
0-5 Assignable by user program
6 .ICAOV Arithmetic overflow (includes NODIV)
7 .ICFOV Arithmetic floating point overflow (includes
FXU)
8 Reserved for DEC
9 .ICPOV Pushdown list (PDL) overflow(1)
10 .ICEOF End of file condition
11 .ICDAE Data error file condition(1)
12 .ICQTA Disk full or quota exceeded when creating a
new page (1)
13-14 Reserved for DEC
15 .ICILI Illegal instruction(1)
16 .ICIRD Illegal memory read(1)
17 .ICIWR Illegal memory write(1)
18 Reserved for DEC
19 .ICIFT Inferior process termination or forced freeze
20 .ICMSE System resources exhausted(1)
21 Reserved for DEC
22 .ICNXP Reference to non-existent page
23-35 Assignable by user program
----------
1. These channels are panic channels and cannot be completely
deactivated. (Refer to Section 2.5.5.)
2.6.2 Software Interrupt Priority Levels
Each channel is assigned to one of three priority levels. The
priority levels are numerically referenced as level 1, 2, or 3 with
level 1 being the highest level interrupt. Level 0 is not a legal
priority level. If an interrupt request occurs in a process where the
level associated with the channel is 0, the system considers the
process not prepared to handle the interrupt. The process is then
frozen or terminated according to the setting of SC%FRZ (bit 17) in
its capabilities word. (Refer to Section 2.6.1.)
2.6.3 Software Interrupt Tables
Before using the software interrupt system, a process must set up the
following two tables and declare their addresses with the SIR call.
LEVTAB
A 3-word table, indexed by priority level minus 1. The left half
of each word is not used. The right half of each word contains
the address in the process' address space in which to store the
PC at the time of the interrupt and flags for the associated
priority level.
CHNTAB
A 36-word table, indexed by channel number. The left half of
each word contains the priority level (1, 2, or 3) for that
channel. The right half contains the address of the interrupt
routine that will handle interrupts on that channel.
2.6.4 Terminating Conditions
If an interrupt is received on a channel which is activated, but the
interrupt cannot be initiated because
1. the interrupt system for the process is not enabled (EIR
JSYS) and the channel on which the interrupt occurred is a
panic channel,
2. the table addresses have not been defined (SIR call),
3. no priority level has been assigned to the channel (i.e.,
left half of channel's word in CHNTAB is 0), or
4. the channel has been "reserved" by the superior process
(refer to the SIRCM call description),
then the interrupt is considered a process termination condition. In
this case the process that was to have received the interrupt is
halted or frozen according to the setting of SC%FRZ (bit 17) in its
capabilities word, and a process termination interrupt is sent to its
superior. The superior process can then execute the RFSTS call to
determine the status of the inferior process.
2.6.5 Panic Channels
Panic channels (refer to Section 2.5.1) cannot be completely
deactivated by disabling the channel or the entire interrupt system.
A software interrupt received on a panic channel that has been
deactivated will be considered a process terminating condition.
However, panic channels will respond normally to the channel on/off
and read channel mask monitor calls.
2.6.6 Terminal Interrupts
There are 36 (decimal) codes used to specify terminal characters or
conditions on which interrupts can be initiated. A process can assign
a character or condition to any one of the program-assignable
interrupt channels with the ATI call. Once the particular code is
assigned to a channel and the channel is activated (via AIC),
occurrence of the character or condition corresponding to the code
causes an interrupt to be generated. The terminal codes, along with
their associated conditions, are shown in the table below.
Terminal Symbol Character or Condition
Code
0 .TICBK CTRL/@ or break
1 .TICCA CTRL/A
2 .TICCB CTRL/B
3 .TICCC CTRL/C
4 .TICCD CTRL/D
5 .TICCE CTRL/E
6 .TICCF CTRL/F
7 .TICCG CTRL/G
8 .TICCH CTRL/H
9 .TICCI CTRL/I (tab)
10 .TICCJ CTRL/J (line feed)
11 .TICCK CTRL/K (vertical tab)
12 .TICCL CTRL/L (form feed)
13 .TICCM CTRL/M (carriage return)
14 .TICCN CTRL/N
15 .TICCO CTRL/O
16 .TICCP CTRL/P
17 .TICCQ CTRL/Q
18 .TICCR CTRL/R
19 .TICCS CTRL/S
20 .TICCT CTRL/T
21 .TICCU CTRL/U
22 .TICCV CTRL/V
23 .TICCW CTRL/W
24 .TICCX CTRL/X
25 .TICCY CTRL/Y
26 .TICCZ CTRL/Z
27 .TICES escape (altmode)
28 .TICRB delete (rubout)
29 .TICSP space
30 .TICRF dataset carrier off
31 .TICTI typein
32 .TICTO typeout
33-35 reserved for DEC
The terminal code .TICRF (30) is used to generate an interrupt when
the dataset carrier state changes from on to off. Although any
process can enable for this interrupt, only the top-level process in
the job is guaranteed to receive it when the carrier state changes.
If other processes enable for the interrupt, they can receive the
interrupt either when the carrier state changes to off or later when
the job is reattached after the detach caused by the carrier-off
condition. In general, the occurrence of the change in the dataset
carrier state is usable only by the top-level process.
The terminal codes .TICTI (31) and .TICTO (32) are used to generate
interrupts on receipt of any character instead of a specific
character. The .TICTI code generates an interrupt when the terminal's
input buffer becomes nonempty (i.e., when a character is typed and the
buffer was empty before the input of the character). The .TICTO code
generates an interrupt when the terminal's output buffer becomes
nonempty. Note that neither one of these codes generates an interrupt
if the buffer is not empty when the character is placed into it. The
SIBE and SOBE calls can be used to determine if the buffers are empty.
The frozen or unfrozen state (refer to Section 2.6.2.1) of a process
determines if the interrupt is initiated immediately. Terminal
interrupts are effectively deactivated when a process is frozen, even
though the interrupts are indicated in the process' terminal interrupt
word (obtained with the RTIW JSYS). When the process is unfrozen, the
terminal interrupts are automatically reactivated.
When an operation is completed that explicitly changes the terminal
interrupt word for the job (e.g., a process freeze or unfreeze
operation), the interrupt word for the job (and for the terminal line
if the job is attached) is set to the inclusive OR (IOR) of all the
unfrozen processes in the job. When an interrupt character is
received, frozen processes are not considered when searching for a
process to interrupt.
The user cannot directly access the actual terminal interrupt word.
However, by specifying a process identifier of -5 as an argument to
the RTIW or STIW JSYS's, he can read or change the terminal interrupt
enable mask. The function of this mask is to allow processes to turn
off interrupt codes activated by superior processes. Normally, the
mask is -1, thereby enabling all terminal interrupts to be activated.
A zero in any position of the mask prevents the corresponding terminal
interrupt from being active. However, the fact that a code has been
activated will be remembered, and the code will be activated when the
mask is changed with a one in the corresponding position. Note that
the process must have SC%CTC enabled in its capabilities word (refer
to Section 2.6.1) to activate the terminal code for CTRL/C interrupts.
The SCTTY monitor call can be used to change the source of terminal
interrupts for a process. Note that the process must have SC%SCT
enabled in its capabilities word (refer to Section 2.6.1) to change
the source of terminal interrupts.
2.6.6.1 Terminal Interrupt Modes - TOPS-20 handles the receipt of a
terminal interrupt character in either immediate mode or deferred
mode. An interrupt character handled in immediate mode causes the
initiation of a software interrupt immediately upon its receipt by the
system (i.e., as soon as the user types it). An interrupt character
handled in deferred mode is placed in the input stream and initiates a
software interrupt only when the program attempts to read it from the
input buffer. In either case, the character is not passed to the
program. If two occurrences of the same deferred interrupt character
are received without any intervening character, the interrupt has an
immediate effect. To detect this situation, the system maintains a
separate one-character buffer in case the input buffer is otherwise
full. The system assumes that interrupts are to be handled
immediately unless the process has declared them deferred with the
STIW monitor call.
The purpose of deferred mode is to allow interrupt actions to occur in
sequence with other actions in the input stream. However, with
multiple processes, the deferred interrupt occurs when any process of
the job reads the interrupt character. If this process is the one
enabled for the interrupt, it will be interrupted before any more
characters are passed to the program. If the process to be
interrupted is the top process, then the interrupt occurs before more
characters are passed to the program, unless another process is also
reading from the same source (usually an abnormal condition). If
neither of the above situations applies, then the process doing
terminal input continues to run and may receive several characters
before the interrupt can take effect. This is unavoidable since the
process doing input and the process to be interrupted are logically
running in parallel.
2.6.7 Dismissing An Interrupt
Once the processing of an interrupt is complete, the user's interrupt
routine returns control to the interrupted process via the DEBRK call.
When the DEBRK call is executed, the monitor examines the contents of
the return PC word to determine where to resume the process. If the
PC word has not been changed, the process is restored to its state
prior to the interrupt. For example, if the process was dismissed
waiting for I/O to complete, it is restored to that state after
execution of the DEBRK call. If the PC word has been changed, the
process resumes execution at the new PC location.
The process can determine if an interrupt occurred during the
execution of monitor code or user code by examining the user/exec mode
bit (bit 5) of the return PC word. If the bit is on, the process was
executing user code; if the bit is off, the process was executing
monitor code (i.e., a JSYS). If the interrupt routine changes the
return PC during the processing of an interrupt, the user-mode bit of
the new PC word must be on. Note that the process may be executing
monitor code but that the address portion of the PC is referencing a
location in user code. To return to that user code location (i.e., to
interrupt the execution of a monitor call), the process must turn on
the user-mode bit.
The monitor calls for controlling the software interrupt system are:
SIR Sets the interrupt table addresses
RIR Reads the interrupt table addresses
EIR Enables the interrupt system
DIR Disables the interrupt system
CIS Clears the interrupt system
SKPIR Skips if the interrupt system is enabled
AIC Activates interrupt channels
IIC Initiates interrupts on specific channels in a process
DIC Deactivates interrupt channels
RCM Reads activated channel word mask
RWM Reads waiting channel word mask
SIRCM Sets inferior reserved channel mask
RIRCM Reads inferior reserved channel mask
DEBRK Dismisses current interrupt
ATI Assigns terminal code to channel
DTI Deassigns terminal code
STIW Sets terminal interrupt word
RTIW Reads terminal interrupt word
GTRPW Returns trap words
SCTTY Changes source of terminal interrupts
2.7 PROCESS CAPABILITIES
The TOPS-20 system allows capabilities, such as the ability to examine
the monitor and to enable for CTRL/C interrupts, to be given to
certain processes. Each capability is separately protected and
activated. The capabilities are assigned on a per-process basis, and
their status is kept in the process' PSB. The number of capabilities
is limited to 36, and two words are used to store the status. For
each capability, there is a bit in the first word which is set if the
capability is available to the process. If the corresponding bit in
the other word is also set, the capability is currently enabled. This
allows the user to protect himself against accidental use without
actually giving up the capability.
Inferior processes are created by superior processes (via the CFORK
monitor call) with either no special capabilities or the capabilities
of the creating process. Most capabilities relate to system functions
and may be passed from superior to inferior process only if the
superior itself has the capability. Some capabilities relate the
inferior to the superior process and may be given to an inferior
whether or not available in the superior.
2.7.1 Assigned Capabilities
Bit Symbol Meaning
B0-8 Job Capabilities
0 SC%CTC Process can enable for CTRL/C software interrupts.
1 SC%GTB Process can examine monitor tables with the GETAB call.
2 SC%MMN Process can map the running monitor.
3 SC%LOG Process can execute protected log functions.
4 SC%MPP Process can map privileged pages of files.
5 SC%SDV Process can use special devices.
6 SC%SCT Process can change source of terminal interrupts for
other processes.
B9-17 Capabilities that can be given to an inferior
whether or not the superior itself has them. Of these,
SC%FRZ (B17) cannot be changed by a process for itself.
9 SC%SUP Process can manipulate its superior process.
17 SC%FRZ Unprocessed software interrupts can cause the process to
be frozen instead of terminated.
B18-35 User capabilities
18 SC%WHL User has wheel privileges.
19 SC%OPR User has operator privileges.
20 SC%CNF User has confidential information access.
21 SC%MNT User has maintenance privileges.
Bit Symbol Meaning
22 SC%IPC User has IPCF privileges.
23 SC%ENQ User has ENQ/DEQ privileges.
24 SC%NWZ User has ARPANET wizard privileges.
25 SC%NAS User has absolute ARPANET socket privileges.
The capabilities are originally established when the directory is
created. (Refer to CRDIR monitor call.)
The capability word can be read with the RPCAP monitor call.
Capabilities can be enabled with the EPCAP monitor call.
2.7.2 Access Control
It is often necessary for an installation to have further control over
system resources than that offered by the process capability word.
The following JSYS's allow each installation to write its own
access-control program:
1. GETOK%
2. GIVOK%
3. RCVOK%
4. SMON
5. TMON
The access control facility works as follows:
1. The installation writes its own access-control program. This
program uses the SMON JSYS (privileged) to (1) enable or
disable access checking for a variety of system resources and
(2) allow or disallow access by default for those resources
that are not explicitly checked by the access-control
program.
2. The access-control program is started by TOPS-20 at
system-startup time. After the program has initialized
itself, it issues an RCVOK% JSYS (privileged). As the
request queue will be empty at system-startup time, the
RCVOK% JSYS causes the access-approval program to go into a
sleep state.
3. A user program or a monitor operation issues a GETOK% JSYS,
causing an access request block to be appended to the GETOK%
request queue (maintained by the monitor). The user program
or monitor operation blocks.
4. The monitor wakes up the access-control program and the
blocked RCVOK% JSYS completes execution, retrieving the
access request block from the GETOK% request queue. This
block contains information supplied by the user, plus certain
job parameters.
5. The access-control program determines whether to allow or
deny the request and issues the GIVOK% JSYS (privileged) with
the appropriate response for this request. The
access-control program now issues another RCVOK% JSYS, which
blocks or completes, depending on whether or not any
additional requests are in the queue.
6. The user program or monitor operation unblocks and gets a
normal return from the original GETOK% JSYS if the request
has been granted, or receives an error return if the request
has been denied.
Note that internal JSYS's performed by the access-control program or
job 0 will not invoke access control.
Also, note that after a system has been brought up, the first fork to
execute an RCVOK% JSYS defines itself as the access-control fork. Any
other fork that subsequently tries to issue an RCVOK% JSYS, A GIVOK%
JSYS, or an SMON JSYS with function .SFSOK will receive an error.
Thus it is important that only the access-control fork be allowed to
execute the first RCVOK% JSYS after system startup.
If the access-job fails, the system reverts to whatever default
protection has been specified. Failure of the access-control program
does not open up a "security hole".
2.7.3 Processes And Scheduling
These monitor calls deal with establishing and interrogating the
process structure of a job. Refer to the TOPS-20 Monitor Calls User's
Guide for an overview and description of the process structure.
2.7.4.1 Process Freezing - A superior process can cause one or all of
its inferior processes to be frozen. A frozen process is one whose
execution is suspended (as soon as it is stoppable from the system's
point of view) in such a way that it can be continued at the point it
was suspended. A process can be frozen directly or indirectly. A
process is directly frozen when its superior makes an explicit request
to freeze it. A process is indirectly frozen when its superior is
frozen. When a process is directly frozen, all of its inferior
processes are indirectly frozen. Therefore, a process can be both
directly frozen by its superior process and indirectly frozen if its
superior process is subsequently frozen.
The explicit unfreezing of a process clears both its direct freeze and
the indirect freeze on all its inferior processes unless an inferior
process has a direct freeze. The indirect unfreezing of a process
clears only the freeze on that process. This means that an explicit
freeze of a process prevents the running of any of its inferior
processes, and an explicit unfreezing of a process automatically
resumes its inferiors.
The FFORK and RFORK monitor calls are used to freeze and unfreeze
processes, respectively. An argument of -4 to these calls directly
freezes or resumes all immediately inferior processes, and any
processes below the immediately inferior ones are indirectly frozen or
resumed. (The freeze and unfreeze operations are never legal on any
process that is not inferior to the one executing the monitor call.)
The frozen or unfrozen state of a process can only be changed
directly. Thus, monitor calls like SFORK and HFORK change other
states of a process but do not affect the frozen state. If the
process is frozen and a call is executed that changes one of its
states, the process remains frozen and does not begin operating in the
changed state until it is resumed. For example, a program can change
a frozen process' PC with the SFORK call, but the process will not
begin running at the new PC until it is unfrozen. Similarly, the
HFORK call can be executed on a frozen process, but the process will
not be in the halted state until it is unfrozen. The changed status
is always reflected in the information returned by the RFSTS call. In
the first example above, RFSTS would return the changed PC, and in the
second, it would return the halted code in the status word.
The monitor calls associated with capabilities and processes are:
RPCAP Returns process capabilities word
EPCAP Enables process capabilities word
RESET Resets and initializes current process
CFORK Creates inferior process
SFORK Starts process
HFORK Halts an inferior process
HALTF Halts a process
DISMS Dismisses process for specified amount of time
WAIT Dismisses process until interrupt occurs
WFORK Waits for process to terminate
KFORK Kills one or more processes
FFORK Freezes one or more processes
RFORK Resumes one or more processes
TFORK Sets and removes monitor call intercepts
RTFRK Returns the handle of the process suspended
because of a monitor call intercept
UTFRK Resumes a process suspended because of a
monitor call intercept
RFSTS Returns process' status
SFACS Sets process' accumulators
RFACS Returns process' accumulators
PRARG Sets or returns process argument block
RFRKH Releases process handles
GFRKS Gets current process structure
GFRKH Gets process handle
SPLFK Splices a process structure
RMAP Obtains a handle on a page in a process
SPACS Sets accessibility of page
RPACS Returns accessibility of page
RWSET Releases working set
ADBRK Controls address breaks
2.7.4.2 Execute-Only Files and Execute-Only Processes - Before we
discuss this topic, consider the following definitions:
1. A "virgin" process is one that has just been created (using
CFORK) but no operations which change its context or map into
the process have been performed on the process.
2. The "context" of the process includes its address space, PC,
AC's, interrupt system, traps, etc.
3. An execute-only process can be started only at its entry
vector.
4. A process which is created by an execute-only process with
the same address space (using CFORK) becomes execute-only
itself.
The basic definition of an execute-only file is one that cannot be
copied, read, or manipulated in the usual manner, but can be run as a
program. An execute-only file has the following charactersitics:
1. The file must be protected with EXECUTE access allowed but
with READ access not allowed.
2. The file cannot be read or written using any of the
file-oriented monitor calls (SIN, SOUT, BIN, BOUT, PMAP,
etc.).
3. The file can be mapped into a process (using GET), but only
in its entirety and only into a virgin process. A process so
created will be called an execute-only process.
4. Only disk-resident files can be considered execute-only.
5. A process with WHEEL or OPERATOR capabilities enabled can
gain READ access to any file and can thus circumvent the
execute-only features of an execute-only file.
An execute-only process has the following characteristics:
1. No other process can read anything from an execute-only
process' address space or accumulators.
2. No other process can change any part of an execute-only
process' context in such a way as to cause the execute-only
process to unintentionally reveal any part of its address
space.
3. An execute-only process will not be prevented from mapping
pages of its own address space into an inferior process. It
is the programmer's responsibility to avoid revealing an
execute-only process through its inferior forks.
4. No JSYS will explicitly indicate that a given process is
execute-only. However, the RFACS JSYS will always fail for
an execute-only process and can be used to determine this
information, if it is required.
A program will be execute-only for particular users based on its file
protection. If a user tries to RUN a file and can't READ it, but does
have EXECUTE access, a process will be created as usual. The file
will be mapped into this virgin process, circumventing the READ
protection on the file. This process will then be an execute-only
process.
Users may select a file to be execute-only by allowing EXECUTE but not
READ access to the file. This can be done by setting the protection
field for the desired class of users (owner, group, or world) to
FP%EX+FP%DIR, or 12 octal. For example, to make a file execute-only
for everybody except the owner of the file, set the protection to
771212 octal. This can be done with the SET FILE PROTECTION command
or by applying the ;P attribute to the file specification in the SAVE
or CSAVE command.
The following TOPS-20 commands will not work for execute-only
programs:
1. DEPOSIT
2. DDT
3. EXAMINE
4. INFORMATION (ABOUT) VERSION
5. MERGE
6. SET ADDRESS-BREAK
7. SET ENTRY-VECTOR
8. SET NO UUO-SIMULATION
9. SET PAGE-ACCESS
The CONTINUE command will not work after an execute-only process has
halted. The START command cannot be used with a start address
argument for an execute-only process. A program which is execute-only
must be written to protect itself. The program should not map itself
out to inferior processes. The program should not do a GET and
execute programs in its address space for which it has no control.
2.8 SAVE FILES
TOPS-20 handles two formats of save files: nonsharable and sharable.
A nonsharable save file contains sequences of words, whereas a
sharable save file contains sequences of pages. The formats of the
two types of save files are discussed below.
2.8.1 Format For Nonsharable Save Files
The format of a nonsharable save file is as follows:
IOWD length, address of data
IOWD length, address of data
XWD length of entry vector, pointer to first word of
entry vector
2.8.2 Format Of Sharable Save Files
A sharable save file is divided into two main parts: one part
contains information about the structure of the file, and the second
part contains the data of the file. Currently, page 0 of the save
file contains the information about the structure, and pages 1 through
n contain the data. (Future releases of TOPS-20 may use more than one
page for the structure).
Page 0 of the save file has three distinct sections: the directory
section, the entry vector section, and the terminating section. Each
of the three sections begins with a word containing its identifier
code in the left half and its length in the right half. Each section
is described in the paragraphs below.
The directory section is the first of the three sections and describes
groups of contiguous pages that have identical access. The format of
the directory section is as follows:
0 8 9 17 18 35
!=======================================================!
! Identifier code ! Number of words !
! 1776 ! (including this word) !
! ! in directory section !
!=======================================================!
! Access ! Page number in file, or 0 if group !
! bits ! of pages is all zero !
!=======================================================!
! Repeat ! Page number in the process !
! count ! !
!=======================================================!
/ word pairs to describe each group of pages /
/ in the process address space /
!=======================================================!
! Access bits ! Page number in the file !
!=======================================================!
! Repeat count ! Page number in the process !
!=======================================================!
The access bits are determined from the access bits specified by the
user on the SSAVE monitor call (refer to the SSAVE call for details).
The bits currently defined in the directory section are:
B1 The process page is sharable
B2 The process page is writable
The remaining access bits in the directory section are zero.
The repeat count is the number (minus 1) of consecutive pages in the
group described by the word pair. Pages are considered to be in a
group when the following three conditions are met:
1. The pages are contiguous.
2. The pages have the same access.
3. The pages either are all zero or are all existent and
readable.
A page is considered to be all zero if it is nonexistent or is not
readable. A page containing all zeros is considered to be existent.
A group of all zero pages is indicated by a file page number of 0.
The word pairs are repeated for each group of pages in the address
space.
The entry vector section follows the directory section and points to
the entry vector word that is used when the GET monitor call is
executed. The format of the entry vector section is as follows:
0 17 18 35
!=======================================================!
! Identifier code ! Number of words !
! 1775 ! (including this word) !
! ! in entry vector section !
!=======================================================!
! Number of words in entry vector !
!=======================================================!
! Address of entry vector !
!=======================================================!
The data for this section is obtained from the entry vector word.
(Refer to Section 2.7.3 for a description of the entry vector.)
The terminating section, called the end section, follows the entry
vector section. Its format is as follows:
!=======================================================!
! Identifier code ! !
! 1777 ! 1 !
!=======================================================!
The remaining words in page 0 of the save file are filled with zeros
and are ignored by the monitor.
2.8.3 Entry Vector
The entry vector is a block of data that describes entry conditions to
be used when the program in the process is executed. The first word
of the entry vector contains the program start address, the second
word contains the program reenter address, and the third word contains
the program version number. (The version number format is: B0-B2
containing the group who last modified the program, B3-B11 containing
major version number, B12-B17 containing minor version number, and
B18-B35 containing edit number.) Subsequent words in the entry vector
can contain data applicable to the particular entry (refer to the
GCVEC and GDVEC monitor calls).
Each process has an entry vector word in its process storage block.
The format of the entry vector word is:
LH: length of the entry vector (1-777)
RH: address of the first word of the entry vector.
The data for this word is obtained from the entry vector in the save
file when a GET monitor call is executed for the file.
Note that if the left half of the entry vector (usually the length) is
254000 (octal), then there is no real entry vector. The program start
address is in the right half of location 120, the reenter address is
in the right half of location 124, and the program version is in
location 137.
The following monitor calls are used in conjunction with save files:
GET Obtains a saved file
SAVE Saves a process as nonsharable
SSAVE Saves a process as sharable
SEVEC Sets process entry vector
GEVEC Gets process entry vector
SFRKV Starts process using its entry vector
SCVEC Sets compatibility package entry vector
GCVEC Gets compatibility package entry vector
SDVEC Sets RMS entry vector
GDVEC Gets RMS entry vector
2.9 INPUT/OUTPUT CONVERSION
The monitor calls in this group perform input/output conversion.
Calls are available to convert in both directions between ASCII text
(in core or in a file) and integer numbers, floating point numbers,
and TOPS-20 internal dates and times.
2.9.1 Floating Output Format Control
2.9.1.1 Free Format - The most common format control used with the
FLOUT JSYS is free format. This is specified by setting B18-23
(FL%FST) of the format control word to 0. (Refer to Section 2.8.1.2.)
Normally, the entire format control word is set to 0; however,
certain fields may be specified to force a particular output.
Most numbers greater than or equal to 10^-4 but less than 10^6 (with
some exceptions) are output in a typical FORTRAN F format. If the
number is an exact integer, it is output with no terminating decimal
point unless B6(FL%PNT) is on. If the number is a fraction, it is
output as .xxxx with no leading O's. Nonsignificant trailing zeros in
the fraction are never output. A maximum of seven digits will be
output if the second field (FL%SND) is not specified. The sign of the
number is output only if negative.
If the number is outside the range above, it is output in a typical
FORTRAN E format (with some exceptions). The exponent is output as
Esxx, where s is the sign output only on negative exponents and xx are
the digits of the exponent. The above exceptions about outputting the
decimal point and suppressing trailing, nonsignificant zeros apply.
Another free format similar to that above is invoked by specifying a
nonzero value for B13-17 (FL%RND) of the format control word. The
value in this field specifies the place at which rounding should
occur. If this value is 7, the output is the same as if the value
were 0 as above. If this value is less than 7, rounding occurs at the
specified place, but the output will be as above with a maximum of 7
digits (e.g., 12360 with a rounding specification of 3 will output as
12400). If this value is greater than 7, rounding occurs at the
specified position, but more than 7 digits are output. In this case,
digits are output until either the rounding specification number is
reached or until trailing, nonsignificant zeros are reached.
2.9.1.2 General Format Control - The format control word specifies
the format for floating point output when free format is not desired.
The control word indicates the desired output for the three fields of
the number, plus additional control for items such as rounding. The
first field of the number is up to the decimal point. The second
field is from the decimal point to the exponent. The third field is
the exponent.
The format control word is as follows:
Bit Symbol Meaning
0-1 FL%SGN Sign control for first field. The first character
position is always used for the minus for negative
numbers. For positive numbers, the first
character position is defined according to the
values below:
Value Symbol Meaning
0 .FLDIG First character is digit.
1 .FLSPC First character is space.
2 .FLPLS First character is plus sign.
3 .FLSPA First character is space.
2-3 FL%JUS Justification control for first field.
Value Symbol Meaning
0 .FLLSP Right justify number using
leading spaces.
1 .FLLZR Right justify number using
leading 0's.
2 .FLLAS Right justify number using
leading asterisks.
3 .FLTSP Left justify number up to
decimal point using trailing
spaces after third field.
4 FL%ONE Output at least one digit (0 if necessary) in
first field.
5 FL%DOL Prefix the number with a dollar sign ($).
6 FL%PNT Output a decimal point.
7-8 FL%EXP Third (exponent) field control.
Value Symbol Meaning
0 .FLEXN No exponent field.
1 .FLEXE Output E as first character of
exponent field.
2 .FLEXD Output D as first character of
exponent field.
3 .FLEXM Output *10^ as first characters
of exponent field.
Bit Symbol Meaning
9-10 FL%ESG Exponent sign control. The first character
position is always used for the minus for negative
exponents. For positive exponents, the first
character position is defined according to the
values below:
Value Symbol Meaning
0 .FLDGE First character after exponent
prefix is digit.
1 .FLPLE First character after prefix is
plus sign.
2 .FLSPE First character after prefix is
space.
3 .FLDGT First character after exponent
prefix is digit.
11 FL%OVL Use free format on overflow of the first field and
expand exponent on overflow of the third field.
If this bit is not set, no additional output
occurs on column overflow.
13-17 FL%RND Digit position at which rounding will occur. If
field is 0, rounding occurs at the 12th digit. If
field is 37, no rounding occurs.
18-23 FL%FST Number of characters in first field (refer to
FL%JUS).
24-29 FL%SND Number of characters in second field.
30-35 FL%THD Number of characters in third field.
As an example, to output a number in the format xx.yy, the following
bits should be set in AC3 of the FLOUT monitor call.
B4(FL%ONE) output at least one digit in the first field
B6(FL%PNT) output a decimal point
B13-B17(FL%RND) do not round the number
B22 output a maximum of two digits in the first field
B28 output a maximum of two digits in the second field
Examples of numbers output in this format are:
43.86 4.24 0.43
2.9.2 Date And Time Conversion Monitor Calls
TOPS-20 internal date and time is maintained in a 36-bit word and is
based on Greenwich Mean Time. The date is in the left half and is the
number of days since November 17, 1858; the time is in the right half
and is represented as a fraction of a day. This allows the 36-bit
value to be in units of days with a binary point between the left and
right halves. The resolution is approximately one-third of a second;
that is, the least significant bit represents approximately one-third
of a second. The date changes at the transition from 11:59:59 PM to
12:00:00 midnight.
For conversions between local and internal date and time, the time
zone in which the installation is located is normally used, with
daylight saving applied from 4AM on the next to last Sunday in April
to 3:59:59AM on the next to last Sunday in October.
Two monitor calls in this group, IDTIM and ODTIM, convert date and
time between text strings (in core or in a file) and internal format.
These should satisfy most users. However, there are four more calls,
which are subsets of IDTIM and ODTIM. The calls ODTNC, IDTNC, ODCNV,
and IDCNV make available separately the conversion between internal
format date and time and separate numbers for local year, month, and
day, and the conversion between those numbers and text strings. They
also provide additional options, which give the caller more control
over the conversion performed than IDTIM and ODTIM.
Time zones occur in the calling sequences of the latter four JSYS's.
A time zone is represented internally as a number between -12 and 12
decimal, representing the number of hours west of Greenwich. For
example, EST is zone 5. Zones -12 and 12 represent the same time but
different days because the zones are on opposite sides of the
international date line.
The following are examples of valid dates and times:
6-FEB-76
FEB-6-76
FEB 6 76
FEB 6, 1976
6 FEB 76
6/2/1976
2/6/76
Below are examples of valid times:
1:12:13
1234
16:30 (4:30PM)
1630
1234:56
1:56AM
1:56-EST
1200NOON
12:00:00AM (midnight)
11:59:59AM-EST (late morning)
12:00:01AM (early morning)
"AM" or "PM" can follow a time specification that is not greater than
12:59:59. "NOON" or "MIDNIGHT" can follow 12:00:00. Any time
specification can be followed by a dash and a time zone. The time
zones are: EST and EDT (Eastern), CST and CDT (Central), MST and MDT
(Mountain), PST and PDT (Pacific), AST and ADT (Atlantic), YST and YDT
(Yukon), HST and HDT (Hawaii), BST and BDT (Bering), GMT, GST, and GDT
(Greenwich), DAYLIGHT (local daylight savings), STD or STANDARD (local
standard).
All strings (e.g., months, time zones, AM-PM-NOON-MIDNIGHT) can be
represented by any non-ambiguous abbreviation (e.g., D=DECEMBER,
M=MIDNIGHT).
Spaces are ignored before and between fields whenever they do not
terminate the input string. This means spaces are not allowed before
colons, AM,PM,NOON, and MIDNIGHT, the dash before the time zone, or
the time zone. A tab is also allowed between the date and time.
The input string can be terminated by any non-alphanumeric character.
Monitor calls relating to date and time are as follows:
NIN Inputs integer number
NOUT Outputs integer number
FLIN Inputs floating-point number
FLOUT Outputs floating-point number
DFIN Inputs double-precision, floating-point number
DFOUT Outputs double-precision, floating-point number
IDTIM Inputs date and time, converting to internal format
ODTIM Outputs date and time, converting from internal format
to text
IDTNC Inputs date and time without converting to internal
format
ODTNC Outputs date and time in internal format
IDCNV Converts from day, month, year to internal date and
time
ODCNV Converts from internal date and time to day, month,
year
GTAD Gets current date and time in internal format
2.10 ARCHIVE/VIRTUAL DISK SYSTEM
Before we discuss the archive/virtual disk system, consider the
following terms:
Virtual disk A storage technique in which the contents of
some files reside on disk, while the contents
of other files may reside on tape. When a
file is "migrated" to tape, a copy of its FDB
is left on disk and the file's contents are
deleted from disk. Note that the term
"migration" applies only to files transferred
to tape by the virtual disk system.
Archived file A file of unchanging data stored on magnetic
tape. Although copies of the file may exist
on disk, the original is stored on magnetic
tape. When a file gains archive status, it
can no longer be changed. Copies of an
archived file cannot be changed either. If a
writeable copy is desired, the COPY command
must be used.
When a file is archived, the file contents
are usually deleted from disk, leaving only
the FDB on disk. However, it is possible to
override the deletion process.
Offline/online A file is said to be offline if the file has
been moved to tape by either the virtual disk
system or the archive system. A file is said
to be online if the original or a copy of it
is on disk. A file may be offline, online,
or both. A file that is offline and not
online will have only its FDB stored on disk.
In the last case, the FDB will contain
pointers to the saveset and tape file number.
This provides a link between the FDB on disk
and the file on tape.
Invisible/visible An invisible file is one that does not appear
in a simple DIRECTORY listing, and is not
accessable to programs and EXEC commands. A
visible file appears in a DIRECTORY listing
and is accessable to programs and EXEC
commands.
The concept of an invisible file is primarily
designed to make offline-only files
transparent to the user. However, the
invisible/visible status of a file may be
changed regardless of whether the file is
online, offline, archived, not archived,
migrated, or not migrated.
The virtual disk system is designed to conserve disk space by moving
selected files from disk to tape. Files are marked for migration to
tape by the REAPER program. At the option of the system
administrator, REAPER may mark files in any of the following three
categories:
1. Files that have not been referenced within a specified period
of time.
2. Online copies of migrated or archived files that have not
been referenced within a specified period of time.
3. Files in a directory that is over permanent disk quota. If
the directory contains a file named MIGRATION.ORDER, then
REAPER uses that file as an order list for marking files.
Otherwise REAPER follows the order given in the REAPER
command list. Two REAPER passes are made with the first pass
using the order specified in MIGRATION.ORDER or the REAPER
command string. If the first pass fails to bring the
directory under quota, the second pass will consider any file
in the directory for migration.
The actual migration of disk files to tape is performed by a special
DUMPER run. The actual run will occur periodically, with the length
of the period determined by the system administrator.
File archiving is designed to write unalterable "permanent" copies of
disk files on tape. The user voluntarily marks a file for archiving,
and the next archive/virtual disk DUMPER run will archive the file.
For added security two tape copies of each archived or migrated file
are made.
The following JSYS's are used to implement the archive/virtual disk
system:
ARCF
CRDIR
DELDF
DELFN
GTJFN
GNJFN
JFNS
OPENF
RFTAD
SETJB
SFTAD
SMON
TMON
2.11 PRIVILEGED MONITOR CALLS
The following monitor calls are privileged and require the process to
have WHEEL or OPERATOR capability enabled:
ALLOC Allocates a device to a particular job
BOOT Performs functions required for loading
front-end software
CRDIR Creates or modifies a directory
GTDIR Returns directory information
DSKOP Allows hardware address specification of disk transfers
DIAG Reserves and releases hardware channels
DSKAS Assigns specific disk addresses
SJPRI Sets job priority
SPRIW Sets process priority
HSYS Specifies system shutdown times
USRIO Places program in user I/O mode
MSFRK Starts a process in monitor mode
NODE Performs network utility functions
PEEK Reads monitor data
PLOCK Locks physical pages
SNOOP Performs system analysis
SYERR Records data in the system error file
SMON Sets various monitor flags
EFACT Records data in the FACT file
MTALN Associates magnetic tape drive with logical unit number
TTMSG Sends a message to a terminal
PMCTL Controls physical memory
USAGE Writes entries into the system's accounting data file
UTEST Tests monitor routines
CHAPTER 3
TOPS-20 MONITOR CALLS
Node: ACCESS Next: ADBRK Up: Top
ACCES JSYS 552
Gives a particular type of access to a given directory. The possible
types of accesses are:
1. Connecting to a directory on a given structure.
2. Gaining owner and group access rights to directories on a
structure without actually connecting to a directory on that
structure.
3. Relinquishing owner and group access rights to directories on
a structure without disconnecting from a directory on that
structure.
Access cannot be given to a regulated structure unless the MSTR JSYS
has been first used to increment the mount count. All structures are
regulated by default except the primary structure (PS: on most
systems) or any structure that has been made non-regulated with the
MSTR JSYS. Access rights and all JFNs on the regulated structure must
be released before the mount count can be decremented.
RESTRICTIONS: some functions require WHEEL or OPERATOR capabilities
enabled.
ACCEPTS IN AC1: B0(AC%CON) connect the job to the specified
directory. After successful completion of
the call, the job is connected to and has
owner access to the directory, and its
default directory becomes this directory.
B1(AC%OWN) give the job owner access to the specified
directory and group access to directories
in the same groups as the specified
directory. The job's connected directory
is unchanged. This function cannot be
given for another job or for a files-only
directory.
B2(AC%REM) relinquish the owner access (obtained with
(ACCES)
the AC%OWN function) to the specified
directory and the group access to
directories in the same group. The job's
connected directory is unchanged. This
function cannot be given for another job
or for a files-only directory. The
settings of B0 and B1 are ignored if B2 is
on and the job number given is for the
current job.
B18-B35 length of the argument block
AC2: address of the argument block
RETURNS +1: always
The format of the argument block is as follows:
Word Symbol Meaning
0 .ACDIR Byte pointer to ASCIZ string containing the
structure and directory name or a 36-bit
directory number. The ASCIZ string must be
of the form structure:<directory>.
1 .ACPSW Byte pointer to ASCIZ string containing the
password of the specified directory. The
password is not required if the directory is
the job's logged-in directory on a domestic
structure and if the directory does not
require a password for the owner.
2 .ACJOB Number (decimal) of job or -1 for the current
job. The process must have WHEEL or OPERATOR
capability enabled to give a specific job
number other than its own.
The ACCES monitor call can be given for another job if the type of
access being requested is for connecting the job (AC%CON) and if the
process executing the call has WHEEL or OPERATOR capability enabled.
The ACCES monitor call is used to implement the CONNECT, ACCESS, and
END-ACCESS commands of the TOPS-20 Command Language.
Generates an illegal instruction interrupt on error conditions below.
ACCES ERROR MNEMONICS:
ACESX1: argument block too small
ACESX3: password is required
ACESX4: function not allowed for another job
ACESX5: no function specified for ACCES
(ACCES)
ACESX6: directory is not accessed
ACESX7: directory is "files-only" and cannot be accessed
CNDIX1: invalid password
CNDIX5: job is not logged in
STRX01: structure is not mounted
STRX02: insufficient system resources
STRX03: no such directory name
STRX04: ambiguous directory specification
STRX09: prior structure mount required
LGINX2: directory is "files-only" and cannot be logged into
CAPX1: WHEEL or OPERATOR capability required
RCDIX2: invalid directory specification
ARGX07: invalid job number
ARGX08: no such job
Node: ADBRK Previous: ACCESS Next: AIC Up: Top
ADBRK JSYS 570
Controls address breaks. An address break is the suspension of a
process when a specified location is referenced in a given manner.
RESTRICTIONS: Not available on 2020 hardware.
ACCEPTS IN AC1: function code in the left half and process handle in
the right half
AC2: arguments for the
AC3: specified function
RETURNS +1: always
This JSYS is useful when debugging a program. For example, consider
the problem of debugging a program consisting of a fork running
several inferior forks mapped to the same address space. One (or
more) of the inferior forks is erroneously referencing a particular
address. To find out which fork(s) are referencing that address, the
user would do the following:
(ADBRK)
1. Set up the software interrupt system for interrupts on
channel 19.
2. Perform the ADBRK .ABSET function for each inferior process,
using the handle of the inferior process and the address
erroneously being referenced.
3. When a channel 19 interrupt occurs, perform an RFSTS JSYS for
each inferior process. The interrupted process(es) that
caused the address break(s) will have a code 7 (.RFABK)
returned in its (their) status word(s).
4. Perform the ADBRK .ABGAD function for each process that
caused an address break. This will return the address of the
instruction that erroneously referenced the break address.
5. Perform the RFORK JSYS to restart the process(es) halted by
address break(s).
6. Continue running the program and repeating the last three
steps until the program completes execution or it no longer
generates address breaks.
The ADBRK JSYS may also be used to locate which instruction in a
process is setting a location to the wrong value.
The available functions are as follows:
Code Symbol Meaning
0 .ABSET Set address break.
1 .ABRED Read address break.
2 .ABCLR Clear address break.
3 .ABGAD Return address of break instruction.
Each function is described in the paragraphs below.
Setting address breaks - .ABSET
This function initializes the address break facility for the specified
process. When the process references the location in the manner for
which the break has been set, it is suspended. Its superior receives
a software interrupt on channel 19 (.ICIFT) if it has enabled for that
channel. After processing the interrupt, the superior process can
resume the inferior by executing the RFORK monitor call.
Only one address break can be in effect for a process at any one time,
and the break affects only the process for which it is set. If
another process references the location on which a break is set, it is
in no way affected by the break. When an address break is set in a
(ADBRK)
page shared among processes and each process is to be suspended when
it references the location, the ADBRK call must be executed for each
process.
Breaks cannot be specified for the accumulators.
The .ABSET function requires the following arguments to be given:
AC2: address of location on which to break
AC3: flag word indicating the type of reference on which to
break. The following flags are currently defined:
B0(AB%RED) Break on a read reference.
B1(AB%WRT) Break on a write reference.
B2(AB%XCT) Break on an execute (instruction fetch)
reference.
Reading address breaks - .ABRED
This function returns the current address break information for the
specified process. It returns the following information on a
successful return:
AC2: address of location on which a break is set
AC3: flag word indicating the type of reference on which the
break will occur. The following flags are currently
defined:
B0(AB%RED) Break will occur on a read reference.
B1(AB%WRT) Break will occur on a write reference.
B2(AB%XCT) Break will occur on an execute (instruction
fetch) reference.
If no address break has been set for the process, the contents of AC2
and AC3 are zero on return.
Clearing address breaks - .ABCLR
This function removes any address break that was set for the specified
process. A program can also remove a break by executing the .ABSET
function with AC2 and AC3 containing zero.
Returning the address of the break instruction - .ABGAD
This function returns in AC2 the address of the location on which the
process encountered a break. When the location on which the break
(ADBRK)
occurred is in a JSYS routine, the address returned is a monitor PC,
not the address of the JSYS. The program can obtain the address of
the JSYS by executing an RFSTS monitor call.
Generates an illegal instruction interrupt on error conditions below.
ADBRK ERROR MNEMONICS:
ABRKX1: address break not available on this system
ARGX02: invalid function
FRKHX1: invalid process handle
FRKHX2: illegal to manipulate a superior process
FRKHX3: invalid use of multiple process handle
FRKHX8: illegal to manipulate an execute-only process
Node: AIC Previous: ADBRK Next: ALLOC Up: Top
AIC JSYS 131
Activates specific software interrupt channels. (Refer to Section
2.5.)
ACCEPTS IN AC1: process handle
AC2: 36-bit word
Bit n on means activate channel n
RETURNS +1: always
The DIC monitor call can be used to deactivate specified software
interrupt channels.
Generates an illegal instruction interrupt on error conditions below.
AIC ERROR MNEMONICS:
FRKHX1: invalid process handle
FRKHX2: illegal to manipulate a superior process
FRKHX3: invalid use of multiple process handle
FRKHX8: illegal to manipulate an execute-only process
Node: ALLOC Previous: AIC Next: ARCF Up: Top
ALLOC JSYS 520
Allocates a device to a particular job or to the device pool of the
monitor's resource allocator. A device under control of the monitor's
resource allocator cannot be opened or assigned by any job other than
the one to which it is currently allocated. When the allocated device
is deassigned, it is returned to the monitor's resource allocator.
RESTRICTIONS: requires WHEEL or OPERATOR capabilities
enabled.
ACCEPTS IN AC1: function code (.ALCAL)
AC2: device designator
AC3: job number, -1, or -2
RETURNS +1: failure, error code in AC1
+2: success
If AC3 contains a job number, then the designated device is allocated
to that job.
If AC3 contains -1, then the device is returned to the pool of devices
available to all users of the system (i.e., the device is no longer
allocated). This is the initial state of all devices.
If AC3 contains -2, then the device is assigned to the monitor
resource allocator's pool of devices.
When a non-allocated device (i.e., a device not under control of the
resource allocator) is assigned or opened by a job, the device cannot
be taken by the resource allocator. However, the resource allocator
can allocate the device to the job that currently has it. Thus, when
the job releases the device, it will be given to the resource
allocator. The allocator receives an IPCF packet when the device is
returned to it. The flag word (.IPCFL) of the packet descriptor block
has a code of 1(.IPCCC) in the IP%CFC field (bits 30-32). This code
indicates the message was sent by the monitor. The first word of the
packet data block contains the resource allocator's code .IPCSA. Each
following word contains the designator of the returned device. Thus,
.IPCFL/<.IPCCC>B32
DATA/.IPCSA
DATA+1/device designator
DATA+2/device designator
The ALLOC monitor call requires the process to have WHEEL or OPERATOR
capability enabled.
ALLOC ERROR MNEMONICS:
ALCX1: invalid function
(ALLOC)
ALCX2: WHEEL or OPERATOR capability required
ALCX3: device is not assignable
ALCX4: invalid job number
ALCX5: device already assigned to another job
ALCX6: device assigned to user job, but will be given to allocator
when released
DEVX1: Invalid device designator
Node: ARCF Previous: ALLOC Next: ASND Up: Top
ARCF JSYS 247
Performs all operations pertaining to the archive and virtual disk
systems. This includes requesting archival and migration, requesting
retrieval, and setting archive status and tape information for a file.
RESTRICTIONS: some functions require WHEEL or OPERATOR capabilities
enabled.
ACCEPTS IN AC1: JFN
AC2: Function code. The available functions and their
argument blocks are described below.
AC3: (Function dependent, normally 0)
Code Symbol Function
0 .ARRAR Sets/clears AR%RAR (in .FBBBT of the FDB),
activating or deactivating a user request for
archival. The value .ARSET (1) in AC3 will
request an archive while .ARCLR (0) will clear
the request. Setting AR%NDL (in .FBBBT of the
FDB) with .ARSET in AC3 requests that the
contents of the file not be flushed from disk
upon archival.
1 .ARRIV Sets/clears AR%RIV (in .FBBBT of the FDB),
activating or deactivating a system request to
migrate a file from disk to tape. The value
.ARSET in AC3 will request migration while
.ARCLR will clear the request. This function
requires WHEEL or OPERATOR capabilities to be
enabled.
2 .AREXM Sets/clears AR%EXM (in .FBBBT of the FDB),
activating or deactivating exemption from
involuntary migration. .ARCLR (0) in AC3
(ARCF)
clears AR%EXM while .ARSET in AC3 will set
AR%EXM. This function requires WHEEL or
OPERATOR capabilities to be enabled.
3 .ARRFR Request a file's contents to be restored to
disk. Normally, .ARRFR returns without waiting
for the contents of the file to be restored to
disk.
Options for AC3
B1 AR%WAT Wait (ARCF JSYS blocks) until
the file is restored.
4 .ARDIS Discard tape information. Clears FB%ARC (if
set), .FBTP1, .FBTP2, .FBTSN, .FBTFN, and
.FBTDT. The file must be online for the
function to succeed.
Options for AC3 (Requires WHEEL or OPERATOR
privileges enabled to use functions
separately.)
B0 AR%CR1 Clear information for run 1
B1 AR%CR2 Clear information for run 2
5 .ARSST Set tape information for a file. Requires
enabled WHEEL or OPERATOR privileges. AC3
contains a pointer to an argument block as
follows:
Word Symbol Contents
0 .AROFL Flags:
B0(AR%01) Set information for
run 1
B1(AR%02) Set information for
run 2
B2(AR%OFL) Delete disk contents
of file when done.
Requires both sets
of tape information
to be set.
B3(AR%ARC) Set FB%ARC in the
FDB (archive the
file)
B4(AR%CRQ) Clear archive and/or
migration requests
(clear AR%RAR and
AR%RIV).
(ARCF)
1 .ARTP1 Tape 1 identification
2 .ARSF1 TSN 1,,TFN 1 - Tape saveset
number in the left half and
tape file number in the right
half.
3 .ARTP2 Tape 2 identification
4 .ARSF2 TSN 2,,TFN 2 - similar to
.ARSF1
5 .ARODT time and date of tape write in
internal format; 0 implies
present time
6 .ARPSZ Number of pages in the file.
This word can be set only if
AR%01 and AR%02 are set first.
This function is used to set information for the first, second,
or both tape runs. AR%01 and AR%02 are used together when
restoring files to disk via DUMPER'S RESTORE command.
6 .ARRST Restore contents of a file to disk. AC3 is a
JFN for a temporary file that contains the data
for a currently offline archived file. After
copying .FBADR, .FBBSY and .FBSIZ, the
temporary file is deleted. Both files must be
on the same device or structure and enabled
WHEEL or OPERATOR capabilities are required.
7 .ARGST Get tape information for file. AC3 contains a
pointer to an argument block that has the same
format as the block for .ARSST.
10 .ARRFL The restore for this file has failed. Set
AR%RFL in FBBBT to notify a waiting process
that the retrieval request cannot be completed.
Requires enabled WHEEL or OPERATOR
capabilities.
11 .ARNAR Resist involuntary migration. Sets or clears
AR%NAR in .FBBBT. Using .ARSET in AC3 will
cause resist to be set, while using .ARCLR will
clear resist.
ARCF ERROR MNEMONICS:
CAPX1: WHEEL or OPERATOR capabilities required
ARGX02: Invalid function code
ARCFX2: File already has archive status
(ARCF)
ARCFX3: Cannot perform ARCF functions on non-multiple directory
devices
ARCFX4: File is not online
ARCFX5: Files are not on the same device or structure
ARCFX6: File does not have archive status
ARCFX7: Invalid parameter for .ARSST
ARCFX8: Archive not complete
ARCFX9: File not offline
ARCX10: Archive prohibited
ARCH11: Archive requested, modification prohibited
ARCH12: Archive requested, delete prohibited
ARCX13: Archive system request not completed
ARCX14: Restore failed
ARCX15: Migration prohibited
ARCX16: Cannot exempt offline, archived, or archive pending files
ARCX17: FDB improper format for ARCF
ARCX18: Retrieval wait cannot be fulfilled for waiting process
ARCX19: Migration already pending
Node: ASND Previous: ARCF Next: ASNSQ Up: Top
ASND JSYS 70
Assigns a device to the caller. The successful return is given if the
device is already assigned to the caller.
ACCEPTS IN AC1: device designator
RETURNS +1: failure, error code in AC1
+2: success
The RELD call can be used to release devices assigned to the caller.
ASND ERROR MNEMONICS:
(ASND)
DEVX1: invalid device designator
DEVX2: device already assigned to another job
ASNDX1: device is not assignable
ASNDX2: illegal to assign this device
ASNDX3: no such device
DSMX1: file(s) not closed
Node: ASNSQ Previous: ASND Next: ATACH Up: Top
ASNSQ JSYS 752
Assigns a special message queue to a job.
RESTRICTIONS: for ARPANET systems only. Requires NET WIZARD
capabilities enabled.
ACCEPTS IN AC1: mask
AC2: header value
RETURNS +1: failure, error code in AC1
+2: success, special message queue assigned with special
queue handle in AC1.
ASNSQ ERROR MNEMONICS:
NTWZX1: NET WIZARD capability required
ASNSX1: Insufficient system resources
(all special queues in use)
ASNSX2: Link(s) assigned to another special queue
Node: ATACH Previous: ASNSQ Next: ATI Up: Top
ATACH JSYS 116
Detaches the specified job from its controlling terminal (if any) and
optionally attaches it to a new controlling terminal. A
console-attached entry is appended to the accounting data file.
RESTRICTIONS: some functions requires WHEEL or OPERATOR
capabilities enabled.
(ATACH)
ACCEPTS IN AC1: B0(AT%CCJ) generate a CTRL/C interrupt to the lowest
process in the job that is enabled for a
CTRL/C interrupt if the job is currently
attached to another terminal. If this bit
is not set or if the job is currently not
attached to another terminal, the job
simply continues running when it is
attached.
B1(AT%NAT) do not attach. Prevents both the
detaching of the job from its terminal and
the attaching of a remote job to the local
terminal. Is a no-op unless the remote
job has a controlling terminal, in which
case the remote job is detached and
remains detached. This bit in effect
makes ATACH like a remote DTACH.
B2(AT%TRM) attach the given job to the terminal
specified in AC4. If this bit is not set,
the job is attached to the controlling
terminal of the caller.
B18-B35 job number (decimal) of the desired job
(AT%JOB)
AC2: user number (e.g., 500000,,256) under which the job
to be attached is logged in. The user number can be
obtained with the RCUSR monitor call.
AC3: byte pointer to an ASCIZ password string in the
caller's address space.
AC4: number (octal) of the terminal to be attached to the
specified job. This argument is required if
B2(AT%TRM) is set.
RETURNS +1: failure, error code in AC1
+2: success. If there is a logged-in job currently
attached to the specified terminal, it is detached
with primary I/O not redirected. Thus, if a process
has primary I/O from the controlling terminal, it
will block when it attempts primary I/O and will
continue when it is reattached and a character is
typed. If there is a job not logged in currently
attached to the specified terminal, the job goes
away.
It is legal to attach to a job that has a controlling terminal if
1. The job is logged in under the same user name as the job
executing the ATACH.
(ATACH)
2. The job executing the ATACH supplies the correct password of
the job it is attaching to.
3. The job executing the ATACH has WHEEL or OPERATOR capability
enabled.
4. The job executing the ATACH has ownership of the job because
it created the job (and maintained ownership) with the CRJOB
call.
If the controlling terminal is a PTY, a password is not required if
either:
1. The owner of the PTY has WHEEL or OPERATOR capability
enabled.
2. The specified job is logged in with the same name as the
owner of the PTY.
The DTACH monitor call can be used to detach the controlling terminal
from the current job.
ATACH ERROR MNEMONICS:
ATACX1: invalid job number
ATACX2: job already attached
ATACX3: incorrect user number
ATACX4: invalid password
ATACX5: this job has no controlling terminal
Node: ATI Previous: ATACH Next: ATNVT Up: Top
ATI JSYS 137
Assigns a terminal code to a software interrupt channel. (Refer to
Section 2.5.) This call also sets the corresponding bit in the
process' terminal interrupt mask. (Refer to the STIW and RTIW monitor
calls.)
ACCEPTS IN AC1: terminal code (refer to Section 2.5.6) in the left
half and channel number in the right half
RETURNS +1: always
If there is no controlling terminal (i.e., if the job is detached),
the assignments are remembered and will be in effect when a terminal
becomes attached.
(ATI)
The DTI monitor call can be used to deassign a terminal code.
Generates an illegal instruction interrupt on error conditions below.
ATI ERROR MNEMONICS:
TERMX1: invalid terminal code
ATIX1: invalid software interrupt channel number
ATIX2: control-C capability required
Node: ATNVT Previous: ATI Next: BIN Up: Top
ATNVT JSYS 274
Creates the Network Virtual Terminal (NVT) connection.
Attach two jfns to an NVT.
For Ethernet, same calling convention as for the ARPANET.
Local change: After successfully setting up the NVT, the port's
data mode is set to .PM32 and its byte size to 8-bit.
RESTRICTIONS: for use with ARPANET only
ACCEPTS IN AC1: flag bits in the left half and the JFN of the opened
receive connection in the right half
AC2: JFN of the opened send connection
RETURNS +1: failure, with error code in AC1
+2: success, with terminal designator specific to this
NVT in AC1
Flags for AC1:
Bit Meaning
B2 If set, this bit indicates New TELNET protocol.
If clear, this bit indicates old TELNET protocol.
ATNVT ERROR MNEMONICS:
ATNX1: invalid receive JFN
ATNX2: receive JFN is not open for read
ATNX3: receive JFN is not open
ATNX4: receive JFN is not a network connection
ATNX5: receive JFN has been used
ATNX6: receive connection has been refused
ATNX7: invalid send JFN
(ATNVT)
ATNX8: send JFN is not open for write
ATNX9: send JFN is not open
ATNX10: send JFN is not a network connection
ATNX11: send JFN has been used
ATNX12: send connection has been refused
ATNX13: insufficient system resources (no NVTs)
Node: BIN Previous: ATNVT Next: BKJFN Up: Top
BIN JSYS 50
Inputs the next byte from the specified source. When the byte is read
from a file, the file must first be opened, and the size of the byte
given, with the OPENF call. When the byte is read from memory, a
pointer to the byte is given. This pointer is updated after the call.
ACCEPTS IN AC1: source designator
RETURNS +1: always, with the byte right-justified in AC2
If the end of file is reached, AC2 contains 0 instead of the byte.
The program can process this end-of-file condition if an ERJMP or
ERCAL is the next instruction following the BIN call.
The BOUT monitor call can be used to output a byte sequentially to a
destination.
Can cause several software interrupts or process terminations on
certain file conditions. (Refer to bit OF%HER of the OPENF call
description.)
BIN ERROR MNEMONICS:
DESX1: invalid source/destination designator
DESX2: terminal is not available to this job
DESX3: JFN is not assigned
DESX5: file is not open
IOX1: file is not open for reading
IOX4: end of file reached
IOX5: device or data error
(BKJFN)
Node: BKJFN Previous: BIN Next: BOOT Up: Top
BKJFN JSYS 42
Backs up the source designator's pointer by one byte.
ACCEPTS IN AC1: source designator
RETURNS +1: failure, error code in AC1
+2: success, updated string pointer in AC1, if pertinent.
(This return actually decrements the pointer.)
The BKJFN call, when referring to a terminal, can be executed only
once to back up one character (i.e., the terminal's pointer cannot be
backed up twice). The call, when referring to other designators, can
be executed more than once in succession.
BKJFN ERROR MNEMONICS:
DESX1: invalid source/destination designator
DESX2: terminal is not available to this job
DESX3: JFN is not assigned
DESX5: file is not open
BKJFX1: illegal to back up terminal pointer twice
SFPTX2: illegal to reset pointer for this file
SFPTX3: invalid byte number
TTYX01: line is not active
Node: BOOT Previous: BKJFN Next: BOUT Up: Top
BOOT JSYS 562
Performs basic maintenance and utility functions required for loading
and dumping the communications front-end software via the DTE-20. The
TOPS-20 system process responsible for performing these functions uses
a DIGITAL-supplied protocol to implement them.
On 2040,2050, and 2060 hardware, the BOOT JSYS is used to load and
dump a PDP-11 connected to a DTE20. On 2020 hardware, the BOOT JSYS
loads and dumps a KMC11, dumps line counters, and stops DDCMP on a
line.
RESTRICTIONS: requires WHEEL or OPERATOR capabilities enabled.
Some functions are specific to 2020 hardware.
(BOOT)
ACCEPTS IN AC1: function code
AC2: address of argument block
RETURNS +1: always
The available functions and their argument blocks are described below.
Code Symbol Meaning
0 .BTROM Activate the hardware ROM bootstrap in the
communications front end.
Argument Block
0 .BTDTE DTE-20 number
1 .BTERR Error status flags returned on
failure of the call
1 .BTLDS Load a secondary bootstrap program into the
communications front end. The secondary
bootstrap, with a maximum size of 256 PDP-11
words, is loaded using the ROM bootstrap. The
data to be loaded must be packed as two 16-bit
PDP-11 words left justified in each 36-bit
TOPS-20 word. The entire bootstrap program
must be loaded at once, and the caller blocks
until the transfer is complete.
Argument Block
0 .BTDTE DTE-20 number
1 .BTERR Error status flags returned on
failure of the call
2 .BTSEC Address of bootstrap program to
be loaded
2 .BTLOD Load the communications front-end memory using
the previously loaded secondary or tertiary
bootstrap program. The bootstrap program in
the front end must abide by the protocol for
DTE-20 transfers: the first two bytes of data
supplied by the caller must be a count of the
remaining number of data bytes.
Argument Block
0 .BTDTE DTE-20 number
1 .BTERR Error status flags returned on
failure of the call
(BOOT)
2 Not used and must be zero.
3 .BTFLG User-supplied flag word
B0(BT%BEL) Send a doorbell to
the front end to
indicate when the
setup is complete
and the transfer can
begin.
4 .BTCNT Number of bytes to transfer
5 .BTLPT Pointer to data to be loaded
3 .BTDMP Dump the communications front-end memory using
the ROM bootstrap program. The caller must
activate the ROM bootstrap (function .BTROM)
before dumping memory. Subsequent .BTDMP
functions to dump memory start where the
previous dump terminated unless the ROM
bootstrap is activated again by a .BTROM
function. The caller blocks until the transfer
is complete.
Argument Block
0 .BTDTE DTE-20 number
1 .BTERR Error status flags returned on
failure of the call
2 Not used and must be zero.
3 .BTFLG User-supplied flag word. This
word is not used and must be
zero.
4 .BTCNT Number of bytes to transfer
5 .BTDPT Pointer to where the data is to
be dumped in the TOPS-20
4 .BTIPR Initialize the protocol to be used with this
communications front end. After successful
execution of this function, the TOPS-20 will
process interrupts from the given DTE-20.
Argument Block
0 .BTDTE DTE-20 number
1 .BTPRV Version number of the protocol
to be used
(BOOT)
For multi-drop terminals
(VT62's) on a 2020, this
function will generate and link
a DDCMP Station Table. It will
startup a terminal not
previously known to the system
and must be issued once for each
terminal being started up.
Argument Block
0 .BTPRT Drop,,line
1 .BTPRV Version number of protocol to be
used (see description of BOOT
function code 6)
5 .BTTPR Stop the protocol currently running on this
communications front end. After successful
execution of this function, the TOPS-20 will
ignore interrupts from the given DTE-20.
Argument Block
0 .BTDTE DTE-20 number
6 .BTSTS Return the status type of the protocol running
on this communications front end. Also returns
the name of the adjacent DECNET node for this
front end.
Argument Block
0 .BTDTE DTE-20 number
1 .BTCOD Returned protocol version type
If no protocol is running, this
word contains -1.
Possible protocol types are:
Symbol Meaning
.VN20F (0) RSX20F protocol
.VNMCB (1) MCB DECNET protocol
.VNDDC (2) DDCMP protocol
.VNMOP (3) MOP (DDCMP maintenance) mode
.VNCNL (4) Controller loopback
.VNCBL (5) Cable loopback
7 .BTBEL Block until a signal (doorbell) to the TOPS-20
is initiated by the communications front end.
This function is used to synchronize the caller
with the bootstrap program in the front end.
(BOOT)
Argument Block
0 .BTDTE DTE-20 number
10 .BTRMP Read data from the communications front end
using the previously loaded secondary or
tertiary bootstrap program. The bootstrap
program must abide by the protocol for DTE-20
transfers. The first two bytes of data will be
interpreted as a count of the remaining number
of bytes of data.
Argument Block
0 .BTDTE DTE-20 number
1 .BTERR Error status flags returned on
failure of the call
2 Not used and must be zero.
3 .BTFLG User-supplied flag word
B0(BT%BEL) Send a signal
(doorbell) to the
TOPS-20 to indicate
the transfer is
finished.
4 .BTCNT Maximum number of bytes to
transfer. After successful
execution of this function, this
word is updated to reflect the
actual number of bytes
transferred.
5 .BTMPT Pointer to where data is to be
placed
11 .BTKML Load a KMC11 (2020 only). This function will
optionally load the CRAM, DRAM, and the four
UNIBUS registers. Before the KMC11 is loaded,
the system verifies that each bit in UNIBUS
registers can be set and cleared. Before the
DRAM is loaded, the system verifies that each
bit in the entire DRAM can be set and cleared.
After the CRAM, DRAM, and registers are loaded,
they are verified to ensure that the data was
properly loaded. If the register data is not
supplied, the UNIBUS registers will be cleared
before the KMC11 is started.
Argument Block
0 .BTKMC KMC11 address
(BOOT)
1 .BTKER Error flags returned
B0 (BT%CVE) CRAM verify error
(right half is bad)
B1 (BT%DVE) DRAM verify error
(right half is bad)
B2 (BT%RVE) Register verify
error (right half
is bad)
2 .BTKCC Count of CRAM data
3 .BTKCP Pointer to CRAM data (16-bit
data)
4 .BTKDC Count of DRAM data
5 .BTKDP Pointer to DRAM data (8-bit
data)
6 .BTKRC Count of register data
7 .BTKRP Pointer to register data (16-bit
data)
8 .BTKSA Right-halfword is starting
address
B0 (BT%KSA) Right-halfword is
set; start KMC11
12 .BTKMS Dump a KMC11 (2020 only). This function will
optionally dump the CRAM, DRAM, and registers
if space is provided. The registers are SEL0,
SEL2, SEL4, SEL6, INDATA, OUTDATA, INBA, OUTBA,
and MISC*400+NPR.
Argument Block
0 .BTKMC KMC11 address
1 .BTKER Error flags returned
B0 (BT%CVE) CRAM verify error
(right half is bad)
B1 (BT%DVE) DRAM verify error
(right half is bad)
B2 (BT%RVE) Register verify
error (right half
is bad)
2 .BTKCC Count of CRAM data
(BOOT)
3 .BTKCP Pointer to CRAM data (16-bit
data)
4 .BTKDC Count of DRAM data
5 .BTKDP Pointer to DRAM data (8-bit
data)
6 .BTKRC Count of register data
7 .BTKRP Pointer to register data (16-bit
data)
13 .BTRLC Return line counters. All counters are
positive numbers.
Argument Block
0 .BTPRT Port number
1 .BTSCC Status count counter
2 .BTSCP Status count pointer
3 .BTRCC Receive count counter
4 .BTRCP Receive count pointer
5 .BTTCC Transmit count counter
6 .BTTCP Transmit count pointer
14 .BTCLI Convert line id to port number
Argument Block
0 .BTPRT Port number
1 .BTLID Pointer to ASCIZ line id
15 .BTCPN Convert NSP port number to line id
Argument Block
0 .BTPRT Port number
1 .BTLID Pointer to ASCIZ line id
16 .BTSTA Set the stations polling state to ACTIVE to
cause the terminal to be polled, or set it to
IDLE to prevent the terminal from being polled.
(VT62 on 2020 only)
Argument Block
0 .BTPRT Drop,,Line
1 .BTCOD Returned protocol version type
(BOOT)
(see description of Boot
function code 6)
0 .BTACT Set line active
1 .BTIDL Set line idle
17 .BTSSP Set the startup priority value. This value
will specify the relative frequency at which
startups are attempted. That is, for a value
of N each active station will be polled N times
for each DDCMP start. This is used to prevent
unresponsive stations from deteriorating
performance of a multi-drop line. (VT62 on
2020 only)
Argument Block
0 .BTPRT Line
1 .BTSPR Start priority count
20 .BTSTP Set the polling priority. This parameter is
maintained in the Station Table to specify the
realtive polling priority of a station. If
this feature is not used, all priority values
will default to 1 and polling will proceed in a
round robin manner. (VT62 on 2020 only)
Argument Block
0 .BTPRT Drop,,line
1 .BTPRI priority value
Typical range 1 (high) to 5
(low)
21 .BTSDD Send a DDCMP message. A DDCMP message wil be
queued for transmission on the specified line.
(VT62 on 2020 only)
Argument Block
0 .BTPRT Drop,,line
1 .BTMSG Address of message
2 .BTLEN Byte count of message
22 .BTRDD Receive a DDCMP message. An item from the
DDCMP input queue will be returned or .BTLEN
will be set to zero if the queue is empty.
Items on the queue will be data segments,
completion postings, or status postings
(station going up or down). (VT62 on 2020
only)
(BOOT)
Argument Block
0 .BTPRT Drop,,line
1 .BTMSG Address of buffer
2 .BTLEN Size of user buffer
For data messages, the byte
count of the message is returned
in .BTLEN. If the buffer is too
small, the JSYS will fail. For
completion postings, the
following will be returned in
.BTLEN:
BT%CTL (1B0) + .BTSUP (1) -
station came up
BT%CTL (1B0) + .BTSDW (2) -
station went down
BT%CTL (1B0) + .BTCMP (3) -
transmit complete
BT%CTL (1B0) + .BTSSF (4) - a
startup failed
.BTPRT will contain the drop of
the station this message
pertains to.
23 .BTCHN Set the interrupt channel so that software
interrupts will be generated when input data is
available. (VT62 on 2020 only)
Argument Block
0 .BTPRT Drop,,line
1 .BTSIC Software interrupt channel
24 .BTSLS Set type of line service to be done on a
synchronous communications line.
Argument Block
0 .BTPRT Drop,,line
1 .BTCOD Define protocol
Protocol values may be:
0 .BTNSP NSP protocol B
1 .BTDCP DDCMP protocol
The error status flag returned in word .BTERR on failure of a BOOT
call are front-end reload status bits recorded in the SYSERR error
(BOOT)
file. (Refer to the TOPS-20 Error Detection, Recovery, and Reporting
Reference Manual for an explanation of these status bits.)
Generates an illegal instruction interrupt on error conditions below.
BOOT ERROR MNEMONICS:
BOTX01: invalid DTE-20 number
BOTX02: invalid byte size
BOTX03: invalid protocol version number
BOTX04: byte count is not positive
BOTX05: protocol initialization failed
CAPX1: WHEEL or OPERATOR capability required
ARGX02: invalid function
Node: BOUT Previous: BOOT Next: CACCT Up: Top
BOUT JSYS 51
Outputs a byte sequentially to the specified destination. When the
byte is written to a file, the file must first be opened, and the size
of the byte given, with the OPENF call. When the byte is written to
memory, a pointer to the location in which to write the byte is given
in AC1. This pointer is updated after the call.
ACCEPTS IN AC1: destination designator
AC2: the byte to be output, right-justified
RETURNS +1: always
The BIN monitor call can be used to input a byte sequentially from a
source.
Can cause several software interrupts or process terminations on
certain file conditions. (Refer to bit OF%HER of the OPENF call
description.)
BOUT ERROR MNEMONICS:
DESX1: invalid source/destination designator
DESX2: terminal is not available to this job
DESX3: JFN is not assigned
(BOUT)
DESX5: file is not open
IOX2: file is not open for writing
IOX5: device or data error
IOX6: illegal to write beyond absolute end of file
IOX11: quota exceeded or disk full
Node: CACCT Previous: BOUT Next: CFIBF Up: Top
CACCT JSYS 4
Changes the account for the current job.
ACCEPTS IN AC1: account number (decimal) in bits 3-35 if bits 0-2 are
5. Otherwise contains a byte pointer to the new
account string in the address space of caller. If a
null byte is not seen, the string is terminated after
39 characters are processed.
RETURNS +1: failure, error code in AC1
+2: success, updated string pointer in AC1
The CACCT call sets the current account for the job to the specified
account. Subsequent session charges will be to this new account.
This call also validates the account given if the account validation
facility is enabled. (Refer to the .SFAVR function of the SMON/TMON
monitor call.)
The GACCT monitor call can be used to return the account for the
current job.
CACCT ERROR MNEMONICS:
CACTX1: invalid account identifier
CACTX2: job is not logged in
VACCX0: Invalid account
VACCX1: Account string exceeds 39 characters
Node: CFIBF Previous: CACCT Next: CFOBF Up: Top
CFIBF JSYS 100
(CFIBF)
Clears the designated file input buffer.
ACCEPTS IN AC1: source designator
RETURNS +1: always
Is a no-op if the source designator is not associated with a terminal.
The CFOBF monitor call can be used to clear a designated file output
buffer.
Generates an illegal instruction interrupt on error conditions below.
CFIBF ERROR MNEMONICS:
DESX1: invalid source/destination designator
DESX3: JFN is not assigned
DESX5: file is not open
DEVX2: device already assigned to another job
TTYX01: line is not active
Node: CFOBF Previous: CFIBF Next: CFORK Up: Top
CFOBF JSYS 101
Clears the designated file output buffer.
ACCEPTS IN AC1: destination designator
RETURNS +1: always
Is a no-op if the destination designator is not associated with a
terminal.
The CFIBF call can be used to clear a designated file input buffer.
Generates an illegal instruction interrupt on error conditions below.
CFOBF ERROR MNEMONICS:
DESX1: invalid source/destination designator
DESX3: JFN is not assigned
DESX5: file is not open
DEVX2: device already assigned to another job
(CFOBF)
TTYX01: line is not active
Node: CFORK Previous: CFOBF Next: CHFDB Up: Top
CFORK JSYS 152
Creates a process inferior to this process. (Refer to Section 2.6.2.)
ACCEPTS IN AC1: B0(CR%MAP) make the inferior process' map the same as
the current process' map by means of
indirect pointers. If this bit is not on,
the inferior process will have no pages in
its map. If desired, the creating process
may then use PMAP or GET to add pages to
the inferior's map.
B1(CR%CAP) make the inferior process' capabilities
the same as the current process'. If this
bit is not on, the inferior process has no
special capabilities.
B3(CR%ACS) set the inferior process' ACs from the
block whose address is in AC2. If this
bit is not on, the inferior process' ACs
are set to 0.
B4(CR%ST) set the PC of the inferior process to the
value in the right half of AC1 and start
the process. If this bit is not on, the
inferior process is not started, and the
right half of AC1 is ignored.
B18-B35 PC value for the inferior process if CR%ST
(CR%PCV) is on.
AC2: address of 20 (octal) word block (optional). This
block contains the AC values for the inferior
process. (Refer to bit CR%ACS above.)
RETURNS +1: failure, error code in AC1
+2: success, relative process handle in AC1
The inferior process receives the same primary input and output JFN's
as the current process. However, the primary input and/or output
files may be changed with the SPJFN monitor call.
The CR%MAP argument in AC1 allows the inferior to see the same address
space as that of the superior. The inferior process will have read
and write access to the superior's address space. The pages are
shared, and changes made by one process will be seen by the other.
(CFORK)
CFORK creates a virgin process if CR%ST and CR%MAP are not set. Note
that loading parameters in the AC's using CR%ACS does not make this a
non-virgin process. Setting CR%ST and either CR%ACS or CR%MAP creates
a non-virgin process.
CFORK creates an execute-only process if bit CR%MAP is set and the
creating process is an execute-only process. This is the only other
way to create an execute-only process besides using the GET JSYS.
The KFORK monitor call can be used to kill one or more processes.
CFORK ERROR MNEMONICS:
FRKHX6: all relative process handles in use
FRKHX8: illegal to manipulate an execute-only process
CFRKX3: insufficient system resources
Node: CHFDB Previous: CFORK Next: CHKAC Up: Top
CHFDB JSYS 64
Changes certain words in the file descriptor block (FDB) for the
specified file. (Refer to Section 2.2.8 for the format of this
block.)
ACCEPTS IN AC1: B0(CF%NUD) do not wait for the disk copy of the
directory to be updated. The specified
changes are made to the directory in
memory and are written to the disk as a
part of the normal monitor disk updating
procedure. (See below for more
information.)
B9-B17 index into FDB indicating word to be
(CF%DSP) changed
B18-B35 JFN
(CF%JFN)
AC2: mask indicating bits to be changed. If changing a
count value (in AC3), use -1 as a mask.
AC3: new values for changed bits. These values must be
given in the bit positions corresponding to the mask
given in AC2.
RETURNS +1: always
The following table lists the JSYS's that are used to set the words
and bits of the FDB:
(CHFDB)
Word Bits JSYS
.FBHDR none unchangeable
.FBCTL B0-B1 CHFDB
FB%NEX unchangeable
FB%DEL CHFDB
B4-B5 unchangeable
B6 reserved
FB%DIR unchangeable
FB%NOD CHFDB (owner/write access)
B9-B10 unchangeable
FB%ARC ARCF
FB%INV CHFDB
FB%OFF ARCF
FB%CTL CHFDB (owner)
.FBEXL none unchangeable
.FBADR none unchangeable
.FBPRT B18-B35 CHFDB (owner)
.FBCRE all CHFDB (WHEEL/OPERATOR)
.FBAUT all SFUST
.FBGEN none unchangeable
.FBACT all SACTF
.FBBYV FB%RET CHFDB (owner)
FB%BSZ CHFDB (owner/write access)
FB%MOD CHFDB (owner/write access)
FB%PGC CHFDB (WHEEL/OPERATOR)
.FBSIZ all CHFDB (owner/write access)
.FBCRV all CHFDB (owner/write access)
.FBWRT all CHFDB (owner/write access)
(CHFDB)
.FBREF all CHFDB (owner/write access)
.FBCNT all CHFDB (WHEEL/OPERATOR)
.FBBK0 none unchangeable
.FBBK1 none unchangeable
.FBBK2 none unchangeable
.FBBBT B0-B5 ARCF
AR%1ST CHFDB (WHEEL/OPERATOR)
AR%RFL ARCF
AR%PSZ DELF
.FBNET all SFTAD
.FBUSW all CHFDB (owner)
.FBGNL none unchangeable
.FBNAM none unchangeable
.FBEXT none unchangeable
.FBLWR all SFUST
.FBTDT all ARCF
.FBFET all SFTAD
.FBTP1 all ARCF
.FBSS1 all ARCF
.FBTP2 all ARCF
.FBSS2 all ARCF
Because each CHFDB call changes only one word in the FDB, several
calls must be executed to change several words. Each call causes disk
I/O, and to keep this I/O to a minimum, the program should set bit
CF%NUD on each call. The setting of this bit on each call permits the
program to run faster by allowing several changes to be made to the
FDB with minimum disk I/O. To ensure that all the changes have been
written to the disk, the program can issue the last CHFDB call with
bit CF%NUD off. Also, if the program requires the FDB on the disk to
be updated after each call, it should execute each CHFDB call with bit
CF%NUD off.
(CHFDB)
The GTFDB monitor call can be used to return the file descriptor block
for a specified file. The GFUST monitor call can be used to return
the name strings of the author of the file and the user who last wrote
the file. The GACTF call can be used to obtain the account designator
of the file.
Generates an illegal instruction interrupt on error conditions below.
CHFDB ERROR MNEMONICS:
CFDBX1: invalid displacement
CFDBX2: illegal to change specified bits
CFDBX3: write or owner access required
CFDBX4: invalid value for specified bits
DESX1: invalid source/destination designator
DESX3: JFN is not assigned
DESX4: invalid use of terminal designator or string pointer
DESX7: JFN cannot refer to output wildcard designators
(CHKAC)
Node: CHKAC Previous: CHFDB Next: CIS Up: Top
CHKAC JSYS 521
Checks if a user is allowed access to files in a given directory.
This monitor call is used to determine if the user will be able to
access files having a given protection code if the user is logged in
with the given capabilities and connected to the directory.
ACCEPTS IN AC1: length of the argument block in the right half. If
B0(CK%JFN) is on, word .CKAUD of the argument block
contains a JFN.
AC2: address of argument block
RETURNS +1: failure, error code in AC1
+2: success, access check is completed, with AC1
containing -1 if access is allowed or 0 if access is
not allowed.
The format of the argument block is as follows:
Word Symbol Meaning
0 .CKAAC Code of desired access to files.
1 .CKALD Byte pointer to user name string, or 36-bit
user number of user whose access is being
checked.
2 .CKACD Byte pointer to directory name string (with
punctuation), or 36-bit directory number to
which user whose access is being checked is
connected.
3 .CKAEC Enabled capabilities of user whose access is
being checked. (Refer to Section 2.6.1.)
4 .CKAUD Byte pointer to directory name string (with
punctuation), or 36-bit directory number of
the directory containing the files being
accessed. If B0(CK%JFN) of AC1 is on, this
word contains a JFN for the file being
accessed.
5 .CKAPR Protection of the files being accessed.
(Refer to Section 2.2.6.) This word is not
required if a JFN is supplied in word .CKAUD.
Access codes are as follows:
0 .CKARD read existing files
1 .CKAWR write existing files
2 .CKAEX execute existing files
3 .CKAAP append to existing files
(CHKAC)
4 .CKADL obtain directory listing of existing files
6 .CKADR read the directory
10 .CKACN connect to the directory
11 .CKACF create files in the directory
CHKAC ERROR MNEMONICS:
CKAX1: argument block too small
CKAX2: invalid directory number
CKAX3: invalid access code
CKAX4: file is not on disk
Node: CIS Previous: CHKAC Next: CLOSF Up: Top
CIS JSYS 141
Clears the software interrupt system for the current process. Clears
all interrupts in progress and all waiting interrupts.
RETURNS +1: always
Node: CLOSF Previous: CIS Next: CLZFF Up: Top
CLOSF JSYS 22
Closes a specific file or all files.
ACCEPTS IN AC1: B0(CO%NRJ) do not release the JFN
B6(CZ%ABT) abort any output operations currently
being done. Close the file but do not
perform any cleanup operations normally
associated with closing a file (e.g., do
not output remaining buffers or write tape
marks if output to a magnetic tape is
aborted). If output to a new disk file
that has not been closed (i.e., is
nonexistent) is aborted, the file is
closed and then expunged.
B7(CZ%NUD) do not update the copy of the directory on
the disk. (Refer to CF%NUD of the CHFDB
call description for further information.)
B18-B35 JFN of the file being closed
(CO%JFN)
(CLOSF)
RETURNS +1: failure, error code in AC1
+2: success
If AC1 contains -1, all files (and all JFN's) at or below this process
(with the exception of the primary I/O files and files that cannot be
closed by this process) are closed. This action is identical to that
taken on a CLZFF call with AC1 containing the process handle .FHSLF
(400000).
The OPENF monitor call can be used to open a specific file.
CLOSF ERROR MNEMONICS:
DESX1: invalid source/destination designator
DESX2: terminal is not available to this job
DESX3: JFN is not assigned
DESX4: invalid use of terminal designator or string pointer
CLSX1: file is not open
CLSX2: file cannot be closed by this process
CLSX3: file still mapped
CLSX4: device still active
ENQX20: locked JFN cannot be closed
IOX11: quota exceeded or disk full
All output errors may occur.
Node: CLZFF Previous: CLOSF Next: COMND Up: Top
CLZFF JSYS 34
Closes process' files. Closes all files and/or releases all JFN's at
and/or below a specified process.
ACCEPTS IN AC1: B0(CZ%NIF) do not close files of inferior processes
B1(CZ%NSF) do not close files of this process
B2(CZ%NRJ) do not release JFNs
B3(CZ%NCL) do not close any files; only release
non-open JFNs
(CLZFF)
B4(CZ%UNR) unrestrict files opened with restricted
access for specified process. The
specified process must be the same as or
inferior to the process executing the
call.
B5(CZ%ARJ) wait until file can be closed, then close
it, and release JFNs
B6(CZ%ABT) abort any output operations currently
being done. Close the file but do not
perform any cleanup operations normally
associated with closing a file (e.g., do
not output remaining buffers or write tape
marks if output to a magnetic tape is
aborted). If output to a new disk file
that has not been closed (i.e., is
nonexistent) is aborted, the file is
closed and then expunged.
B7(CZ%NUD) do not update the copy of the directory on
the disk. (Refer to CF%NUD of the CHFDB
call description for further information.)
B18-B35 process handle
(CZ%PRH)
RETURNS +1: always. No action is taken if the call is in any way
illegal.
If AC1 contains only the process handle .FHSLF, the action is
identical to that taken on a CLOSF call with AC1 containing -1.
Generates an illegal instruction interrupt on error conditions below.
CLZFF ERROR MNEMONICS:
FRKHX1: invalid process handle
FRKHX2: illegal to manipulate a superior process
FRKHX3: invalid use of multiple process handle
IOX11: quota exceeded or disk full
Node: COMND Previous: CLZFF Next: CRDIR Up: Top
COMND JSYS 544
Parses one field of a command that is either typed by a user or
contained in a file. When this monitor call is used to read a command
from a terminal, it provides the following features:
(COMND)
1. Allows the input of a command (including the guide words) to
be given in abbreviated, recognition (ESC and CTRL/F), and/or
full input mode.
2. Allows the user to edit his input with the DELETE, CTRL/U,
CTRL/W, and CTRL/R editing keys.
3. Allows fields of the command to be defaulted if an ESC or
CTRL/F is typed at the beginning of any field or if a field
is omitted entirely.
4. Allows a help message to be given if a question mark (?) is
typed at the beginning of any field.
5. Allows input of an indirect file (@file) that contains the
fields for all or the remainder of the command.
6. Allows a recall of the correct portion of the last command
(i.e., up to the beginning of the field where an error was
detected) if the next command line begins with CTRL/H. The
correct portion of the command is retyped, and the user can
then continue typing from that point.
7. Allows input of a line to be continued onto the next line if
the user types a hyphen (-) immediately preceding a carriage
return. (The carriage return is invisible to the program
executing the COMND call, although it is stored in the text
buffer.) The hyphen can be typed by the user while he is
typing a comment. The comment is then continued onto the
next line.
The COMND call allows the command line that is input to contain a
comment if the comment is preceded by either an exclamation point or a
semicolon and the previous field has been terminated. When the COMND
call inputs an exclamation point after a field that has been
terminated, it ignores all text on the remainder of the line or up to
the next exclamation point. When the COMND call inputs a semicolon
after a field that has been terminated, it ignores all text on the
remainder of the line.
When an indirect file is given on the command line, it can be given at
the beginning of any field. However, it must be the last item typed
on the line, and its contents must complete the current command. The
user must terminate his input of the indirect file (after any
recognition is performed) with a carriage return. If he does not
terminate his input, the message ?INDIRECT FILE NOT CONFIRMED is
output. Also, if the user types a question mark (instead of the file
specification of the indirect file) after he types the @ character,
the message FILESPEC OF INDIRECT FILE is output. The indirect file
itself should not contain an ESC or carriage return; if these
characters are included, they will be treated as spaces. The contents
of the indirect file are placed in the text buffer but are not typed
on the user's terminal.
As the user types his command, the characters are placed in a command
(COMND)
text buffer. This buffer can also include the command line prompt, if
any. Several byte pointers and counts reflect the current state of
the parsing of the command. These pointers and counts are as follows:
1. Byte pointer to the beginning of the prompting-text buffer
(.CMRTY). This pointer is also called the CTRL/R buffer byte
pointer since it indicates the initial part of the text that
will be output on a CTRL/R. (The remainder of the text
output on a CTRL/R is what the user had typed before he typed
CTRL/R.) The buffer containing the prompt need not be
contiguous with the buffer containing the remainder of the
command line. Typically this pointer is to a string in the
literals area.
2. Byte pointer to the beginning of the user's input (.CMBFP).
This is the limit back to which the user can edit.
3. Byte pointer to the beginning of the next field to be parsed
(.CMPTR).
4. Count of the space remaining in the text input buffer
(.CMCNT).
5. Count of the number of characters in the buffer that have not
yet been parsed (.CMINC).
The illustration below is a logical arrangement of the byte pointers
and counts. Remember that the prompting-text buffer does not have to
be adjacent to the text buffer.
.CMCNT
!=======================================================!
! ! ! ! !
! ! ! ! !
!=======================================================!
^ ^ ^
! ! !
! ! ! .CMINC
! ! !
! ! !
! .CMBFP .CMPTR
.CMRTY
These byte pointers and other information are contained in a command
state block, whose address is given as an argument to the COMND
monitor call. The .CMINI function initializes these pointers.
Parsing of a command is performed field by field and by default begins
when the user types a carriage return, ESC, CTRL/F, or question mark.
These characters are called action characters because they cause the
(COMND)
system to act on the command as typed so far. A field can also be
terminated with a space, tab, slash, comma, or any other
nonalphanumeric character. Normally, the parsing does not begin, and
the COMND call does not return control to the program, until an action
character is typed. However, if B8(CM%WKF) is on in word .CMFLG when
the COMND call is executed, parsing begins after each field is
terminated.
The command is parsed by repeated COMND calls. Each call specifies
the type of field expected to be parsed by supplying an appropriate
function code and any data needed for the function. This information
is given in a function descriptor block. On successful completion of
each call, the current byte pointers and the counts are updated in the
command state block, and any data obtained for the field is returned.
The program executing the COMND call should not reset the byte
pointers in the command state block after it completes the parsing of
each command. It should set up the state block once at the beginning
and then use the .CMINI function when it begins parsing each line of a
command. This is true because the .CMINI function implements the
CTRL/H error recovery feature in addition to initializing the byte
pointers in the state block and printing the prompt for the line. If
the program resets the pointers, the CTRL/H feature is not possible
because the pointers from the previous command are not available.
When a CTRL/H is input, the .CMINI function allows error recovery from
the last command only if both (1) the pointer to the beginning of the
user's input (.CMBFP) is not equal to the pointer to the beginning of
the next field to be parsed (.CMPTR) and (2) the last character parsed
in the previous command was not an end-of-line character.
The design of the COMND call allows the user to delete his typed input
with the DELETE, CTRL/W, and CTRL/U keys without regard to field
boundaries. When the user deletes into a field that has already been
parsed, the COMND call returns to the program with B3(CM%RPT) set in
word .CMFLG. This return informs the program to forget the current
state of the command and to reparse from the beginning of the line.
Because the complete line as typed and corrected by the user is in the
text buffer, the parse can be repeated and will yield the same result
up to the point of the change.
The calling sequence to the COMND call is as follows:
ACCEPTS IN AC1: address of the command state block
AC2: address of the first alternative function descriptor
block
RETURNS +1: always (unless a reparse is needed and the right half
of .CMFLG is nonzero), with
AC1 containing flags in the left half, and the
address of the command state block in the right
half. The flags are copied from word .CMFLG in
the command state block.
AC2 containing either the data obtained for the field
or an error code if the field could not be parsed
(COMND)
(CM%NOP is on).
AC3 containing in the left half the address of the
function descriptor block given in the call, and
in the right half the address of the function
descriptor block actually used (i.e., the one
that matched the input).
The format of the command state block is shown below.
0 17 18 35
!=======================================================!
.CMFLG ! Flag Bits ! Reparse Dispatch Address !
!-------------------------------------------------------!
.CMIOJ ! Input JFN ! Output JFN !
!-------------------------------------------------------!
.CMRTY ! Byte Pointer to CTRL/R Text !
!-------------------------------------------------------!
.CMBFP ! Byte Pointer to Start of Text Buffer !
!-------------------------------------------------------!
.CMPTR ! Byte Pointer to Next Input To Be Parsed !
!-------------------------------------------------------!
.CMCNT ! Count of Space Left in Buffer !
!-------------------------------------------------------!
.CMINC ! Count of Characters Left in Buffer !
!-------------------------------------------------------!
.CMABP ! Byte Pointer to Atom Buffer !
!-------------------------------------------------------!
.CMABC ! Size of Atom Buffer !
!-------------------------------------------------------!
.CMGJB ! Address of GTJFN Argument Block !
!=======================================================!
Command State Block
Word Symbol Meaning
0 .CMFLG Flag bits in the left half, and the reparse
dispatch address in the right half. Some flag
bits can be set by the program executing the COMND
call; others can be set by the COMND call after
its execution. The bits that can be set by the
program are described following the Command State
Block description. The bits that can be set by
COMND are described following the Function
Descriptor Block description.
The reparse dispatch address is the location to
which control is automatically transferred when a
reparse of the command is needed because the user
edited past the current pointer (i.e., the user
edited characters that were already parsed). If
this field is zero, the COMND call sets B3(CM%RPT)
in the left half of this word and gives the +1
(COMND)
return when a reparse is needed. The program must
then test CM%RPT and, if on, must reenter the code
that parses the first field of the command. When
the reparse dispatch address is given, control is
transferred automatically to that address.
The code at the reparse dispatch address should
initialize the program's state to what it was
after the last .CMINI function. This
initialization should include resetting the stack
pointer, closing and releasing any JFNs acquired
since the last .CMINI function, and transferring
control to the code immediately following the last
.CMINI function call.
1 .CMIOJ Input JFN in the left half, and output JFN in the
right half. These designators identify the source
for the input of the command and the destination
for the output of the typescript. These
designators are usually .PRIIN (for input) and
.PRIOU (for output).
2 .CMRTY Byte pointer to the beginning of the
prompting-text.
3 .CMBFP Byte pointer to the beginning of the user's input.
The user cannot edit back past this pointer.
4 .CMPTR Byte pointer to the beginning of the next field to
be parsed.
5 .CMCNT Count of the space remaining in the buffer after
the .CMPTR pointer.
6 .CMINC Count of the number of unparsed characters in the
buffer after the .CMPTR pointer.
7 .CMABP Byte pointer to the atom buffer, a temporary
storage buffer that contains the last field parsed
by the COMND call. The terminator of the field is
not placed in this buffer. The atom buffer is
terminated with a null.
10 .CMABC Count of the number of characters in the atom
buffer. This count should be at least as large as
the largest field expected to be parsed.
11 .CMGJB Address of a GTJFN argument block. This block
must be at least 16(octal) words long and must be
writable. If a longer GTJFN block is being
reserved, the count in the right half of word
.GJF2 of the GTJFN argument block must be greater
than four. This block is usually filled in by the
COMND call with arguments for the GTJFN call if
the specified function is requesting a JFN (i.e.,
(COMND)
functions .CMIFI, .CMOFI, and .CMFIL). The user
should store data in this block on the .CMFIL
function only.
The flag bits that can be set by the user in the left half of word
.CMFLG in the Command State Block are described below. These bits
apply to the parsing of the entire command and are preserved by COMND
after execution. See the end of the COMND JSYS discussion for the
bits that are returned by COMND in the left half of word .CMFLG.
Bits Supplied in State Block on COMND Call
Bit Symbol Meaning
6 CM%RAI Convert lowercase input to uppercase.
7 CM%XIF Do not recognize the @ character as
designating an indirect file; instead
consider the character as ordinary
punctuation. A program sets this bit to
prevent the input of an indirect file.
8 CM%WKF Begin parsing after each field is terminated
instead of only after an action character
(carriage return, ESC, CTRL/F, question mark)
is typed. For example, a program sets this
bit if it must change terminal
characteristics (e.g., it must turn off
echoing because a password may be input) in
the middle of a command. However, use of
this bit is not recommended because terminal
wakeup occurs after each field is terminated,
thereby increasing system overhead. The
recommended method of changing terminal
characteristics within a command is to input
the field requiring the special
characteristic on the next line with its own
prompt. For example, if a program is
accepting a password, it should turn off
echoing after the .CMCFM function of the main
command and perform the .CMINI function to
type the prompt requesting a password on the
next line.
The format of the function descriptor block is shown below.
0 8 9 17 18 35
!=======================================================!
! function ! function ! address of next function !
.CMFNP! code ! flags ! descriptor block !
!-------------------------------------------------------!
.CMDAT! Data for specific function !
!-------------------------------------------------------!
(COMND)
.CMHLP! Byte pointer to help text for field !
!-------------------------------------------------------!
.CMDEF! Byte pointer to default string for field !
!-------------------------------------------------------!
.CMBRK! Pointer to 4-word break mask !
!=======================================================!
Function Descriptor Block
Word Symbol Meaning
0 .CMFNP Function code and pointer to next function
descriptor block.
B0-B8(CM%FNC) Function code
B9-B17(CM%FFL) Function-specific flags
B18-B35(CM%LST) Address of the next function
descriptor block
1 .CMDAT Data for the specific function, if any.
2 .CMHLP Byte pointer to the help text for this field.
This word can be zero if the program is not
supplying its own help text. CM%HPP must be set
(in word 0) in order for this pointer to be used.
3 .CMDEF Byte pointer to the default string for this field.
This word can be zero if the program is not
supplying its own default string.
4 .CMBRK Pointer to a 4-word break mask that specifies
which characters constitute end of field. Word
.CMBRK is ignored unless CM%BRK (B13) is on.
The individual words in the function descriptor block are described in
the following paragraphs.
Words .CMFNP and .CMDAT of the function descriptor block
Word .CMFNP contains the function code for the expected field to be
parsed, and word .CMDAT contains any additional data needed for that
function. The function codes, along with any required data for the
functions, are described below.
Code Symbol Meaning
0 .CMKEY Parse a keyword, such as a command name. Word
.CMDAT contains the address of a keyword symbol
table in the format described in the TBLUK monitor
call description (i.e., alphabetical). The data
bits that can be defined in the right half of the
first word of the argument pointed to by the table
entries (when B0-B6 of the first word are off and
B7(CM%FW) is on) are as follows:
(COMND)
B35(CM%INV) Suppress this keyword in the list
output on a ?. The program can set
this bit to include entries in the
table that should be invisible
because they are not preferred
keywords. For example, this bit
can be set to allow the keyword
LIST to be valid, even though the
preferred keyword may be PRINT.
The LIST keyword would not be
listed in the output given on a ?.
This bit is also used in
conjunction with the CM%ABR bit to
suppress an abbreviation in the
output given on a ?.
B34(CM%NOR) Do not recognize this keyword even
if an exact match is typed by the
user and suppress its listing in
the list output on a ?. (Refer to
the TBLUK call description for more
information on using this bit.)
B33(CM%ABR) Consider this keyword a valid
abbreviation for another entry in
the table. The right half of this
table entry points to the keyword
for which this is an abbreviation.
The program can set this bit to
include entries in the table that
are less than the minimum unique
abbreviation. For example, this
bit can be set to include the entry
ST (for START) in the table. If
the user then types ST as a
keyword, it will be accepted as a
valid abbreviation even though
there may be other keywords
beginning with ST. To suppress the
output of this abbreviation in the
list typed on a ?, the program must
also set the CM%INV bit.
On a successful return, AC2 contains the address
of the table entry where the keyword was found.
1 .CMNUM Parse a number. Word .CMDAT contains the radix
(from 2 to 10) of the number. On a successful
return, AC2 contains the number.
2 .CMNOI Parse a guide word string, but do not return an
error if no guide word is input. An error is
returned only if a guide word is input that does
not match the one expected by the COMND call. A
guide word field must be delimited by parentheses.
(COMND)
Word .CMDAT contains a byte pointer to an ASCIZ
string. This string does not contain the
parentheses of the guide word. Guide words are
output if the user terminated the previous field
with ESC. Guide words are not output, nor can
they be input, if the user has caused parsing into
the next field.
3 .CMSWI Parse a switch. A switch field must begin with a
slash and can be terminated with a colon in
addition to any of the legal terminators. Word
.CMDAT contains the address of a switch keyword
symbol table. (Refer to the TBLUK monitor call
description for the format of the table.) The
entries in the table do not contain the slash of
the switch keywords; however, they should end
with a colon if the switch requires a value. The
data bits CM%INV, CM%NOR, and CM%ABR defined for
the .CMKEY function can also be set on this
function. On a successful return, AC2 contains
the address of the table entry where the switch
keyword was found.
4 .CMIFI Parse an input file specification. This function
causes the COMND call to execute a GTJFN call to
attempt to parse the specification for an existing
file, using no default fields. The .CMGJB address
(word 11 in the command state block) must be
supplied, but the GTJFN block should be empty.
(Data stored in the block will be overwritten by
the COMND JSYS. Also, certain GTJFN flags are
set.) On a successful return, AC2 contains the JFN
assigned. Hyphens are treated as alphanumeric
characters for this function
See note following .CMFIL function.
5 .CMOFI Parse an output file specification. This function
causes the COMND call to execute a GTJFN call to
attempt to parse the specification for either a
new or an existing file. The default generation
number is the generation number of the existing
file plus 1. The .CMGJB address must be supplied,
but the GTJFN block should be empty. (Data stored
in the block will be overwritten by the COMND
JSYS. Also, certain GTJFN flags are set.) On a
successful return, AC2 contains the JFN assigned.
Hyphens are treated as alphanumeric characters for
this function.
See note following .CMFIL function.
6 .CMFIL Parse a general (arbitrary) file specification.
This function causes the COMND call to execute a
(COMND)
GTJFN to attempt to parse the specification for
the file. The .CMGJB address must be supplied,
but data stored in certain words of the GTJFN
block will be overwritten by the COMND JSYS and
certain GTJFN flags will be set (see note below).
On a successful return, AC2 contains the JFN
assigned. Hyphens are treated as alphanumeric
characters for this function.
Note that portions of the GTJFN block used by
functions .CMOFI, .CMIFI, and .CMFIL are
controlled by COMND. The following list shows
which words are under the control of COMND and
which words are under the control of the user:
GTJFN Controlled Characteristics
Word(s) by
.GJGEN COMND
1. .CMOFI sets flags
GJ%FOU, GJ%MSG, and
GJ%XTN and clears all
other flags.
2. .CMIFI sets flag
GJ%OLD, and GJ%XTN
and clears all other
flags.
3. .CMOFI and .CMIFI
zero the right half
of word .GJGEN
4. .CMFIL sets flag
GJ%XTN and clears
GJ%FCM
.GJSRC COMND None
.GJDEV -
.GJJFN COMND/
USER Functions .CMIFI AND
.CMOFI give COMND control
of these words. .CMFIL
gives the user control of
these words.
.GJF2 -
.GJATR COMND None
7 .CMFLD Parse an arbitrary field. This function is useful
for fields not normally handled by the COMND call.
The input, as delimited by the first
nonalphanumeric character, is copied into the atom
buffer; the delimiter is not copied. Note the
(COMND)
following:
1. This function will parse a null field
2. Hyphens are treated as alphanumeric characters
for this function
3. No validation is performed (such as filename
validation)
4. No standard help message is available (see
below)
5. The FLDBK. and BRMSK. macros may be used for
including other characters in the field (like
"*").
10 .CMCFM Confirm. This function waits for the user to
confirm the command with a carriage return and
should be used at the end of parsing a command
line.
11 .CMDIR Parse a directory name. Login and files-only
directories are allowed. Word .CMDAT contains
data bits for this function. The currently
defined bit is as follows:
B0(CM%DWC) Allow wildcard characters to be
typed in a directory name.
On a successful return, AC2 contains the 36-bit
directory number.
12 .CMUSR Parse a user name. Only login directories are
allowed. On a successful return, AC2 contains the
36-bit user number.
13 .CMCMA Comma. Sets B1(CM%NOP-no parse) in word .CMFLG of
the command state block and returns if a comma is
not the next item in the input. Blanks can appear
on either side of the comma. This function is
useful for parsing a list of arguments.
14 .CMINI Initialize the command line (e.g., set up internal
monitor pointers, type the prompt, and check for
CTRL/H). This function should be used at the
beginning of parsing a command line but not when
reparsing a line. Otherwise, the CTRL/H feature
will not work.
To use this function, the user first moves the
appropriate data into the command state block and
then issues .CMINI. If, at any time during the
(COMND)
parsing of a line, an error occurs, .CMINI is
issued again to reinitialize the line. However,
for the 2'nd thru N'th invocation of .CMINI for a
given line, the user should not alter the byte
pointers and character counts in the command state
block. To do so would disable the CTRL/H feature.
This feature allows the user program, on parsing a
bad atom, to print an error message, reissue the
prompt, and parse the command line again without
forcing the user to retype the entire line.
If .CMINI reads a CTRL/H character, .CMINI will
reset all byte pointers and character counts
except the .CMINC count to their original state.
.CMINI will set the .CMINC count to the number of
characters in the buffer up to the bad atom.
These characters are output to the terminal and
parsed again. Control then passes to the reparse
address (if provided) and normal parsing resumes.
The effect on the program is as if the bad atom
had never been typed.
15 .CMFLT Parse a floating-point number. On a successful
return, AC2 contains the floating-point number.
16 .CMDEV Parse a device name. On a successful return, AC2
contains the device designator.
17 .CMTXT Parse the input text up to the next carriage
return, place the text in the atom buffer, and
return. If an ESC or CTRL/F is typed, it causes
the terminal bell to ring (because recognition is
not available with this function) and is otherwise
ignored. If a ? is typed, an appropriate
response is given, and the ? is not included in
the atom buffer. (A ? can be included in the
input text if it is preceded by a CTRL/V.)
20 .CMTAD Parse a date and/or time field according to the
setting of bits CM%IDA and CM%ITM. The user must
input the field as requested. Any date format
allowed by the IDTIM call can be input. If a date
is not input, it is assumed to be the current
date. If a time is not input, it is assumed to be
00:00:01. When both the date and time fields are
input, they must be separated by one or more
spaces. If the fields are input separately, they
must be terminated with a space or carriage
return. Word .CMDAT contains bits in the left
half and an address in the right half as data for
the function. The bits are:
B0(CM%IDA) Parse a date
B1(CM%ITM) Parse a time
B2(CM%NCI) Do not convert the date and/or time to
(COMND)
internal format. (Refer to Section
2.8.2.)
The address in the right half is the beginning of
a 3-word block in the caller's address space. On
a successful return, this block contains data
returned from the IDTNC call executed by COMND if
B2(CM%NCI) was on in the COMND call (i.e., if the
input date and/or time field was not to be
converted to internal format). If B2(CM%NCI) was
off in the COMND call, on a successful return, AC2
contains the internal date and time format.
21 .CMQST Parse a quoted string up to the terminating quote.
The delimiters for the string must be double
quotation marks and are not copied to the atom
buffer. A double quotation mark is input as part
of the string if two double quotation marks appear
together. This function is useful if the legal
field terminators and the action characters are to
be included as part of a string. The characters
?, ESC, and CTRL/F are not treated as action
characters and are included in the string stored
in the atom buffer. Carriage return is an invalid
character in a quoted string and causes B1(CM%NOP)
to be set on return.
22 .CMUQS Parse an unquoted string up to one of the
specified break characters. Word .CMDAT contains
the address of a 4-word block of 128 break
character mask bits. (Refer to word .RDBRK of the
TEXTI call description for an explanation of the
mask.) The characters scanned are not placed in
the atom buffer. On return, .CMPTR is pointing to
the break character. This function is useful for
parsing a string with an arbitrary delimiter. The
characters ?, ESC, and CTRL/F are not treated as
action characters (unless they are specified in
the mask) and can be included in the string.
Carriage return can also be included if it is not
one of the specified break characters.
23 .CMTOK Parse the input and compare it with a given
string. Word .CMDAT contains the byte pointer to
the given string. This function sets B1(CM%NOP)
in word .CMFLG of the command state block and
returns if the next input characters do not match
the given string. Leading blanks in the input are
ignored. This function is useful for parsing
single or multiple character operators (e.g., + or
**).
24 .CMNUX Parse a number and terminate on the first
non-numeric character. Word .CMDAT contains the
radix (from 2 to 10) of the number. On a
(COMND)
successful return, AC2 contains the number. This
function is useful for parsing a number that may
not be terminated with a nonalphabetic character
(e.g., 100PRINT FILEA).
Note that non-numeric identifiers can begin with a
digit (e.g., 1SMITH as a user name). When a
non-numeric identifier and a number appear as
alternates for a field, the order of the function
descriptor blocks is important. The .CMNUX
function, if given first, would accept the digit
in the non-numeric identifier as a valid number
instead of as the beginning character of a
non-numeric identifier.
25 .CMACT Parse an account string. The input, as delimited
by the first nonalphanumeric character, is copied
into the atom buffer; the delimiter is not
copied. No verification is performed nor is any
standard help message available.
26 .CMNOD Parse a network node name. A node name consists
of up to six alphanumeric characters followed by 2
colons ("::"). Lowercase characters are converted
to uppercase characters. The node name is copied
into the atom buffer without the colons. Note
that this function does not verify the existence
of the node.
In addition to the .CMFNP word of the function descriptor block
containing the function code in bits 0-8 (CM%FNC), this word also
contains function-specific flag bits in bits 9-17 (CM%FFL) and the
address of another function descriptor block in bits 18-35 (CM%LST).
The flag bits that can be set in bits 9-17 (CM%FFL) are as follows:
Bit Symbol Meaning
14 CM%PO The field is to be parsed only and the field's
existence is not to be verified. This bit
currently applies to the .CMDIR and .CMUSR
functions and is ignored for the remaining
functions. On return, COMND sets B1(CM%NOP-no
parse) only if the field typed is not in the
correct syntax. Also, data returned in AC2 may
not be correct.
15 CM%HPP A byte pointer to a program-supplied help message
for this field is given in word 2 (.CMHLP) of this
function descriptor block.
16 CM%DPP A byte pointer to a program-supplied default
string for this field is given in word 3 (.CMDEF)
of this function descriptor block.
(COMND)
17 CM%SDH The output of the default help message is to be
suppressed if the user types a question mark.
(See below for the default messages.)
The address of another function descriptor block can be given in bits
18-35 (CM%LST) of the .CMFNP word. The use of this second descriptor
block is described below.
Usually one COMND call is executed for each field in the command.
However, for some fields, more than one type of input may be possible
(e.g., after a keyword field, the next field could be a switch or a
filename field). In these cases, all the possibilities for a field
must be tried in an order selected to test unambiguous cases first.
When the COMND call cannot parse the field as indicated by the
function code, it does one of two things:
1. It sets the current pointer and counts such that the next
call will attempt to parse the same input over again. It
then returns with B1(CM%NOP) set in the left half of the
.CMFLG word in the command state block. The caller can then
issue another COMND call with a function code indicating
another of the possible fields. After the execution of each
call, the caller should test the CM%NOP flag to see if the
field was parsed successfully.
2. If an address of another function descriptor block is given
in CM%LST, the COMND call moves to this descriptor block
automatically and attempts to parse the field as indicated by
the function code contained in B0-B8(CM%FNC) in word .CMFNP
of that block. If the COMND call fails to parse the field
using this new function code, it moves to a third descriptor
block if one is given. This sequence continues until either
the field is successfully parsed or the end of the chain of
function blocks is reached. Upon completion of the COMND
call, AC3 contains the addresses of the first and last
function blocks used.
By specifying a chained list of function blocks, the program can have
the COMND call automatically check all possible alternatives for a
field and not have to issue a separate call for each one. In
addition, if the user types a question mark, a list is output of all
the alternatives for the field as indicated by the list of function
descriptor blocks.
Word .CMHLP of the function descriptor block
This word contains a byte pointer to a program-supplied help text to
be output if the user types a question mark when entering his command.
The default help message is appended to the output of the
program-supplied message if B17(CM%SDH) is not set. If B17(CM%SDH) is
set, only the program-supplied message is output. If this word in the
descriptor block is zero, only the default message is output when the
user types a question mark. Bit 15(CM%HPP) must be set in word 0
(.CMFNP) of the function descriptor block for this pointer to be used.
(COMND)
The default help message depends on the particular function being used
to parse the current field. The table below lists the default help
message for each function available in the COMND call.
Default Help Messages
Function Message
.CMKEY (keyword) ONE OF THE FOLLOWING
followed by the alphabetical list of valid
keywords. If the user types a question mark
in the middle of the field, only the keywords
that can possibly match the field as
currently typed are output. If no keyword
can possibly match the currently typed field,
the message
KEYWORD (NO DEFINED KEYWORDS MATCH THIS
INPUT)
is output.
.CMNUM (number) The help message output depends on the radix
specified in .CMDAT in the descriptor block.
If the radix is octal, the help message is
OCTAL NUMBER
If the radix is decimal, the help message is
DECIMAL NUMBER
If the radix is any other radix, the help
message is
A NUMBER IN BASE nn
where nn is the radix.
.CMNOI (guide word) None
.CMSWI (switch) ONE OF THE FOLLOWING
followed by the alphabetical list of valid
switch keywords. The same rules apply as for
.CMKEY function. (See above.)
.CMIFI (input file) The help message output depends on the
.CMOFI (output file) settings of certain bits in the GTJFN call.
.CMFIL (any file) If bit GJ%OLD is off and bit GJ%FOU is on,
the help message is
OUTPUT FILESPEC
Otherwise, the help message is
INPUT FILESPEC
.CMFLD (any field) None
.CMCFM (confirm) CONFIRM WITH CARRIAGE RETURN
.CMDIR (directory) DIRECTORY NAME
.CMUSR (user) USER NAME
.CMCMA (comma) COMMA
(COMND)
.CMINI (initialize) None
.CMFLT (floating point) NUMBER
.CMDEV (device) DEVICE NAME
.CMTXT (text) TEXT STRING
.CMTAD (date) The help message depends on the bits set in
.CMDAT in the descriptor block. If CM%IDA is
set, the help message is
DATE
If CM%ITM is set, the help message is
TIME
If both are set, the help message is
DATE AND TIME
.CMQST (quoted) QUOTED STRING
.CMUQS (unquoted) None
.CMTOK (token) None
.CMNUX (number) Same as .CMNUM
.CMACT (account) None
.CMNOD (node) NODE NAME
Word .CMDEF of the function descriptor block
This word contains a byte pointer to the ASCIZ string to be used as
the default for this field. For this pointer to be used, bit 16
(CM%DPP) must be set in word 0 (.CMFNP) of the descriptor block. The
string is output to the destination, as well as copied to the text
buffer, if the user types an ESC or CTRL/F as the first non-blank
character in the field. If the user types a carriage return, the
string is copied to the atom buffer but is not output to the
destination.
When the caller supplies a list of function descriptor blocks, the
byte pointer for the default string must be included in the first
block. The CM%DPP bit and the pointer for the default string are
ignored when they appear in subsequent blocks. However, the default
string can be worded so that it will apply to any of the alternative
fields. The effect is the same as if the user had typed the given
string.
Defaults for fields of a file specification can also be supplied with
the .CMFIL function. If both the byte pointer to the default string
and the GTJFN defaults have been provided, the COMND default will be
used first and then, if necessary, the GTJFN defaults.
The function descriptor block, whose
address is given in AC2, can be set up
by the FLDDB. and FLDBK. macros defined
in MACSYM. (See end of COMND section
for a description of these macros.)
Word .CMBRK of the function descriptor block
This word contains a pointer to a 4-word user-specified mask that
determines which characters constitute end of field. The leftmost 32
bits of each word correspond to a character in the ASCII collating
sequence (in ascending order). If the bit is on for a given
character, typing that character will cause the COMND JSYS to treat
the characters typed so far as a separate field and parse it according
to the function being used. CM%BRK (B13) must be on in the first word
of the function descriptor block or COMND will ignore word .CMBRK.
Ordinarily, the user would rely on COMND's default masks (varying
according to function) to specify which characters signal end of field
and thus would not be concerned with word .CMBRK of the function
block. However, for special purposes such as allowing "*" or "%" to
be part of a field rather than a field delimiter, the user must
specify his own mask. (In this example, the bits for "*" and "%"
would be off in the mask word.) The user may inspect COMND's default
masks (defined in MONSYM) for help in designing a custom mask.
The following is a list of the COMND functions that use masks:
Mask COMND Changeable
Symbols Function by User
KEYB0. - KEYB3. .CMKEY Yes
DEVB0. - DEVB3. .CMDEV Yes (only if parse-only)
FLDB0. - FLDB3. .CMFLD Yes
EOLB0. - EOLB3. .CMTXT Yes
KEYB0. - KEYB3. .CMSWI Yes
User specified .CMDAT Yes
USRB0. - USRB3. .CMUSR No
FILB0. - FILB3. .CMFIL No
FILB0. - FILB3. .CMIFI No
FILB0. - FILB3. .CMOFI No
internal .CMNUM No
FILB0. - FILB3. .CMDIR No
internal .CMFLT No
ACTB0. - ACTB3. .CMACT No
COMND will ignore any break masks that are specified for functions
that do not allow user-modified masks.
Note that specifying a zero mask with CM%BRK set will cause the TTY
line buffer to fill up and generate an error.
On a successful return, the COMND call returns flag bits in the left
half of AC1 and preserves the address of the command state block in
the right half of AC1. These flag bits are copied from word .CMFLG in
the command state block and are described as follows.
(COMND)
Bits Returned on COMND Call
Bit Symbol Meaning
0 CM%ESC An ESC was typed by the user as the terminator for
this field.
1 CM%NOP The field could not be parsed because it did not
conform to the specified function(s). An error
code is returned in AC2.
2 CM%EOC The field was terminated with a carriage return.
3 CM%RPT Characters already parsed need to be reparsed
because the user edited them. This bit does not
need to be examined if the program has supplied a
reparse dispatch address in the right half of
.CMFLG in the command state block.
4 CM%SWT A switch field was terminated with a colon. This
bit is on if the user either used recognition on a
switch that ends with a colon or typed a colon at
the end of the switch.
5 CM%PFE The previous field was terminated with an ESC.
When a field cannot be parsed, B1(CM%NOP) is set in AC1, and one of
the following error codes is returned in AC2. Note that if a list of
function descriptor blocks is given and an error code is returned, the
error is associated with the last function descriptor block in the
list.
NPXAMB: ambiguous
NPXNSW: not a switch - does not begin with slash
NPXNOM: does not match switch or keyword
NPXNUL: null switch or keyword given
NPXINW: invalid guide word
NPXNC: not confirmed
NPXICN: invalid character in number
NPXIDT: invalid device terminator
NPXNQS: not a quoted string - does not begin with double quote
NPXNMT: does not match token
NPXNMD: does not match directory or user name
NPXCMA: comma not given
(COMND)
COMX18: invalid character in node name
COMX19: too many characters in node name
Macros
Several macros (defined in MACSYM) are available to make using the
COMND JSYS more convenient. These macros are as follows:
FLDDB.(TYP,FLGS,DATA,HLPM,DEFM,LST)
where:
TYP = function type
FLGS = function flags
DATA = function-specific data
HLPM = help message
DEFM = default text
LST = additional invocations of the FLDDB. macro (used only if
multiple function blocks are required)
This macro generates function descriptor blocks for COMND. For
example, the following code would perform a .CMINI function:
MOVEI T1,STEBLK ;Get address of COMND state block
MOVEI T2,[FLDDB.(.CMINI)] ;Get address of function block
COMND
The following code would perform a .CMKEY function (assuming
that the keyword table started at address CMDTAB:
MOVEI T1,STEBLK ;Get address of COMND state block
MOVEI T2,[FLDDB(.CMKEY,<CM%DPP+CM%+CM%HPP>,CMDTAB,
<help text>,<default text>)]
COMND
FLDBK.(TYP,FLGS,DATA,HLPM,DEFM,BRKADR,LST)
This is exactly the same as FLDDB. except that a provision has
been made for the address of the first word of a 4-word
character mask (BRKADR). This version is for use when a
user-specified character mask is required.
BRMSK.(INI0,INI1,INI2,INI3,ALLOW,DISALLOW)
where:
INI0 = first word of character mask
INI1 = second word of character mask
INI2 = third word of character mask
INI3 = fourth word of character mask
ALLOW = characters to allow in the mask
DISALLOW = characters to disallow in the mask
This macro generates 4-word character masks for use with those
(COMND)
COMND functions that allow the user to specify his own mask.
For example, executing the following code would allow "*" in
the predefined mask for the .CMFLD function (FLDB0 thru BLDB3):
BRMSK.(FLDB0.,FLDB1.,FLDB2.,FLDB3.,<*>,)
Also, the BRMSK. macro may be invoked within the FLDBK. macro:
FLDBK.(TYP,FLGS,DATA,HLPM,DEFM,[
BRMSK.(INI0,INI1,INI2,INI3,ALLOW,DISALLOW)],LST)
The COMND call causes other monitor calls to be executed, depending on
the particular function that is requested. Failure of these calls
usually results in the failure to parse the requested field. In these
cases, the relevant error code can be obtained via the GETER and ERSTR
monitor calls.
Any TBLUK error can occur on the keyword and switch functions.
Any NIN/NOUT and FLIN/FLOUT error can occur on the number
functions.
Any GTJFN error except for GJFX37 can occur on the file
specification functions.
Any IDTNC error can occur on the date/time function.
Any RCDIR or RCUSR error can occur on the directory and user
functions.
Any STDEV error can occur on the device function.
Generates an illegal instruction interrupt on error conditions below.
COMND ERROR MNEMONICS:
COMNX1: invalid COMND function code
COMNX2: field too long for internal buffer
COMNX3: command too long for internal buffer
COMNX5: invalid string pointer argument
COMNX8: number base out of range 2-10
COMNX9: end of input file reached
COMX10: invalid default string
COMX11: invalid CMRTY pointer
COMX12: invalid CMBFP pointer
(COMND)
COMX13: invalid CMPTR pointer
COMX14: invalid CMABP pointer
COMX15: invalid default string pointer
COMX16: invalid help message pointer
COMX17: invalid byte pointer in function block
Node: CRDIR Previous: COMND Next: CRJOB Up: Top
CRDIR JSYS 240
Creates, changes, or deletes a directory entry.
RESTRICTIONS: some functions require WHEEL or OPERATOR capabilities
enabled.
ACCEPTS IN AC1: byte pointer to ASCIZ string containing the structure
and directory name. The string must be of the form:
structure:<directory>.
AC2: B0(CD%LEN) set length of the argument block to the
value given in word .CDLEN. This bit is
not used in TOPS-20 version 3 and is
provided for future releases.
B1(CD%PSW) set password from argument block
B2(CD%LIQ) set working disk storage limit from
argument block
B3(CD%PRV) set capability bits from argument block
B4(CD%MOD) set mode bits from argument block
B5(CD%LOQ) set permanent disk storage limit from
argument block
B6(CD%NUM) set directory number from argument block
(valid only when creating a directory)
B7(CD%FPT) set default file protection from argument
block
B8(CD%DPT) set directory protection from argument
block
B9(CD%RET) set default retention count from argument
block
B10(CD%LLD) set last LOGIN date from argument block
(CRDIR)
B11(CD%UGP) set user groups from argument block
B12(CD%DGP) set directory groups from argument block
B13(CD%SDQ) set subdirectory quota from argument
block
B14(CD%CUG) set user groups assignable by this
directory from argument block
B15(CD%DAC) set default account from argument block
B17(CD%DEL) delete this directory entry
B18-B35 address of the argument block
(CD%APB)
AC3: byte pointer to ASCIZ string containing the password
of the directory. This pointer is required when a
nonprivileged user is changing parameters for his
directory.
RETURNS +1: always, with directory number in AC1
This monitor call requires the process to have WHEEL or OPERATOR
capability enabled unless one of the following conditions is true:
1. The specified directory is one to which the caller has owner
access and the caller is changing any one of the following
parameters:
password (.CDPSW)
default file protection (.CDFPT)
directory protection (.CDDPT)
default retention count (.CDRET)
default account (.CDDAC)
This feature is installation dependent and is enabled by
issuing function .SFCRD of the SMON monitor call.
2. The specified directory is inferior to the one to which the
caller is currently connected and the caller has owner access
to this inferior directory.
Refer to Section 2.2.6 for the description of owner access.
The format of the argument block is as follows:
Word Symbol Meaning
0 .CDLEN flag bits in the left half, and length of the
argument block in the right half. The
following bits are defined:
(CRDIR)
B0(CD%NSQ) When restoring this directory, do
not update its superior
directory's quotas (permanent,
working, and subdirectory quotas)
to account for this directory.
If this bit is off, the superior
directory's quotas are updated.
This bit is set by the DLUSER or
DUMPER program to retain the
superior directory's quotas when
restoring its subdirectories.
The process must have WHEEL or
OPERATOR capability enabled to
set this bit.
B1(CD%NCE) When restoring or reconstructing
this directory, do not change any
directory parameters if the
directory currently exists on
disk; set the parameters only if
the directory does not exist. If
this bit is off, the directory
parameters as saved are restored
for the directory. This bit is
set by the DLUSER or DUMPER
program to restore or reconstruct
directories from out-of-date
files without causing existing
directories to revert to older
parameters. The process must
have WHEEL or OPERATOR capability
enabled to set this bit.
1 .CDPSW pointer to password string, which is a string
from 1 to 39 alphanumeric characters.
2 .CDLIQ maximum number of pages that can be used for
working disk storage (also known as logged-in
quota).
3 .CDPRV capabilities for this user. (Refer to
Section 2.6.1 for the capability bits.)
4 .CDMOD mode word.
B0(CD%DIR) directory name can only be used
for connecting to (i.e., the
directory is a files-only
directory). If this bit is off,
the directory name can be used
for logging in and connecting to.
B1(CD%ANA) accounts are alphanumeric. This
bit is not used and is provided
for compatibility with systems
(CRDIR)
earlier than TOPS-20 version 3.
B2(CD%RLM) all the messages from the file
<SYSTEM>MAIL.TXT are repeated
each time the user logs in. If
this bit is off, only the
messages not previously printed
are output when the user logs in.
B7(CD%DAR) If on, this bit indicates that
when the online expiration date
has been reached, the files
concerned should be archived
rather than migrated to virtual
disk. This bit is currently
reserved and is not implemented.
5 .CDLOQ maximum number of pages that can be used for
permanent disk storage (also known as
logged-out quota).
6 .CDNUM directory number, valid only when creating a
directory. An error code is returned if user
changes the number of an existing directory
(CRDIX2) or gives a non-unique number
(CRDIX8).
7 .CDFPT default file protection (18 bits,
right-justified).
10 .CDDPT directory protection (18 bits,
right-justified).
11 .CDRET default number of generations of a file to be
retained in the directory (retention count).
Valid numbers are 0 to 63, with 0 being an
infinite number.
12 .CDLLD date of last login.
13 .CDUGP pointer to user group list.
14 .CDDGP pointer to directory group list.
15 .CDSDQ maximum number of directories that can be
created inferior to this directory. This
parameter allows a user to create directories
with the BUILD command.
16 .CDCUG pointer to user group list. This list
contains the group numbers that can be given
to directories inferior to this one.
17 .CDDAC pointer to default account for this user.
(CRDIR)
20 .CDDNE default online expiration date and time. May
be an explicit date and time (internal
format) or an interval (in days). In either
case, the specified date/interval may not
exceed the system maximum. This parameter is
read if CD%NED (1B2) or CD%FED (1B3) in
.CDLEN are set. If a new directory is
created and this parameter is not specified,
the system default is used.
An unprivileged user may modify his defaults,
but only to a value less than or equal to
those which are currently specified or the
system maximum, whichever is greater.
This word is currently reserved and is not
implemented.
21 .CDDFE default offline expunge date and time.
Otherwise similar to .CDDNE (above).
This word is currently reserved and is not
implemented.
The format of each group list is a table with the first word
containing a count of the number of words (including the count word)
in the table and each subsequent word containing a group number.
When CRDIR is being executed to create a directory, bits 0-17 of AC2
may optionally be on or off. If a particular bit is on, it indicates
that the corresponding argument in the argument block should be
examined. If the bit is off, it indicates that the argument should be
defaulted. The following table lists the bits and the corresponding
argument defaults:
Bits Argument Defaults
B2(CD%LIQ) maximum working disk file storage to 250 pages
B3(CD%PRV) no special capabilities
B4(CD%MOD) directory name that can be used for logging in and
that lists the messages from <SYSTEM>MAIL.TXT only
once
B5(CD%LOQ) maximum permanent disk file storage to 250 pages
B6(CD%NUM) the first unused directory number. B6 should
normally be off.
B7(CD%FPT) default file protection to 777700
B8(CD%DPT) directory protection to 777700
B9(CD%RET) default file retention count to 1
B10(CD%LLD) never logged in
B11(CD%UGP) no user groups
B12(CD%DGP) no directory groups
B13(CD%SDQ) no ability to create inferior directories
B14(CD%CUG) no assignable user groups for inferior directories
B15(CD%DAC) no default account
When CRDIR is being executed to change a directory and any of B0-B17
(CRDIR)
of AC2 is off, the corresponding parameter is not affected.
When CRDIR is being executed to delete a directory, the settings of
B0-B17 of AC2 are ignored. A CRDIR call cannot be given to delete a
directory that has directories inferior to it.
The GTDIR call can be used to obtain the directory information.
Generates an illegal instruction interrupt on error conditions below.
CRDIR ERROR MNEMONICS:
CRDIX1: WHEEL or OPERATOR capability required
CRDIX2: illegal to change number of old directory
CRDIX3: insufficient system resources (Job Storage Block full)
CRDIX4: superior directory full
CRDIX5: directory name not given
CRDIX6: directory file is mapped
CRDIX7: file(s) open in directory
CRDIX8: invalid directory number
CRDIX9: internal format of directory is incorrect
CRDI10: maximum directory number exceeded; index table needs
expanding
CRDI11: invalid terminating bracket on directory
CRDI12: structure is not mounted
CRDI13: request exceeds superior directory working quota
CRDI14: request exceeds superior directory permanent quota
CRDI15: request exceeds superior directory subdirectory quota
CRDI16: invalid user group
CRDI17: illegal to create non-files-only subdirectory under
files only directory
CRDI18: illegal to delete logged-in directory
CRDI19: illegal to delete connected directory
CRDI20: WHEEL, OPERATOR, or requested capability required
CRDI21: working space insufficient for current allocation
(CRDIR)
CRDI22: subdirectory quota insufficient for existing subdirectories
CRDI23: superior directory does not exist
CRDI24: invalid subdirectory quota
Node: CRJOB Previous: CRDIR Next: CRLNM Up: Top
CRJOB JSYS 2
Creates a new job and optionally logs it in. This monitor call causes
the functions that are normally performed when a job is created (e.g.,
assignment of a JSB, the primary I/O designators, and the job
controlling terminal) to be performed for the new job.
RESTRICTIONS: some functions require WHEEL or OPERATOR capabilities
enabled.
ACCEPTS IN AC1: flag bits
AC2: address of argument block
AC3: (optional) If CRJOB is to be used to release control
over a job previously created with CRJOB (bit 17 in
AC1 must be on), then AC3 contains the job number of
the previously created job.
RETURNS +1: failure, with error code in AC1
+2: success, with the number of the new job in AC1
The flag bits defined in the left half of AC1 are as follows:
Bit Symbol Meaning
0 CJ%LOG Log in the new job. If this bit is off, the new
job is created but not logged in.
1 CJ%NAM Set the user name and password from the argument
block. If this bit is off, the user name of the
caller is given to the new job.
2-3 CJ%ACT Set the account of the new job to the following:
Code Symbol Meaning
0 .CJUCA Use current account of caller.
1 .CJUAA Use account from the argument
block.
2 .CJUDA Use default account of user
whose job is being created.
(CRJOB)
4 CJ%ETF If set, place the TOPS-20 command processor in the
top-level process of the new job. The command
processor will read its program argument block
(see below) at the time it is started.
CJ%FIL and CJ%ETF interact in the following ways:
1. If CJ%FIL is on and CJ%ETF is on, then a job
is created with a top process consisting of
the TOPS-20 command processor and an inferior
process consisting of the file pointed to by
word .CJFIL.
2. IF CJ%FIL is off and CJ%ETF is on, then a job
is created with a top process consisting of
the TOPS-20 command processor. No inferior
process is created.
3. If CJ%FIL is on and CJ%ETF is off, then a job
is created with a top process consisting of
the file pointed to by word .CJFIL. No
inferior process is created.
The format of the program argument block is as
follows:
Word Contents
0 Count of words in block, not including
this word.
1 1B0+3B6+2B12+CR%PRA - indicates this is
a program argument block created by the
CRJOB JSYS
2 1B0 + offset1 - offset1 is the offset in
this block of the first argument being
passed.
3 1B0 + offset2 - offset2 is the offset in
this block of the second argument being
passed.
n (offset1) This argument is a copy of the
flag bits from word .CJEXF (word 10 -
flags for the command language
processor) of the CRJOB argument block.
n+1 (offset2) This argument contains
information about the process being
started - process handle,,entry vector
offset. The entry vector offset is from
word .CJSVF (word 4) of the CRJOB
argument block.
(CRJOB)
The program argument block is created by the CRJOB
monitor call and is passed to the process by a
PRARG monitor call (performed internally by
CRJOB). The user does not specify any of the
information in the program argument block. The
user can, by invoking the PRARG monitor call,
return the block and examine its contents.
5 CJ%FIL Move (via a GET call) the file pointed to in the
argument block into a process in the new job. If
B4(CJ%ETF) is off, the file is placed in the
top-level process of the new job. If B4(CJ%ETF)
is on, the file is placed in the process
designated in the Command Language Processor's
PRARG argument block. (See below.) If B5(CJ%FIL)
is off, no file is moved into a process of the new
job, and the top-level process of the new job is
the Command Language Processor.
6 CJ%ACS Load the ACs from the value in the argument block.
The ACs are loaded only if a program other than
the Command Language Processor is being run.
7 CJ%OWN Maintain ownership of the new job. This means
that the new job cannot be logged out until the
caller releases ownership of it. If this bit is
off, control of the new job is released.
8 CJ%WTA Do not start the new job until it is attached
(using ATACH JSYS) to a terminal. If this bit is
off, the new job is started.
9 CJ%NPW Do not check the password given when the new job
is logged in. If this bit is off, the password is
checked unless the new job is being logged in with
the same user name as the caller or with WHEEL or
OPERATOR capability enabled.
10 CJ%NUD Do not update the date of LOGIN for user logging
in to the new job. If this bit is off, the date
of LOGIN is updated unless the user is logging in
with the same user name as the caller or with
WHEEL or OPERATOR capability enabled.
11 CJ%SPJ Set (via a SPJFN call) the primary input and
output designators from the argument block before
starting the job. The primary I/O designators are
not changed for a Command Language Processor in
the top-level process of the new job; they are
changed only for inferior processes. If this bit
is off, the primary I/O designators of the new job
are the job's controlling terminal.
12 CJ%CAP Set the new job's allowed user capabilities (right
half) to be the same as the caller's currently
(CRJOB)
enabled capabilities, until the new job is logged
in. If this bit is off, the new job has the user
capabilities associated with the user whose job is
being created.
13 CJ%CAM Set the new job's allowed capabilities to be the
combination of (AND function) the capability mask
in the argument block and the new job's user
capabilities. If this bit is off, the new job has
the capabilities associated with the user whose
job is being created.
14 CJ%SLO Send a IPCF message to the PID supplied in
argument block when the new job is logged out. If
this bit is off, no message is sent when the new
job is logged out.
The IPCF logout message has the following format:
Word Contents
0 0,,.IPCLO
1 N,,# of job logged out. N is the count
of the remaining words in this message
(currently 10 octal).
2 flags,,reserved
Bits Symbol Meaning
B0 SP%BAT job is controlled by
batch
B1 SP%DFS spooling is deferred.
B2 SP%ELO the job executed LGOUT
B3 SP%FLO the job was forced to
logout. If this bit is
on, check Word 8 of the
IPCF message (gives code
of most recent monitor
call error). B3 will be
on only if job has an
interrupt to be handled
by MEXEC(Mini-EXEC).
B4 SP%OLO the job was logged out
by another job. Word 6
of the IPCF message
contains the job number
of the job that did the
logout.
3 job connect time
4 job CPU time
5 TTY number of job at logout (-1 if
detached)
6 job number of the job that did the
logout
7 reserved
10 code of the most recent monitor call
(CRJOB)
error
17 CJ%DSN Release ownership of the previously created job
whose number is in AC3. If this bit is on, it
overrides the setting of all other bits in AC1,
and no change is made to the job's status other
than the change in ownership.
The format of the argument block (whose address is given in AC2) is as
follows:
Word Symbol Meaning
0 .CJNAM Byte pointer to the user name string.
1 .CJPSW Byte pointer to the password string.
2 .CJACT 5B2 + numeric account number or byte pointer to
account string.
3 .CJFIL Byte pointer to the name of the file to be
moved (via a GET call) into a process of the
new job. The new job must have read access to
the file. The process into which the file is
placed depends on the setting of B4(CJ%ETF).
4 .CJSFV Offset in the entry vector to use as the start
address of the file pointed to by word .CJFIL.
This offset is the argument to the SFRKV call
used to start the process.
5 .CJTTY Terminal designator of the new job's
controlling terminal. This terminal must be
assigned by the caller. The terminal is then
released and assigned to the new job. If the
new job is to be detached, the .NULIO
designator (377777) is given.
6 .CJTIM connect-time for new job before a LGOUT is
forced on it; 0 indicates no limit. This
function is currently not implemented.
7 .CJACS Address of a 16-word block whose contents are
to be loaded in the new job's ACs if a program
other than the Command Language Processor is
being run.
10 .CJEXF Flag bits to be passed to the Command Language
Processor in the top-level process of the new
job. The bits are:
B0 Suppress the herald printed by the
Command Language Processor.
B1 Move the file pointed to by word .CJFIL
(CRJOB)
into the process whose handle is in the
PRARG block. (See below.)
B2 Start the process at the offset in the
entry vector given in word .CJSFV. This
process is started after the Command
Language Processor is initialized.
B3 Output the text printed when a LOGIN
command is given (e.g., system messages,
job number, terminal number).
This word is copied into the PRARG argument
block passed to the Command Language Processor.
(See Below.)
11 .CJPRI Primary input and output designators for the
inferior processes of the new job. These
designators must refer to device designators.
The Command Language Processor in the top-level
process of the new job executes a SPJFN call to
set these designators.
12 .CFCPU Runtime limit for the new job. When this limit
is reached, an interrupt is generated (via a
TIMER call), and the Command Language Processor
will execute a LGOUT call for the new job. A
zero in this word means there is no runtime
limit on the job.
13 .CJCAM Capability mask for the new job. This mask is
used only if CJ%CAM is set.
14 .CJSLO PID to which an IPCF message is to be sent when
the new job is logged out.
When CRJOB creates a new job, it also creates the top-level process,
and this process is always a virgin process. Thus, an execute-only
program can be RUN as the top-level fork.
The CRJOB call causes other monitor calls to be executed, depending on
the particular function that is performed.
Any GTJFN and OPENF errors can occur when obtaining the specified
file.
Any SFRKV error can occur when starting the program in the
specified file.
Any LOGIN and account validation errors can occur when logging in
the job.
CRJOB ERROR MNEMONICS:
CRJBX1: invalid parameter or function bit combination
(CRJOB)
CRJBX2: illegal for created job to enter MINI-EXEC
CRJBX4: terminal is not available
CRJBX5: unknown name for LOGIN
CRJBX6: insufficient system resources
Node: CRLNM Previous: CRJOB Next: CVHST Up: Top
CRLNM JSYS 502
Defines or deletes a logical name assignment. Logical names are used
to specify a set of default values for each field requested by a GTJFN
monitor call. When a logical name is passed to the GTJFN call, any
fields not specified by the user are supplied from the fields defined
in the logical name definition. (Refer to Section 2.2.2 and to the
INLNM and LNMST monitor call descriptions for more information on
logical names.)
ACCEPTS IN AC1: function code
AC2: byte pointer to the logical name
AC3: byte pointer to the logical name definition string
RETURNS +1: failure, error code in AC1
+2: success, updated string pointer in AC3
The codes for the functions are as follows:
0 .CLNJ1 delete one logical name from the job
1 .CLNS1 delete one logical name from the system
2 .CLNJA delete all logical names from the job
3 .CLNSA delete all logical names from the system
4 .CLNJB create a logical name for the job
5 .CLNSY create a logical name for the system
CRLNM ERROR MNEMONICS:
CRLNX1: logical name is not defined
CRLNX2: WHEEL or OPERATOR capability required
CRLNX3: invalid function
(CRLNM)
GJFX4: invalid character in filename
GJFX5: field cannot be longer than 39 characters
GJFX6: device field not in a valid position
GJFX7: directory field not in a valid position
GJFX8: directory terminating delimiter is not preceded by a valid
beginning delimiter
GJFX9: more than one name field is not allowed
GJFX10: generation number is not numeric
GJFX11: more than one generation number field is not allowed
GJFX12: more than one account field is not allowed
GJFX13: more than one protection field is not allowed
GJFX14: invalid protection
GJFX15: invalid confirmation character
GJFX22: insufficient system resources (Job Storage Block full)
GJFX31: invalid wildcard designator
Node: CVHST Previous: CRLNM Next: CVSKT Up: Top
CVHST JSYS 276
Converts a host number to a primary name.
RESTRICTIONS: for use with ARPANET only
ACCEPTS IN AC1: destination designator for the ASCIZ string
AC2: host number
RETURNS +1: failure, error code in AC1
+2: success, host name string returned to area designated
by AC1
CVHST ERROR MNEMONICS:
CVHST1: no string for that host number
(CVSKT)
Node: CVSKT Previous: CVHST Next: DEBRK Up: Top
CVSKT JSYS 275
Converts a local socket number to absolute form.
RESTRICTIONS: for use with ARPANET only
ACCEPTS IN AC1: JFN
RETURNS +1: failure, error code in AC1
+2: success, absolute socket number in AC2
CVSKT ERROR MNEMONICS:
CVHST1: no string for that host number
CVSKX1: invalid JFN
CVSKX2: local socket invalid in this context
Node: DEBRK Previous: CVSKT Next: DELDF Up: Top
DEBRK JSYS 136
Dismisses the current software interrupt routine in progress and
resumes the process at the location specified by the PC stored in the
priority level table. (Refer to Section 2.5.7.)
RETURNS +1: if no software interrupt is currently in progress and
if an ERJMP or ERCAL instruction follows the DEBRK
Generates an illegal instruction interrupt on error conditions below.
DEBRK ERROR MNEMONICS:
DBRKX1: no interrupts in progress
Node: DELDF Previous: DEBRK Next: DELF Up: Top
DELDF JSYS 67
Reclaims space by expunging disk files that have been marked for
deletion with DELF. This call first checks the user's access to the
directory, verifying that the user is allowed to expunge files from
it.
When a file with archive status is deleted and expunged, DELDF sends
an IPCF message to GALAXY. This message contains all archive status
(DELDF)
informatiion which includes tape information as well as the present
file name, user who expunged the file and the time at which it was
expunged.
RESTRICTIONS: some functions require WHEEL or OPERATOR
capabilities enabled.
ACCEPTS IN AC1: B0(DD%DTF) delete temporary files (;T) also
B1(DD%DNF) delete nonexistent files that are not now
opened
B2(DD%RST) rebuild the symbol table
B3(DD%CHK) check internal consistency of directory.
If an error occurs, the symbol table
should be rebuilt. If B2(DD%RST) is also
set, it is ignored, and the DELDF call
must be executed again with B2(DD%RST) on
to rebuild the symbol table.
AC2: directory number
RETURNS +1: always
The directory number given must be that of the user's connected or
logged-in directory unless the process has WHEEL or OPERATOR
capability enabled.
If errors still occur after the symbol table is rebuilt, the process
should restore the directory from magnetic tape or the user should
request help from the operator.
Generates an illegal instruction interrupt on error conditions below.
DELDF ERROR MNEMONICS:
DELDX1: WHEEL or OPERATOR capability required
DELDX2: invalid directory number
DELFX2: file cannot be expunged because it is currently open
DELFX4: directory symbol table could not be rebuilt
DELFX5: directory symbol table needs rebuilding
DELFX6: internal format of directory is incorrect
DELFX7: FDB formatted incorrectly; file not deleted
DELFX8: FDB not found; file not deleted
(DELF)
Node: DELF Previous: DELDF Next: DELNF Up: Top
DELF JSYS 26
Deletes the specified disk file and (if the file is closed) releases
the JFN. The file is not expunged immediately but is marked for later
expunging by the system or with the DELDF or LGOUT monitor call.
RESTRICTIONS: some functions require WHEEL or OPERATOR
capabilities enabled.
ACCEPTS IN AC1: B0(DF%NRJ) do not release the JFN
B1(DF%EXP) expunge the contents of the file. This
also deletes the FDB entry in the
directory. B0(DF%NRJ) and B1(DF%EXP)
cannot be set simultaneously.
B2(DF%FGT) expunge the file but do not deassign its
addresses. The process must have WHEEL or
OPERATOR capability enabled to set this
bit. This bit should be set only by an
operator or system specialist to delete a
file that has a damaged or inconsistent
index block.
B3(DF%DIR) delete and expunge a directory file. The
process must have WHEEL or OPERATOR
capability enabled to set this bit. This
bit should be set only by an operator or
specialist to delete a bad directory.
B4(DF%ARC) allow a file with archive status to be
deleted.
B5(DF%CNO) delete and expunge the contents of the
file but preserve the file's name and FDB
as they were (with the exception of the
page count and the page table address).
Setting this bit will cause the DELF to
fail if bit AR%NDL is set in word .FBBBT
of the FDB or if a complete set of tape
backup information is not in the FDB.
B18-B35 JFN of the file being deleted
(DF%JFN)
RETURNS +1: failure, error code in AC1
+2: success, JFN is released unless B0(DF%NRJ) is on or
the file is opened.
By setting B0(DF%NRJ), the user can delete multiple files by giving a
JFN to GNJFN that represents a group of files and processing each file
in the group.
The DELF call takes the +1 return if the JFN is assigned to a
(DELF)
non-directory device.
DELF ERROR MNEMONICS:
DESX1: invalid source/destination designator
DESX3: JFN is not assigned
DESX4: invalid use of terminal designator or string pointer
DESX7: JFN cannot refer to output wildcard designators
DESX9: invalid operation for this device
DELFX1: delete access required
DELFX2: file cannot be expunged because it is currently opened
DELFX3: system scratch area depleted; file not deleted
DELFX4: directory symbol table could not be rebuilt
DELFX5: directory symbol table needs rebuilding
DELFX6: internal format of directory is incorrect
DELFX7: FDB formatted incorrectly; file not deleted
DELFX8: FDB not found; file not deleted
DELFX9: file is not a directory file
DELF10: directory still contains subdirectory
DLFX10: cannot delete directory; file still mapped
DLFX11: cannot delete directory file in this manner
WHELX1: WHEEL or OPERATOR capability required
Node: DELNF Previous: DELF Next: DEQ Up: Top
DELNF JSYS 317
Deletes all but the specified number of generations of a disk file.
The files are marked for deletion and are expunged at a later time
either automatically by the system or explicitly with the DELDF or
LGOUT call.
ACCEPTS IN AC1: B0(DF%NRJ) do not release the JFN
B4(DF%ARC) allow a file with archive status to be
(DELNF)
deleted.
B5(DF%CNO) delete and expunge the contents of the
file but preserve the file's name and FDB
as they were (with the exception of the
page count and the page table address).
Setting this bit will cause the DELF to
fail if bit AR%NDL is set in word .FBBBT
of the FDB or if a complete set of tape
backup information is not in the FDB.
B18-B35 JFN of the file being deleted
AC2: the number of generations to retain
RETURNS +1: failure, error code in AC1
+2: success, with the number of files deleted
in AC2
Starting at the file specified by the JFN, the DELNF call decrements
the generation number, first retaining the specified number of
generations before deleting the remaining generations.
DELNF ERROR MNEMONICS:
DESX1: invalid source/destination designator
DESX3: JFN is not assigned
DESX4: invalid use of terminal designator or string pointer
DESX7: JFN cannot refer to output wildcard designators
DELFX1: delete access required
Node: DEQ Previous: DELNF Next: DEVST Up: Top
DEQ JSYS 514
Removes a request for a specific resource from the queue associated
with that resource. The request is removed whether or not the process
has a lock for the resource or is only waiting in the queue for the
resource.
This call can be used to remove any number of requests. If one of the
requests cannot be dequeued, the dequeueing procedure continues until
all requests that can be have been dequeued. An error return is given
for the last request found that could not be dequeued. The process
can then execute the ENQC call to determine the current status of each
request. However, if the process attempts to dequeue more pooled
resources than it originally allocated, the error return is taken and
(DEQ)
none of the pooled resources are dequeued.
Refer to the TOPS-20 Monitor Calls User's Guide for an overview and
description of the Enqueue/Dequeue facility.
ACCEPTS IN AC1: function code
AC2: address of argument block (required only for the
.DEQDR function)
RETURNS +1: failure, error code in AC1
+2: success
The available functions are as follows:
Code Symbol Meaning
0 .DEQDR Remove the specified requests from the queue.
This function is the only one requiring an
argument block.
1 .DEQDA Remove all requests for this process from the
queues. This action is taken on a RESET or
LGOUT call. The error return is taken if the
process has not given an ENQ call.
2 .DEQID Remove all requests that correspond to the
specified request identifier(ID). This
function allows the process to release a
class of locks in one call without itemizing
each lock in an argument block. It is useful
when dequeueing in one call the same locks
that were enqueued in one call. To use this
function, the process places the 18-bit
request ID in AC2.
The format of the argument block for function .DEQDR is identical to
that given on the ENQ call. (Refer to the ENQ monitor call
description.) However, the .ENQID word of the argument block is not
used on a DEQ call and must be zero.
DEQ ERROR MNEMONICS:
ENQX1: invalid function
ENQX2: level number too small
ENQX3: request and lock level numbers do not match
ENQX4: number of pool and lock resources do not match
ENQX6: requested locks are not all locked
ENQX7: no ENQ on this lock
(DEQ)
ENQX9: invalid number of blocks specified
ENQX10: invalid argument block length
ENQX11: invalid software interrupt channel number
ENQX13: indirect or indexed byte pointer not allowed
ENQX14: invalid byte size
ENQX15: ENQ/DEQ capability required
ENQX16: WHEEL or OPERATOR capability required
ENQX17: invalid JFN
ENQX18: quota exceeded
ENQX19: string too long
ENQX20: locked JFN cannot be closed
ENQX21: job is not logged in
DESX8: file is not on disk
Node: DEVST Previous: DEQ Next: DFIN Up: Top
DEVST JSYS 121
Translates the given device designator to its corresponding ASCIZ
device name string. The string returned contains only the
alphanumeric device name; it does not contain a colon.
ACCEPTS IN AC1: destination designator
AC2: device designator
RETURNS +1: failure, error code in AC1
+2: success, updated string pointer in AC1, if pertinent
The STDEV monitor call can be used to translate a string to its
corresponding device designator.
DEVST ERROR MNEMONICS:
DEVX1: invalid device designator
DESX1: invalid source/destination designator
DESX2: terminal is not available to this job
(DEVST)
DESX3: JFN is not assigned
IOX11: quota exceeded or disk full
Node: DFIN Previous: DEVST Next: DFOUT Up: Top
DFIN JSYS 234
Inputs a double-precision, floating-point number, rounding if
necessary. Currently this call stores the number in KA10
double-precision floating-point format.
ACCEPTS IN AC1: source designator
RETURNS +1: failure, error code in AC4 and updated string pointer
in AC1, if pertinent.
+2: success, double-precision, floating-point number
(extended format where necessary) in AC2 and AC3 and
updated string pointer in AC1, if pertinent.
DFIN ERROR MNEMONICS:
DESX1: invalid source/destination designator
DESX2: terminal is not available to this job
DESX3: JFN is not assigned
DESX5: file is not open
FLINX1: first character is not blank or numeric
FLINX2: number too small
FLINX3: number too large
FLINX4: invalid format
Node: DFOUT Previous: DFIN Next: DIAG Up: Top
DFOUT JSYS 235
Outputs a double-precision, floating-point number. Currently this
call outputs a number stored in KA10 double-precision, floating-point
format.
ACCEPTS IN AC1: destination designator
(DFOUT)
AC2: a normalized double-precision
AC3: floating-point number in either extended or
non-extended range.
AC4: format control word. (Refer to Section 2.8.1.2.)
RETURNS +1: failure, error code in AC4 and updated string pointer
in AC1, if pertinent.
+2: success, updated string pointer in AC1, if pertinent.
DFOUT ERROR MNEMONICS:
DESX1: invalid source/destination designator
DESX2: terminal is not available to this job
DESX3: JFN is not assigned
DESX5: file is not open
FLOTX1: column overflow in field 1 or 2
FLOTX2: column overflow in field 3
FLOTX3: invalid format specified
IOX11: quota exceeded or disk full
Node: DIAG Previous: DFOUT Next: DIBE Up: Top
DIAG JSYS 530
Reserves a channel and either a single device or all devices attached
to that channel. This call is also used to release the channel and
its devices. When the request is made, no new activity is initiated
on the requested channel, and the monitor waits for current activity
on all devices connected to the channel to complete. When the channel
becomes idle, the process requesting the channel continues running.
The DIAG JSYS can also be used to get and release memory. The get
memory function is used by the system program TGHA for performing its
spare bit substitution.
Reserving or Releasing a Channel and Device(s).
RESTRICTIONS: requires WHEEL, OPERATOR, or MAINTENANCE capabilities
enabled.
ACCEPTS IN AC1: negative length of the argument block in the left
half, and address of the argument block in the right
(DIAG)
half.
RETURNS +1: failure, error code in AC1
+2: success
The available functions are as follows:
Function Symbol Meaning
1 .DGACU Assign the channel and a single device. Force the
device to be released after the time limit
specified.
Argument block:
Word Contents
0 function code
1 device address
2 time limit in milliseconds
2 .DGACH Assign the channel and all devices.
Argument block:
Word Contents
0 function code
1 device address
3 .DGRCH Release the channel and all assigned devices.
Argument block:
Word Contents
0 function code
1 device address
4 .DGSCP Set up the channel program. The data transfer
must be in one page. The user page pointed to by
the channel control word is locked in memory. The
Exec Process Table location corresponding to the
channel is updated with the appropriate physical
address channel control word.
Argument block:
Word Contents
0 function code
1 device address
2 channel control word
(DIAG)
5 .DGRCP Release the channel program. The page pointed to
by the channel control word for the specified
channel is unlocked. This function is not
required before specifying a new channel program.
Argument block:
Word Contents
0 function code
1 device address
6 .DGGCS Return the status of the channel. The argument
block contains the logout area for the channel.
Argument block:
Word Contents
0 function code
1 device address
2-5 4-word channel logout area
100 .DGGEM Get memory (for TGHA).
Argument block:
Word Contents
0 function code
1 first page in user address space
2 first physical memory page
3 number of pages
4 user address of AR/ARX parity trap
routines
Upon successful return, this function accomplishes the following:
1. TOPS-20 has requested that all of the front
ends refrain from accessing common memory.
2. The hardware PI system has been turned off;
no scheduling can occur.
3. The time base and interval timer have been
turned off.
4. All DTE byte transfers have completed.
(DIAG)
5. All RH20 activity has ceased.
6. The designated pages of the process' address
space have been set up to address the
designated physical memory. Note that this is
not the same as your having requested the
pages with PLOCK. With the get memory
function, the data in the physical memory
pages have been retained, and the ownership of
the pages is unchanged.
7. The CST0 entries for each of the designated
physical pages have been saved and set as
follows:
8. The age is set to the present age of the
requesting process.
9. The process use field is set to all ones.
10. The modified bit is set to one.
11. The entire address space of the requesting
process has been locked in memory. (Actually,
only the pages that existed at the time of the
DIAG call are locked. Therefore, the process
must ensure that all of the pages it needs
exist and are private when DIAG is executed.)
12. The monitor has set up proper dispatch if TGHA
specified an AR/ARX trap address.
101 .DGREM Release memory (for TGHA)
Argument block:
Word Contents
0 function code
102 .DGPDL Inform the monitor that a device previously
unknown to it is now available for use (is now
online). For devices interfaced through the DX20
(TX01, TX03, TX05, TU70, TU72).
Argument block:
(DIAG)
Word Contents
0 function code
1 channel number
2 unit number
3 controller number (-1 if no controller)
4 alternate path channel number
5 alternate path unit number (should be same
as primary path unit number)
6 alternate path controller number (-1 if no
controller)
The device address given in some of the argument blocks is a
machine-dependent specification for the channel and device to be
assigned. The devices that can be assigned must be attached to the
RH20 controller and must be mounted by a process with the WHEEL,
OPERATOR, or MAINTENANCE capability enabled. The format of the device
address word is
0 2 3 9 10 23 24 29 30 35
!=======================================================!
! address ! device ! 0 ! unit ! subunit !
! type ! code ! ! ! !
!=======================================================!
DIAG ERROR MNEMONICS:
DIAGX1: invalid function
DIAGX2: device is not assigned
DIAGX3: argument block too small
DIAGX4: invalid device type
DIAGX5: WHEEL, OPERATOR, or MAINTENANCE capability required
DIAGX6: invalid channel command list
DIAGX7: illegal to do I/O across page boundary
DIAGX8: no such device
DIAGX9: unit does not exist
DIAG10: subunit does not exist
DIAG11: Device is already on-line
(DIBE)
Node: DIBE Previous: DIAG Next: DIC Up: Top
DIBE JSYS 212
Dismisses the process until the designated file input buffer is empty.
ACCEPTS IN AC1: file designator
RETURNS +1: always
Returns immediately if the designator is not associated with a
terminal.
The DOBE monitor call can be used to dismiss the process until the
designated file output buffer is empty.
Generates an illegal instruction interrupt on error conditions below.
DIBE ERROR MNEMONICS:
DESX1: invalid source/destination designator
DESX3: JFN is not assigned
DESX5: file is not open
DEVX2: device already assigned to another job
TTYX01: line is not active
Node: DIC Previous: DIBE Next: DIR Up: Top
DIC JSYS 133
Deactivates the specified software interrupt channels. (Refer to
Section 2.5.1.)
ACCEPTS IN AC1: process handle
AC2: 36-bit word
Bit n means deactivate channel n
RETURNS +1: always
Software interrupt requests to deactivated channels are ignored except
for interrupts generated on panic channels. Panic channel interrupts
are passed to the closest superior process that has the specific
channel enabled.
The AIC monitor call is used to activate specified software interrupt
channels.
Generates an illegal instruction interrupt on error conditions below.
(DIC)
DIC ERROR MNEMONICS:
FRKHX1: invalid process handle
FRKHX2: illegal to manipulate a superior process
FRKHX3: invalid use of multiple process handle
FRKHX8: illegal to manipulate an execute-only process
Node: DIR Previous: DIC Next: DIRST Up: Top
DIR JSYS 130
Disables the software interrupt system for a process.
ACCEPTS IN AC1: process handle
RETURNS +1: always
If software interrupt requests are generated while the interrupt
system is disabled, the requests are remembered and take effect when
the interrupt system is reenabled unless an intervening CIS call is
executed. However, interrupts on panic channels will still be
generated even though the system is disabled. In addition, if the
CTRL/C terminal code is assigned to a channel, it will still generate
an interrupt that cannot be disabled with a DIR call. CTRL/C
interrupts can be disabled by deactivating the channel to which the
code is assigned or by the monitor.
The EIR monitor call can be used to enable the software interrupt
system for a process.
Generates an illegal instruction interrupt on error conditions below.
DIR ERROR MNEMONICS:
FRKHX1: invalid process handle
FRKHX2: illegal to manipulate a superior process
FRKHX3: invalid use of multiple process handle
FRKHX8: illegal to manipulate an execute-only process
Node: DIRST Previous: DIR Next: DISMS Up: Top
DIRST JSYS 41
(DIRST)
Translates the specified 36-bit user or directory number to its
corresponding string and writes it to the given destination. When a
user number is given, the string returned is the corresponding user
name without any punctuation. When a directory number is given, the
string returned is the corresponding structure and directory name
including punctuation (i.e., structure:<directory>).
ACCEPTS IN AC1: destination designator
AC2: user or directory number
RETURNS +1: failure, with error code in AC1.
+2: success, string written to destination, updated
string pointer, if pertinent, in AC1
The RCDIR monitor call can be used to translate a directory string to
its corresponding directory number. The RCUSR monitor call can be
used to translate a user name string to its corresponding user number.
DIRST ERROR MNEMONICS:
DESX1: invalid source/destination designator
DESX2: terminal is not available to this job
DESX3: JFN is not assigned
DESX5: file is not open
DELFX6: internal format of directory is incorrect
DIRX1: invalid directory number
DIRX2: insufficient system resources
DIRX3: internal format of directory is incorrect
STRX01: structure is not mounted
IOX11: quota exceeded or disk full
Node: DISMS Previous: DIRST Next: DOBE Up: Top
DISMS JSYS 167
Dismisses this process for the specified amount of time.
ACCEPTS IN AC1: number of milliseconds for which the process is to be
dismissed
RETURNS +1: when the elapsed time is up
(DISMS)
The maximum number of milliseconds that a process can be dismissed is
2^26 milliseconds. If a number is given that is greater than the
maximum, it is ignored and the maximum dismiss time is given. The
time resolution is limited to the scheduling frequency (about 20
milliseconds).
Node: DOBE Previous: DISMS Next: DSKAS Up: Top
DOBE JSYS 104
Dismisses the process until the designated file output buffer is
empty.
ACCEPTS IN AC1: destination designator
RETURNS +1: always
Returns immediately if designator is not associated with a terminal.
The DIBE monitor call can be used to dismiss the process until the
designated file input buffer is empty.
Generates an illegal instruction interrupt on error conditions below.
DOBE ERROR MNEMONICS:
DESX1: invalid source/destination designator
DESX3: JFN is not assigned
DESX5: file is not open
DEVX2: device already assigned to another job
TTYX01: line is not active
Node: DSKAS Previous: DOBE Next: DSKOP Up: Top
DSKAS JSYS 244
Assigns or deassigns specific disk addresses.
RESTRICTIONS: requires WHEEL or OPERATOR capabilities
enabled.
ACCEPTS IN AC1: B0(DA%DEA) deassign the specified address. If the
address is currently assigned, control
returns to the next instruction following
the call (+1 return). If the address was
not previously assigned, a BUGCHK occurs.
(DSKAS)
B1(DA%ASF) assign a free page near the specified
address. Assignment is on the same
cylinder as the specified address, if
possible, or on a nearby cylinder. If the
specified address is 0, a page is assigned
on a cylinder that is at least one-half
free. If the assignment is not possible
because the disk is full, control returns
to the next instruction following the
call.
B2(DA%CNV) convert the specified address according to
the setting of B3(DA%HWA).
B3(DA%HWA) the specified address is a hardware
address. If this bit if off, the
specified address is a software address.
B4(DA%INI) initialize a private copy of the bit
table.
B5(DA%WRT) write the private copy of the bit table to
a new bit table file.
B18-B35 disk address
(DA%ADR)
AC2: device designator of structure. If DA%CNV is on in
AC1, this argument is not required.
RETURNS +1: failure, address already assigned or cannot be
assigned
+2: success, address assigned in AC1
Generates an illegal instruction interrupt on error conditions below.
DSKAS ERROR MNEMONICS:
WHELX1: WHEEL or OPERATOR capability required
Node: DSKOP Previous: DSKAS Next: DTACH Up: Top
DSKOP JSYS 242
Allows the process to reference physical disk addresses when
performing disk transfers. This monitor call requires the process to
have WHEEL, OPERATOR, or MAINTENANCE capability enabled to read and
write data. However, a process with only MAINTENANCE capability
enabled can write data only if it is using physical addresses (.DOPPU)
and writing to a unit that is not part of a mounted structure.
(DSKOP)
RESTRICTIONS: requires WHEEL or OPERATOR
capabilities enabled. Some functions
can be performed with MAINTENANCE
capabilities enabled.
ACCEPTS IN AC1: B0-B1(DOP%AT) field indicating the address type.
For physical channel and unit
addresses, the value of the field is
1(.DOPPU) and the remainder of AC1 is
B2-B6(DOP%CN) channel number
B7-B12(DOP%UN) unit number
B13-B35(DOP%UA) unit address
For a structure and a relative
address, the value of the field is
2(.DOPSR) and the remainder of AC1 is
B2-B10(DOP%SN) structure designator
flag (0 is structure PS:). A
value of -1 means the structure is
indicated by the structure
designator (refer to Section 2.4)
in AC4.
B11-B35(DOP%RA) relative address
Any other values for this field are
illegal.
AC2: control flags in the left half and a count of the
number of words to transfer in the right half. The
control flags are
B11(DOP%IL) inhibit error logging
B12(DOP%IR) inhibit error recovery
B14(DOP%WR) write data to the disk. If this bit is
off, read data from the disk.
B18-B35 word count. Since the transfer cannot
(DOP%CT) cross a page boundary, the count must be
less than or equal to 1000 (octal)
words.
AC3: address in caller's address space from which data is
written or into which data is read.
AC4: device designator of the structure. This word is
used if the value given for DOP%SN is -1.
RETURNS +1: always, AC1 is nonzero if an error occurred or zero
if no error occurred.
If an error occurs and DOP%IL is on in the call, no error logging is
performed. If DOP%IL is off, the standard system error logging is
performed.
If an error occurs and DOP%IR is on in the call, no retries or ECC
corrections, if applicable, are attempted. If DOP%IR is off, the
standard system error recovery procedure is followed.
(DSKOP)
Generates an illegal instruction interrupt on error conditions below.
DSKOP ERROR MNEMONICS:
WHELX1: WHEEL or OPERATOR capability required
DSKOX1: channel number too large
DSKOX2: unit number too large
DSKOX3: invalid structure number
DSKOX4: invalid address type specified
Node: DTACH Previous: DSKOP Next: DTI Up: Top
DTACH JSYS 115
Detaches the controlling terminal from the current job. (The ATACH
call with bit 1 (AT%NAT) of AC2 set can be used to detach a job other
than the current job.) A console-detached entry is appended to the
accounting data file.
RETURNS +1: always
The DTACH call is a no-op if the job is already detached.
The ATACH monitor call is used to attach the controlling terminal to a
specified job.
Node: DTI Previous: DTACH Next: DUMPI Up: Top
DTI JSYS 140
Deassigns a terminal code.
ACCEPTS IN AC1: terminal code; refer to Section 2.5.6
RETURNS +1: always
The DTI call is a no-op if the specified terminal code was not
assigned by the current process.
The ATI monitor call is used to assign a terminal code.
Generates an illegal instuction interrupt on error conditions below.
DTI ERROR MNEMONICS:
(DTI)
TERMX1: invalid terminal code
Node: DUMPI Previous: DTI Next: DUMPO Up: Top
DUMPI JSYS 65
Reads data words into memory in unbuffered data mode. The file must
be open for data mode 17. (Refer to Section 2.4.2.2 for information
about unbuffered magnetic tape I/O.)
ACCEPTS IN AC1: JFN
AC2: B0(DM%NWT) do not wait for completion of requested
operation
B18-B35 address of command list in memory
(DM%PTR)
RETURNS +1: failure, error code in AC1, pointer to offending
command in AC2
+2: success, pointer in AC2 updated to last command
The use of B0(DM%NWT) allows data operations to be double buffered
with a resulting increase in speed. When this bit is on, DUMPI/DUMPO
returns immediately after the request is queued. This allows the
program to overlap computations with I/O transfers. If the second
request is then made, the program is blocked until the first request
is completed. Generally, for a sequence of overlapped DUMPI/DUMPO
calls, return from the Nth call indicates that the Nth-1 request has
completed and that the Nth request is now in progress. This bit is
implemented only for magnetic tape.
The GDSTS call can be used after the transfer is completed to
determine the number of words read.
If an error occurs on the Nth request, the failure return is given on
the Nth+1 call, and the Nth+1 request is ignored. This means that the
program will discover an error on a request only after making the next
request. The next request is ignored to prevent improper operation
and must be reissued after the error has been processed. The GDSTS
call can be executed to determine the cause for the error.
COMMAND LIST FORMAT
Three types of entries may occur in the command list.
1. IOWD n, loc - Causes n words to be transferred from the file
to locations loc through loc+n-1 of the process address
space. The next command is obtained from the location
following the IOWD. For mag-tape files, 1 IOWD word will
read 1 physical tape record. For labeled mag-tape files, the
(DUMPI)
data format must be "U".
The IOWD pseudo-op generates XWD -n,loc-1.
2. XWD 0, y - Causes the next command to be taken from location
y. Referred to as a GOTO word.
3. 0 - Terminates the command list.
DUMPI ERROR MNEMONICS:
DUMPX1: command list error
DUMPX2: JFN is not open in dump mode
DUMPX3: address error (too big or crosses end of memory)
DUMPX4: access error (cannot read or write data in memory)
DUMPX5: no-wait dump mode not supported for this device
DUMPX6: dump mode not supported for this device
DESX1: invalid source/destination designator
DESX2: terminal is not available to this job
DESX3: JFN is not assigned
DESX4: invalid use of terminal designator or string pointer
DESX5: file is not open
IOX1: file is not opened for reading
IOX4: end of file reached
IOX5: device or data error
Node: DUMPO Previous: DUMPI Next: DVCHR Up: Top
DUMPO JSYS 66
Writes data words from memory in unbuffered data mode. The file must
be open for data mode 17. (Refer to Section 2.4.2.2 for information
about unbuffered magnetic tape I/O.)
ACCEPTS IN AC1: JFN
AC2: B0(DM%NWT) do not wait for completion of requested
operation
(DUMPO)
B18-B35 address of command list in memory
(DM%PTR)
RETURNS +1: failure, error code in AC1, pointer to offending
command in AC2
+2: success, pointer in AC2 updated to last command
The use of B0(DM%NWT) allows data operations to be double buffered
with a resulting increase in speed. When this bit is on, DUMPI/DUMPO
returns immediately after the request is queued. This allows the
program to overlap computations with I/O transfers. If the second
request is then made, the program is blocked until the first request
is completed. Generally, for a sequence of overlapped DUMPI/DUMPO
calls, return from the Nth call indicates that the Nth-1 request has
completed and that the Nth request is now in progress. This bit is
implemented only for magnetic tape.
COMMAND LIST FORMAT
Three types of entries may occur in the command list.
1. IOWD n, loc - Causes n words from loc through loc+n-1 to be
transferred from the process address space to the file. The
next command is obtained from the location following the
IOWD. For mag-tape files, 1 IOWD word will write 1 physical
tape record. For labeled mag-tape files, the data format
must be "U".
NOTE
Dump mode output to a labeled tape can override the
block-size limit specified in the GTJFN. If any
write produces a block in excess of the specified
block-size parameter, then the file can only be read
in dump mode.
The IOWD pseudo-op generates XWD -n,loc-1.
2. XWD 0, y - Causes the next command to be taken from location
y. Referred to as a GOTO word.
3. 0 - Terminates the command list.
The GDSTS call can be used after the transfer is completed to
determine the number of words written.
DUMPO ERROR MNEMONICS:
(DUMPO)
DUMPX1: command list error
DUMPX2: JFN is not open in dump mode
DUMPX3: address error (too big or crosses end of memory)
DUMPX4: access error (cannot read or write data in memory)
DUMPX5: no-wait dump mode not supported for this device
DUMPX6: dump mode not supported for this device
DESX1: invalid source/destination designator
DESX2: terminal is not available to this job
DESX3: JFN is not assigned
DESX4: invalid use of terminal designator or string pointer
DESX5: file is not open
IOX2: file is not opened for writing
IOX5: device or data error
IOX11: quota exceeded or disk full
Node: DVCHR Previous: DUMPO Next: EFACT Up: Top
DVCHR JSYS 117
Returns the device characteristics of the specified device.
ACCEPTS IN AC1: JFN or device designator
RETURNS +1: always, with
AC1 containing the device designator (even if a JFN
was given).
AC2 containing the device characteristics word.
AC3 containing the job number to which the device is
assigned in the left half and the unit number in the
right half. If the device is a structure or does not
have units, the right half is -1.
The left half of AC3 contains -1 if the device is not assigned to any
job or -2 if the device allocator has ownership of the device.
Device Characteristics Word
Bit Symbol Meaning
(DVCHR)
0 DV%OUT device can do output
1 DV%IN device can do input
2 DV%DIR device has a directory
3 DV%AS device is assignable with ASND
4 DV%MDD device has multiple directories
Device Characteristics Word (Cont.)
5 DV%AV device is available or assigned to this
job
6 DV%ASN device is assigned by ASND
8 DV%MNT device is mounted
9-17 DV%TYP device type
0 .DVDSK disk
2 .DVMTA magnetic tape
7 .DVLPT line printer
10 .DVCDR card reader
11 .DVFE front-end
pseudo-device
12 .DVTTY terminal
13 .DVPTY pseudo-terminal
15 .DVNUL null device
16 .DVNET ARPA network
20-35 DV%MOD data mode in which device can be opened
B20 DV%M17 dump mode
B27 DV%M10 image mode
B35 DV%M0 normal mode
Generates an illegal instruction interrupt on error conditions below.
DVCHR ERROR MNEMONICS:
DEVX1: invalid device designator
DESX1: invalid source/destination designator
DESX3: JFN is not assigned
DESX4: invalid use of terminal designator or string pointer
Node: EFACT Previous: DVCHR Next: EIR Up: Top
EFACT JSYS 5
Makes an entry in the FACT file. The EFACT monitor call is obsolete
and provided only for existing programs that make entries in the FACT
file. New programs should use the USAGE monitor call to make entries
in the new USAGE file.
RESTRICTIONS: requires WHEEL or OPERATOR capabilities enabled.
ACCEPTS IN AC1: LH: negative size of entry
RH: pointer to beginning of entry (size bits of
entry will be updated by the system from the
(EFACT)
negative size specified)
RETURNS +1: failure, error code in AC1
+2: success
The EFACT call returns successfully without making an entry in the
FACT file if the monitor flag SF%FAC (refer to SMON and TMON calls) is
not set.
The EFACT monitor call can be executed only by the monitor or by a
process that has WHEEL or OPERATOR capability enabled.
EFACT ERROR MNEMONICS:
EFCTX1: WHEEL or OPERATOR capability required
EFCTX2: entry cannot be longer than 64 words
EFCTX3: fatal error when accessing FACT file
Node: EIR Previous: EFACT Next: ENQ Up: Top
EIR JSYS 126
Enables the software interrupt system for a process. (Refer to
Section 2.5.)
ACCEPTS IN AC1: process handle
RETURNS +1: always
The DIR monitor call can be used to disable the software interrupt
system for a process.
Generates an illegal instruction interrupt on error conditions below.
EIR ERROR MNEMONICS:
FRKHX1: invalid process handle
FRKHX2: illegal to manipulate a superior process
FRKHX3: invalid use of multiple process handle
FRKHX8: illegal to manipulate an execute-only process
Node: ENQ Previous: EIR Next: ENQC Up: Top
ENQ JSYS 513
(ENQ)
Requests access to a specific resource by placing a request in the
queue for that resource. This call can be used to request any number
of resources.
Refer to the TOPS-20 Monitor Calls User's Guide for an overview and
description of the Enqueue/Dequeue facility.
RESTRICTIONS: some functions require WHEEL or OPERATOR capabilities
enabled.
ACCEPTS IN AC1: function code
AC2: address of argument block
RETURNS +1: failure, error code in AC1
+2: success
The available functions are as follows:
Code Symbol Meaning
0 .ENQBL Queue the requests and block the process
until all requested locks are acquired. The
error return is taken only if the call is not
correctly specified.
1 .ENQAA Queue the requests and acquire the locks only
if all requested resources are immediately
available. No requests are queued and the
error return is taken if any one of the
resources is not available.
2 .ENQSI Queue the requests. If all requested
resources are immediately available, this
function is identical to the .ENQBL function.
If all resources are not immediately
available, the request is queued and the
error return (ENQX6:) is taken. A software
interrupt will occur when all requested
resources have been given to the process.
3 .ENQMA Modify the access of a previously queued
request. (Refer to EN%SHR below.) The access
of each lock in this request is compared with
the access of each lock in the previously
queued request. If the two accesses are the
same, no action is taken. If the access in
this request is shared and the access in the
previous request is exclusive, the successful
return is taken. If the access in this
request is exclusive and the access in the
previous request is shared, the error return
is taken unless this process is the only user
of the lock. In this case, the successful
return is taken. The error return is also
(ENQ)
taken if
1. Any one of the specified locks does not
have a pending request.
2. Any one of the specified locks is a
pooled resource.
Each lock specified is checked, and the
access is changed for all locks that were
given correctly. If the error return is
taken, the user must execute the ENQC call to
determine the current state of each lock.
The format of the argument block is as follows:
Word Symbol Meaning
0 .ENQLN length of the header and the number of
requested locks in the left half, and length
of argument block in the right half.
1 .ENQID software interrupt channel number in the left
half, and the request ID in the right half.
2 .ENQLV flags and level number in the left half, and
JFN, -1, -2, or -3 in the right half. (See
below.)
3 .ENQUC pointer to a string or a 5B2+33-bit user
code.
4 .ENQRS number of resources in pool in the left half
and number of resources requested in the
right half, or 0 in the left half and a group
number in the right half.
5 .ENQMS address of a resource mask block.
.
.
.
n-4 flags and level number in the left half, and
JFN, -1, -2, or -3 in the right half.
n-3 pointer to a string or a 5B2+33-bit user
code.
n-2 number of resources in pool in the left half
and number of resources requested in the
right half, or 0 in the left half and a group
number in the right half.
n-1 address of a resource mask block.
(ENQ)
The argument block is divided into two logical sections: a header and
individual requests for each desired lock. Words .ENQLN and .ENQID
form the header. Word .ENQLV through word .ENQMS form the individual
request and are repeated for each lock being requested. The words in
the argument block are described in the following paragraphs.
.ENQLN
The length of the header (.ENHLN) is contained in bits 0 through 5.
Currently, the length of the header is two words. (Note that a given
length of zero or one is assumed to be equal to a length of two.) The
number of locks being requested (.ENNLK) is contained in bits 6
through 17, and the length of the argument block (.ENALN) is contained
in bits 18 through 35.
.ENQID
The software interrupt channel specifies the number of the channel on
which to generate an interrupt with the .ENQSI function. The request
ID is an 18-bit user-generated value used to identify the particular
resource. This ID currently is not used by the system but is stored
for future expansion of the facility.
.ENQLV
The following flags are defined:
B0(EN%SHR) Access to this resource is to be shared. If this bit
is not set, access to the resource is to be exclusive.
B1(EN%BLN) Ignore the level number associated with this resource.
Sequencing errors in level numbers will not be
considered fatal, and execution of the call will
continue. If a sequencing error occurs, the successful
return will be taken, and AC1 will contain an error
code indicating the sequencing error that occurred.
B2(EN%NST) Allow ownership of this lock to be nested to any level
within a process. This means that a process can
request this resource again even though it already owns
it. If the process has a request in the resource's
queue or if the process already owns the lock, the
ownership of the lock is nested to a depth one greater
than the current depth. If the process does not have a
request in the resource's queue, the setting of this
bit has no effect, and the execution of the ENQ call
continues. When a process has a nested lock, it must
DEQ the resource as many times as it ENQed it before
the resource becomes available to other processes.
B3(EN%LTL) Allow a long-term lock on this resource. This notifies
the system that this resource will be locked and
unlocked many times in a short period of time. Setting
this bit permits a program to run faster if it is doing
multiple locks and unlocks on the same resource because
(ENQ)
the argument block data is not deleted immediately from
the ENQ/DEQ data base when a DEQ call is executed.
Thus, the time required to re-create the data is
reduced.
B9-B17 Level number associated with this resource.
(EN%LVL)
The request is not queued and the error return is taken if EN%BLN is
not set and
1. A resource with a level number less than or equal to the
highest numbered resource requested so far is specified.
2. The level number of the current request does not match the
level number supplied on previous requests for this resource.
The right half of .ENQLV specifies the type of access desired for the
resource. If a JFN is given, the file associated with the JFN is
subject to the standard access protection of the system. If -1 is
given, the resource can be accessed only by processes of the job. If
-2 is given, the resource can be accessed by any job on the system.
(The process must have ENQ capability enabled to specify -2.) If -3 is
given, the resource can be accessed only by processes that have WHEEL
or OPERATOR capability enabled.
.ENQUC
This word is either a byte pointer to a string or a 33-bit user code,
either of which serves to uniquely identify the resource to all users.
This quantity is the second part of the resource name. (JFN, -1, -2,
or -3 is the first part of the resource name.) The system makes no
association between these identifiers and any physical resource.
The string can be comprised of bytes of any size from 1 to 36 bits in
length and is terminated by a null byte. The byte size desired is
specified by the pointer to the string. The maximum length of the
string (including the terminating null byte) is 50 words long.
.ENQRS
This word is used to allocate multiple resources from a pool of
identical resources. The total number of resources in the pool is a
parameter agreed upon by all users. All requests for the same pooled
resource must agree with the original count or the error return is
taken. The number of resources being requested from the pool must be
greater than zero if a pool exists and must be smaller than or equal
to the number in the pool. If the left half of this word is zero, the
system assumes only one resource of the specific type exists. In this
case, if the right half of this word is positive, it is interpreted as
the number of the group of users who can simultaneously access the
resource.
.ENQMS
(ENQ)
Obtains a single lock representing many specific resources. For
example, a lock can be obtained on a particular data base, and the
specific resources requested can be individual records in that data
base.
This word contains an address of a mask block, consisting of a count
word and a group of mask words. The first word of the mask block
contains a count (in the right half-word) of the number of words in
the block, including the count word. The remaining words each contain
36 mask bits, where each bit represents a specific resource of the
lock. The maximum length of the mask block is 16 words. All requests
for the resources associated with the mask block must specify the same
length for the block or an error return is taken. Also, when a mask
block is specified, the ENQ call must request exclusive access to the
resource and the left half of word .ENQRS of the lock request must be
zero.
The set of resources comprising the lock is a parameter agreed upon by
all users.
A process can obtain exclusive access to all or some of the specific
resources comprising the lock. When a process requires exclusive
access to all of the resources, it executes an ENQ call (for exclusive
access) and does not specify a mask block. A successful return will
be given if there are no other processes that have issued an ENQ call
for that lock. Otherwise, the process blocks until the requested
resources are available.
When a process requires exclusive access to some of the specific
resources comprising the lock, it sets up the mask block and sets the
bits corresponding to the specific resources it wants to lock. The
process then executes an ENQ call for exclusive access. On successful
execution of the ENQ call, the process has an exclusive lock for the
resources represented by the bits on in the mask. The process blocks
if another process owns an exclusive lock on the resource and that
process' ENQ call did not specify a mask block.
Once a mask block has been set up for a set of specific resources,
subsequent requests for a different set of resources will be honored.
The set of resources being requested is considered different if the
bits on in one process' mask block are not any of the same bits on in
another process' mask block. When a subsequent request is given for
resources that are currently locked by a process, the process with the
request blocked until the last of the currently locked resources is
dequeued by the owner of the lock.
A process can dequeue all or part of the original ENQ call request.
When a DEQ call is executed, the bits on in the mask block of the DEQ
call are compared with the bits on in the original ENQ call. The
resources not being dequeued remain locked and must be dequeued by a
subsequent DEQ call. This action allows a process to lock a number of
resources all at once and then to release individual resources as it
finishes with them. However, a process cannot execute subsequent ENQ
calls to request additional resources from those requested in its
original ENQ call.
(ENQ)
ENQ ERROR MNEMONICS:
ENQX1: invalid function
ENQX2: level number too small
ENQX3: request and lock level numbers do not match
ENQX4: number of pool and lock resources do not match
ENQX5: lock already requested
ENQX6: requested locks are not all locked
ENQX8: invalid access change requested
ENQX9: invalid number of blocks specified
ENQX10: invalid argument block length
ENQX11: invalid software interrupt channel number
ENQX12: invalid number of resources requested
ENQX13: indirect or indexed byte pointer not allowed
ENQX14: invalid byte size
ENQX15: ENQ/DEQ capability required
ENQX16: WHEEL or OPERATOR capability required
ENQX17: invalid JFN
ENQX18: quota exceeded
ENQX19: string too long
ENQX20: locked JFN cannot be closed
ENQX22: invalid mask block length
ENQX23: mismatched mask block lengths
DESX8: file is not on disk
Node: ENQC Previous: ENQ Next: EPCAP Up: Top
ENQC JSYS 515
Returns the current status of the given resource and obtains
information about the state of the queues. This monitor call also
(ENQC)
allows privileged processes to manipulate access rights to the queues
and to perform other utility functions on the queue structure.
Refer to the TOPS-20 Monitor Calls User's Guide for an overview and
description of the Enqueue/Dequeue facility.
The ENQC monitor call has two calling sequences, depending on whether
the process is obtaining status information or is modifying the queue
structure.
Obtaining Status Information
RESTRICTIONS: some functions require WHEEL or OPERATOR capabilities
enabled.
ACCEPTS IN AC1: function code (.ENQCS)
AC2: address of argument block
AC3: address of block in which to place status
RETURNS +1: failure, error code in AC1
+2: success
The function .ENQCS returns the status of the specified resources.
The argument block is identical in format to the ENQ and DEQ argument
blocks. (Refer to the ENQ monitor call description.)
The status block has a 3-word entry for each resource specified in the
argument block. This entry reflects the current status of the
resource and has the following format:
0 17 18 35
!=======================================================!
! flag bits indicating status of resource !
!=======================================================!
! 36-bit time stamp !
!=======================================================!
! # of processes with lock ! request ID !
!=======================================================!
The following flag bits are currently defined.
B0(EN%QCE) An error has occurred in the corresponding resource
request and bits 18-35 contain an appropriate error
code.
B1(EN%QCO) This process owns the lock.
B2(EN%QCQ) This process is in the queue waiting for this
resource. This bit is set if B1(EN%QCO) is set
because a request remains in the queue until a DEQ
(ENQC)
call is given.
B3(EN%QCX) The lock has been allocated for exclusive access.
B4(EN%QCB) This process is in the queue waiting for exclusive
access to the resource. This bit is off if B2(EN%QCQ)
is off.
B9-B17 The level number of the resource.
(EN%LVL)
B18-B35 Job number of the owner of the lock. For locks
(EN%JOB) with shared access, this value will be the job number
of one of the sharers. However, this value will be
the current job's number if the current job is one of
the sharers. If the lock is not owned, the value is
-1. If B0(EN%QCE) is on, this field contains the
appropriate error code.
The time stamp indicates the last time a process was given access to
the resource. The time is in the universal date-time standard. If no
process currently has access to the resource, the word is zero.
The number returned in the left half of the third word indicates the
number of processes that currently have the resource locked for either
exclusive access or shared access.
The request ID is either the request ID of the current process if that
process is in the queue or the request ID of the owner of the lock.
Modifying the Queue Structure
ACCEPTS IN AC1: function code
AC2: address of argument block
RETURNS +1: failure, error code in AC1
+2: success
The available functions, along with their argument block formats, are
as follows:
Function Argument Block Meaning
.ENQCG One word containing Return the ENQ/DEQ quota for
a job number in the the specified job. The quota
right half. The left is returned in AC1.
half is ignored.
.ENQCC One word containing Change the ENQ/DEQ quota for
the new quota in the the specified job. The process
left half and a job executing the call must have
number in the right WHEEL capability enabled or an
half. error code is returned.
(ENQC)
.ENQCD A block of n words. Dump the ENQ/DEQ locks and
The first word is the queue entries into the
length of the block (n). argument block. The process
Remaining words contain executing the call must have
the returned WHEEL capability enabled or an
data. (See below.) error code is returned.
The data returned in the argument block is data concerning both the
ENQ/DEQ locks and the queues. The data concerning the locks is in a
4-word block of the following format:
0 8 9 17 18 35
!=======================================================!
.ENQDF ! flags !level number ! OFN, 40000+job#, -2, or -3!
!=======================================================!
.ENQDR ! total resources in pool ! # of resources remaining !
!=======================================================!
.ENQDT ! time stamp of last request locked !
!=======================================================!
.ENQDC ! user code of lock or beginning of string !
!=======================================================!
If there are no pooled resources, word .ENQDR has the format:
0 17 18 35
!=======================================================!
.ENQDR ! 0 ! group number !
!=======================================================!
The data concerning the queues is in a 2-word block of the following
format:
0 8 9 17 18 35
!=======================================================!
.ENQDF ! flags !software chan! job # creator queue entry !
!=======================================================!
.ENQDI !group # or number requested! request ID !
!=======================================================!
The flags returned in the first word of each block are as follows:
B0(EN%QCL) This block concerns data about the locks. If this bit
is off, the block concerns data about the queues.
B1(EN%QCO) This process owns the lock.
B2(EN%QCT) This lock contains a text string.
B3(EN%QCX) This lock is for exclusive access.
(ENQC)
B4(EN%QCB) This process is blocked until exclusive access is
available.
ENQC ERROR MNEMONICS:
ENQX1: invalid function
ENQX2: level number too small
ENQX3: request and lock level numbers do not match
ENQX4: number of pool and lock resources do not match
ENQX5: lock already requested
ENQX6: requested locks are not all locked
ENQX7: no ENQ on this lock
ENQX8: invalid access change requested
ENQX9: invalid number of blocks specified
ENQX10: invalid argument block length
ENQX11: invalid software interrupt channel number
ENQX12: invalid number of resources requested
ENQX13: indirect or indexed byte pointer not allowed
ENQX14: invalid byte size
ENQX15: ENQ/DEQ capability required
ENQX16: WHEEL or OPERATOR capability required
ENQX17: invalid JFN
ENQX18: quota exceeded
ENQX19: string too long
ENQX20: locked JFN cannot be closed
ENQX21: job is not logged in
DESX8: file is not on disk
Node: EPCAP Previous: ENQC Next: ERSTR Up: Top
EPCAP JSYS 151
(EPCAP)
Enables the capabilities for the specified process. (Refer to Section
2.6.1 for a description of the capability word.)
ACCEPTS IN AC1: process handle
AC2: capabilities possible for the specified process
AC3: capabilities to enable for the specified process
RETURNS +1: always
The capabilities in bits 0-8 and bits 18-35 of AC2 are matched with
the corresponding capabilities of the process executing the call. If
the executing process does not have the capability available, it
cannot be enabled for the specified process (i.e., an AND operation is
performed).
The contents of AC2 are ignored if the process handle in AC1 is for
the current process.
The RPCAP monitor call can be used to obtain the capabilities of a
process.
Generates an illegal instruction interrupt on error conditions below.
EPCAP ERROR MNEMONICS:
FRKHX1: invalid process handle
FRKHX2: illegal to manipulate a superior process
Node: ERSTR Previous: EPCAP Next: ESOUT Up: Top
ERSTR JSYS 11
Translates a TOPS-20 error number to its corresponding text string and
writes the string to the specified destination. This error number is
the one returned in an AC (usually in AC1) on a JSYS error and is
associated with a unique error mnemonic and text string. The error
numbers begin at 600010 and are defined in the system file MONSYM.MAC.
(Refer to Appendix A for the list of error numbers, mnemonics, and
text strings.)
ACCEPTS IN AC1: destination designator
AC2: LH: process handle
RH: error number, or -1 for the most recent error
in the specified process. If an error number is
specified, .FHSLF should be specified in AC1.
AC3: LH: a negative count of the maximum number of bytes
in the string to be transferred, or 0 for no
(ERSTR)
limit
RH: 0
RETURNS +1: failure, undefined error number
+2: failure, string size out of bounds or invalid
destination designator
+3: success
Note that if an error code (i.e. not -1) is given in the right half
of AC2, then the fork handle in the left half of AC2 has no
significance to the JSYS. (It will return an error, however, if the
fork handle is not a legitimate handle.)
Generates an illegal instruction interrupt on error conditions below.
ERSTR ERROR MNEMONICS:
DESX1: invalid source/destination designator
FRKHX1: invalid process handle
IOX11: quota exceeded or disk full
Node: ESOUT Previous: ERSTR Next: FFFFP Up: Top
ESOUT JSYS 313
Outputs an error string. This monitor call is used for reporting an
error in the input from the primary input stream in order to cause
re-synchronization of the input transaction. This mechanism is
convenient for communication with a user who made a typing error and
may have continued to type ahead. It also standardizes the format of
error messages.
ACCEPTS IN AC1: byte pointer to a string in the caller's address
space. The string is terminated with a null
character.
RETURNS +1: always, updated string pointer in AC1
The ESOUT call waits for the primary output buffer to empty and then
outputs a carriage return, line feed, and question mark to the primary
output designator. Next it clears the primary input buffer and
outputs the error string to the primary output designator.
Can cause several software interrupts or process terminations on
certain file conditions. (Refer to bit OF%HER of the OPENF call
description.)
(FFFFP)
Node: FFFFP Previous: ESOUT Next: FFORK Up: Top
FFFFP JSYS 31
Finds the first free page in the specified file. A free page is one
that is marked as not being in use. The FFFFP call is useful for
finding a nonused page in a file before a PMAP call is executed that
writes into that page.
ACCEPTS IN AC1: starting page number in left half, JFN in right half.
RETURNS +1: always, with the JFN in the left half of AC1 and the
page number in the right half of AC1, or a fullword
-1 in AC1 if there is no free page.
Generates an illegal instruction interrupt on error conditions below.
FFFFP ERROR MNEMONICS:
DESX1: invalid source/destination designator
DESX3: JFN is not assigned
DESX4: illegal use of terminal designator or string pointer
DESX5: file is not open
Node: FFORK Previous: FFFFP Next: FFUFP Up: Top
FFORK JSYS 154
Freezes one or more processes.
ACCEPTS IN AC1: process handle
RETURNS +1: always
This suspends the processes (as soon as they are stoppable from the
monitor's point of view) in such a way that they can be continued at
the place they were suspended. However, they do not have to be
continued; they could be killed.
The FFORK call is a no-op if the referenced process is already frozen.
The RFORK monitor call can be used to resume one or more processes.
Generates an illegal instruction interrupt on error conditions below.
FFORK ERROR MNEMONICS:
FRKHX1: invalid process handle
FRKHX2: illegal to manipulate a superior process
(FFORK)
FRKHX3: invalid use of multiple process handle
Node: FFUFP Previous: FFORK Next: FLHST Up: Top
FFUFP JSYS 211
Finds the first used page of the file at or beyond the specified page
number.
ACCEPTS IN AC1: JFN in the left half, and the starting page number in
the right half
RETURNS +1: failure, error code in AC1
+2: success, page number in the right half of AC1. The
left half of AC1 is unchanged.
FFUFP ERROR MNEMONICS:
DESX1: invalid source/destination designator
DESX3: JFN is not assigned
DESX4: illegal use of terminal designator or string pointer
DESX7: JFN cannot refer to output wildcard designators
FFUFX1: file is not open
FFUFX2: file is not on multiple-directory device
FFUFX3: no used page found
Node: FLHST Previous: FFUFP Next: FLIN Up: Top
FLHST JSYS 277
"Flushes" an ARPANET host. Causes the NCP tables containing that
host's status information to be purged of all information regarding
previous or partially terminated connections between the sending and
receiving hosts of the connection. All connections to the flushed
host are closed.
RESTRICTIONS: for ARPANET systems only. Requires OPERATOR, WHEEL,
or NET WIZARD capabilities enabled.
ACCEPTS IN AC1: number of host to be flushed
RETURNS +1: always
(FLIN)
Node: FLIN Previous: FLHST Next: FLOUT Up: Top
FLIN JSYS 232
Inputs a floating-point number from the specified source. This call
ignores leading spaces and terminates on the first character that
cannot be part of a floating point number. If that character is a
carriage return followed by a line feed, the line feed is also input.
ACCEPTS IN AC1: source designator
RETURNS +1: failure, error code in AC3 and updated string pointer
in AC1, if pertinent
+2: success, single-precision, floating-point number in
AC2 and updated string pointer in AC1, if pertinent
FLIN ERROR MNEMONICS:
DESX1: invalid source/destination designator
DESX2: terminal is not available to this job
DESX3: JFN is not assigned
DESX5: file is not open
FLINX1: first character is not blank or numeric
FLINX2: number too small
FLINX3: number too large
FLINX4: invalid format
Node: FLOUT Previous: FLIN Next: GACCT Up: Top
FLOUT JSYS 233
Outputs a floating-point number to the specified destination.
ACCEPTS IN AC1: destination designator
AC2: normalized, single-precision, floating-point number
AC3: format control word. (Refer to Section 2.8.1.2.)
RETURNS +1: failure, error code in AC3 and updated string pointer
in AC1, if pertinent
+2: success, updated string pointer in AC1, if pertinent
FLOUT ERROR MNEMONICS:
(FLOUT)
DESX1: invalid source/destination designator
DESX2: terminal is not available to this job
DESX3: JFN is not assigned
DESX4: file is not open
FLOTX1: column overflow in field 1 or 2
FLOTX2: column overflow in field 3
FLOTX3: invalid format specified
IOX11: quota exceeded or disk full
Node: GACCT Previous: FLOUT Next: GACTF Up: Top
GACCT JSYS 546
Returns the current account for the specified job.
RESTRICTIONS: some functions require Confidential Information
Access, WHEEL, or OPERATOR capabilities enabled.
ACCEPTS IN AC1: job number, or -1 for current job
AC2: byte pointer to string where alphanumeric account
designator (if any) is to be stored
RETURNS +1: always, with updated pointer to account string in AC2
The GACCT monitor call requires the process to have Confidential
Information Access, WHEEL, or OPERATOR capability enabled if the
specified job number is not for the current job.
The CACCT monitor call can be used to change the account for the
current job.
Generates an illegal instruction interrupt on error conditions below.
GACCT ERROR MNEMONICS:
GACCX1: invalid job number
GACCX2: no such job
GACCX3: Confidential Information Access capability required
(GACTF)
Node: GACTF Previous: GACCT Next: GCVEC Up: Top
GACTF JSYS 37
Returns the account designator to which the specified file is being
charged.
ACCEPTS IN AC1: JFN
AC2: byte pointer to string in caller's address space
where account string (if any) is to be stored
RETURNS +1: failure, error code in AC1
+2: success, account string returned, updated string
pointer in AC2
+3: success, 5B2+account number returned in AC2
The SACTF monitor call can be used to set the account designator to
which the file is to be charged.
GACTF ERROR MNEMONICS:
DESX1: invalid source/destination designator
DESX2: terminal is not available to this job
DESX3: JFN is not assigned
DESX4: invalid use of terminal designator or string pointer
DESX7: JFN cannot refer to output wildcard designators
GACTX1: file is not on multiple-directory device
GACTX2: file expunged
GACTX3: internal format of directory is incorrect
Node: GCVEC Previous: GACTF Next: GDSKC Up: Top
GCVEC JSYS 300
Returns the entry vector and the UUO locations for the compatibility
package.
ACCEPTS IN AC1: process handle
RETURNS +1: always, entry vector length in the left half and
entry vector address in the right half of AC2, and
UUO location in the left half and PC location in the
right half of AC3.
(GCVEC)
If use of the compatibility package has been disabled, AC2 contains -1
on return. If the compatibility package is not available, AC2 and AC3
contain 0 on return.
The SCVEC monitor call can be used to set the entry vector for the
compatibility package.
GCVEC ERROR MNEMONICS:
FRKHX1: invalid process handle
FRKHX2: illegal to manipulate a superior process
FRKHX3: invalid use of multiple process handle
Node: GDSKC Previous: GCVEC Next: GDSTS Up: Top
GDSKC JSYS 214
Returns information on the given structure's disk usage and
availability. This call is useful in determining storage usage.
ACCEPTS IN AC1: device designator, must be a designator for a
structure. If the generic designator DSK: is given,
the connected structure is assumed.
RETURNS +1: always, number of pages in use in AC1, and number of
pages not in use in AC2.
GDSKC ERROR MNEMONICS:
DEVX1: invalid device designator
Node: GDSTS Previous: GDSKC Next: GDVEC Up: Top
GDSTS JSYS 145
Returns the status of a device for user I/O. (Refer to Section 2.4
for the descriptions of the status bits.) This call requires that the
device be opened.
Also, this call will not return the status of a device for monitor
I/O. For example, if GDSTS is executed after a tape mark is written
(a monitor I/O operation) the GDSTS call will return the status of the
last user record written.
ACCEPTS IN AC1: JFN
RETURNS +1: always, device-dependent status bits in AC2, and
(GDSTS)
device-dependent information in AC3. For magnetic
tape, AC3 contains the positive count of number of
hardware bytes actually transferred in the left half
and zero in the right half. For the line printer,
AC3 contains the last value of the page counter
register, or -1 if there is no page counter register.
For ARPANET, the call/return sequence is:
ACCEPTS IN AC1: JFN
RETURNS +1: always, for network connection-files, the values
returned are:
AC2: connection state (octal values 01 thru 16) in bits 0
thru 3
AC3: foreign host number (octal)
AC4: foreign socket number (octal)
The GDSTS call is a no-op for devices without device-dependent status
bits.
The SDSTS monitor call can be used to set the status bits for a
particular device.
Generates an illegal instruction interrupt on error conditions below.
GDSTS ERROR MNEMONICS:
DESX1: invalid source/destination designator
DESX2: terminal is not available to this job
DESX3: JFN is not assigned
DESX4: invalid use of terminal designator or string pointer
DESX5: file is not open
Node: GDVEC Previous: GDSTS Next: GET Up: Top
GDVEC JSYS 542
Returns the entry vector for the Record Management System (RMS).
ACCEPTS IN AC1: process handle
RETURNS +1: always, entry vector length in the left half and the
entry vector address in the right half of AC2.
(GDVEC)
The SDVEC monitor call can be used to set the entry vector for RMS.
Generates an illegal instruction interrupt on error conditions below.
GDVEC ERROR MNEMONICS:
ILINS5: RMS facility is not available
Node: GET Previous: GDVEC Next: GETAB Up: Top
GET JSYS 200
Gets a save file, copying or mapping it into the process as
appropriate, and updates the process' entry vector from the file.
This call can be executed for either sharable or nonsharable save
files that were created with the SSAVE or SAVE monitor call,
respectively. The file must not be open.
ACCEPTS IN AC1: process handle in left half, and flag bits and a JFN
in right half.
AC2: lowest process page number in left half, and highest
process page number in right half. This controls the
parts of memory that are loaded when GT%ADR is on.
RETURNS +1: always
The defined flag bits in AC1 are as follows:
Bit Symbol Meaning
19 GT%ADR Use the memory address limits given in AC2.
If this bit is off, all existing pages of the
file (according to its directory) are mapped.
20 GT%PRL Preload the pages being mapped (i.e., move
the pages immediately.) If this bit is off,
the pages are read in from the disk when they
are referenced.
21 GT%NOV Do not overlay existing pages and do return
an error. If this bit is off, existing pages
will be overlaid.
22 GT%FL2 Read additional flag bits specified in AC3
(reserved for future development).
The JFN is given in bits 24 through 35 of AC1.
The following table demonstrates how mapping occurs when different
page numbers are supplied in AC2. A dash indicates that a particlar
(GET)
save file page was not mapped into the process. Also, note that page
0 of the save file (the directory page) is never mapped.
AC2 File Process
Contents Page Page
0,,4 0 -
1 0
2 1
3 2
4 3
5 4
2,,4 0 -
1 -
2 -
3 2
4 3
5 4
When the GET call is executed for a sharable save file, pages from the
file are mapped into pages in the process, and the previous contents
of the process' page are overwritten. If the file contains data for
only a portion of the process' page, the remainder of the page is
zeroed. Pages of the process not used by the file are unchanged.
When the GET call is executed for a nonsharable save file, individual
words of the file are written into the process. Since these files
usually do not have words containing all zeros, a GET call executed
for a nonsharable file never clears memory.
The GET call never loads the accumulators.
Can cause several software interrupts or process terminations on
certain file conditions.
A GET call performed on an execute-only process is illegal unless the
process is .FHSLF. If the JFN specified in the GET call refers to a
file for which the user only has execute-only access, then the process
specified must be a virgin process.
(GET)
Generates an illegal instruction interrupt on error conditions below.
GET ERROR MNEMONICS:
FRKHX1: invalid process handle
FRKHX2: illegal to manipulate a superior process
FRKHX3: invalid use of multiple process handle
FRKHX8: illegal to manipulate an execute-only process
GETX1: invalid save file format
GETX2: system Special Pages Table full
GETX3: illegal to overlay existing pages
SSAVX1: illegal to save files on this device
OPNX2: file does not exist
All file errors can occur.
Node: GETAB Previous: GET Next: GETER Up: Top
GETAB JSYS 10
Returns a word from the specified system table. (Refer to Section
2.3.2.)
ACCEPTS IN AC1: index into table in the left half, and table number
in the right half
RETURNS +1: failure, error code in AC1
+2: success, 36-bit word from the specified table in AC1
If -1 is given as the index, this call returns the negative of the
length of the specified table.
The table number can be obtained with the SYSGT call. However, the
recommended procedure is to use the symbol definition from the MONSYM
file for the table number. (Refer to Appendix A for the system table
definitions.)
The GETAB monitor call requires the process to have GETAB capability
available, but not enabled (SC%GTB in the process capability word).
Note: The following tables are not a complete list of all GETAB
tables. These are ones used for the Ethernet and are not otherwise
readily available
.PUPPA==:62 ; PUP PARAMETER TABLE
.PUPRO==:63 ; HOST NUMBER AND ROUTING TABLE
.PUPLS==:64 ; LOCAL SOCKET NUMBERS,
.PUPLN==:65 ; LOCAL NET/HOST NUMBERS, BSP LINKAGE
.PUPFP==:66 ; FOREIGN PORTS
.PUPSW==:67 ; PUP STATUS WORD
.PUPBU==:70 ; STORAGE REGION FOR PUP DATA
.PUSTA==:71 ; STATISTCS
.PUPBG==:72 ; PUP BUG COUNT HASH TABLE
.NVTPU==:73 ; PUP NVT INFO (TTYPUP WORD IN DYNAMIC DATA)
GETAB ERROR MNEMONICS:
GTABX1: invalid table number
GTABX2: invalid table index
GTABX3: GETAB privileges required
Node: GETER Previous: GETAB Next: GETJI Up: Top
GETER JSYS 12
(GETER)
Returns the most recent error condition encountered in a process. The
most recent error is always saved in the Process Storage Block.
ACCEPTS IN AC1: process handle
RETURNS +1: always, process handle in left half of AC2 and most
recent error condition in right half of AC2.
The SETER monitor call can be used to set the last error condition
encountered in a process.
GETER ERROR MNEMONICS:
LSTRX1: process has not encountered any errors
Node: GETJI Previous: GETER Next: GETNM Up: Top
GETJI JSYS 507
Returns information for the specified job.
ACCEPTS IN AC1: job number, or -1 for current job, or 400000+TTY
number
AC2: negative of the length of the block in which to store
the information in the left half, and the beginning
address of the block in the right half
AC3: word number (offset) of first entry desired from job
information table
RETURNS +1: failure, error code in AC1
+2: success, with updated pointer in AC2 and requested
entries stored in specified block
When a terminal designator is given in AC1, the information returned
is for the job running on that terminal.
The system begins copying the entries from the job information table,
starting with the offset given in AC3, into the address specified in
the right half of AC2. The number of entries copied is minus the
number given in the left half of AC2 or is the number remaining in the
table, whichever is smaller. Because AC2 is updated on a successful
return, it cannot be used for the returned data.
The format of the job information table is as follows:
Word Symbol Meaning
0 .JIJNO Job number
1 .JITNO Job's terminal number (-1 means the job is
(GETJI)
detached)
2 .JIUNO Job's user number
3 .JIDNO Job's connected directory number
4 .JISNM Subsystem name (SIXBIT)
5 .JIPNM Program name (SIXBIT)
6 .JIRT Run time
7 .JICPJ Controlling PTY job number (-1 means the job
is not controlled by a PTY)
10 .JIRTL Run time limit (as set by the TIMER call)
A zero means no time limit is in effect.
11 .JIBAT Job is controlled by Batch, if -1 (as set by
the MTOPR call)
12 .JIDEN Default for magnetic tape density (as set by
the SETJB call)
13 .JIPAR Default for magnetic tape parity (as set by
the SETJB call)
14 .JIDM Default for magnetic tape data mode (as set
by the SETJB call)
15 .JIRS Default number for magnetic tape record size
in bytes (as set by the SETJB call)
16 .JIDFS Deferred spooling in effect, if 1 (as set by
the SETJB call)
17 .JILNO Job's logged-in directory number
20 .JISRM Byte pointer to area to receive job's session
remark. This pointer is supplied by the user
before issuing the GETJI call.
21 .JILLN Job's last login date and time
22 .JISRT Job CPU time at start of last session. To
compute CPU time for this session, subtract
.JISRT value from current job CPU time
(.JIRT).
23 .JISCT Console time at start of last session. To
compute the console time for this session,
subtract .JISCT value from current console
time (obtainable with RUNTM monitor call).
24 .JIT20 Indicates if job is at EXEC level or program
level. (-1 = EXEC, 0 = program)
25 .JISTM Returns time when job was created (when
CTRL/C was performed). -1 is returned if the
system time and date were not set when the
job started.
GETJI ERROR MNEMONICS:
GTJIX1: invalid index
GTJIX2: invalid terminal line number
GTJIX3: invalid job number
GTJIX4: no such job
(GETNM)
Node: GETNM Previous: GETJI Next: GETOK% Up: Top
GETNM JSYS 177
Returns the name of the program currently being used by the job. This
name will have been declared previously with the SETNM or SETSN
monitor call.
RETURNS +1: always, SIXBIT name of program in AC1
Node: GETOK% Previous: GETNM Next: GEVEC Up: Top
GETOK% JSYS 574
Requests approval for the specified system resource from the
installation's access-control program.
ACCEPTS IN AC1: function code
AC2: address of argument block (if required)
AC3: length of the argument block (the maximum permissable
length is specified by symbol .GOKMC)
AC4: requested for job
RETURNS +1: always, 0 or 1B18 set to zero in first word of status
block if access granted
1B18 set to one + error number in first word of
status block if request denied
Function Codes:
Code Symbol Meaning
(GETOK%)
1 .GOASD Assign a device
Argument block (user specified):
Word Symbol Contents
0 .GEERB Error block address
1 .GEADD Device designator (returned
by STDEV JSYS)
2 .GOCAP Enable capabilities (right half privileges
only)
Argument block (user specified):
Word Symbol Contents
0 .GEERB Status block address
1 .GENCP New capability word
3 .GOCJB Allow CRJOB JSYS to be executed
Argument block (user specified):
Word Symbol Contents
0 .GEERB Status block address
4 .GOLOG Allow LOGIN
Argument block (user specified):
Word Symbol Contents
0 .GEERB Status block address
1 .GELUN User number
5 .GOCFK Allow CFORK (only done after Nth fork)
Argument block (user specified):
Word Symbol Contents
0 .GEERB Status block address
1 .GEFCT Number of forks already in
use by job
6 .GOTBR Set terminal baud rate
Argument block (user specified):
Word Symbol Contents
0 .GEERB Status block address
1 .GELIN Line number
(GETOK%)
2 .GESPD Line speed
7 .GOLGO Allow logout when the directory is over quota
Argument block (user specified):
Word Symbol Contents
0 .GEERB Status block address
1 .GEUSD Number of pages used
2 .GEQUO Quota
3 .GERLG Job requesting logout or -1
for this job
10 .GOENQ Allow setting of ENQ quota
Argument block (user specified):
Word Symbol Contents
0 .GEERB Status block address
1 .GEEQU Desired quota
2 .GEEUN Job number request is for or
-1 for this job
11 .GOCRD Allow directory creation
Argument block (user specified):
Word Symbol Contents
0 .GEERB Status block address
12 .GOSMT Allow MOUNT of structure
Must be given once to increment the mount
count and once to decrement the mount count.
Argument block (user specified):
Word Symbol Contents
0 .GEERB Status block address
1 .GESDE Device designator (returned
by STDEV JSYS)
13 .GOMDD Allow entry to MDDT
Argument block (user specified):
Word Symbol Contents
0 .GEERB Status block address
14 .GOCLS Verify scheduler class assignment for a job
(GETOK%)
Argument block (user specified):
Word Symbol Contents
0 .GEERB Status block address
1 .GEJOB Job number
2 .GECLS Class desired
15 .GLCL0 Set scheduler class at login
Argument block (user specified):
Word Symbol Contents
0 .GEERB Status block address
1 .GEJOB Job
2 .GECLS Class desired
16 .GOMTA MT: access request
Argument block (user specified):
Word Symbol Contents
0 .GEERB Status block address
1 .GEACC Access code from HDR1 label
2 .GEUSN User number
3 .GEUNT MT: unit number
4 .GEACD Desired access bits
5 .GELTP Label type
400000+n Customer reserved functions
Status block format (returned):
Word 0: 1B18 + Error number if access denied
or zero if access granted
Note that some access-control programs may
return a value in word 0 even if access is
granted. In that case, 1B18 set to zero
indicates access was granted.
Word 1: Byte pointer (optional, depending on the
particular access-control program)
Word 2: Byte count (optional, depending on the
particular access-control program)
The format of the status block for user-defined functions will depend
on the design of the particular access-control program.
Generates an illegal instruction interrupt on error conditions below.
(GETOK%)
GETOK% ERROR MNEMONICS:
ARGX04: Argument block too small
ARGX05: Argument block too long
MONX01: Insufficient system resources
GOKER1: Illegal function
GOKER2: Request denied by Access Control Facility
GOKER3: Access control job already running
Node: GEVEC Previous: GETOK% Next: GFRKH Up: Top
GEVEC JSYS 205
Returns the entry vector of the specified process. (Refer to Section
2.7.3.)
ACCEPTS IN AC1: process handle
RETURNS +1: always, specified process' entry vector word in AC2
The SEVEC monitor call can be used to set the process' entry vector.
Generates an illegal instruction interrupt on error conditions below.
GEVEC ERROR MNEMONICS:
FRKHX1: invalid process handle
FRKHX2: illegal to manipulate a superior process
FRKHX3: invalid use of multiple process handle
Node: GFRKH Previous: GEVEC Next: GFRKS Up: Top
GFRKH JSYS 164
Gets a handle on a process that currently is not known to the caller
but is known to another process. The handle returned can then be used
by the caller to refer to the desired process.
ACCEPTS IN AC1: process handle of the process that knows about the
desired process and that currently has a handle on
it.
AC2: process handle used by the process in AC1 to refer to
the desired process. This handle must be a relative
handle (i.e., in the range 400000 to 400777) and must
refer to an existing process.
(GFRKH)
RETURNS +1: failure, with error code in AC1.
+2: success, with a handle in AC1 that is usable by the
caller to refer to the desired process. This handle
is not the same as the one given in AC2 (i.e., is
different from the one used by the process in AC1 to
refer to the desired process).
Generates an illegal instruction interrupt on error conditions below.
GFRKH ERROR MNEMONICS:
FRKHX1: invalid process handle
FRKHX2: illegal to manipulate a superior process
FRKHX3: invalid use of multiple process handle
FRKHX6: all relative process handles in use
GFRKX1: invalid process handle
Node: GFRKS Previous: GFRKH Next: GFUST Up: Top
GFRKS JSYS 166
Returns the process structure of the current job from a given process
downward.
ACCEPTS IN AC1: process handle of the starting point
AC2: B0(GF%GFH) return relative process handles for each
process
B1(GF%GFS) return status for each process
AC3: negative of the word count of the block in which to
store the structure in the left half, and the address
of the first word of the block in the right half
RETURNS +1: failure, error code in AC1
+2: success, all process handles are returned
The handle of the current process is always returned as .FHSLF
regardless of the setting of GF%GFH. Any user can specify a process
handle of .FHTOP (i.e., start with the top level process). However,
the user must have WHEEL or OPERATOR capability enabled to specify
.FHTOP and set GF%GFH; otherwise, the setting of GF%GFH is ignored.
Table format
(GFRKS)
**********************************************
* * *
3 words * parallel * inferior *
per entry * pointer * pointer *
* * *
**********************************************
* * *
* superior * process handle *
* pointer * or 0 if GF%GFH *
* * was off, or when no *
* * more process handles *
* * are left for the *
* * process *
* * *
**********************************************
* *
This word is * status word *
-1 if GF%GFS * *
is off. * *
**********************************************
NOTE
Pointers in table are memory addresses
of other table entries, or 0 if no such
structure.
The execution of the GFRKS call will be terminated before the entire
structure has been returned if either all handles are in use or the
block in which to store the structure is too small. If this happens,
as much of the structure as possible is returned before an error code
is generated.
Generates an illegal instruction interrupt on error conditions below.
GFRKS ERROR MNEMONICS:
FRKHX1: invalid process handle
FRKHX2: illegal to manipulate a superior process
FRKHX3: invalid use of multiple process handle
FRKHX6: all relative process handles in use
GFKSX1: area too small to hold process structure
Node: GFUST Previous: GFRKS Next: GIVOK% Up: Top
GFUST JSYS 550
(GFUST)
Returns the name of either the author of the file or the user who last
wrote to the file.
ACCEPTS IN AC1: function code in the left half, and JFN of the file
in the right half
AC2: pointer to the string in which to store the name
RETURNS +1: always, with an updated string pointer in AC2
The defined functions are as follows:
Code Symbol Meaning
0 .GFAUT Return the name of the author of the file.
1 .GFLWR Return the name of the user who last wrote to the
file.
The SFUST monitor call can be used to set the name of either the
author of the file or the user who last wrote to the file.
Generates an illegal instruction interrupt on error conditions below.
GFUST ERROR MNEMONICS:
GFUSX1: invalid function
GFUSX2: insufficient system resources
GFUSX3: file expunged
GFUSX4: internal format of directory is incorrect
DESX1: invalid source/destination designator
DESX2: terminal is not available to this job
DESX3: JFN is not assigned
DESX4: invalid use of terminal designator or string pointer
DESX5: file is not open
DESX7: JFN cannot refer to output wildcard designators
DESX8: file is not on disk
DESX10: structure is dismounted
DELFX6: internal format of directory is incorrect
DIRX2: insufficient system resources
DIRX3: internal format of directory is incorrect
(GIVOK%)
Node: GIVOK% Previous: GFUST Next: GJINF Up: Top
GIVOK% JSYS 576
Allows a privileged access-control program (written by the
installation) to allow or disallow a user program's access to a
specified system resource.
RESTRICTIONS: Requires enabled WHEEL or OPERATOR capability.
ACCEPTS IN AC1: Request number (from RCVOK% message)
AC2: 0 or 1B18 set to zero = request allowed
1B18 + error number = request denied
AC3: pointer to ASCIZ string (maximum of 80 characters) or
0. This string is an error message or information
message to be returned to the user.
RETURNS +1: always
Returns an illegal instruction interrupt on error conditions below.
GIVOK% ERROR MNEMONICS:
CAPX1: wheel or operator capability required
GOKER3: Access control job already running
Node: GJINF Previous: GIVOK% Next: GNJFN Up: Top
GJINF JSYS 13
Returns information pertaining to the current job.
RETURNS +1: always, with
AC1 containing the user number under which the job is
running.
AC2 containing the directory number to which the job
is connected.
AC3 containing the job number.
AC4 containing the terminal number attached to the
job, or -1 if no terminal is attached to job.
Node: GNJFN Previous: GJINF Next: GPJFN Up: Top
GNJFN JSYS 17
(GNJFN)
Assigns the JFN to the next file in a group of files that have been
specified with wildcard characters. The next file in the group is
determined by searching the directory in the order described in
Section 2.2.3 (i.e., in the internal directory order). The flags
returned from the GTJFN call are given to the GNJFN call as an
argument to indicate the fields of the file specification that contain
wildcard characters.
ACCEPTS IN AC1: indexable file handle returned by GTJFN (i.e., flags
returned by GTJFN in the left half and the JFN in the
right half)
RETURNS +1: failure, including no more files in the group. JFN
is released if there are no more files in the group.
This return occurs on the first call to GNJFN if no
flags indicating wildcard fields are on in the left
half of AC1.
+2: success, same JFN is assigned to the next file in the
group. The following flags are set (if appropriate)
in the left half of AC1:
B13 GN%STR structure changed
B14 GN%DIR directory changed
B15 GN%NAM name changed
B16 GN%EXT file type changed
The GNJFN call uses the flags returned in the left half of AC1 on a
GTJFN call to determine the fields containing wildcards and the
default generation number. Note that the GNJFN call returns a
different set of flags in the left half of AC1 than the GTJFN call
returns. Because all calls to GNJFN should use the flags originally
returned by GTJFN, programs must save the returned GTJFN flags for use
in the GNJFN call.
The file currently associated with the JFN must be closed when the
GNJFN call is executed.
A JFN will not be returned for a file on a regulated structure unless
the MSTR JSYS has been first used to increment the mount count. All
structures are regulated by default except the primary structure (PS:
on most systems) or any structure that has been made non-regulated
with the MSTR JSYS. A job must release all its JFNs for a regulated
structure before it can decrement the mount count.
GNJFN ERROR MNEMONICS:
DESX1: invalid source/destination designator
DESX2: terminal is not available to this job
DESX3: JFN is not assigned
(GNJFN)
DESX4: invalid use of terminal designator or string pointer
GNJFX1: no more files in this specification
OPNX1: file is already open
STRX09: prior structure mount required
Node: GPJFN Previous: GNJFN Next: GTAD Up: Top
GPJFN JSYS 206
Returns the primary JFNs of the specified process.
ACCEPTS IN AC1: process handle
RETURNS +1: always, primary input JFN in the left half of AC2,
and the primary output JFN in the right half of AC2.
The SPJFN monitor call can be used to set the primary JFNs. If this
call has not been given, the GPJFN call returns -1 in AC2.
Generates an illegal instruction interrupt on error conditions below.
GPJFN ERROR MNEMONICS:
FRKHX1: invalid process handle
FRKHX2: illegal to manipulate a superior process
FRKHX3: invalid use of multiple process handle
Node: GTAD Previous: GPJFN Next: GTDAL Up: Top
GTAD JSYS 227
Returns the current date in the internal system format. (Refer to
Section 2.8.2.)
RETURNS +1: always, day in the left half of AC1, and fraction of
day in right half of AC1
If the system does not have the current date set, AC1 contains -1.
The STAD monitor call can be used to set the system's date.
(GTDAL)
Node: GTDAL Previous: GTAD Next: GTDIR Up: Top
GTDAL JSYS 305
Returns the disk allocation for the specified directory.
ACCEPTS IN AC1: directory number (-1 indicates the connected
directory)
RETURNS +1: always, with
AC1 containing the working disk storage limit
(logged-in quota) for the directory.
AC2 containing the number of pages being used.
AC3 containing the permanent disk storage limit
(logged-out quota) for the directory.
Generates an illegal instruction interrupt on error conditions below.
GTDAL ERROR MNEMONICS:
DIRX1: invalid directory number
DELFX6: internal format of directory is incorrect
Node: GTDIR Previous: GTDAL Next: GTFDB Up: Top
GTDIR JSYS 241
Returns information about the given directory.
RESTRICTIONS: some functions require WHEEL or OPERATOR capabilities
enabled.
ACCEPTS IN AC1: directory number
AC2: address of argument block in caller's address space
in which to store the directory information
AC3: byte pointer to string in which to store the password
RETURNS +1: always, updated byte pointer in AC3
The argument block returned to the caller is compatible with the one
given on the CRDIR call. Word 0(.CDLEN) contains the length of the
argument block in which to store the directory information being
returned. If this word is zero, the length of the argument block is
assumed to be 15 octal words long. The password of the directory is
placed in the string indicated by AC3, and word 1(.CDPSW) of the
returned argument block points to this string. Because the group list
format includes a count word, the number of groups returned is one
less than the count. The group list is terminated by a zero word.
(GTDIR)
If the given directory number is zero, the GTDIR monitor call returns
the system default settings for the following directory parameters:
working disk storage quota (.CDLIQ)
permanent disk storage quota (.CDLOQ)
default file protection (.CDFPT)
default directory protection (.CDDPT)
default file retention count (.CDRET)
maximum number of subdirectories allowed (.CDSDQ)
online expiration period (.CDDNE)
offline expiration period (.CDDFE)
Either one of the following conditions must be satisfied for the
caller to obtain all information (including the password) about the
given directory.
1. The caller has WHEEL or OPERATOR capability enabled.
2. The caller is connected to the directory that is immediately
superior to the given directory.
To obtain all information other than the password of the given
directory, the caller must have at least owner access to the
directory. (Refer to Section 2.2.6 for a description of owner
access.)
Generates an illegal instruction interrupt on error conditions below.
GTDIR ERROR MNEMONICS:
GTDIX1: WHEEL or OPERATOR capability required
GTDIX2: invalid directory number
Node: GTFDB Previous: GTDIR Next: GTHST Up: Top
GTFDB JSYS 63
Returns some or all of the file descriptor block for the specified
file. (Refer to Section 2.2.8 for the format of this block.)
The GFUST monitor call must be used to obtain the name strings of the
author of the file (.FBAUT) and of the user who last wrote the file
(.FBLWR). The GACTF monitor call is used to obtain the account
designator of the file (.FBACT).
ACCEPTS IN AC1: JFN
AC2: number of words to be read in the left half and the
word number (offset) of the first entry desired from
the file descriptor block in the right half. The
following instruction will set up AC2 for reading the
(GTFDB)
entire FDB:
HRLZI AC2,.FBLEN
AC3: address in caller's address space for storing the
data returned
RETURNS +1: always
The program receives an error (GFDBX2) if it requests more words than
there are words remaining in the FDB.
The CHFDB monitor call can be used to change most words in the file
descriptor block for a specified file. Section 2.2.8 lists the words
that can be changed with CHFDB. The SFUST monitor call is used to
change the name strings of the author (.FBAUT) and the last writer
(.FBLWR). The SACTF call is used to change the account designator of
the file (.FBACT).
Generates an illegal instruction interrupt on error conditions below.
GTFDB ERROR MNEMONICS:
GFDBX1: invalid displacement
GFDBX2: invalid number of words
GFDBX3: list access required
DESX1: invalid source/destination designator
DESX3: JFN is not assigned
DESX4: invalid use of terminal designator or string pointer
DESX7: JFN cannot refer to output wildcard designators
Node: GTHST Previous: GTFDB Next: GTJFN Up: Top
GTHST JSYS 273
Obtains information about ARPANET hosts.
RESTRICTIONS: for ARPANET systems only
ACCEPTS IN AC1: function code
AC2: function-specific argument
AC3: function-specific argument
(GTHST%)
AC4: function-specific argument
RETURNS +1: failure, error code in AC1
+2: success, function-specific data returned in AC's
Code Symbol Function
0 .GTHSZ returns negative number of host names and negative
length of HSTSTS table.
User supplied arguments:
None
Returned data:
AC2: -number host names,,0
AC3: -length of HSTSTS table,,0
AC4: local host number (in 32-bit Internet
format)
1 .GTHIX Returns the name string associated with the host.
If the name returned is a nickname, HS%NCK is on in
the status word.
User supplied arguments:
AC2: destination byte pointer
AC3: index into name table (returned by GETAB)
Returned data:
AC2: updated byte pointer
AC3: host number
AC4: host status
2 .GTHNS Returns the primary name for the given host number
User supplied arguments:
AC2: destination byte pointer
AC3: host number
Returned data:
AC2: updated byte pointer
AC3: host number
AC4: host status
3 .GTHSN Translates the specified host name string to its
host number. If the name specified is a nickname,
then HS%NCK will be on in the status word.
User supplied arguments:
(GTHST%)
AC2: source byte pointer
Returned data:
AC2: updated byte pointer
AC3: host number
AC4: host status
4 .GTHHN Return the current status of the given host
User supplied arguments:
AC3: host number
Returned data:
AC3: host number
AC4: host status
5 .GTHHI Return the host number and status of the host
having the specified index into the host status
table.
User supplied arguments:
AC3: index into HSTSTS (returned by GETAB)
Returned data:
AC3: host number
AC4: host status
Flags in host status word:
Bits Symbol Meaning
1B0 HS%UP Host is up
1B1 HS%VAL Valid status
7B4 HS%DAY Day when up if currently down
37B9 HS%HR Hour
17B13 HS%MIN 5 minute interval
17B17 HS%RSN Reason
1B18 HS%SRV Host is server
1B19 HS%USR Host is user
1B20 HS%NCK Nickname
77B26 HS%STY System tape mask
1B27 HS%NEW RAS, RAR, RAP, etc
1B26 .HS10X TENEX
2B26 .HSITS ITS
3B26 .HSDEC TOPS-10
4B26 .HSTIP TIP
5B26 .HSMTP MTIP
6B26 .HSELF ELF
7B26 .HSANT ANTS
10B26 .HSMLT MULTICS
(GTHST%)
11B26 .HST20 TOPS-20
12B26 .HSUNX UNIX
GTHST% ERROR MNEMONICS:
ARGX02: Invalid function
GTHSX1: Unknown host number
GTHSX2: No number for that host name
GTHSX3: No string for that host number
GTJIX1: Invalid index
Node: GTJFN-LONG Previous: GTHST Next: GTJFN-SHORT Up: Top
GTJFN-L JSYS 20
LONG FORM
Returns a JFN for the specified file. Accepts the specification for
the file from both a string in memory and from a file. If both are
given as arguments, the string is used first, and then the file is
(GTJFN)
used if more fields are needed to complete the specification. This
form also allows the program to specify nonstandard values to be used
for omitted fields and to request the assignment of a specific JFN.
A JFN will not be returned for a file on a regulated structure unless
the MSTR JSYS has been first used to increment the mount count. All
structures are regulated by default except the primary structure (PS:
on most systems) or any structure that has been made non-regulated
with the MSTR JSYS. A job must release all its JFNs for a regulated
structure before it can decrement the mount count.
ACCEPTS IN AC1: 0 in the left half, and address of the beginning of
the argument table in the caller's address space in
the right half
AC2: byte pointer to ASCIZ file specification string in
the caller's address space, or 0 if none
RETURNS +1: failure, error code in AC1
+2: success, flags in the left half of AC1, and the JFN
assigned in the right half of AC1. (This word is
called an indexable file handle and is given to the
GNJFN call as an argument.) Updated string pointer in
AC2, if pertinent.
All I/O errors can occur. These errors cause software interrupts or
process terminations, and only a single return (+1) is given.
The format of the argument table specified by the right half of AC1 is
described below. Words 0 through 10 (.GJGEN-.GJJFN) must be supplied
in the long form of the GTJFN call. The remaining words are optional,
and if they are supplied, B15(GJ%XTN) of word .GJGEN must be on.
Word Symbol Meaning
0 .GJGEN Flag bits in the left half and generation number
in the right half. (See below.)
1 .GJSRC Input JFN in the left half and output JFN in the
right half. To omit either JFN, specify .NULIO
(377777).
2 .GJDEV Byte pointer to ASCIZ string that specifies the
default device to be used when none is given. If
this word is 0, the user's connected structure
will be used.
3 .GJDIR Byte pointer to ASCIZ string that specifies the
default directory to be used when none is given.
If this word is 0, the user's connected directory
will be used.
(GTJFN)
4 .GJNAM Byte pointer to ASCIZ string that specifies the
default filename to be used when none is given.
If this word is 0, either the string or the input
JFN must supply the filename.
5 .GJEXT Byte pointer to ASCIZ string that specifies the
default file type to be used when none is given.
If this word is 0, the null file type will be
used.
6 .GJPRO Byte pointer to ASCIZ string that specifies the
default protection to be used when none is given.
If this word is 0, the default protection as
specified in the directory or the protection of
the next lower generation will be used.
7 .GJACT Byte pointer to ASCIZ string that specifies the
default account to be used when none is given. If
this word is 0, the user's LOGIN account (unless
changed) will be used.
10 .GJJFN The JFN to associate with the file specification
if flag GJ%JFN is set in word 0 (.GJGEN) of the
argument block.
11 .GJF2 Extended argument block if B15(GJ%XTN) is on in
the left half of .GJGEN. This word contains a
second group of flags in the left half and the
count of the number of words following this word
in the argument block in the right half. The
flags in the left half specify additional control
over the GTJFN process. The following flags are
defined:
B0(G1%RND) Return to the caller if the filename
buffer becomes empty, and the user
attempts to delete a character. This
can occur if the user, when giving the
filename, types a CTRL/U or types a
DELETE or CTRL/W and there are no more
characters in the buffer.
B2(G1%NLN) Filenames cannot be longer than 6
characters and file types cannot be
longer than 3 characters. In addition,
the generation number, temporary
status, protection, and account fields
cannot be specified in the string or
the input data.
B3(G1%RCM) Return the confirmation message to the
caller by placing it in the destination
buffer.
B4(G1%RIE) Return to the caller if the input
(GTJFN)
buffer becomes empty, and the user
attempts to delete a character.
B5(G1%IIN) Ignore the invisible status of the
file. If G1%IIN is not set, the GTJFN
will ignore files that have the
invisible bit set (FB%INV in the FDB)
for subsequent JFN's.
12 .GJCPP Byte pointer to string where GTJFN is to store the
exact copy of the user's typescript (destination
string pointer). This string will contain logical
names, if they were typed by the user, and will
not contain the default fields unless they were
generated through recognition. This string allows
the caller to obtain a true copy of the user's
typescript.
13 .GJCPC Number of bytes available in the destination
string pointed to by .GTCPP (word 12). If a
pointer has been specified but this word is 0, the
monitor assumes the string contains 130 bytes.
14 .GJRTY Byte pointer to the text to be output when the
user types a CTRL/R (i.e., pointer to the CTRL/R
buffer). This pointer cannot be equal to the
pointer given in AC2. (Refer to the TEXTI call
for the definition of CTRL/R text.)
15 .GJBFP Byte pointer to the beginning of the destination
buffer. (obsolete)
16 .GJATR Pointer to the file specification attribute block.
The attribute block has the following format:
Word Contents
0 Count of words in attribute block
(including this word).
1 Byte pointer to argument string.
1+n Byte pointer to argument string.
The ASCIZ argument strings are specified as:
keyword:attribute
The possible keywords and attribute values are as
follows:
Keyword Attribute Value
A: Installation-defined account
string
BDATA: DECnet binary password
(GTJFN)
BLOCK-LENGTH: Magnetic-tape block length
CHARGE: DECnet account string
DATA: DECnet optional data
EXPIRATION-DATE: Magnetic-tape expiration date
FORMAT: Magnetic-tape record format.
The argument may be one of the
following:
Argument Meaning
F Fixed-length records
D Variable-length
records
S Spanned
U Binary files with
36-bits per word
OFF-LINE NONE - display-only keyword.
The attribute is set by setting
bit FB%OFF in word .FBCTL of
the FDB block.
P: Octal file protection value
PASSWORD: DECnet password string
POSITION: File sequence number to
position magnetic-tape to.
RECORD-LENGTH: Magnetic-tape record length
T NONE - display-only keyword.
The attribute is set by setting
bit GJ%TMP in word .GJGEN of
the GTJFN block.
USERID: DECnet user ID string
The flag bits accepted in the left half of .GJGEN (word 0) of the
argument block are basically the same as those accepted in the short
form of the GTJFN call. The entire set of bits is listed below.
(Refer to GTJFN - SHORT FORM for more detailed explanations of these
bits.) The flags that are different in the two forms are GJ%JFN,
GJ%XTN, GJ%FNS, and GJ%SHT.
Bit Symbol Meaning
0 GJ%FOU Create a new version of the file.
1 GJ%NEW The file must not exist.
2 GJ%OLD The file must exist.
3 GJ%MSG Type a message if the user presses ESC to
terminate input.
4 GJ%CFM Confirmation from the user is required.
5 GJ%TMP The file is temporary.
6 GJ%NS Search only the first specification in a multiple
(GTJFN)
logical name definition.
7 GJ%ACC The JFN cannot be accessed by inferior processes.
8 GJ%DEL Ignore the file deleted bit in the FDB.
9-10 GJ%JFN Associate the JFN supplied in .GJJFN (word 10) of
the argument block with the file specification.
The value of this field is interpreted as follows:
Value Meaning
0(.GJDNU) Ignore the JFN supplied.
2(.GJERR) Attempt to assign the JFN supplied and
return an error if it is not available.
3(.GJALT) Attempt to assign the JFN supplied and,
if it is not available, assign an
alternate.
11 GJ%IFG The file specification can contain wildcard
characters.
12 GJ%OFG Associate the JFN with the file specification
string and not the file itself.
13 GJ%FLG Return flags in AC1 on successful completion of
the call.
14 GJ%PHY The physical device is to be used.
15 GJ%XTN The argument block contains more than 10 (octal)
words.
16 GJ%FNS This bit is ignored for the long form of the GTJFN
call.
17 GJ%SHT This bit must be off for the long form of the
GTJFN call.
The generation number given in the right half of .GJGEN (word 0) of
the argument block can be one of the following:
0(.GJDEF) to indicate that the next higher generation number is to
be used if GJ%FOU is on, or to indicate that the highest
existing generation number is to be used if GJ%FOU is
off.
-1(.GJNHG) to indicate that the next higher generation number is to
be used if no generation number is supplied.
-2(.GJLEG) to indicate that the lowest existing generation number
is to be used if no generation number is supplied.
-3(.GJALL) to indicate that all generation numbers are to be used
and that the JFN is to be assigned to the first file in
(GTJFN)
the group, if no generation number is supplied. (Bit
GJ%IFG must be on.)
1-377777 to indicate that the specified number is to be used as
the generation if no generation number is supplied.
On a successful return, flags are returned in the left half of AC1 if
flag bit GJ%IFG, GJ%OFG, or GJ%FLG was on in the call. The flags
returned are the same as those returned in the short form call of
GTJFN.
Refer to the short form of the GTJFN call for the possible error
mnemonics.
Node: GTJFN-SHORT Previous: GTJFN-LONG Next: GTRPI Up: Top
GTJFN-S JSYS 20
SHORT FORM
Returns a JFN for the specified file. Accepts the specification for
the file from a string in memory or from a file, but not from both.
The string can represent the complete specification for the file:
dev:<directory>name.typ.gen;attributes
One or more fields of the specification can be defined by a logical
name. (Refer to Section 2.2.2.) If any fields are omitted from the
specification, the system will provide the values shown below.
device connected structure
See note below.
directory connected directory
NOTE
If neither device nor directory is
specified, the default is DSK:, not the
user's connected directory. If either
device or directory is specified, the other
is taken from the user's connected
directory.
name no default; this field must be specified
type null
generation highest existing number if the file is an input
file. Next higher number if the file is an output
(GTJFN)
file.
protection protection of the next lower generation or for new
files, protection as specified in the directory.
account account specified when user logged in, unless
changed by the CACCT or SACTF call.
A JFN will not be returned for a file on a regulated structure unless
the MSTR JSYS has been first used to increment the mount count. All
structures are regulated by default except the primary structure (PS:
on most systems) or any structure that has been made non-regulated
with the MSTR JSYS. A job must release all its JFNs for a regulated
structure before it can decrement the mount count.
The JFNS monitor call can be used to obtain the file specification
string associated with a given JFN.
ACCEPTS IN AC1: flag bits in the left half, and default generation
number in the right half
AC2: source designator from which to obtain the file
specification. (Refer to flag bit GJ%FNS for
specific values.)
RETURNS +1: failure, error code in AC1
+2: success, flags in the left half of AC1, and the JFN
assigned in the right half of AC1. (This word is
called an indexable file handle and is given to the
GNJFN call as an argument.) Updated string pointer in
AC2, if pertinent.
All I/O errors can occur. These errors cause software interrupts or
process terminations, and only a single return (+1) is given.
The flag bits that can be specified in AC1 are described as follows.
GTJFN Flag Bits
Bit Symbol Meaning
0 GJ%FOU The file given is to be assigned the
next higher generation number. This
bit indicates that a new version of a
file is to be created and is normally
set if the file is for output use.
1 GJ%NEW The file specification given must not
refer to an existing file (i.e., the
file must be a new file).
(GTJFN)
2 GJ%OLD The file specification given must
refer to an existing file (i.e., the
file must be an old file).
3 GJ%MSG One of the appropriate messages is to
be printed after the file
specification is obtained, if the
system is performing recognition on
the file specification and the user
ends his input by typing an ESC.
!NEW FILE!
!NEW GENERATION!
!OLD GENERATION!
!OK! if GJ%CFM (bit 4) is off
!CONFIRM! if GJ%CFM (bit 4) is on
4 GJ%CFM Confirmation from the user will be
required (if GJ%FNS is on) to verify
that the file specification obtained
is correct. (See below for the valid
confirmation characters.)
5 GJ%TMP The file specified is to be a
temporary file.
6 GJ%NS Only the first specification in a
multiple logical name assignment is to
be searched for the file (i.e., do not
search beyond the first name in a
multiple logical name assignment).
7 GJ%ACC The JFN specified is not to be
accessed by inferior processes in this
job. However, another process can
access the file by acquiring a
different JFN. To prevent the file
from being accessed by other
processes, the user's program should
set OF%RTD(B29) in the OPENF call.
8 GJ%DEL Files marked as deleted are to be
considered by the system when it is
searching for a file to assign to the
JFN.
9-10 GJ%JFN These bits are off in the short form
of the GTJFN call.
11 GJ%IFG The file specification given is
allowed to have one or more of its
fields specified with a wildcard
character (* or %). This bit is used
to process a group of files and is
generally used for input files. The
(GTJFN)
monitor verifies that at least one
value exists for each field that
contains a wildcard and assigns the
JFN to the first file in the group.
The monitor also verifies that fields
not containing wildcards represent a
new or old file according to the
setting of GJ%NEW and GJ%OLD. The
GNJFN call can then be used to obtain
the next file in the group. (Refer to
Section 2.2.3 for more information on
wildcard characters in file
specifications.)
12 GJ%OFG The JFN is to be associated with the
given file specification string only
and not to the actual file. The
string may contain wildcard characters
(* or %) in one or more of its fields.
It is checked for correct punctuation
between fields, but is not checked for
the validity of any field. This bit
allows a JFN to be associated with a
file specification even if the file
specification does not refer to an
actual file. The JFN returned cannot
be used to refer to an actual file
(e.g., cannot be used in an OPENF
call) but can be used to obtain the
original input string (via JFNS). The
fields in this string can then be used
in a GTJFN-long form call as program
defaults. However, if the original
string contains the temporary file
attribute (;T), this attribute is not
"remembered" and thus is not returned
on the JFNS call even though the bit
indicating temporary status (JS%TMP)
is set. All other fields (including
the protection and account fields) can
be returned by JFNS.
12 GJ%OFG When both B11(GJ%IFG) and B12(GJ%OFG)
(Cont.) are on, the GTJFN call parses the
specification given, verifying the
existence of each field. When a
wildcard character appears in a field,
the GTJFN call checks the remaining
fields for correct punctuation and
returns a JFN for the file
specification string only. That is,
once a wildcard character is seen, the
action taken is identical to that
taken when only B12(GJ%OFG) is set.
If no wildcard character appears in
(GTJFN)
the string, the action is the same as
if both bits were off.
13 GJ%FLG Flags are to be returned in the left
half of AC1 on a successful return.
14 GJ%PHY Job-wide logical names (those defined
by the user) are to be ignored by the
monitor for this call.
15 GJ%XTN This bit is off in the short form of
the GTJFN call.
16 GJ%FNS The contents of AC2 are to be
interpreted as follows:
1. If this bit is on, AC2 contains an
input JFN in the left half and an
output JFN in the right half. The
input JFN is used to obtain the
file specification to be
associated with the JFN. The
output JFN is used to indicate the
destination for printing the names
of any fields being recognized.
To omit either JFN, specify .NULIO
(377777).
2. If this bit is off, AC2 contains a
byte pointer to an ASCIZ string in
memory that specifies the file to
be associated with the JFN.
0(.GJDEF) to indicate that the next
higher generation number
of the file is to be used
if GJ%FOU (bit 0) is on,
or to indicate that the
highest existing
generation number of the
file is to be used if
GJ%FOU is off.
18-35 -1(.GJNHG) to indicate that the next
(Cont.) higher generation number
of the file is to be used
if no generation number
is supplied.
-2(.GJLEG) to indicate that the
lowest existing
generation number of the
file is to be used if no
generation number is
supplied.
(GTJFN)
-3(.GJALL) to indicate that all
generation numbers (*) of
the file are to be used
and that the JFN is to be
assigned to the first
file in the group, if no
generation number is
supplied. (Bit GJ%IFG
must be set.)
1-377777 to indicate that the
specified generation
number of the file is to
be used if no generation
number is supplied.
The GTJFN monitor call always reads the terminating character after
the file specification string. (This character can be obtained by
executing the BKJFN call followed by a BIN call.) The valid
terminating characters are:
line feed left parenthesis
CTRL/L right parenthesis
CTRL/Z plus sign
carriage return comma
exclamation point slash
double quotation marks equals sign
number sign at sign (@)
ampersand space
single quotation mark ESC
All of these characters except for ESC are also confirmation
characters (refer to bit GJ%CFM above) and are called confirming
terminators. If a confirming terminator is typed after the string, a
confirmation message will not be typed to the user nor will the user
be required to confirm the string obtained, regardless of the setting
of GJ%MSG and GJ%CFM.
On a successful return, the following flags are returned in the left
half of AC1 if flag bit GJ%IFG, GJ%OFG, or GJ%FLG was on in the call.
Bits Returned on Successful GTJFN Call
Bit Symbol Meaning
0 GJ%DEV The device field of the file
specification contained wildcard
characters.
1 GJ%UNT The unit field of the file
specification contained wildcard
characters. This bit will never be
(GTJFN)
set because wildcard characters are
not allowed in unit fields.
2 GJ%DIR The directory field of the file
specification contained wildcard
characters.
3 GJ%NAM The filename field of the file
specification contained wildcard
characters.
4 GJ%EXT The file type field of the file
specification contained wildcard
characters.
5 GJ%VER The generation number field of the
file specification contained wildcard
characters.
6 GJ%UHV The file used has the highest
generation number because a generation
number of 0 was given in the call.
7 GJ%NHV The file used has the next higher
generation number because a generation
number of 0 or -1 was given in the
call.
8 GJ%ULV The file used has the lowest
generation number because a generation
number of -2 was given in the call.
9 GJ%PRO The protection field of the file
specification was given.
10 GJ%ACT The account field of the file
specification was given.
11 GJ%TFS The file specification is for a
temporary file.
12 GJ%GND Files marked for deletion will not be
considered when assigning JFNs in
subsequent calls. This bit is set if
GJ%DEL was not set in the call.
17 GJ%INV Invisible files will not be considerd
when assigning JFNs in subsequent
calls. This bit is set if G1%IIN is
not set (see long form GTJFN).
GTJFN ERROR MNEMONICS:
GJFX1: desired JFN invalid
(GTJFN)
GJFX2: desired JFN not available
GJFX3: no JFNs available
GJFX4: invalid character in filename
GJFX5: field cannot be longer than 39 characters
GJFX6: device field not in a valid position
GJFX7: directory field not in a valid position
GJFX8: directory terminating delimiter is not preceded by
a valid beginning delimiter
GJFX9: more than one name field is not allowed
GJFX10: generation number is not numeric
GJFX11: more than one generation number field is not allowed
GJFX12: more than one account field is not allowed
GJFX13: more than one protection field is not allowed
GJFX14: invalid protection
GJFX15: invalid confirmation character
GJFX16: no such device
GJFX17: no such directory name
GJFX18: no such filename
GJFX19: no such file type
GJFX20: no such generation number
GJFX21: file was expunged
GJFX22: insufficient system resources (Job Storage Block full)
GJFX23: exceeded maximum number of files per directory
GJFX24: file not found
GJFX27: file already exists (new file required)
GJFX28: device is not on-line
GJFX30: account is not numeric
GJFX31: invalid wildcard designator
(GTJFN)
GJFX32: no files match this specification
GJFX33: filename was not specified
GJFX34: invalid character "?" in file specification
GJFX35: directory access privileges required
GJFX36: internal format of directory is incorrect
GJFX37: input deleted
GJFX38: file not found because output-only device was specified
GJFX39: logical name loop detected
GJFX40: undefined attribute in file specification
GJFX41: file name must not exceed 6 characters
GJFX42: file type must not exceed 3 characters
GJFX43: more than one ;T specification is not allowed
GJFX44: account string does not match
GJFX45: illegal to request multiple specifications for the same
attribute
GJFX46: attribute value is required
GJFX47: attribute does not take a value
GJFX48: GTJFN input buffer is empty
GJFX49: invalid attribute for this device
GJFX51: byte count too small
IOX11: quota exceeded or disk full
DESX9: invalid operation for this device
STRX09: prior structure mount required
Node: GTRPI Previous: GTJFN Next: GTNCP Up: Top
GTRPI JSYS 172
Returns the paging trap information for the specified process.
ACCEPTS IN AC1: process handle
RETURNS +1: always, with
AC1 containing number of pager traps (i.e., the
number of times a trap has occurred to the pager)
for designated process since the process was
started
AC2 containing number of page faults (i.e., the
number of times a trap has resulted in a page
being swapped in) for designated process since
the process was started
AC3 containing time spent (in milliseconds) in page
routines by designated process since the process
was started
The number of pager traps will be greater than or equal to the number
of page faults.
Generates an illegal instruction interrupt on error conditions below.
GTRPI ERROR MNEMONICS:
FRKHX1: invalid process handle
FRKHX2: illegal to manipulate a superior process
FRKHX3: invalid use of multiple process handle
(GTNCP)
Node: GTNCP% Previous: GTRPI Next: GTRPW Up: Top
GTNCP% JSYS 272
Obtains information about the NCP.
RESTRICTIONS: for ARPANET systems only
ACCEPTS IN AC1: function code
AC2: function-specific argument
AC3: function-specific argument
AC4: function-specific argument
RETURNS +1: failure, error code in AC1
+2: success, function-specific data returned in AC's
Code Symbol Function
0 .GTNSZ returns negative number of NCP connections
User supplied arguments:
None
Returned data:
AC2: -number NCP connections,,0
AC3: -number NVTs ,, line number of first NVT
1 .GTNIX Return connection number status
User supplied arguments:
AC2: connection number
AC3: 30 bit address of storage block
AC4: -length of block ,, first data item to
return
Returned data:
(See format of block below)
2 .GTNNI Return status of NVT line number (input connection)
User supplied arguments:
AC2: NVT line number (input)
AC3: 30 bit address of storage block
AC4: -length of block ,, first data item to
return
Returned data:
(GTNCP)
(See format of block below)
3 .GTNNO Return status of NVT connection (output connection)
User supplied arguments:
AC2: NVT line number (output)
AC3: 30 bit address of storage block
AC4: -length of block ,, first data item to
return
Returned data:
(See format of block below)
4 .GTNJF Return status of JFN
User supplied arguments:
AC2: JFN
AC3: 30 bit address of storage block
AC4: -length of block ,, first data item to
return
Returned data:
(See format of block below)
Format of returned data block:
Word Symbol Contents
0 .NCIDX NCP connection index
1 .NCFHS Foreign host
2 .NCLSK Local socket
3 .NCFSK Foreign socket
4 .NCFSM State of connection
5 .NCLNK Link
6 .NCNVT NVT, -1 if none
7 .NCSIZ Byte size of connection
10 .NCMSG MSG allocation
11 .NCBAL Bit allocation
12 .NCDAL Desired allocation
13 .NCBTC Bits transferred
14 .NCBPB Bytes per buffer
15 .NCCLK Time-out countdown
16 .NCSTS Connection status
GTNCP ERROR MNEMONICS:
ARGX02: Invalid function
GTJIX1: Invalid index
(GTNCP)
GTNCX1: Invalid network JFN
GTNCX2: Invalid or inactive NVT
Node: GTRPW Previous: GTNCP% Next: GTSTS Up: Top
GTRPW JSYS 171
Returns the trap words. This monitor call allows a program to
retrieve information about a previous read, write, or execute trap.
ACCEPTS IN AC1: process handle
RETURNS +1: always, trap status word from last memory trap in
AC1, and last monitor call that had an error in AC2.
The following bits are defined in the status word:
B0(PF%USR) page failure-user mode reference
B5(PF%WRT) page failure-write reference
B14(TSW%RD) trap status-read (always on)
B15(TSW%WT) trap status-write (same setting as B5)
B16(TSW%EX) trap status-execute (always on)
B17(TSW%MN) trap status-monitor mode reference (complement of B0)
B18-B35 address of reference that caused the trap
This information allows a program to determine the exact cause of a
memory trap and/or the effective virtual address that caused the trap.
This information is sufficient to enable the program to continue, if
desired, when the cause of the trap has been removed.
The contents of AC1 is 0 if there have been no memory traps.
Generates an illegal instruction interrupt on error conditions below.
GTRPW ERROR MNEMONICS:
FRKHX1: invalid process handle
FRKHX2: illegal to manipulate a superior process
FRKHX3: invalid use of multiple process handle
Node: GTSTS Previous: GTRPW Next: GTTYP Up: Top
GTSTS JSYS 24
Returns the status of a file associated with a JFN.
(GTSTS)
ACCEPTS IN AC1: JFN in the right half
RETURNS +1: always, status in AC2. If JFN is illegal in any way,
B10 of AC2 will be 0.
JFN STATUS WORD
B0(GS%OPN) file is open
B1(GS%RDF) if file is open (i.e., bit 0 is on), it is open for
read access
B2(GS%WRF) if file is open, it is open for write access
B3(GS%XCF) if file is open, it is open for execute access
B4(GS%RND) if file is open, it is open for non-append access
B7(GS%LNG) file is longer than 512 pages
B8(GS%EOF) last read was past end of file
B9(GS%ERR) file may be in error (i.e., a device or data error
occurred)
B10(GS%NAM) file specification is associated with this JFN
B11(GS%AST) one or more fields of the file specification contain
wildcard characters
B12(GS%ASG) JFN is currently being assigned
B13(GS%HLT) I/O errors are considered terminating conditions
B17(GS%FRK) if file is open, it is open for restricted access
B32-B35 data mode of the file. Refer to the OPENF monitor
(GS%MOD) call description.
.GSNRM normal data mode
.GSIMG image mode
.GSDMP dump mode
If B0(GS%OPN) is not set on return, the file is not opened, and the
settings of bits 1 through 4 are indeterminate.
The STSTS call can be used to set the status of a particular file.
Node: GTTYP Previous: GTSTS Next: GTWAA% Up: Top
GTTYP JSYS 303
Returns the terminal type number for the specified terminal line.
(Refer to Section 2.4.3.4 for the terminal type numbers.)
ACCEPTS IN AC1: file designator (only terminal designators are legal)
RETURNS +1: always, terminal type number in AC2 and buffer
allocation numbers (# of input buffers to be
allocated in left half, and # of output buffers to be
allocated in right half) in AC3. AC1 is unchanged.
The STTYP monitor call can be used to set the terminal type number for
(GTTYP)
a specified line.
Generates an illegal instruction interrupt on error conditions below.
GTTYP ERROR MNEMONICS:
DESX1: invalid source/destination designator
TTYX01: line is not active
Node: GTWAA% Previous: GTTYP Next: HALTF Up: Top
GTWAA% JSYS 702
Get weekly account allocation information. NOTE: this is a temporary
jsys, and may not be defined in future releases.
ACCEPTS IN AC1: directory or user number.
AC2: function bits in left half,length of argument block
in the right.
B0 (wa%rd) Get allocation information and store in
data block. Note: if both wa%rd and wa%in
are set, the new information is returned in
the argument block.
B1 (wa%wr) Update allocation information from data block.
B2 (wa%in) Increment allocation information from data
block. Note: if both wa%wr and wa%in are
set, wa%in is ignored.
AC3: address of argument block
RETURNS: +1: Always, with B17 (wa%ft) of AC2 set if current time is in the
"free time" block.
This is a temporary jsys, and may not be defined in future releases.
The argument block may be up to eighteen words in length. Its format
is given below.
.WALW==:0 weekly console (login) allocation
.WACW==:1 weekly cpu allocation
.WAPW==:2 weekly pages-printed allocation
.WALA==:3 this week's console (login) allocation
.WACA==:4 this week's cpu allocation
.WAPA==:5 this week's pages-printed allocation
.WALC==:6 console time charged this week
.WACC==:7 cpu time charged
.WAPC==:10 pages charged
.WALU==:11 console time used (cumulative this week)
.WACU==:12 cpu time used (cumulative this week)
.WAPU==:13 pages used (cumulative this week)
.WALQ==:14 console time chargeable (cumul. this quarter)
.WACQ==:15 cpu time chargeable (cumulative this quarter)
.WAPQ==:16 pages chargeable (cumulative this quarter)
.WALT==:17 console time used (cum. this quarter)
.WACT==:20 cpu time used (cum. this quarter)
.WAPT==:21 pages printed (cum. this quarter)
GTWAA% ERROR MNEMONICS:
ILINS2: Undefined JSYS
CAPX1: WHEEL or OPERATOR capability required
GTWAX1: Invalid function code
GTWAX2: Invalid argument block length
STRX02: Insufficient system resources
DELFX6: Internal format of directory is incorrect
DATEX6: System date and time are not set
Node: HALTF Previous: GTWAA% Next: HANDS% Up: Top
HALTF JSYS 170
Halts the current process and any inferior processes of the current
process. Sets the process' PC to the next instruction after the call
and saves it in the Process Storage Block (PSB) in case the process is
continued. The user can continue the process by typing the CONTINUE
command, which causes the process to start at the next instruction.
Sets bits 1-17(RF%STS) in the status word for this process to
2(.RFVPT). Refer to the RFSTS monitor call for the format of the
status word.
If the top level process executes a HALTF call and does not have WHEEL
or OPERATOR capability enabled, the job is logged out. If the top
level process executes a HALTF call and does have WHEEL or OPERATOR
capability enabled, control passes to mini-exec (MEXEC) level.
Node: HANDS% Previous: HALTF Next: HFORK Up: Top
HANDS% JSYS 700
Used to access system tables efficiently. Accepts a list of monitor
tables to be returned in their entirety to the user.
ACCEPTS IN AC1: Negative length of table in left half, address of table
in right half
RETURNS: +1: Always, with the entirety of the specified system tables
transferred to the user's area.
The table entries are of the form <table number>,,<destination address>.
HANDS% ERROR MNEMONICS:
ARGX17: Invalid argument block length
GTABX1: Invalid table number
GTABX3: GETAB capability required
Node: HFORK Previous: HANDS% Next: HPTIM Up: Top
HFORK JSYS 162
Halts one or more inferior processes. (Refer to the HALTF monitor
call description to halt the current process.)
ACCEPTS IN AC1: process handle (inferior processes only)
RETURNS +1: always
Sets bits 1-17(RF%STS) in the status word(s) for addressed process(s)
to 2(.RFVPT). Refer to the RFSTS monitor call for the format of the
status word.
Generates an illegal instruction interrupt on error conditions below.
HFORK ERROR MNEMONICS:
FRKHX1: invalid process handle
(HFORK)
FRKHX2: illegal to manipulate a superior process
HFRHX1: illegal to halt self with HFORK
Node: HPTIM Previous: HFORK Next: HSYS Up: Top
HPTIM JSYS 501
Returns the value of one of the high precision system clocks.
Although the main time base from interrupts generated by the internal
system clock is in units of 1 millisecond, the clock provides a time
base in units of 10 microseconds. The HPTIM monitor call provides
access to the variables kept in these high precision units.
ACCEPTS IN AC1: number of the clock to read (see below)
RETURNS +1: failure, error code in AC1
+2: success, with AC1 containing the value of the
specified clock
The numbers for currently-defined clocks are:
0 .HPELP Elapsed time since system startup. (Refer to the
TIME call for obtaining the time in milliseconds.)
1 .HPRNT CPU runtime for this process. (Refer to the RUNTM
call for obtaining the time in milliseconds.)
HPTIM ERROR MNEMONICS:
HPTX1: undefined clock number
Node: HSYS Previous: HPTIM Next: IDCNV Up: Top
HSYS JSYS 307
Initiates an orderly shutdown of the timesharing operation of the
system. This call causes periodic notices of the impending shutdown
to be issued to all terminals. It also causes any jobs still logged
in at the designated shutdown to be logged out.
RESTRICTIONS: requires WHEEL, OPERATOR, or MAINTENANCE capabilities
enabled
ACCEPTS IN AC1: shutdown time with the date and time in the internal
format. (Refer to Section 2.8.2.)
AC2: date and time in internal format when system
operation will resume (or 0 if unknown). Used for
(HSYS)
advisory messages only.
RETURNS +1: failure, error code in AC1
+2: success, shutdown procedure initiated
The shutdown notice is issued immediately to all terminals if the
shutdown time is within two hours. The notice is also sent two hours,
one hour, 30 minutes, 10 minutes, 5 minutes, and one minute before the
shutdown.
The time when the system is expected to be placed back into operation
is not used directly by the monitor. It is entered into a GTTAB table
where it may be examined with the GETAB monitor call.
HSYS ERROR MNEMONICS:
CAPX2: WHEEL, OPERATOR, or MAINTENANCE capability required
TIMEX1: time cannot be greater than 24 hours
TIMEX2: downtime cannot be more than 7 days in the future
Node: IDCNV Previous: HSYS Next: IDLE% Up: Top
IDCNV JSYS 223
Converts separate numbers for the local year, month, day, and time
into the internal date and time format. (Refer to Section 2.8.2 for
more information on the internal format.)
ACCEPTS IN AC2: year in the left half, and numerical month
(0=January) in the right half
AC3: day of the month (0=first day) in the left half, and
0 in the right half
AC4: B0(IC%DSA) apply daylight savings according to the
setting of B1(IC%ADS). If B0 is off,
daylight savings is applied only if
appropriate for the date.
B1(IC%ADS) apply daylight savings if B0(IC%DSA) is
on.
B2(IC%UTZ) use time zone in B12-B17. If this bit is
off, the local time zone is used.
B3(IC%JUD) interpret the number in the right half of
AC2 as being in Julian day format (Jan 1
is day 1).
(IDCNV)
B12-B17 time zone to use if B2(IC%UTZ) is on.
(IC%TMZ) (Refer to Section 2.8.2 for the time
zones.)
B18-B35 local time in seconds since midnight.
(IC%TIM)
RETURNS +1: failure, error code in AC1
+2: success, AC2 contains the internal date and time, and
AC3 contains
B0 and B2 on for compatibility with the ODCNV call
B1(IC%ADS) on if daylight savings was applied
B12-B17 time zone used
(IC%TMZ)
IDCNV ERROR MNEMONICS:
DATEX1: year out of range
DATEX2: month is not less than 12
DATEX3: day of month too large
DATEX5: date out of range
TIMEX1: time cannot be greater than 24 hours
ZONEX1: time zone out of range
Node: IDLE% Previous: IDCNV Next: IDTIM Up: Top
IDLE% JSYS 701
Determines the idle time of a job.
ACCEPTS IN AC1: job number
RETURNS: +1: always, with the number of milliseconds since any fork
of the job was last in the run queue in AC1.
IDLE% ERROR MNEMONICS:
ARGX08: No such job
Node: IDTIM Previous: IDLE% Next: IDTNC Up: Top
IDTIM JSYS 221
Inputs the date and time and converts them to the internal date and
time format. (Refer to Section 2.8.2.) The IDTIM monitor call does
not permit either the date or the time to be entered separately and
does not perform conversions for time zones other than the local one
(unless the time zone is specified in the input string). Refer to the
IDTNC and IDCNV monitor calls descriptions for these functions.
ACCEPTS IN AC1: source designator
AC2: format option flags (see below), 0 is the normal case
RETURNS +1: failure, error code in AC2, updated string pointer in
AC1, if pertinent
+2: success, updated string pointer, if pertinent, in
(IDTIM)
AC1, and the internal format date and time in AC2
The format option flags in AC2 specify the interpretation to be used
when a date or time specification is ambiguous.
IDTIM Option Flags
B1(IT%NNM) do not allow the month to be numeric and ignore B2-B3.
B2(IT%SNM) interpret the second number in the date as the month
(e.g., 6/2/76 is interpreted as Feb. 6, 1976). If
this bit is off, the first number is interpreted as the
month (e.g., 2/6/76 is interpreted as Feb. 6, 1976).
B3(IT%ERR) return an error if the order of the day and month does
not agree with the setting of B2(IT%SNM) even though
the date can be successfully interpreted. If this bit
is off, a date which can be interpreted by assuming the
day and month are in the opposite order than that
specified by the setting of B2(IT%SNM) will be
considered valid. For example, if B2-B3 are off,
30/5/76 will be considered as a valid date.
B7(IT%NIS) seconds cannot be included in a time specification.
B8(IT%AIS) seconds must be included in a time specification and
must be preceded by a colon.
If B7-B8 are both off, seconds are optional in a time
specification. If specified, seconds must be preceded
by a colon.
B9(IT%NAC) colon cannot be used to separate hours and minutes.
B10(IT%AAC) colon must be used to separate hours and minutes.
If B9-B10 are both off, a colon is optional between
hours and minutes.
B11(IT%AMS) when B7-B10 are off, always interpret a time
specification containing one colon as hhmm:ss.
B12(IT%AHM) when B7-B10 are off, always interpret a time
specification containing one colon as hh:mm and return
an error if the first field is too large. This differs
from B7(IT%NIS) in that seconds can be included if
preceded by a second colon.
If B7-B12 are all off, a time specification containing
one colon is interpreted as hh:mm if the first field is
small enough. Otherwise it is interpreted as hhmm:ss.
B14(IT%N24) do not allow the time to be specified in 24-hour format
(e.g., 1520 for 3:20 in the afternoon) and make AM or
(IDTIM)
PM specification mandatory.
B15(IT%NTM) do not allow the time specification to include
AM,PM,NOON, or MIDNIGHT.
B16(IT%NTZ) do not allow a time zone to be specified.
If AC2 is 0, the IDTIM call accepts any reasonable date and time
formats.
IDTIM ERROR MNEMONICS:
DILFX1: invalid date format
TILFX1: invalid time format
DATEX1: year out of range
DATEX3: day of month too large
DATEX5: date out of range
All I/O errors are also possible. These errors cause software
interrupts or process terminations as described under the BIN call.
Node: IDTNC Previous: IDTIM Next: IIC Up: Top
IDTNC JSYS 231
Inputs the date and/or the time and converts it into separate numbers
for the local year, month, day, or time. The IDTNC call allows the
date or time to be entered separately, which is not possible with the
IDTIM JSYS because neither one can be converted to the internal format
without converting the other. (Refer to Section 2.8.2.)
ACCEPTS IN AC1: source designator
AC2: format option flags
In addition to the flags described in the IDTIM call,
the flags below can also be specified:
B0(IT%NDA) do not input the date and ignore B1-B3.
If IT%NDA is off, the date must be input.
B6(IT%NTI) do not input the time and ignore B7-B16.
If IT%NTI is off, the time must be input.
RETURNS +1: failure, error code in AC2, updated string pointer,
if pertinent, in AC1
+2: success, updated string pointer, if pertinent, in AC1
(IDTNC)
If the date was input,
AC2 contains the year in the left half, and the month
(0=January) in the right half.
AC3 contains the day of the month (0=first day) in
the left half, and the day of the week (0=Monday)
in the right half.
If the time was input,
AC4 contains
B0(IC%DAS) on if a time zone was input (for
compatibility with the ODCNV call).
B1(IC%ADS) on if a daylight savings time zone
was input.
B2(IC%UTZ) on if a time zone was input.
B3(IC%JUD) on if a number in Julian day format
was input.
B12-B17 the time zone if one was input, or
(IC%TMZ) the local time zone if none was
input. (Refer to Section 2.8.2 for
the time zones.)
B18-B35 time as seconds since midnight.
(IC%TIM)
IDTNC ERROR MNEMONICS:
DILFX1: invalid date format
TILFX1: invalid time format
All I/O errors are also possible. These errors cause software
interrupts or process terminations as described under the BIN call
description.
The IDTNC call does not detect certain errors in date input, such as
day 31 of a 30-day month. These errors are detected by the IDCNV
call.
Node: IIC Previous: IDTNC Next: INLNM Up: Top
IIC JSYS 132
Initiates software interrupts on the specified channels in a process.
(Refer to Section 2.5.)
ACCEPTS IN AC1: process handle
AC2: 36-bit word
Bit n on means initiate a software interrupt on
channel n.
RETURNS +1: always
(IIC)
Generates an illegal instruction interrupt on error conditions below.
IIC ERROR MNEMONICS:
FRKHX1: invalid process handle
FRKHX2: illegal to manipulate a superior process
FRKHX3: invalid use of multiple process handle
FRKHX8: Illegal to manipulate an execute-only process
Node: INLNM Previous: IIC Next: JFNS Up: Top
INLNM JSYS 503
Returns a logical name that is defined either for this job or for the
system. (Refer to Section 2.2.2 and CRLNM and LNMST monitor calls.)
ACCEPTS IN AC1: function code in the left half, and index into the
table of defined logical names in the right half
AC2: byte pointer to the string for storing the logical
name
RETURNS +1: failure, error code in AC1
+2: success, updated string pointer in AC2
The available functions are:
Code Symbol Meaning
0 .INLJB List the logical names defined for this job
1 .INLSY List the logical names defined for the system
INLNM ERROR MNEMONICS:
INLNX1: index is beyond end of logical name table
INLNX2: invalid function
Node: JFNS Previous: INLNM Next: KFORK Up: Top
JFNS JSYS 30
Returns the file specification currently associated with the JFN.
(JFNS)
ACCEPTS IN AC1: destination designator where the ASCIZ string is to
be written
AC2: indexable file handle (refer to GTJFN), or pointer to
string
AC3: format control bits to be used when returning the
string, or 0
AC4: byte pointer to string containing prefix of file
specification attribute
RETURNS +1: always, updated string pointer, if pertinent, in AC1
AC2 can have one of two formats, depending on B26(JS%PTR) in AC3. The
first format is a word with either 0 or the flag bits returned from
GTJFN in the left half and the JFN in the right half. When the left
half is 0, the string returned is the exact specification associated
with the JFN. If the given JFN is associated only with a file
specification (i.e., it was obtained with B12(GJ%OFG) on in the GTJFN
call), the string returned contains null fields for nonexistent fields
or fields containing wildcards, and actual values for existent fields.
When the left half is nonzero, the string returned contains wildcard
characters for appropriate fields and 0, -1, or -2 as a generation
number if the corresponding bit is on in the call.
The second format (allowed only if B26(JS%PTR) of AC3 is on) is a
pointer to the string to be returned. This string is one field of a
file specification. The field is determined by the first nonzero
3-bit field in AC3 or by the setting of B27(JS%ATR) or B28(JS%AT1) in
AC3. For example, if bits 6-8 (JS%NAM) of AC3 are nonzero, then the
string is interpreted as a filename field. If B27(JS%ATR) is on, the
string is interpreted as a file specification attribute. If
B28(JS%AT1) is on, the string is concatenated to the string pointed to
by AC4, and a colon is inserted between the two strings. In all
cases, the string is output to the destination designator, and the
appropriate punctuation is added.
AC3 contains control bits for formatting the string being returned.
B0-B20 are divided into 3-bit bytes, each byte representing a field in
the file specification. The value of the byte indicates the output
for that field. The values are:
0 (.JSNOF) do not output this field
1 (.JSAOF) always output this field
2 (.JSSSD) suppress this field if it is the system default
The bits that can be set in AC3 are as follows:
B0-B2(JS%DEV) output for device field
B3-B5(JS%DIR) output for directory field
B6-B8(JS%NAM) output for filename field (2 is illegal)
B9-B11(JS%TYP) output for file type field (2 is illegal)
B12-B14(JS%GEN) output for generation number field
B15-B17(JS%PRO) output for protection field
B18-B20(JS%ACT) output for account field
(JFNS)
B21(JS%TMP) return ;T if appropriate
B22(JS%SIZ) return size of file in pages
B23(JS%CDR) return creation date
B24(JS%LWR) return date of last write
B25(JS%LRD) return date of last read
B26(JS%PTR) AC2 contains pointer to the string being returned
B27(JS%ATR) return file specification attributes if
appropriate
B28(JS%AT1) return the specific specification attribute whose
prefix is indicated by the string pointed to in
AC4. This bit is used when a program is
processing attributes one at a time. If JS%ATR
is also set, all attributes will be returned.
B29(JS%OFL) return the "OFFLINE" attribute
B32(JS%PSD) punctuate the size and date fields
B33(JS%TBR) tab before all fields returned, except for first
field
B34(JS%TBP) tab before all fields that may be returned (i.e.,
fields whose value is given as 1 or 2), except
for first field
B35(JS%PAF) punctuate all fields from device through ;T
If B32-B35 are 0, punctuation between fields is not used.
If AC3 is 0, the string is output in the format
dev:<directory>name.typ.gen;T
with fields the same as system defaults not returned and the
protection (;P) and account (;A) attributes returned if B9(GJ%PRO) and
B10(GJ%ACT) in AC2 are on. The temporary attribute (;T) is not
returned if the JFN is not associated with a file (refer to GJ%OFG in
the GTJFN description) or the file is not temporary.
The punctuation used on each field is shown below.
dev:<directory>name.typ.gen;attribute
,size,creation date,write date,read date
The GTJFN or GNJFN monitor call is used to associate a JFN with a
given file specification string.
Generates an illegal instruction interrupt on error conditions below.
JFNS ERROR MNEMONICS:
DESX1: invalid source/destination designator
DESX2: terminal is not available to this job
DESX3: JFN is not assigned
DESX4: invalid use of terminal designator or string pointer
IOX11: quota exceeded or disk full
(KFORK)
Node: KFORK Previous: JFNS Next: LGOUT Up: Top
KFORK JSYS 153
Kills one or more processes. When a process is killed, all private
memory acquired by the process and its Process Storage Block are
released. Also, any JFNs the process has created are released, and
any terminal interrupt assignments that were acquired from another
process are passed back. (Note that because the process is deleted
asynchronously, a page of a file mapped into a lower process may not
be unmapped before the KFORK call returns.)
ACCEPTS IN AC1: process handle
RETURNS +1: always, unless the current process attempts to kill
itself
The KFORK call will not release a process handle that identifies a
process already killed by another process. In this case, the RFRKH
call must be used to release the handle.
The CFORK monitor call can be used to create an inferior process.
Generates an illegal instruction interrupt on error conditions below.
KFORK ERROR MNEMONICS:
FRKHX1: invalid process handle
FRKHX2: illegal to manipulate a superior process
FRKHX3: invalid use of multiple process handle
KFRKX1: illegal to kill top level process
KFRKX2: illegal to kill self
Node: LGOUT Previous: KFORK Next: LNMST Up: Top
LGOUT JSYS 3
Kills the specified job and appends an accounting entry to the
accounting data file. However, no entry is appended if the job was
never logged in (i.e., a CTRL/C was typed, but no login occurred).
RESTRICTIONS: some functions require WHEEL or OPERATOR capabilities
enabled
ACCEPTS IN AC1: number of the job to be logged out, or -1 for the
current job
RETURNS +1: failure, error code in AC1
(LGOUT)
+2: success
When a specific job number is given in AC1, it must refer to either a
PTY job controlled by the current job or a job logged in under the
same user name as the current job. Otherwise, to give a specific job
number, the process must have WHEEL or OPERATOR capability enabled.
An argument of -1 must be given if the current job wishes to kill
itself (i.e., the job number given cannot be the same as the current
job). Note that this monitor call does not return if the argument in
AC1 is -1.
The LGOUT monitor call outputs the time used (both CPU and console),
the job number, and the current date and time. This information is
output on the terminal to which the job being logged out is attached.
LGOUT ERROR MNEMONICS:
LOUTX1: illegal to specify job number when logging out own job
LOUTX2: invalid job number
LOUTX3: WHEEL or OPERATOR capability required
LOUTX4: LOG capability required
LOUTX5: illegal to log out job 0
Node: LNMST Previous: LGOUT Next: LOGIN Up: Top
LNMST JSYS 504
Translates a logical name to its original definition string. (Refer
to Section 2.2.2 and the CRLNM and INLNM monitor calls descriptions.)
ACCEPTS IN AC1: function code
AC2: pointer to the logical name
AC3: pointer to the string where the original logical name
definition is to be written
RETURNS +1: failure, error code in AC1
+2: success, updated string pointer in AC3
The codes for the functions are as follows:
0 .LNSJB Obtain the job-wide definition of the logical name.
1 .LNSSY Obtain the system definition of the logical name.
LNMST ERROR MNEMONICS:
(LNMST)
GJFX22: insufficient system resources (Job Storage Block full)
LNSTX1: no such logical name
LNSTX2: invalid function
Node: LOGIN Previous: LNMST Next: LPINI Up: Top
LOGIN JSYS 1
Logs a job into the system. Useful for logging in from an idle
terminal on which a CTRL/C has been typed.
ACCEPTS IN AC1: 36-bit user number under which user will log in
AC2: pointer to beginning of password string
AC3: account number in bits 3-35 if bits 0-2 are 5.
Otherwise contains a pointer to an account string.
If a null byte is not seen, the string is terminated
after 39 characters are processed.
RETURNS +1: failure, error code in AC1
+2: success, date and time of last login (in internal
system format; refer to Section 2.8.2) in AC1, and
updated string pointers, if pertinent, in AC2 and
AC3.
The LOGIN monitor call does not require a password if the controlling
terminal is a pseudo-terminal and the controlling job either has the
WHEEL or OPERATOR capability enabled or is logged in as the same user
being logged in for this job.
If the call is successful, an accounting entry is appended to the
accounting data file. If the account validation facility is enabled,
the LOGIN call verifies either the account given or the default
account of the user being logged in.
LOGIN ERROR MNEMONICS:
LGINX1: invalid account identifier
LGINX2: directory is "files-only" and cannot be logged in to
LGINX3: internal format of directory is incorrect
LGINX4: invalid password
LGINX5: job is already logged in
LGINX6: no more job slots available for logging in
(LPINI)
Node: LPINI Previous: LOGIN Next: MDDT% Up: Top
LPINI JSYS 547
Loads the direct access Vertical Formatting Unit (VFU) or translation
Random Access Memory (RAM) for the line printer. This call is
executed at system startup by the program that configures the system.
RESTRICTIONS: requires WHEEL or OPERATOR capabilities enabled
ACCEPTS IN AC1: JFN of file containing VFU or RAM
AC2: status bits in the left half, and function code in
the right half
AC3: unit number of line printer
RETURNS +1: always
The following status bit is currently defined.
B0(MO%LCP) Line printer is a lowercase printer.
The available functions are as follows:
Code Symbol Meaning
32 .MOLVF Load the VFU from the file indicated by the given
JFN.
34 .MOLTR Load the translation RAM from the file indicated
by the given JFN.
The line printer must not be opened by any process when this call is
executed. If a condition occurs that prevents the VFU or RAM from
being loaded (e.g., the line printer is off line), the name of the
file will be stored. The VFU or RAM will then be loaded automatically
the next time a process performs output to the line printer.
Generates an illegal instruction interrupt on error conditions below.
LPINI ERROR MNEMONICS:
LPINX1: invalid unit number
LPINX2: WHEEL or OPERATOR capability required
LPINX3: illegal to load RAM or VFU while device is OPEN
Node: MDDT% Previous: LPINI Next: METER% Up: Top
MDDT% JSYS 777
(MDDT%)
Transfers control to the MDDT program while preserving the context of
the process that issued the MDDT% JSYS. The terminal keyboard is
activated and the user may enter commands to the MDDT program or may
return to TOPS-20 command level by typing CTRL/C or CTRL/Z.
RESTRICTIONS: requires WHEEL or OPERATOR capabilities enabled
The MDDT% JSYS accepts no arguments and does not return control to the
issuing process (unless the user types MRETN$G).
MDDT ERROR MNEMONICS:
WHELX1: WHEEL or OPERATOR capability required
Node: METER% Previous: MDDT% Next: MONRD% Up: Top
METER% JSYS 766
Returns the value of the execution accounting meter or the memory
reference accounting meter. These values do not represent time as in
"clock time"; rather, they represent the amount of time that the EBOX
was busy and how many times the MBOX was referenced by the EBOX.
RESTRICTIONS: available only on KL10 hardware
ACCEPTS IN AC1: function code
RETURNS +1: always, with 59-bit value in AC2 and AC3
Function Codes:
Code Symbol Meaning
1 .MEREA Read process execution accounting meter
doubleword. Value returned is EBOX busy time
(number of EBOX ticks).
2 .MERMA Read process memory-reference accounting meter
doubleword. Value returned is count of MBOX
references (number of MBOX ticks).
The accounting meters have bits which allow executive PI overhead and
executive non-PI overhead to be included in the doubleword count.
These are turned off by default (the monitor must be rebuilt to set
them), so (by default) the EBOX count does not include the monitor
overhead of paging, scheduling, or swapping. The count primarily
includes only the EBOX time spent executing the instructions and
JSYS's in the user's program. However, interrupts caused by IO,
paging, swapping, etc can cause instruction restarts or require pager
refills and these are included in the count. Because these interrupts
are dependent on a variety of system variables (such as load average),
(METER%)
subsequent timings of the same event will return varying count values.
These fluctuations can be "smoothed" by timing the event repeatedly
and taking the average of the values returned.
The MBOX reference count has the same specifications as the EBOX
count, and is subject to the same kind of fluctuations. Cache hit/no
hit introduces an additional source of fluctuations. Again, timing
the event repeatedly and taking the average of the values returned
will "smooth" the counts.
An event can be timed by an initial execution of METER%, a DMOVEM
instruction to save the start value, and (after the event) a second
execution of METER% followed by a DSUB instruction to find the elapsed
number of ticks. For added accuracy, the average overhead for the
timing sequence can be determined and subtracted from the average
count value for the timed interval.
The following diagram illustrates the format of the value returned:
! AC2 ! AC3 !
!=============================================================!
! High Order Part !0! Low Order Part ! Reserved !
!=============================================================!
!0 35!0!1 23!24 35!
To form a right-justified doubleword value in AC2 and AC3, the
following instruction may be executed:
ASHC AC2,-D12
METER% ERROR MNEMONICS:
ARGX02: Invalid function code
METRX1: METER not implemented for this processor.
Node: MONRD% Previous: METER% Next: MRECV Up: Top
MONRD% JSYS 717
The MONRD% is used by non-privileged program to obtain information from
the JSB, PSB, a monitor symbol (restricted set of), and fork status.
ACCEPTS IN AC1: function code
AC2 through AC4: dependent on the function (see description below)
RETURNS +1: always
Code Symbol Meaning
0 .RDTST The test function is used in order to see if the MONRD%
JSYS is implemented. If implemented, the JSYS will
return a value of .TSTNM (123456 octal). (AC2 must be
zero.)
1 .RDSYM The read symbol function will get the definition (the
address in the monitor) of the SIXBIT symbol in AC1.
If successful AC2 will contain the definition of the
symbol.
2 .RDJSB The read JSB function allows you to read the contents a
word in the JSB (Job Storage Block). The word is
referenced by an offset (contained in AC3) from a
symbol (the SIXBIT value of which is in AC2). AC4
contains the job number. (Symbols implemented are
listed below.) On successful return AC2 will contain
the contents of that word.
3 .RDPSB The read PSB function is the same as the .RDJSB
function except that it allows you to read from the PSB
(Proccess Storage Block) and not the JSB. AC4 contains
the system fork number.
4 .RDSTS The read fork status function returns the same fork
information as the RFSTS JSYS in AC2 (if successful).
AC2 (on entry) contains the absolute fork number (not
relative fork handle) of the fork in question.
Function: Test Read symbol Read JSB Read PSB Read fork status
AC1: .RDTST .RDSYM .RDJSB .RDPSB .RDSTS
AC2: 0 sym-name sym-name sym-name sys-fork-#
AC3: -- -- offset offset --
AC4: -- -- job-# sys-fork-# --
Where: sym-name is the SIXBIT value of the symbol to look for;
sys-fork-# is an absolute fork number; offset is the offset
(from the symbol name); job-# is the job number of the whose
JSB or PSB to look at
Table of Symbols for MONRD%
CAPENB CAPMSK DSKDTB FILBYN FILBYT FILDDN FILDNM FILNEN
FILSTS FILVER FILOFN FILDEV FKCNT FKPTRS FKRT INTDF
JOBNO JSVAR JSVARZ KIMUU1 LSTERR MAXJFN MLJFN NUFKS
PPC PSVAR PSVARZ RESQTL RSCNBP SYSFK TRAPPC TTFLG1
TTFLGS TTICT TTLINK TTOCT UPDL UTRPCT
Generates illegal instruction interrupt if not implemented.
Node: MRECV Previous: MONRD% Next: MSEND Up: Top
MRECV JSYS 511
Retrieves an IPCF (Inter-Process Communication Facility) message from
the process' input queue. Refer to the TOPS-20 Monitor Calls User's
Guide for an overview and description of the Inter-Process
Communication Facility.
RESTRICTIONS: Requires WHEEL or IPCF capability enabled
ACCEPTS IN AC1: length of packet descriptor block
(MRECV)
AC2: address of packet descriptor block
RETURNS +1: failure, error code in AC1
+2: success. The packet is retrieved and placed into the
block indicated by word .IPCFP of the packet
descriptor block. AC1 contains the length of the
next entry in the queue in the left half and the
flags from the next packet in the right half. This
returned word is called the associated variable of
the next entry in the queue. If the queue is empty,
AC1 contains 0.
The format of the packet descriptor block is as follows:
Word Symbol Meaning
0 .IPCFL Flags. (Refer to the MSEND call
description.)
1 .IPCFS PID of sender. The caller does not supply
this PID; the system fills it in when the
packet is retrieved.
2 .IPCFR PID of receiver. This PID can be one of
three values: a specific PID, -1 to retrieve
messages for any PID belonging to this
process, or -2 to retrieve messages for any
PID belonging to this job. When -1 or -2 is
supplied, messages are not retrieved in any
particular order except that messages from a
specific PID are returned in the order in
which they were received.
3 .IPCFP Pointer to block where message is to be
placed (length of message in the left half
and address where message is to be placed in
the right half).
4 .IPCFD User number of sender.
5 .IPCFC Enabled capabilities of sender.
6 .IPCSD Directory number of sender's connected
directory.
7 .IPCAS Account string of sender. The caller
supplies a pointer to the block where the
account is to be placed.
The caller (i.e., receiver) does not supply the information in words 4
through 7; the system fills in the words when the packet is
retrieved. These words describe the sender at the time the message
was sent and permit the receiver to validate messages.
(MRECV)
Refer to the MSEND call description for the flags that can be set in
word .IPCFL of the packet descriptor block.
MRECV ERROR MNEMONICS:
IPCFX1: length of packet descriptor block cannot be less than 4
IPCFX2: no message for this PID
IPCFX3: data too long for user's buffer
IPCFX4: receiver's PID invalid
IPCFX5: receiver's PID disabled
IPCF11: WHEEL or IPCF capability required
IPCF14: no PID's available to this job
IPCF15: no PID's available to this process
IPCF16: receive and message data modes do not match
IPCF24: invalid message size
IPCF25: PID does not belong to this job
IPCF26: PID does not belong to this process
IPCF27: PID is not defined
IPCF28: PID not accessible by this process
IPCF29: PID already being used by another process
IPCF31: invalid page number
IPCF32: page is not private
IPCF34: cannot receive into an existing page
Node: MSEND Previous: MRECV Next: MSFRK Up: Top
MSEND JSYS 510
Sends an IPCF (Inter-Process Communication Facility) message. The
message is in the form of a packet and can be sent to either the
specified PID or the system process <SYSTEM>INFO. Refer to the
TOPS-20 Monitor Calls User's Guide for an overview and description of
the Inter-Process Communication Facility.
RESTRICTIONS: requires IPCF capability enabled. Some functions
(MSEND)
require WHEEL capability enabled.
ACCEPTS IN AC1: length of packet descriptor block
AC2: address of packet descriptor block
RETURNS +1: failure, error code in AC1
+2: success. The packet is sent to the receiver's input
queue. Word .IPCFS of the packet descriptor block is
updated with the sender's PID. This updating is done
in case the PID was being defaulted or created by
this call.
The format of the packet descriptor block is as follows:
Word Symbol Meaning
0 .IPCFL Flags. (See below.)
1 .IPCFS PID of sender, or 0 if no PID exists for
sender. This word will be filled in by the
monitor if the caller is creating a PID
(i.e., flag bit IP%CPD is on).
2 .IPCFR PID of receiver, or 0 if receiver is
<SYSTEM>INFO.
3 .IPCFP Pointer to message block (length of message
in the left half and starting address of
message in the right half). When a packet is
sent to <SYSTEM>INFO, the message block
contains the request being made. (See
below.)
The following flags are defined in word .IPCFL of the packet
descriptor block. These flags can be set on both the MSEND and MRECV
calls.
Flags Set By Caller
B0(IP%CFB) Do not block process if there are no messages in the
queue. If this bit is set, an error is given if there
are no messages.
B1(IP%CFS) Use, as the sender's PID, the PID obtained from the
address specified in word .IPCFS. Setting bit IP%CFS
notifies the monitor that word .IPCFS contains an
address, and the sender's PID is located in that
address.
B2(IP%CFR) Use, as the receiver's PID, the PID obtained from the
address specified in word .IPCFR. Setting bit IP%CFR
notifies the monitor that word .IPCFR contains an
address, and the receiver's PID is located in that
(MSEND)
address.
B3(IP%CFO) Allow one send request above the quota. (The default
send quota is 2.)
B4(IP%TTL) Truncate the message, if it is larger than the space
reserved. If this bit is not set, an error is given if
the message is too large.
B5(IP%CPD) Create a PID to use as the sender's PID and return it
in word .IPCFS of the packet descriptor block.
B6(IP%JWP) Make the created PID be job wide (i.e., permanent until
the job logs out). If this bit is not set, the PID is
temporary until the process executes the RESET monitor
call. If B5(IP%CPD) is not set, B6 is ignored.
B7(IP%NOA) Do not allow other processes to use the created PID.
If B5(IP%CPD) is not set, B7 is ignored.
B18(IP%CFP) The packet is privileged. (This bit can be set only by
a process with WHEEL capability enabled.) When a
privileged sender sets this bit, the MRECV and MUTIL
calls return it set for any reply. An error is given
if this bit is set by the sender and the receiver is
not privileged.
B19(IP%CFV) The packet is a page of data. Word .IPCFP of the
packet descriptor block contains 1000 in the left half
and the page number in the right half. The page the
packet is being sent to, or is being received into,
must be private.
NOTE
When a process sends a page of data with MSEND,
that page is removed from the process' map.
Flags Returned After Call
B20(IP%CFZ) A zero-length message was sent, and the packet consists
of only the packet descriptor block.
B24-B29 Error code field for errors encountered by <SYSTEM>INFO
(IP%CFE) during a send or receive request.
Code Symbol Meaning
15 .IPCPI insufficient privileges
16 .IPCUF invalid function
67 .IPCSN <SYSTEM>INFO needs name
72 .IPCFF <SYSTEM>INFO free space exhausted
(MSEND)
74 .IPCBP PID has no name or is invalid
75 .IPCDN duplicate name has been specified
76 .IPCNN unknown name has been specified
77 .IPCEN invalid name has been specified
B30-B32 System and sender code. This code can be set only by a
(IP%CFC) process with WHEEL capability enabled. The system
returns the code so that a nonprivileged user can
examine it.
Code Symbol Meaning
1 .IPCCC sent by <SYSTEM>IPCF
2 .IPCCF sent by system-wide <SYSTEM>INFO
3 .IPCCP sent by receiver's <SYSTEM>INFO
B33-B35 Field for return of special messages. This field can
(IP%CFM) be set only by a process with WHEEL capability enabled.
The system returns the information so that a
nonprivileged user can examine it.
Code Symbol Meaning
1 .IPCFN Process' input queue contains a packet
that could not be delivered to intended
PID.
When the MSEND call is used to send a packet to <SYSTEM>INFO, the
message portion of the packet (i.e., the first three words) contains
the request. This request has the following format:
Word Symbol Meaning
0 .IPCI0 user-defined code in the left half and the
function (see below) <SYSTEM>INFO is to
perform in the right half. The user-defined
code is used to associate the response from
<SYSTEM>INFO with the appropriate request.
1 .IPCI1 PID that is to receive a duplicate of the
response from <SYSTEM>INFO. If this word is
0, the response is sent only to the
originator of the request.
2 .IPCI2 argument for the requested function. (See
below.)
The functions that can be requested of <SYSTEM>INFO, along with their
arguments, are as follows:
Function Argument Meaning
.IPCIW name Return the PID associated with the
specified name. The PID is returned in
word .IPCI1.
(MSEND)
.IPCIG PID Return the name associated with the
specified PID. The name is returned in
word .IPCI1.
.IPCII name in Assign the specified name to the PID
ASCIZ belonging to the process making the
request. The temporary or permanent
status of the PID is specified by flag
bit IP%JWP(B6) when the PID was
originally created.
.IPCIJ name in Identical to the .IPCII function.
ASCIZ
.IPCIS Disassociates all PIDs with names. Used
by the monitor on a RESET or LGOUT
monitor call. This function is not
available to user programs.
MSEND ERROR MNEMONICS:
IPCFX1: length of packet descriptor block cannot be less than 4
IPCFX4: receiver's PID invalid
IPCFX5: receiver's PID disabled
IPCFX6: send quota exceeded
IPCFX7: receiver quota exceeded
IPCFX8: IPCF free space exhausted
IPCFX9: sender's PID invalid
IPCF11: WHEEL or IPCF capability required
IPCF12: no free PID's available
IPCF13: PID quota exceeded
IPCF14: no PID's available to this job
IPCF15: no PID's available to this process
IPCF19: no PID for [SYSTEM]INFO
IPCF24: invalid message size
IPCF25: PID does not belong to this job
IPCF26: PID does not belong to this process
IPCF27: PID is not defined
(MSEND)
IPCF28: PID not accessible by this process
IPCF29: PID already being used by another process
IPCF31: invalid page number
IPCF32: page is not private
Node: MSFRK Previous: MSEND Next: MSTR Up: Top
MSFRK JSYS 312
Starts a process in monitor mode. The MSFRK call is legal only if it
is called from monitor mode or if the process has WHEEL or OPERATOR
capability enabled. This call allows job 0 to create multiple
processes for handling various asynchronous monitor tasks.
RESTRICTIONS: requires WHEEL or OPERATOR capability enabled
ACCEPTS IN AC1: process handle
AC2: 36-bit PC word, with user mode and other flags in the
left half and the virtual address in the right half
RETURNS +1: always
Because the starting context of the process is undefined, the process
being started should execute the following sequence of instructions at
its starting address:
FBGN: MOVSI 1,UMODF ;fake user PC
MOVEM 1,FPC ;simulate the JSYS call
MCENTR ;establish usual top-level JSYS context
Generates an illegal instruction interrupt on error conditions below.
MSFRK ERROR MNEMONICS:
FRKHX1: invalid process handle
FRKHX2: illegal to manipulate a superior process
FRKHX3: invalid use of multiple process handle
CAPX1: WHEEL or OPERATOR capability required
Node: MSTR Previous: MSFRK Next: MTALN Up: Top
MSTR JSYS 555
(MSTR)
Performs various structure-dependent functions. These functions
include mounting and dismounting structures, incrementing and
decrementing mount counts for structures, and setting and obtaining
the status of structures.
For regulated structures, the mount count must be incremented before
access rights or JFNs can be given. All structures are regulated by
default except the primary structure (PS: on most systems) or any
structure declared non-regulated with the .MSSSS function of MSTR.
RESTRICTIONS: some functions require WHEEL or OPERATOR capability
enabled. A process with MAINTENANCE capability
enabled can obtain the status of a disk unit
(functions .MSRNU and .MSRUS).
ACCEPTS IN AC1: length of the argument block in the left half and
function code in the right half
AC2: address of the argument block
RETURNS +1: always, with some functions returning data in the
argument block. (Refer to individual function
descriptions below.)
Generates an illegal instruction interrupt on all error conditions.
The available functions are summarized below.
Function Symbol Privileged Meaning
Code
0 .MSRNU Yes Return the status of the next
disk unit.
1 .MSRUS Yes Return the status of the given
disk unit.
2 .MSMNT Yes Mount the given structure.
3 .MSDIS Yes Dismount the given structure.
4 .MSGSS No Return the status of the given
structure.
5 .MSSSS Yes Change the status of the given
structure.
6 .MSINI Yes Initialize the given
structure.
7 .MSIMC No Increment the mount count for
the given structure for the
(MSTR)
job.
10 .MSDMC No Decrement the mount count for
the given structure for the
job.
11 .MSGSU No Return the job numbers of the
users of the given structure.
13 .MSICF No Increment the mount count for
the given structure for the
given fork.
14 .MSDCF No Decrement the mount count for
the given structure for the
given fork.
15 .MSOFL Yes Receive interrupt when disk
comes on-line.
16 .MSIIC Yes Ignore increment check for
structure use
Obtaining the Status of the Next Disk Unit - .MSRNU
This function returns the status of the next disk unit on the system.
The next disk unit is determined by searching the current channel and
looking for the next physical unit on that channel.
The .MSRNU function accepts the channel, controller, and unit numbers
in the first three words of the argument block. The first time this
function is executed, the value for each of these numbers is -1.
After successful completion of this function, the channel, controller,
and unit numbers are updated, and the software information about the
disk drive is returned in the argument block. To locate all drives
available for mounting structures, the channel, controller, and unit
numbers returned from one .MSRNU function call are supplied on the
next one until all units on all channels have been searched. When all
units have been searched, the MSTR monitor call returns error MSTX18.
The format of the argument block, whose length is .MSRLN, is as
follows:
Word Symbol Meaning
0 .MSRCH Channel number (0-7)
1 .MSRCT Controller number (reserved for future use,
must be -1)
2 .MSRUN Unit number (0-7)
3 .MSRST Returned software status of unit. The
following status bits are defined:
(MSTR)
B0(MS%MNT) Unit is part of a mounted
structure
B2(MS%DIA) Unit is being used by an on-line
diagnostic program
B3(MS%OFL) Unit is off line
B4(MS%ERR) Unit has an error that was
detected during reading
B5(MS%BBB) Unit has a bad BAT block. If
this bit is on, the data returned
in word .MSRSN (word 4) and in
words .MSRNS through .MSRFI
(words 6 through 20) is
indeterminate.
B6(MS%HBB) Unit has a bad HOME block
B7(MS%WLK) Unit is write locked
B9-B17 Type of disk unit
(MS%TYP)
1 .MSRP4 RP04
5 .MSRP5 RP05
6 .MSRP6 RP06
7 .MSRP7 RPO7
11 .MSRM3 RMO3
4 .MSRSN Byte pointer to ASCIZ string in which to
store the structure name. This pointer is
updated on return.
5 .MSRSA Byte pointer to ASCIZ string in which to
store the structure alias. The alias is
usually the same as the structure name. The
alias is returned, and the pointer updated,
only if the structure is on line.
6 .MSRNS Logical unit number within the structure of
this unit in the left half, and number of
units in the structure in the right half.
7 .MSRSW Number of pages for swapping on this
structure.
10-12 .MSRUI Unit ID (3 words of ASCII)
13-15 .MSROI Owner ID (3 words of ASCII)
16-20 .MSRFI File system ID (3 words of ASCII)
21 .MSRSP Number of sectors per page
22 .MSRSC Number of sectors per cylinder
23 .MSRPC Number of pages per cylinder
24 .MSRCU Number of cylinders per unit
(MSTR)
25 .MSRSU Number of sectors per unit
26 .MSRBT Number of bit words in bit table per cylinder
The length of the argument block in words is given by symbol .MSRLN
(27).
The following errors are possible on the failure of this function.
MSTRX2: WHEEL or OPERATOR capability required
MSTRX3: argument block too small
MSTX14: invalid channel number
MSTX15: invalid unit number
MSTX16: invalid controller number
MSTX18: no more units in system
MSTX27: specified unit is not a disk
CAPX2: WHEEL, OPERATOR, or MAINTENANCE capability required
Obtaining the Status of a Given Disk Unit - .MSRUS
This function returns the status of the given disk unit. It accepts
the channel, controller, and unit numbers in the first three words of
the argument block. After successful completion of this function, the
channel, controller, and unit numbers are unchanged, and the software
information about the given disk unit is returned in the argument
block.
The difference between this function and the .MSRNU function is that
.MSRUS does not search for the next disk unit but rather returns the
status for the given unit. The .MSRNU function searches for the next
disk unit and returns the status for that unit.
The format of the argument block and the errors possible on the
failure of this function are the same as described for the .MSRNU
function.
Mounting a Given Structure - .MSMNT
This function brings the given structure on line and normally makes it
available for general use. Any structure other than the public
structure PS: must be brought on line with this function. (The
public structure PS: is brought on line during the system startup
procedure.)
It is recommended that the .MSRNU (Read Next Unit) function be given
first to locate all units in the structure. Then the .MSMNT (Mount
(MSTR)
Structure) function can be given to read and verify the HOME blocks of
each unit and to mount the structure. If one or more units of the
structure are write-locked, the structure cannot be mounted and an
error is given.
The format of the argument block is as follows:
Word Symbol Meaning
0 .MSTNM Pointer to the ASCIZ string containing the
name of the structure.
1 .MSTAL Pointer to the ASCIZ string containing the
alias of the structure.
2 .MSTFL Flag bits in the left half, and the number of
units in the structure (.MSTNU) in the right
half. The bits that can be set in the left
half are:
B0(MS%NFH) If one of the HOME blocks is
incorrect, do not fix it and do
return an error. If this bit is
off and one of the HOME blocks is
incorrect, the correct block is
copied into the bad HOME block
and the mounting procedure
continues.
B1(MS%NFB) If one of the BAT (Bad Allocation
Table) blocks is incorrect, do
not fix it and do return an
error. If this bit is off and
one of the BAT blocks is
incorrect, the correct block is
copied into the bad BAT block and
the mounting procedure continues.
B2(MS%XCL) Mount the structure for exclusive
use by this job. This bit is set
by a system program when it
initializes or reconstructs a
structure. If this bit if off,
the structure is mounted for
general use.
B3(MS%IGN) Ignore correctable errors in the
bit table and in the root
directory on this structure.
This bit is set by a system
program when it reconstructs the
root directory on a structure or
rebuilds the bit table. If this
bit is off and an error is
detected, this function returns
(MSTR)
an error.
3 .MSTUI Beginning of unit information for each unit
in the structure. The information is 3 words
long per unit, and the symbol for this length
is .MSTNO. The first 3-word block is for
logical unit 0, and the last 3-word block is
for the last logical unit (.MSTNU-1). The
offsets into the 3-word block are:
0 .MSTCH Channel number of unit
1 .MSTCT Controller number of unit
(currently must be -1)
2 .MSTUN Unit number of unit
The number of argument words per unit is
given by symbol .MSTNO (3).
After successful completion of this function, the given structure is
mounted and available for general use (unless bit MS%XCL was on in
word .MSTFL of the argument block).
The following errors are possible on the failure of this function.
MSTRX2: WHEEL or OPERATOR capability required
MSTRX3: argument block too small
MSTRX4: insufficient system resources
MSTRX5: drive is not on line
MSTRX6: home blocks are bad
MSTRX7: invalid structure name
MSTRX8: could not get OFN for ROOT-DIRECTORY
MSTRX9: could not MAP ROOT-DIRECTORY
MSTX10: ROOT-DIRECTORY bad
MSTX11: could not initialize Index Table
MSTX12: could not OPEN Bit Table File
MSTX13: backup copy of ROOT-DIRECTORY is bad
MSTX14: invalid channel number
MSTX15: invalid unit number
MSTX16: invalid controller number
(MSTR)
MSTX17: all units in a structure must be of the same type
MSTX19: unit is already part of a mounted structure
MSTX20: data error reading HOME blocks
MSTX23: could not write HOME blocks
MSTX25: invalid number of swapping pages
MSTX27: specified unit is not a disk
MSTX30: incorrect Bit Table counts on structure
MSTX34: unit is write-locked
MSTX35: too many units in structure
MONX01: insufficient system resources
Dismounting a Given Structure - .MSDIS
This function indicates that the given structure can be removed from
the system. Any mounted structure other than the public structure PS:
can be dismounted with this function. (The public structure PS: is
dismounted at system shutdown.)
Files that are open at the time this function is executed become
inaccessible, and the jobs that had the files open receive an error if
they reference them. Jobs that have mounted the structure or have
connected to or accessed a directory on the structure receive an
informational message on the terminal. This message is
[STRUCTURE name: HAS BEEN DISMOUNTED]
The format of the argument block is as follows:
Word Symbol Meaning
0 .MSDNM Pointer to ASCIZ string containing the alias
of the structure, or device designator of the
structure.
After successful completion of this function, the given structure is
dismounted and can be physically removed from the system.
The following errors are possible on the failure of this function.
MSTRX2: WHEEL or OPERATOR capability required
MSTRX3: argument block too small
MSTX21: structure is not mounted
(MSTR)
MSTX24: illegal to dismount the Public Structure
Obtaining the Status of a Given Structure - .MSGSS
This function returns the status of a mounted structure. The caller
supplies the designators for the structure and for the storage of the
structure's physical ID. After successful completion of the call,
data is returned in the appropriate words in the argument block.
The format of the argument block, whose length is .MSGLN, is as
follows:
Word Symbol Meaning
0 .MSGSN Byte pointer to ASCIZ string containing the
alias of the structure, or device designator
of the structure.
1 .MSGST Returned status word. The status bits are:
B0(MS%PS) This structure is a public
structure.
B1(MS%DIS) This structure is being
dismounted and no further mount
count increments are allowed.
B2(MS%DOM) This structure is a domestic
structure.
B3(MS%PPS) This structure is the public
structure.
B4(MS%INI) This structure is being
initialized.
B6(MS%NRS) Structure is non-regulated
2 .MSGNU Number of units in structure.
3 .MSGMC Mount count for this structure. This value
is determined by the number of .MSIMC
(Increment Mount Count) functions given for
this structure by all users since the
structure was mounted.
4 .MSGFC Open file count (i.e., number of open files)
for this structure.
5 .MSGSI Pointer to ASCIZ string in which to store the
structure's physical ID.
The length of the argument block is given by symbol .MSGLN (6).
(MSTR)
After successful completion of this function, the status of the given
structure is returned in the appropriate words of the argument block,
and the pointer to the physical ID is updated to reflect the returned
string.
The following errors are possible on the failure of this function.
MSTRX3: argument block too small
MSTX21: structure is not mounted
Changing the Status of a Given Structure - .MSSSS
This function changes the status of a mounted structure. The caller
can change only two of the status bits in the structure's status word:
status of being dismounted and status of being domestic.
The format of the argument block, whose length is .MSSLN is:
Word Symbol Meaning
0 .MSSSN Byte pointer to ASCIZ string containing the
alias of the structure, or device designator
of the structure.
1 .MSSST Word containing the new values for the bits
being changed.
2 .MSSMW Mask containing the bits being changed. The
bits that can be changed are
B1(MS%DIS) Structure is being dismounted.
B2(MS%DOM) Structure is domestic.
B6(MS%NRS) Structure is non-regulated
After successful completion of this function, the status of the given
structure is changed according to the data supplied in the argument
block.
The following errors are possible on the failure of this function.
MSTRX2: WHEEL or OPERATOR capability required
MSTRX3: argument block too small
MSTX21: structure is not mounted
MSTX22: illegal to change specified bits
Initializing a Given Structure - .MSINI
(MSTR)
This function creates a new structure or repairs an existing structure
during normal system operation. The caller has the option of creating
a new file system, reconstructing the root directory, writing a new
set of HOME blocks on the structure, or rebuilding the index block.
The format of the argument block is as follows:
Word Symbol Meaning
0 .MSINM Byte pointer to ASCIZ string containing the
name of the structure.
1 .MSIAL Byte pointer to ASCIZ string containing the
alias of the structure.
2 .MSIFL Flag bits in B0-B11, function value (MS%FCN)
in B12-B17, and number of units in structure
(.MSINU) in B18-B35. The flag bits are:
B0(MS%NFH) Do not fix HOME block if one is
incorrect and do return an error.
This bit can be on only with
function .MSRRD. (See below.)
B1(MS%NFB) Do not fix BAT block if one is
incorrect and do return an error.
B2(MS%XCL) Mount this structure for
exclusive use by this job. If
this bit is off, the structure is
mounted for general use.
B3(MS%IGN) Ignore errors in the bit table
and in the root directory on this
structure. If this bit is on,
B2(MS%XCL) must also be on.
The function values that can be given are:
1 .MSCRE Create a new file system
2 .MSRRD Reconstruct the root directory
3 .MSWHB Write a new set of HOME blocks
4 .MSRIX Rebuild the index table
3-5 .MSISU Beginning of unit information for each unit
in the structure. The information is 3 words
long per unit, and the symbol for this length
is .MSINO. The first 3-word block is for
logical unit 0, and the last 3-word block is
for the last logical unit (.MSINU-1). The
offsets into the 3-word block are:
(MSTR)
0 .MSICH Channel number of unit
1 .MSICT Controller number of unit
(currently must be -1)
2 .MSIUN Unit number of unit
The number of arguments per unit is given by
symbol .MSINO (3).
6 .MSIST Status word (reserved for future use).
7 .MSISW Number of pages for swapping on this
structure.
10 .MSIFE Number of pages for the front-end file
system.
11-13 .MSIUI Unit ID (3 words of ASCII)
14-16 .MSIOI Owner ID (3 words of ASCII)
17-21 .MSIFI File system ID (3 words of ASCII) (reserved
for future use)
22 .MSIFB Number of pages for the file BOOTSTRAP.BIN.
Words 6 through 16 (.MSIST through .MSIOI) of the argument block must
be supplied when the MSTR call is being executed to create a new file
system or to write a new set of HOME blocks. After successful
completion of the .MSCRE function, the structure is initialized and
the following directories are created:
<ROOT-DIRECTORY>
<SYSTEM>
<SUBSYS>
<ACCOUNTS>
<SPOOL>
<OPERATOR>
The following errors are possible on the failure of this function.
MSTRX2: WHEEL or OPERATOR capability required
MSTRX3: argument block too small
MSTRX4: insufficient system resources
MSTRX5: drive is not on line
MSTRX6: home blocks are bad
MSTRX7: invalid structure name
MSTRX8: could not get OFN for ROOT-DIRECTORY
(MSTR)
MSTRX9: could not MAP ROOT-DIRECTORY
MSTX10: ROOT-DIRECTORY bad
MSTX11: could not initialize Index Table
MSTX12: could not OPEN Bit Table File
MSTX13: backup copy of ROOT-DIRECTORY is bad
MSTX14: invalid channel number
MSTX15: invalid unit number
MSTX16: invalid controller number
MSTX17: all units in a structure must be of the same type
MSTX19: unit is already part of a mounted structure
MSTX20: data error reading HOME blocks
MSTX23: could not write HOME blocks
MSTX25: invalid number of swapping pages
MSTX26: invalid number of Front-End-Filesystem pages
MSTX27: specified unit is not a disk
MSTX28: could not initialize Bit Table for structure
MSTX29: could not reconstruct ROOT-DIRECTORY
MSTX30: incorrect Bit Table counts on structure
MONX01: insufficient system resources
Incrementing the Mount Count - .MSIMC
Users indicate that they are actively using a structure by
incrementing the structure's mount count. A nonzero mount count
informs the operator that the structure should not be dismounted.
Also, an IPCF message is sent to the Mountable Device Allocator to
indicate that a user is using the structure. The .MSIMC function is
used to increment a structure's mount count.
Note that incrementing the mount count is a requirement for accessing
files and directories on regulated structures.
The job receives an error if the given structure is in the process of
being dismounted (i.e., a job has given the .MSSSS function with the
MS%DIS bit on).
(MSTR)
The format of the argument block is as follows:
Word Symbol Meaning
0 .MSDEV Byte pointer to ASCIZ string containing the
alias of the structure, or device designator
of the structure.
1 .MSJOB Number of job whose mount count is to be
incremented. This requires WHEEL or OPERATOR
capability to be enabled.
After successful completion of this function, the mount count of the
given structure has been incremented.
The following errors are possible on the failure of this function.
MSTRX3: argument block too small
MSTX21: structure is not mounted
MSTX33: structure is unavailable for mounting
ARGX18: invalid structure name
MONX01: insufficient system resources
STDVX1: no such device
STRX01: structure is not mounted
STRX02: insufficient system resources
Decrementing the Mount Count - .MSDMC
This function indicates that the given structure is no longer being
used by the job executing the call. If the job executing the call has
previously incremented the mount count for this structure via the
.MSIMC (Increment Mount Count) function, the mount count is
decremented. If the job has not incremented the mount count, the job
receives an error. If the structure is regulated, and the user has
any assigned JFNs on the structure, is accessing the structure or is
connected to the structure, an error is returned.
The format of the argument block is as follows:
Word Symbol Meaning
0 .MSDEV Byte pointer to ASCIZ string containing the
alias of the structure, or device designator
of the structure.
1 .MSJOB Number of job whose mount count is to be
deccremented. This requires WHEEL or
OPERATOR capability to be enabled.
(MSTR)
The resource allocator receives an IPCF packet when the mount count
for a structure is decremented. The flag word (.IPCFL) of the packet
descriptor block has a code of 1(.IPCCC) in the IP%CFC field (bits
30-32). This code indicates the message was sent by the monitor. The
first word of the packet data block contains the structure dismount
code .IPCDS. The second word contains the number of header words and
the number of the job decrementing the mount count. The third word
contains the device designator of the structure. Thus,
.IPCFL/<.IPCCC>B32
DATA/.IPCDS
DATA+1/number of header words (2),, job number
DATA+2/device designator of structure
After successful completion of this function, the mount count of the
structure has been decremented and the IPCF message has been sent.
The following errors are possible on the failure of this function.
MSTRX3: argument block too small
MSTX21: structure is not mounted
MSTX32: structure was not mounted
MSTX36: illegal while JFNs assigned
MSTX37: illegal while accessing or connected to a directory
ARGX18: invalid structure name
MONX01: insufficient system resources
STDVX1: no such device
STRX01: structure is not mounted
STRX02: insufficient system resources
Obtaining the Users on a Given Structure - .MSGSU
This function returns the job numbers of the users of the given
structure. Users of a structure are divided into three classes:
users who have incremented the mount count (SMOUNT command), users who
are connected to the structure (CONNECT command), and users who have
accessed the structure (ACCESS command). The caller specifies the
classes of users for which information is to be returned by setting
the appropriate bits in the argument block.
The format of the argument block is as follows:
Word Symbol Meaning
(MSTR)
0 .MSUAL Byte pointer to ASCIZ string containing the
alias of the structure, or device designator
of the structure.
1 .MSUFL Flag bits in the left half and 0 in the right
half. The bits that can be set are:
B0(MS%GTA) Return users who have accessed
the structure.
B1(MS%GTM) Return users who have incremented
the mount count.
B2(MS%GTC) Return users who are connected to
the structure.
After successful execution of this function, word 1 through word n+1
(where n is the number of items returned) are updated with the
following information.
Word Symbol Meaning
1 .MSUFL Right half contains the number of items (n)
being returned. Left half is unchanged.
2 .MSUJ1 Flag bits for the job in the left half, and
number of job in the right half.
. .
. .
. .
n + 1 Flag bits for the job in the left half, and
number of job in the right half.
The bits returned for each job are defined
as:
B0(MS%GTA) Job has accessed structure.
B1(MS%GTM) Job has incremented the mount
count for structure.
B2(MS%GTC) Job has connected to structure.
The following errors are possible on the failure of this function.
MSTRX1: invalid function
MSTRX3: argument block too small
STRX01: structure is not mounted
STDVX1: no such device
(MSTR)
ARGX18: invalid structure name
MONX01: insufficient system resources
Specifying word and bits to be modified - .MSHOM
This function allows enabled WHEEL or OPERATOR program to specify word
of homeblock of mounted structure to be modified, which bits should be
modified, and what the new values should be.
The format of the argument block is as follows:
Word Symbol Meaning
0 .MSHNM Handle on alias such as pointer to string, or
device designator.
1 .MSHOF Offset specifying which word should be
changed.
2 .MSHVL Value for new bits.
3 .MSHMK Mask showing which bits should be changed.
The following errors are possible on the failure of this function:
MSTRX2: insufficient privileges
MSTRX3: argument block too small
MSTX21: structure not mounted
any errors "MODHOM" routine returns
Incrementing the Mount Count for the Fork - .MSICF
This function and the next one (.MSDCF) allow job forks to
independently mount and dismount structures without contending with
one another for control of the structure. Note that when either a job
mount or fork mount is possible, the job mount is preferred as it
incurs less overhead.
This function indicates that a fork is actively using a structure. If
the structure is being dismounted, the job receives an error. The
format of the argument block is:
Word Symbol Meaning
0 .MSDEV Pointer to ASCIZ string containing the alias
of the structure, or device designator of the
structure.
The following errors are possible on the failure of this function.
MSTRX3: argument block too small
(MSTR)
MSTX21: structure is not mounted
MSTX33: structure is unavailable for mounting
ARGX18: invalid structure name
MONX01: insufficient system resources
STDVX1: no such device
STRX01: structure is not mounted
STRX02: insufficient system resources
Decrementing the Mount Count for the Fork - .MSDCF
This function and the previous one (.MSICF) allow job forks to
independently mount and dismount structures without contending with
one another for control of the structure. Note that when either a job
mount or fork mount is possible, the job mount is preferred as it
incurs less overhead.
This function indicates that a fork is no longer using a structure.
Note that if a job-wide increment has been done, the fork may still
access the structure. The format of the argument block is:
Word Symbol Meaning
0 .MSDEV Pointer to ASCIZ string containing the alias
of the structure, or device designator of the
structure.
The following errors are possible on the failure of this function.
MSTRX3: argument block too small
MSTX21: structure is not mounted
MSTX32: structure was not mounted
MSTX36: illegal while JFNs assigned
MSTX37: illegal while accessing or connected to a directory
ARGX18: invalid structure name
MONX01: insufficient system resources
STDVX1: no such device
STRX01: structure is not mounted
STRX02: insufficient system resources
(MSTR)
Receive Interrupt when Disk Comes On-line - .MSOFL
This function specifies who is to receive an interrupt when
a disk comes on-line. It is provided for the Mountable
Device Allocator in order to control the disks and inform the operator
of structure status. Only one process on the system will receive
the interrupts. The process using this JSYS must have WHEEL or
OPERATOR
capability enabled. The argument block has the following format:
Word Symbol Meaning
0 .MSCHN Place this process on a software interrupt
channel.
An interrupt is then generated when a disk
comes on-line. If the channel
number is given as -1, a previously assigned
interrupt channel will be
deassigned.
Ignore Increment Check for Structure Use - .MSIIC
Allows a process to use a regulated structure without previously
incrementing the mount count. Entries are made to the accounting file
only on structure decrements, so this function will enable bypassing
of accounting.
There is no argument block.
The following errors are possible:
MSTRX2: WHEEL or OPERATOR capability required
Node: MTALN Previous: MSTR Next: MTOPR Up: Top
MTALN JSYS 774
Associates a given serial-numbered magnetic tape drive with the
specified logical unit number. The MTALN call is a temporary call and
may not be defined in future releases.
RESTRICTIONS: requires WHEEL or OPERATOR capability enabled
ACCEPTS IN AC1: slave type in left half; logical unit number of
magtape in right half
AC2: decimal serial number of magnetic tape drive
(MTALN)
RETURNS +1: always
All units are searched for the specified serial number and slave type.
When they are found, the drive is associated with the given logical
unit number. The original unit is now associated with the logical
unit number that the specified serial-numbered drive had before it was
reassigned.
The slaves recognized are
.MTT45 TU45 (The system default)
.MTT70 TU70
.MTT71 TU71
.MTT72 TU72
Generates an illegal instruction interrupt on error conditions below.
MTALN ERROR MNEMONICS:
WHELX1: WHEEL or OPERATOR capability required
DEVX1: invalid device designator
OPNX7: device already assigned to another job
Node: MTOPR Previous: MTALN Next: MTU% Up: Top
MTOPR JSYS 77
Performs various device-dependent control functions. This monitor
call requires that the device either be opened or be assigned to the
caller if the device is an assignable device.
Because of the device dependencies of the MTOPR call, programs written
with device-independent code should not use this call unless they
first check for the type of device.
RESTRICTIONS: some functions require WHEEL or OPERATOR capability
enabled
ACCEPTS IN AC1: JFN of the device
AC2: function code (see below)
AC3: function arguments or address of argument block (see
descriptions of individual devices)
RETURNS +1: always
The functions listed for each device apply only to that device. If a
function applies to more than one device, its description is repeated
for each applicable device.
(MTOPR)
ARPANET Functions
ARPANET MTOPR functions are described below. For a complete
description of their application, refer to the TOPS-20AN Monitor Calls
User's Guide.
Code Symbol Meaning
20 .MOACP If a connection is in the RFCR state, use of this
function will cause an RFC to be sent to accept
the connection.
21 .MOSND If a connection is operating in buffered send
mode, use of this function causes all currently
buffered bytes to be sent.
22 .MOSIN Causes the INS/INR command to be sent.
24 .MOAIN Assigns interrupt channels through which the
program is interrupted on either a change of state
(of the connection F.S.M) or receipt of an INS or
INR message. The INS/INR PSI channel is stored in
field MOS%NIN (B0-5) of AC3 and the state change
PSI channel is stored in field MO%FSM (B12-17) of
AC3. A value of 77 (octal) in either of these
fields prevents assignment of a PSI channel.
ETHERNET Functions
ETHERNET MTOPR functions are described below. For a complete
description of their application, refer to documentation in the monitor
sources for the Ethernet. If updating is necessary, please do so.
Code Symbol Meaning
20 .MOPEF Send Mark, or write end of file. Takes Mark byte in
AC3.
21 .MOPFC Force transmission of partial pup.
22 .MOPIS Send interrupt. AC3 contains the interrupt code and,
if non-zero, AC4 contains a string pointer to an
interrupt text.
23 .MOPRM Return most recent Mark byte in AC3.
24 .MOPIN Assign interrupt channels according to AC3.
B0-B5 "Interrupt" PSI channel
B6-B11 "Received pup" PSI channel
B12-B17 "State change" PSI channel
25 .MOPAB Abort connection. AC3 contains the Abort code and if
AC4 is non-zero it contains a pointer to the Abort text
26 .MOPRA Return Abort data. Takes an optional string pointer in
AC4 to return the Abort text. Returns Abort code in
AC3 and an appropriately updated string pointer in AC4.
27 .MOPSM Set hardware data mode of the connection from the
contents of AC3. This allows the programmer to specify
how the data (physically a stream of 8-bit frames) is
to be laid out in 36-bit words. The default mode is
.PM32, 32 bits (4 8-bit frames) left justified in a
36-bit word. It is advised that special care be taken
to open the connection in a byte size compatible with
the hardware data mode. The data modes are:
0 .PM16 16-bit bytes right justified in half
words. Suggested byte sizes: 18, 36.
1 .PM32 A 32-bit byte left justified in a full
word. This is the default mode.
Byte sizes: 8,16,32.
2 .PM36 A full 36 bit word.
3 .PMASC Five 7-bit bytes left justified in a
full word. On input, the high-order
bits of the frames are discarded; on
output, they are set to zero. Byte
size: 7.
4 .PM16S 16-bit bytes right justified in half
words with the high and low order bytes
swapped. Byte size: 18, 36.
30 .MOPRM Read hardware data mode of connection into AC3.
DECnet Functions
DECnet-20 MTOPR functions are described below. For a complete
description of their application, refer to the TOPS-20 DECnet-20
Programmer's Guide and Operations Manual.
Code Symbol Meaning
24 .MOACN Allow a network task to enable software interrupt
channels for any combination of the following work
types:
o connect event pending
o interrupt message available
o data available
This function requires that AC3 contain three
9-bit fields specifying the changes in the
interrupt assignments for this link. These fields
are
Field Symbol Used to Signal
B0-B8 MO%CDN Connect event pending
B9-B17 MO%INA Interrupt message available
B18-B26 MO%DAV Data available
The contents of the fields are
(MTOPR)
Value Meaning
nnn The number of the channel to be enabled;
0-5 and 23-35 decimal
.MOCIA Clear the interrupt
.MONCI No change
25 .MORLS Read the link status and return a 36-bit word of
information regarding the status of the logical
link. AC3 contains flag bits in the left half and
a disconnect code in the right half. The flag
bits are
Symbol Bit Meaning
MO%CON B0 Link is connected
MO%SRV B1 Link is a server
MO%WFC B2 Link is waiting for a connect
MO%WCC B3 Link is waiting for a connect
confirm
MO%EOM B4 Link has an entire message to
be read
MO%ABT B5 Link has been aborted
MO%SYN B6 Link has been closed normally
MO%INT B7 Link has an interrupt message
available
MO%LWC B8 Link has been previously
connected
The disconnect/reject codes are as follows:
Symbol Value Meaning
.DCX0 0 No special error
.DCX1 1 Resource allocation failure
.DCX2 2 Destination node does not
exist
.DCX3 3 Node shutting down
.DCX4 4 Destination process does not
exist
.DCX5 5 Invalid name field
.DCX11 11 User abort (asynchronous
disconnect)
.DCX32 32 Too many connections to node
.DCX33 33 Too many connections to
destination process
.DCX34 34 Access not permitted
.DCX35 35 Logical link services mismatch
.DCX36 36 Invalid account
.DCX37 37 Segment size too small
.DCX38 38 Process aborted
.DCX39 39 No path to destination node
.DCX40 40 Link aborted due to data loss
.DCX41 41 Destination process does not
exist
(MTOPR)
.DCX42 42 Confirmation of DISCONNECT
INITIATE
.DCX43 43 Image data field too long
If a disconnect code does not apply to the current
status of the link, the right half of AC3 will be
zeros.
26 .MORHN Return the ASCII name of the host node at the
other end of the logical link. This function
requires that AC3 contain a string pointer to the
location where the host name is to be stored. (If
the byte size exceeds eight bits, bytes are
truncated to eight bits.)
The monitor call returns with an updated pointer
in AC3, and the host name stored as specified.
27 .MORTN Return the unique task name that is associated
with your end of the logical link. If you had
defaulted the task name in the network file
specification, the call returns the
monitor-supplied task name. In DECnet-20, the
default task name is actually a unique number.
This function requires that AC3 contain a string
pointer to the location where the task name is to
be stored. (If the byte size exceeds eight bits,
bytes are truncated to eight bits.)
The monitor call returns with an updated pointer
is AC3 and the task name stored as specified.
30 .MORUS Return the source task user identification
supplied in the connect initiate message. This
function requires that AC3 contain a string
pointer to the location where the user
identification is to be stored. (If the byte size
exceeds eight bits, bytes are truncated to eight
bits.
The monitor call returns with an updated pointer
in AC3 and the user identification stored as
specified. If no user identification was supplied
by the source task, AC3 continues to point to the
beginning of the string, and a null is returned as
the only character.
31 .MORPW Return the source task's password as supplied in
the connect initiate message. This function
requires that AC3 contain a string pointer to the
location where the password is to be stored.
(Passwords are binary, therefore the string
pointer should accomodate 8-bit bytes.)
(MTOPR)
The monitor call returns with an updated pointer
in AC3 and the source task's password stored as
specified. AC4 contains the number of bytes in
the string; a zero value indicates that no
password was supplied by the source task.
32 .MORAC Return the account string supplied by the source
task in the connect initiate message. This
function requires that AC3 contain a string
pointer to the location where the account string
is to be stored. (If the byte size exceeds eight
bits, bytes are truncated to eight bits.)
The monitor call return with an updated pointer in
AC3 and the source task's account number stored as
specified. If no account string was supplied by
the source task, AC3 continues to point to the
beginning of the string, and a null is returned as
the only character.
33 .MORDA Return the optional data supplied in any of the
connect or disconnect messages. This function
requires that AC3 contain a string pointer to the
location where the optional user data is to be
stored. (This file is binary; the string pointer
should specify 8-bit bytes.)
The monitor call returns with an updated pointer
in AC3 and the optional data stored as specified.
AC4 contains the number of bytes in the data
string; a zero value indicates that no optional
data was supplied.
34 .MORCN Return the object type that was used by the source
task to address this connection. The result
indicates whether the local task was addressed by
its generic type or its unique network task name.
The monitor call returns with the object type is
AC3. A zero object type indicates that the target
task was addressed by its unique network task
name; a nonzero value indicates that it was
addressed by its generic object type.
35 .MORIM Read interrupt message. This function requires
that AC3 contain a byte pointer to the receiving
buffer. (If the byte size exceeds eight bits,
bytes are truncated to eight bits.) The maximum
message length is 16 bytes, and the buffer size
should be at least 8 bits.
The monitor call returns with an updated pointer
in AC3, the message stored in the buffer, and the
count of bytes received in AC4.
(MTOPR)
36 .MOSIM Send an interrupt message. This function requires
that AC3 contain a byte pointer to the message
(eight bytes maximum) and the AC4 contain a count
of the bytes in the interrupt message (sixteen
bytes maximum).
37 .MOROD Return the unique identification of the source
task. This identification is in the format of
object-descriptor, and the contents depend on the
DECnet implementation on the remote host. In
addition, if the source task is running on a
system that provides for group and user codes,
this information is also returned. If the source
task name is on a DECnet-20 host, the data
returned is TASK-taskname. This function requires
that AC3 contain a string pointer to the location
where the object-descriptor of the source task is
to be stored. (If the byte size exceeds eight
bits, bytes are truncated to eight bits.)
The monitor call returns with an updated pointer
in AC3 and the object-descriptor stored as
specified. In addition, if the source host system
uses group and user codes (sometimes referred to
as project and programmer number or p,pn), AC4
contains the group code in the left half and the
user code in the right half. If the source host
system does not provide for group or user codes,
AC4 contains zeros.
40 .MOCLZ Reject a connection either implicitly or
explicitly. If the target task closes its JFN
(via the CLOSF monitor call) before accepting the
connection either implicitly or explicitly, the
local NSM assumes that the connection is rejected
and sends a connect reject message back to the
source task. The reason given is process aborted
(reject code 38). The target task must the reopen
its JFN in order to receive subsequent connect
initiate messages.
In order to explicitly reject a connect and at the
same time return a specific reject reason and set
up 16 bytes of user data, the target task must use
the .MOCLZ function of the MTOPR monitor call.
The .MOLCZ function does not close the JFN.
This function requires that
AC2 contain a reject code in the left half
and .MOCLZ in the right half. The reject
code is a 2-byte, NSP-defined decimal number
indicating the reason that a target task is
rejecting a connection. Refer to the
description of code 25, .MORLS, for a list of
(MTOPR)
disconnect/reject codes.
AC3 contain a string pointer to any data to
be returned. (If the byte size exceeds eight
bits, bytes are truncated to eight bits.)
AC4 contain the count of bytes in the data
string (maximum=16). A zero indicates no
data
41 .MOCC Accept a connection either implicitly or
explicitly. Under certain conditions, the local
NSP assumes that the connection is accepted and
sends a connect confirm message back to the source
task. These implicit conditions are
The target task attempts to output to the
logical link (issues a SOUT or SOUTR monitor
call to the network).
The target task submits a read request to the
logical link (issues a SIN or SINR monitor
call to the network).
The target task is in input wait state (has
enabled itself for a "data available"
software interrupt).
In order to explicitly accept a connect and also
return a limited amount of data, the target task
must use the .MOCC function of the MTOPR monitor
call. This function requires that AC3 contain a
string pointer to any data to be returned. (If
byte size exceeds eight bits, bytes are truncated
to eight bits.) AC4 must contain the count of
bytes in the data string to a maximum of 16 bytes.
A zero indicates no data.
42 .MORSS Returns the maximum segment size that can be sent
over this link. This value is the lesser of the
maximum segment sizes supported by the remote NSP
task and the remote network task. The local task
can use this value to optimize the format of data
being transmitted over the link.
The monitor call returns the maximum segment size,
in bytes, in AC3.
FE Functions
Code Symbol Meaning
3 .MOEOF Send an end of file to the program using the FE
device on the front end. This function is used
for synchronization between a program running on
(MTOPR)
the TOPS-20 and a program running on the front
end.
4 .MODTE Assign the specified device to the DTE controller
on the front end. This function, which must be
performed before I/O is allowed to the device,
requires AC3 to contain the device type. The
process must have WHEEL or OPERATOR capability
enabled.
MTA/MT Functions
The functions available for physical magnetic tape drives (MTA) and
logical magnetic tape drives (MT) are described below. Some of these
functions accept arguments in AC3 (refer to the individual
descriptions).
Code Symbol Meaning
0 .MOCLE Clear any error flags from a previous MTOPR call.
1 .MOREW Rewind the tape. This function waits for activity
to stop before winding the tape. If sequential
data is being output, the last partial buffer is
written before the tape is rewound. Control
returns to caller when rewinding begins. For
labeled tapes, this function causes the first
volume in the set to be mounted and positioned to
the first file in the file set. Since a volume
switch may be required, this function could block
for a considerable amount of time.
Use function .MORVL to rewind the current volume.
2 .MOSDR Set the direction of the tape motions for read
operations. This function requires AC3 to contain
the desired direction. If AC3 = 0, the tape
motion is forwards; if AC3 = 1, the tape motion
is backwards.
This function is not available for labeled tapes
and will return an MTOX1 error if used for that
purpose.
3 .MOEOF Write a tape mark. This function requires that
the magnetic tape be opened for write access. If
sequential data is being output, the last partial
buffer is written before the tape mark.
For labeled tapes, issuing this function will
terminate the data portion of the file, write EOF
trailer labels and leave the tape positioned to
accept user trailer labels. It is possible at
this point to write user trailer labels or close
the file. A second .MOEOF function issued without
(MTOPR)
positioning the tape backwards will "close" the
file (subsequent writes will create a new file).
4 .MOSDM Set the hardware data mode to be used when
transferring data to and from the tape. This
function requires AC3 to contain the desired data
mode:
0 .SJDDM default system data mode
1 .SJDMC dump mode (36-bit bytes)
2 .SJDM6 SIXBIT byte mode for 7-track drives
3 .SJDMA ANSI ASCII mode (7 bits in 8-bit
bytes)
4 .SJDM8 industry compatible mode
5 .SJDMH High-density mode for TU70 and TU72
tape drives only (nine 8-bit bytes
in two words).
For labeled tapes, this function is allowed only
if the file is opened in dump mode (.GSDMP). If
this is not the case, an MTOX1 error is returned.
5 .MOSRS Set the size of the records. This function
requires AC3 to contain the desired number of
bytes in the records. This function is allowed
only if no I/O has been done since the JFN was
opened.
For labeled tapes, this function is allowed only
if the file has been opened in dump mode. If the
file has not been opened in dump mode, an MTOX1
error is returned.
The maximum size of the records (in bytes) is as
follows:
Hardware Maximum
I/O Mode Record Size (bytes)
system-default -
dump 8192
SIXBIT 49152
ANSI ASCII 40960
industry compatible 32768
high density 8192
The above values can be exceeded in the execution
of .MOSRS, however the first data transfer will
fail.
6 .MOFWR Advance over one record in the direction away from
the beginning of the tape. If sequential data is
being read in the forward direction and not all of
the record has been read, this function advances
to the start of the next record. If sequential
(MTOPR)
data is being read in the reverse direction and
not all of the record has been read, this function
positions the tape at the end of that record.
For labeled tapes, forward space will position
over a logical record. This implies that many
physical records may be skipped (if S format is
used) perhaps involving one or more volume
switches.
7 .MOBKR Space backward over one record in the direction
toward the beginning of the tape. If sequential
data is being read in the forward direction and
not all of the record has been read, this function
positions the tape back to the start of that
record. If sequential data is being read in the
reverse direction and not all of the record has
been read, this function positions the tape to the
end of the record physically preceding that
record.
For labeled tapes, backward spacing will position
over a logical record. This implies that many
physical records may be skipped (if S format is
used) perhaps involving one or more volume
switches.
10 .MOEOT Advance forward until two sequential tape marks
are seen and position tape after the first tape
mark.
For labeled tapes, this function will position the
volume set beyond the end of the last file in the
set. This is useful for adding a new file to the
end of an already existing volume set. This
function may take some time to complete as one or
more volumes switches may be required.
11 .MORUL Rewind and unload the tape. This function is
identical to the .MOREW function and also unloads
the tape if the hardware supports tape unloading.
For labeled tapes, an unload is illegal unless
accompanying a DISMOUNT request. For MT devices,
this will generate a DESX9 error.
12 .MORDN Return the current density setting. On a
successful return, AC3 contains the current
density.
13 .MOERS Erase three inches of tape (i.e., erase gap).
This function requires that the magnetic tape be
opened for write access.
This function is illegal for labeled tapes.
(MTOPR)
14 .MORDM Return the hardware data mode currently being used
in transfers to and from the tape. On a
successful return, AC3 contains the current data
mode.
15 .MORRS Return the size of the records. On a successful
return, AC3 contains the number of bytes in the
records.
16 .MOFWF Advance to the start of the next file. This
function advances the tape in the direction away
from the beginning of the tape until it passes
over a tape mark.
For labeled tapes, forward space will skip one
logical file. This implies that many physical
files may be skipped, involving perhaps one or
more volume switches.
17 .MOBKF Space backward over one file. This function moves
the tape in the direction toward the beginning of
the tape until it passes over a tape mark or
reaches the beginning of the tape, whichever
occurs first.
For labeled tapes, backspace file will back up one
logical file. This implies that many physical
files may be skipped, involving perhaps one or
more volume switches.
NOTE
For labeled ANSI tape, the monitor can
compute the number of volume switches
required to get to the first section of
the file. Thus, if this function is
issued for an ANSI tape, at most one
volume switch will be required. This is
not true for EBCDIC tape.
Issuing this function when the tape is already
positioned at the first volume of the volume set
will not produce an error. The program issuing
this function must follow the .MOBKF with a GDSTS
call to determine if the BOT was encountered
during the backspacing operation.
20 .MOSPR Set the parity. This function requires AC3 to
contain the desired parity:
0 .SJPRO odd parity
(MTOPR)
1 .SJPRE even parity
21 .MORPR Return the current parity. On a successful
return, AC3 contains the current parity.
22 .MONRB Return number of bytes remaining in the current
record. On a successful return, AC3 contains the
number of bytes remaining. This function is only
meaningful during sequential I/O.
23 .MOFOU Force any partial records to be written during
sequential output.
24 .MOSDN Set the density. The function requires AC3 to
contain the desired density.
0 .SJDDN default system density
1 .SJDN2 200 BPI (8 rows/mm)
2 .SJDN5 556 BPI (22 rows/mm)
3 .SJDN8 800 BPI (31 rows/mm)
4 .SJD16 1600 BPI (63 rows/mm)
5 .SJD62 6250 BPI (246 rows/mm)
This function is illegal for
labeled tapes.
25 .MOINF Return information about the tape.
This function requires AC3 to
contain the address of the argument
block in which the information is
to be returned. The format of the
argument block is as follows:
Word Symbol Contents
0 .MOICT Length of argument block to be
returned (not including this word)
1 .MOITP MTA type code
2 .MOIID MTA reel ID
3 .MOISN Channel, controller, and unit in
the left half and serial number in
the right half.
4 .MOIRD Number of reads done
5 .MOIWT Number of writes done
6 .MOIRC Record number from beginning of
tape
7 .MOIFC Number of files on tape
10 .MOISR Number of soft read errors
11 .MOISW Number of soft write errors
12 .MOIHR Number of hard read errors
13 .MOIHW Number of hard write errors
14 .MOIRF Number of frames read
15 .MOIWF Number of frames written
26 .MORDR Return the direction that the tape is moving
(MTOPR)
during read operations. On a successful return,
AC3 = 0 if the direction of the tape motion is
forwards, or AC3 = 1 if the direction of the tape
motion is backwards.
27 .MOSID Set the reel identification of the tape mounted.
The process must have WHEEL or OPERATOR capability
enabled. This function requires AC3 to contain
the desired 36-bit reel ID.
30 .MOIEL Inhibit error logging for the tape.
31 .MONOP Wait for all activity to stop.
32 .MOLOC Specifies the first volume in a MOUNT request, or
identifies the "next" volume for a volume switch.
This function requires OPERATOR or WHEEL
capability.
AC3 contains a pointer to an argument block having
the following format:
Word Symbol Contents
0 .MOCNT count of words in the block
1 .MOMTN MT unit number to associate with
this MTA
2 .MOLBT label type (.LTxxx)
3 .MODNS density
4 .MOAVL address of volume labels
5 .MONVL number of volume labels at .MOAVL
6 .MOCVN volume number in the volume set
7 .MOVSN SIXBIT file set identifier
37 .MOSTA Return current magtape status. Returns an
argument block having the following form and
contents:
Word Symbol Contents
0 .MOCNT Count of words in the block including
this word
1 .MODDN density flags
Bit Symbol Meaning
B1 SJ%CP2 200 BPI
B2 SJ%CP5 556 BPI
B3 SJ%CP8 800 BPI
B4 SJ%C16 1600 BPI
B5 SJ%C62 6250 BPI
2 .MODDM data mode flags
(MTOPR)
Bit Symbol Meaning
B1 SJ%CMC core dump
B2 SJ%CM6 SIXBIT
B3 SJ%CMA ANSI ASCII
B4 SJ%CM8 industry compatible
B5 SJ%CMH high density mode
3 .MOTRK recording track flags
Bit Symbol Meaning
B1 SJ%7TR 7-track drive
B2 SJ%9TR 9-track drive
4 .MOCST tape status flags
Bit Symbol Meaning
B0 SJ%OFS off line
B1 SJ%MAI maintenance mode
enabled
B2 SJ%MRQ maintenance mode
requested
B3 SJ%BOT beginning of tape
B4 SJ%REW rewinding
B5 SJ%WLK write locked
5 .MODVT device type
Code Symbol Meaning
3 .MTT45 TU45 (system default)
17 .MTT70 TU70
20 .MTT71 TU71
21 .MTT72 TU72
13 .MTT77 TU77
19 .MTT78 TU78
41 .MOOFL Enable interrupts for online/offline transition.
Allows a process to be interrupted if a magnetic
tape drive's state changes from online to offline
or vice-versa and when a rewind operation
completes. This function must be performed once
for each drive for which interrupts are to be
enabled. If multiple drives are enabled for
interrupts, then a .MOSTA function should be
performed (for each drive) before interrupts for
the drives are enabled. Then, when an interrupt
occurs, .MOSTA can be performed for each drive and
the current status of that drive can be compared
against the previous status. Thus, it can be
determined which drive (or drives) interrupted.
This function requires OPERATOR or WHEEL
(MTOPR)
capability.
42 .MOPST Declares the software interrupt channel to be used
by the monitor to indicate that the UTL labels at
the end-of-volume or the UHL labels at the start
of the new volume are available. If this MTOPR is
not performed before an EOV label set is
encountered, the user program will not be given
the opportunity to process the UTL or UHL labels
during the volume switch operation.
AC3 contains the PSI channel number to set. The
channel can be cleared by using -1 in AC3.
43 .MORVL Rewind current labeled tape volume.
44 .MOVLS Switch volumes for an unlabled multi-volume set.
If an unlabeled tape is mounted specifying
multiple volumes in the volume set, the monitor
will not automatically perform a volume switch at
the end of each volume. The .MOVLS function may
be issued in such a case to perform a volume
switch. It can also be used to force a volume
switch for a labeled tape.
AC3 contains the address of an argument block
having the following format:
Word Symbol Contents
0 count of words in block including
this word
1 flags,,function code
2 argument (if required)
Available functions are:
Word Symbol Function
1 .VSMNV mount absolute
volume number
(volume number in
word 2 of the
argument block)
2 .VSFST mount first volume
in set
3 .VSLST mount last volume
in set
4 .VSMRV mount relative
volume number
(volume number in
word 2 of the
argument block)
For .VSMRV, the
(MTOPR)
argument in word 2
of the argument
block is the volume
number relative to
the current mounted
volume to mount.
For example, if
volume 2 is
currently mounted
and .VSMRV is
performed with 2 in
word 2 of the
argument block,
then volume 4 will
be mounted.
Specifying 1 in
word 2 of the
argument block will
mount the next
volume in the set.
5 .VSFLS force volume switch
for labeled tape.
This function is
only for tapes for
which .MOSDS has
previously been
set.
45 .MONTR Set no translate.
Sets or clears the EBCDIC to ASCII translate flag.
If the flag is set and the tape file being read is
from an IBM EBCDIC volume, then all data delivered
to the user program will be in its original EBCDIC
form. If the flag is not set, and the file is
from an IBM EBCDIC volume, then all data delivered
to the user program will be in ASCII. In order to
perform this translation, certain information may
be lost (as the EBCDIC character set contains 256
codes while the ASCII character set contains only
128 codes). Note that the setting of this flag
has no effect on the data delivered by the MTU
JSYS.
If AC3 is zero then the translate flag is cleared.
If AC3 is non-zero, the translate flag is set.
46 .MORDL Read user header labels. Labels must be read
immediately after the file is opened (and before
the first input is requested) or after a volume
switch has occurred and the volume switch PSI has
been generated. .MORDL may be used to read either
the UHL or UTL labels. User header labels may be
read only if the file is opened for read or
append. The labels may be a maximum of 76
(MTOPR)
characters long.
User trailer labels may be read at any time. If
the program requests to read user trailer labels,
the tape will be positioned to the EOF trailer
section.
AC3 contains a byte pointer to the area for
receiving the label.
On a successful return, AC2 contains the user
label identifier. This will be the ASCII
character following the UHL or the UTL. AC3 will
contain an updated byte pointer.
47 .MOWUL Write user header labels or user trailer labels.
User header labels may be written only after the
file is opened (and before the first write is
performed) or when a PSI is generated, indicating
that a volume switch has occurred. User header
labels may be written only if the file is opened
for write access.
User trailer labels may be read or written at any
time. If the program requests to write user
trailer labels, the file will be terminated with
an EOF trailer section. Once user trailer labels
are written in this manner, no more data may be
read or written.
User trailer labels may also be written during a
volume switch sequence. Once the PSI indicating
EOV has been received, the user program may write
a UTL label into the EOV trailer section. This
operation must be performed at interrupt level.
AC3 contains a byte pointer to the label contents.
This string must contain 76 bytes of data (the
monitor will use only the first 76 bytes). AC4
contains a label identifier code (any ASCII
character).
It is possible to encounter EOT while writing the
first UTL in the EOF trailer set. This can occur
if the last data write overwrote the EOT mark. In
this instance, the user program will receive the
EOV PSI from within the code writing the UTL
labels for the file. It is not possible to
receive an EOV PSI while writing the trailer
labels in the EOV set.
50 .MORLI Reads the available fields from the standard
volume and header labels. The ANSI standard
distinguishes protected from unprotected fields;
.MORLI only returns the unprotected fields.
(MTOPR)
AC3 contains a pointer to an argument block of the
form:
Word Contents
0 count of words in block
1 word to store label type of this tape
Value Symbol Label Type
1 .LTUNL Unlabeled
2 .LTANS ANSI
3 .LTEBC EBCDIC
4 .LTT20 TOPS-20
2 byte pointer to area for storing volume
name string
3 byte pointer to area for storing owner
name string
4 word to store tape format (ASCII
character)
5 word to store record length
6 word to store block length
7 word to store creation date (in internal
format)
10 word to store expiration date (in
internal format)
11 byte pointer to area for storing file
name string
12 word to store generation number
13 word to store version number
14 word to store mode value (form-control
value). The possible modes are as
follows:
Mode
Value Meaning
space no line format characters are
present
A FORTRAN format control
characters are present
M All necessary line format
characters are present
X Data in stream mode
The user specifies only the block count and the
byte pointers; the remaining values are returned
by the monitor. If a zero is substituted for any
of the byte pointers, then the associated string
is not returned.
This function is normally issued when the JFN is
open. If issued when the JFN is closed, only the
first 3 words of the argument block are returned.
(MTOPR)
If the tape is unlabeled, only the first word of
the argument block is returned.
51 .MOSMV Declares the value to be placed in the DEC-defined
"form-control" field in the HDR2 label. This
field is not defined in the ANSI standard but
should be specified whenever the data file is
meant to be read with DEC-supplied software. This
function merely declares the value to be placed in
the label. It is the user program's
responsibility to produce records that conform to
the declared mode.
AC3 contains one of the following modes:
Value Symbol Mode
0 .TPFST X - (stream mode)
1 .TPFCP M - (all formatting control
present)
2 .TPFFC A - (FORTRAN control present)
3 .TPFNC space - (no controls present)
52 .MOSDS Set deferred volume switch. Inhibits the monitor
from doing an automatic volume switch and allows a
program to write its own trailer information
beyond the physical end-of-tape mark. This
function is intended for labeled MT devices open
for writing in DUMP mode.
PLPT Functions
The functions available for physical line printers (PLPT) are
described below. Some of these functions accept the address of an
argument block in AC3. The first word of the argument block contains
the length (including this word) of the block. Remaining words of the
block contain arguments for the particular function.
Code Symbol Meaning
27 .MOPSI Enable for a software interrupt on nonfatal device
conditions. Examples of these conditions are:
1. Device changed from offline to online.
2. Device changed from online to offline.
3. Device's page counter has overflowed.
Other device errors or software conditions are not
handled by this function; instead they cause a
software interrupt on channel 11 (.ICDAE).
Argument Block
(MTOPR)
E: 3
E+1: interrupt channel number
E+2: flags. The following flag is defined:
B0(MO%MSG) Suppress standard CTY device
messages.
31 .MONOP Wait for all activity to stop. This function
blocks the process until all data has actually
been sent to the printer and has been printed.
Because this function is transferring data, it can
return an IOX5 data error.
32 .MOLVF Load the line printer's VFU (Vertical Formatting
Unit) from the file indicated in the argument
block.
Argument Block
E: 2
E+1: JFN of the file containing the VFU
The system opens the file for input with a byte
size of 18 bits. It closes the file and releases
the JFN when the loading of the VFU is complete.
33 .MORVF Read the name of the current VFU file stored in
the monitor's data base.
Argument Block
E: 3
E+1: pointer to destination area for ASCIZ name
string
E+2: number of bytes in destination area
34 .MOLTR Load the line printer's translation RAM (Random
Access Memory) from the file indicated in the
argument block.
Argument Block
E: 2
E+1: JFN of the file containing the translation
RAM
The system opens the file for input with a byte
size of 18 bits. It closes the file and releases
the JFN when the loading of the translation RAM is
complete.
35 .MORTR Read the name of the current translation RAM file
stored in the monitor's data base.
Argument Block
(MTOPR)
E: 3
E+1: pointer to destination area for ASCIZ name
string
E+2: number of bytes in destination area
36 .MOSTS Set the status of the line printer.
Argument Block
E: 3
E+1: software status word, with the following
status bits settable by the caller:
B0(MO%LCP) Set line printer as a lower
case printer.
B12(MO%EOF) Set bit MO%EOF in the printer
status word when all data sent
to printer has actually been
printed. The status word can
be obtained with the .MORST
function.
B14(MO%SER) Clear the software error
condition on the line printer.
This condition usually occurs
on a character interrupt.
Other status bits can be read with the
.MORST function (see below) but cannot be
set by the caller.
E+2: value for page counter register. The caller
can indicate the number of pages to be
printed by specifying a value of up to 12
bits (4096). Each time the printer reaches
the top of a new page, it decrements the
value by one. When the value becomes zero,
the printer sets status bit MO%LPC and
generates an interrupt if the .MOPSI
function was given previously.
If the caller specifies a value of 0 in the
register, the system will maintain the page
counter and will not generate an interrupt
to the caller when the page counter becomes
zero.
If the caller specifies a value of -1 in the
register, the value will be ignored.
37 .MORST Read the status of the line printer. The status
is obtained from the front end, and the caller is
blocked until it receives the status.
Argument Block
(MTOPR)
E: 3
E+1: status word. The following bits are
defined:
B0(MO%LCP) Line printer is a lower case
printer. This bit is set only
if a .MOSTS function declaring
the printer lower case was
executed previously.
B1(MO%RLD) Front end has been reloaded.
This bit is reset to zero the
next time any I/O activity
begins for the line printer.
B10(MO%FER) A fatal hardware error
occurred. This condition
generates a software interrupt
on channel 11 (.ICDAE).
B12(MO%EOF) All data sent to printer has
actually been printed.
B13(MO%IOP) Output to the line printer is
in progress.
B14(MO%SER) A software error (e.g.,
interrupt character, page
counter overflow) occurred.
B15(MO%HE) A hardware error occurred.
This error generates a software
interrupt on channel 11
(.ICDAE). This condition
usually requires that the forms
be realigned.
B16(MO%OL) Line printer is offline. This
bit is set on the occurrence of
any hardware condition that
requires operator intervention.
B17(MO%FNX) Line printer does not exist.
B30(MO%RPE) A RAM parity error occurred.
B31(MO%LVU) The line printer has an optical
(12-channel tape reader) VFU.
B33(MO%LVF) A VFU error occurred. The
paper has to be realigned.
B34(MO%LCI) A character interrupt occurred.
This generates a software
interrupt on channel 11
(MTOPR)
(.ICDAE).
B35(MO%LPC) The page counter register has
overflowed.
Bits 2-17 contain the software status word
from the front end, and bits 20-35 contain
the hardware status word.
E+2: value of page counter register. A value of
-1 indicates the printer has no page counter
value defined.
40 .MOFLO Flush any line printer output that has not yet
been printed.
PCDP Functions
The functions available for physical card punches (PCDP) are described
below. Like the LPT functions, these functions accept the address of
an argument block in AC3. The first word of the block contains the
length (including this word) of the block. Remaining words in the
block contain arguments for the particular function.
Code Symbol Meaning
27 .MOPSI Enable for a software interrupt on nonfatal device
conditions. Examples of these conditions are:
1. Device changed from offline to online.
2. Device changed from online to offline.
Other device errors or software conditions are not
handled by this function; instead they cause a
software interrupt on channel 11 (.ICDAE).
Argument Block
E: 3
E+1: interrupt channel number
E+2: flags. The following flag is defined:
B0(MO%MSG) Suppress standard CTY device
messages.
37 .MORST Read the status of the card punch. The status is
obtained from the front end, and the caller is
blocked until it receives the status.
Argument Block
E: 2
E+1: status word. Bits 2-17 contain the software
status word from the front end, and bits
(MTOPR)
20-35 contain the hardware status word.
B10(MO%FER) Fatal error condition
B12(MO%EOF) All pending output has been
processed
B13(MO%IOP) Output in progress
B14(MO%SER) Software error has occurred
(would generate an interrupt on
an assigned channel)
B15(MO%HE) Hardware error has occurred
(would generate interrupt on
channel .ICDAE)
B16(MO%OL) Card punch is offline. This
bit is set when operator
intervention is required (card
jam, hopper empty, or stacker
full).
B17(MO%FNX) Card punch doesn't exist
B32(MO%HEM) Hopper is empty or stacker is
full
B33(MO%SCK) Hopper is empty or stacker is
full (same as above)
B34(MO%PCK) Pick check
PCDR Functions
The functions available for physical card readers (PCDR) are described
below. These functions accept the address of an argument block in
AC3. The first word of the block contains the length (including this
word) of the block. Remaining words in the block contain arguments
for the particular function.
Code Symbol Meaning
27 .MOPSI Enable for a software interrupt on nonfatal device
conditions. Examples of these conditions are:
1. Device changed from offline to online.
2. Device changed from online to offline.
Other device errors or software conditions are not
handled by this function; instead they cause a
software interrupt on channel 11 (.ICDAE).
Argument Block
E: 3
E+1: interrupt channel number
E+2: flags. The following flag is defined:
B0(MO%MSG) Suppress standard CTY device
messages.
37 .MORST Read the status of the card reader. The status is
(MTOPR)
obtained from the front end, and the caller is
blocked until it receives the status.
Argument Block
E: 2
E+1: status word. Bits 2-17 contain the software
status word from the front end, and bits
20-35 contain the hardware status word.
B0(MO%COL) Card reader is on line. This
bit is not obtained from the
front end.
B1(MO%RLD) Front end has been reloaded.
This bit is reset to zero the
next time I/O activity begins
for the card reader.
B10(MO%FER) A fatal hardware error
occurred. This condition
generates a software interrupt
on channel 11 (.ICDAE).
B12(MO%EOF) Card reader is at end of file.
B13(MO%IOP) Input from the card reader is
in progress.
B14(MO%SER) A software error (e.g.,
interrupt character) occurred.
B15(MO%HE) A hardware error occurred.
This error generates a software
interrupt on channel 11
(.ICDAE).
B16(MO%OL) Card reader is off line. This
bit is set on the occurrence of
any hardware condition that
requires operator intervention.
B17(MO%FNX) Card reader does not exist.
B31(MO%SFL) The output stacker is full.
B32(MO%HEM) The input hopper is empty.
B33(MO%SCK) A card did not stack correctly
in the output stacker.
B34(MO%PCK) The card reader failed to pick
a card correctly from the input
hopper.
(MTOPR)
B35(MO%RCK) The card reader detected a read
error when reading a card.
PTY Functions
The functions available for pseudo-terminals (PTY)
are described below. Some of these functions
accept arguments in AC3. (Refer to the individual
descriptions.)
Code Symbol Meaning
24 .MOAPI Assign PTY interrupt channels. This function
requires AC2 to contain
B0(MO%WFI) enable waiting-for-input interrupt
B1(MO%OIR) enable output-is-ready interrupt
B12-B17(MO%SIC) software interrupt channel number
for output to the PTY. The
channel number used for input from
the PTY is one greater than the
channel number used for output to
the PTY.
B18-B35 function code
25 .MOPIH Determine if PTY job needs input. On a successful
return, AC2 contains 0(.MONWI) if PTY job is not
waiting for input or contains -1(.MOWFI) if PTY
job is waiting for input.
26 .MOBAT Set batch control bit. This function requires AC3
to contain 0(.MONCB) if the job is not to be
controlled by batch or to contain 1(.MOJCB) if the
job is to be controlled by batch. To obtain this
value, the process can execute the GETJI JSYS,
function .JIBAT.
TTY Functions
25 .MOPIH Determine if TTY job needs input. On a successful
return, AC2 contains 0(.MONWI) if TTY job is not
waiting for input or contains -1(.MOWFI) if TTY
job is waiting for input.
26 .MOSPD Set the terminal line speed. This function
accepts in AC3 the desired line speed (input speed
in the left half and output speed in the right
half). The left half of AC2 contains flag bits
indicating the type of line being set. If
B0(MO%RMT) is on, the line is a remote (dataset)
line. If B1(MO%AUT) is on, the line is a remote
autobaud line (i.e., is automatically set at 300
baud, and the contents of AC3 are ignored. The
process must have WHEEL or OPERATOR capability
(MTOPR)
enabled to set B0(MO%RMT) and B1(MO%AUT).
27 .MORSP Return the terminal line speed. On a successful
return, the left half of AC2 contains flag bits
indicating the type of line, and AC3 contains the
speed (input speed in the left half and output
speed in the right half). If B0(MO%RMT) of AC2 is
on, the line is a remote line, and if B1(MO%AUT)
is on, the line is a remote autobaud line. AC3
contains the speed or contains -1 if the speed is
unknown or is not applicable.
30 .MORLW Return the terminal page width. On a successful
return, AC3 contains the width.
31 .MOSLW Set the terminal page width. This function
requires AC3 to contain the desired width.
32 .MORLL Return the terminal page length. On a successful
return, AC3 contains the length.
33 .MOSLL Set the terminal page length. This function
requires AC3 to contain the desired length.
34 .MOSNT Specify if terminal line given in AC1 is to
receive system messages. This function requires
AC3 to contain 0 (.MOSMY) to allow messages or 1
(.MOSMN) to suppress messages.
35 .MORNT Return a code indicating if terminal line given in
AC1 is to receive system messages. On a
successful return, AC3 contains 0 (.MOSMY) if
messages are being sent to this line or 1 (.MOSMN)
if messages are being suppressed to this line.
36 .MOSIG Specify if input on this terminal line is to be
ignored when the line is inactive (i.e., is not
assigned or opened). This function requires AC3
to contain 0 if characters on this line are not to
be ignored or 1 if characters on this line are to
be ignored. When input is being ignored and
characters are typed, no CTRL/G (bell) is sent, as
is the normal case when characters are typed on an
inactive line.
37 .MORBM Read the 128-character break mask. The argument
block is the same as for .MOSBM (below).
40 .MOSBM Sets the 128-character break mask. Argument Block
E: 0,,4
E+1-E+4: character mask. The leftmost 32 bits of
each consecutive word correspond to the
ASCII character set in ascending order.
For example, 1B0 in word E+1 (of the
(MTOPR)
argument block) corresponds to ASCII code
000 (null), 1B1 in word E+1 corresponds
to ASCII code 001 (SOH), etc. Bits 32-35
must be zero.
41 .MORFW Returns the current value of the field width in
AC3. Note that this may be less than the value
last set by .MOSFW. If the field width is set to
value X and two characters are read before the
.MORFW is executed, the value returned will be
X-2. A zero returned in AC3 indicates that no
field width is now in effect.
42 .MOSFW Set the field width to the value in AC3. A zero
indicates that no field width is in effect.
45 .MOSLC Set the terminal's line counter to value in AC3.
This counter is incremented by the monitor
everytime a linefeed is output to the terminal.
The monitor clears this counter only when a line
becomes active.
46 .MORLC Read the terminal's line counter and return with
its value in AC3.
47 .MOSLM Set line maximum to the value in AC3. This
function sets the maximum value of the line
counter seen so far. The monitor compares the
line counter with the maximum every time a
linefeed is typed, and if the the line counter
value is larger, the monitor sets the line maximum
to the value of the line counter. When TEXTI
moves the cursor up on screen terminals, it
decrements the line counter.
50 .MORLM Read the current value of the line maximum and
return with its value in AC3.
51 .MOTPS Assign interrupt channels for non-controlling
terminal. The channels are specified in AC3 as
follows: input PSI channel,, output PSI channel.
An interrupt will be generated if a character is
input, or an output-buffer-empty condition occurs
on output. The channels can be cleared by setting
the appropriate half (or halves) of AC3 to -1.
Generates an illegal instruction interrupt on error conditions below.
MTOPR ERROR MNEMONICS:
DESX1: invalid source/destination designator
DESX2: terminal is not available to this job
DESX3: JFN is not assigned
(MTOPR)
DESX4: invalid use of terminal designator or string pointer
DESX5: file is not open
DESX9: invalid operation for this device
IOX4: end of labels encountered
IOX5: device or data error
MTOX1: invalid function
MTOX2: record size was not set before I/O was done
MTOX3: function not legal in dump mode
MTOX4: invalid record size
MTOX5: invalid hardware data mode for magnetic tape
MTOX6: invalid magnetic tape density
MTOX7: WHEEL or OPERATOR capability required
MTOX8: argument block too long
MTOX9: output still pending
MTOX10: VFU or RAM file cannot be OPENed
MTOX11: data too large for buffers
MTOX12: input error or not all data read
MTOX13: argument block too small
MTOX14: invalid software interrupt channel number
MTOX15: device does not have Direct Access (programmable) VFU
MTOX16: VFU or Translation RAM file must be on disk
MTOX17: device is not on line
MTOX18: invalid software interrupt channel number
MTOX19: invalid terminal line width
MTOX20: invalid terminal line length
TTYX01: line is not active
(MTU%)
Node: MTU% Previous: MTOPR Next: MUTIL Up: Top
MTU% JSYS 600
Allows privileged programs to perform various utility functions for
mag tape MTnn: devices. This JSYS differs from the MTOPR JSYS in
that the invoking program need not have a JFN on the MT nor need it
even have access to the MT. It is used by MOUNTR to declare a volume
switch error and by the access-control program (user supplied) to read
file and volume labels.
RESTRICTIONS: Requires enabled WHEEL or OPERATOR capabilities
ACCEPTS IN AC1: function code
AC2: MT unit number
AC3: address of argument block
RETURNS +1: always
The functions and associated argument blocks are as follows:
Code Symbol Function
0 .MTNNV Declare volume switch error
Argument Block:
Word Symbol Contents
0 .MTCNT count of words in block
1 .MTCOD error code to return to user
2 .MTPTR byte pointer to operator response
1 .MTRAL Read labels.
Argument Block:
Word Symbol Contents
0 .MTCNT count of words in block
1 .MTVL1 byte pointer to area to hold VOL1
label
2 .MTVL2 byte pointer to area to hold VOL2
label
3 .MTHD1 byte pointer to area to hold HDR1
label
4 .MTHD2 byte pointer to area to hold HDR2
label
If any of the byte pointers is zero, the
associated string is not returned.
2 .MTASI return assignment information
(MTU%)
Argument Block:
Word Symbol Contents
0 .MTCNT count of words in block
1 .MTPHU returned MTA number associated
with the MT. If there is no
association, .MTNUL is returned.
This function is used by MOUNTR to determine if
there are any existing MT to MTA associations.
This is necessary when MOUNTR is restarted.
Node: MUTIL Previous: MTU% Next: NIN Up: Top
MUTIL JSYS 512
Performs various IPCF (Inter-Process Communication Facility)
functions, such as enabling and disabling PIDs, assigning PIDs, and
setting quotas. Refer to the TOPS-20 Monitor Calls User's Guide for
an overview and description of the Inter-Process Communication
Facility.
RESTRICTIONS: some functions require WHEEL, OPERATOR, or IPCF
capability enabled
ACCEPTS IN AC1: length of argument block
AC2: address of argument block
RETURNS +1: failure, error code in AC1
+2: success. Responses from the requested function are
returned in the argument block.
The format of the argument block is as follows:
Word Meaning
0 Code of desired function. (See below.)
1 through n Arguments for the desired function. The
arguments, which depend on the function requested,
begin in word 1 and are given in the order shown
below. Responses from the requested function are
returned in these words.
The available functions, along with their arguments, are described
below.
Code Symbol Meaning
1 .MUENB Enable the specified PID to receive packets. The
(MUTIL)
PID must have been created by the caller's job.
Also, if the calling process was not the creator
of the PID, the no-access bit (IP%NOA) must be
off.
Argument
PID
2 .MUDIS Disable the specified PID from receiving packets.
The PID must have been created by the caller's
job. Also, if the calling process was not the
creator of the PID, the no-access bit (IP%NOA)
must be off.
Argument
PID
3 .MUGTI Return the PID associated with <SYSTEM>INFO. The
PID is returned in word 2 of the argument block.
Argument
PID or job number
4 .MUCPI Create a private copy of <SYSTEM>INFO for the
specified job. The caller must have WHEEL,
OPERATOR, or IPCF capability enabled.
Arguments
PID to be assigned to <SYSTEM>INFO
PID or number of job creating private copy
5 .MUDES Delete the specified PID. The caller must own the
PID being deleted.
Argument
PID
6 .MUCRE Creates a PID for the specified process or job.
The flags that can be specified are B6(IP%JWP) to
make the PID job wide and B7(IP%NOA) to prevent
access to PID from other processes. The caller
must have IPCF capability enabled if the job
number given is not that of the caller. The PID
created is returned in word 2 of the argument
block. If a job number is specified, the created
PID will belong to the top fork of the job.
Argument
flags,,process handle or job number
(MUTIL)
7 .MUSSQ Set send and receive quotas for the specified PID.
The caller must have IPCF capability enabled. The
new send quota is given in B18-B26, and the new
receive quota is given in B27-B35. The receive
quota applies to the specified PID, but the send
quota applies to the job to which that PID
belongs.
Arguments
PID
new quotas
10 .MUCHO Change the job number associated with the
specified PID. The caller must have WHEEL or
OPERATOR capability enabled.
Arguments
PID
new job number or PID belonging to new job
11 .MUFOJ Return the job number associated with the
specified PID. The job number is returned in word
2 of the argument block.
Argument
PID
12 .MUFJP Return all PIDs associated with the specified job.
Two words are returned, starting in word 2 of the
argument block, for each PID. The first word is
the PID. The second word has B6(IP%JWP) set if
the PID is job wide and B7(IP%NOA) set if the PID
is not accessible by other processes. The list is
terminated by a 0 PID.
Argument
job number or PID belonging to that job
13 .MUFSQ Return the send and receive quotas for the
specified PID. The quotas are returned in word 2
of the argument block with the send quota in
B18-B26 and the receive quota in B27-B35. The
receive quota applies to the specified PID, but
the send quota applies to the job to which that
PID belongs.
Argument
PID
15 .MUFFP Return all PIDs associated with the same process
(MUTIL)
as that of the specified PID. The list of PIDs
returned is in the same format as the list
returned for the .MUFJP function (12).
Argument
PID
16 .MUSPQ Set the maximum number of PIDs allowed for the
specified job. The caller must have IPCF
capability enabled.
Arguments
job number or PID
PID quota
17 .MUFPQ Return the maximum number of PIDs allowed for the
specified job. The PID quota is returned in word
2 of the argument block.
Argument
job number or PID
20 .MUQRY Return the Packet Descriptor Block for the next
packet in the queue associated with the specified
PID. An argument of -1 returns the next
descriptor block for the process, and an argument
of -2 returns the next descriptor block for the
job. The descriptor block is returned starting in
word 1 of the argument block. The calling process
and the process that owns the specified PID must
belong to the same job.
Argument
PID
21 .MUAPF Associate the PID with the specified process. The
calling process and the process that owns the
specified PID must belong to the same job.
Arguments
PID
process handle
22 .MUPIC Place the specified PID on a software interrupt
channel. An interrupt is then generated when:
1. The .MUPIC function is issued while the PID
has one or more messages in its receive queue.
(MUTIL)
2. The PID's receive queue message count goes
from 0 to 1.
If the channel number is given as -1, the PID is
removed from its current channel.
The calling process and the process that owns the
specified PID must belong to the same job.
Arguments
PID
channel number
23 .MUDFI Set the PID of <SYSTEM>INFO. An error is given if
<SYSTEM>INFO already has a PID. The caller must
have IPCF capability enabled.
Argument
PID of <SYSTEM>INFO
24 .MUSSP Place the specified PID into the system PID table
at the given offset. The caller must have WHEEL,
OPERATOR, or IPCF capability enabled. See .MURSP
for a list of system PIDs.
Arguments
index into system PID table
PID
25 .MURSP Return a PID from the system PID table. The PID
is returned in word 2 of the argument block. The
system PID table currently has the following
entries:
0 .SPIPC Reserved for DEC
1 .SPINF PID of <SYSTEM>INFO
2 .SPQSR PID of QUASAR
3 .SPMDA PID of QSRMDA
4 .SPOPR PID of ORION
Argument
index into system PID table
26 .MUMPS Return the system-wide maximum packet size. The
size is returned in word 1 of the argument block.
27 .MUSKP Set PID to receive deleted PID messages. Allows a
controller task to be notified if one of its
subordinate tasks crashes. After this function is
performed, if the subordinate PID is ever deleted
(MUTIL)
(via RESET or the .MUDES MUTIL function), the
monitor will send an IPCF message to the
controlling PID notifying it that the subordinate
PID has been deleted. This message contains
.IPCKP in word 0 and the deleted PID in word 1.
Argument
Source (subordinate) PID
Object (controller) PID
30 .MURKP Return controlling PID for this subordinate PID.
Argument
Source (subordinate) PID
Object (controller) PID (returned)
MUTIL ERROR MNEMONICS:
IPCFX2: no message for this PID
IPCFX3: data too long for user's buffer
IPCFX4: receiver's PID invalid
IPCFX5: receiver's PID disabled
IPCFX6: send quota exceeded
IPCFX7: receiver quota exceeded
IPCFX8: IPCF free space exhausted
IPCFX9: sender's PID invalid
IPCF10: WHEEL capability required
IPCF11: WHEEL or IPCF capability required
IPCF12: no free PID's available
IPCF13: PID quota exceeded
IPCF14: no PID's available to this job
IPCF15: no PID's available to this process
IPCF16: receive and message data modes do not match
IPCF17: argument block too small
IPCF18: invalid MUTIL JSYS function
(MUTIL)
IPCF19: no PID for [SYSTEM]INFO
IPCF20: invalid process handle
IPCF21: invalid job number
IPCF22: invalid software interrupt channel number
IPCF23: [SYSTEM]INFO already exists
IPCF24: invalid message size
IPCF25: PID does not belong to this job
IPCF26: PID does not belong to this process
IPCF27: PID is not defined
IPCF28: PID not accessible by this process
IPCF29: PID already being used by another process
IPCF30: job is not logged in
IPCF32: page is not private
IPCF33: invalid index into system PID table
IPCF35: invalid IPCF quota
Node: NIN Previous: MUTIL Next: NODE Up: Top
NIN JSYS 225
Inputs an integer number, with leading spaces ignored. This call
terminates on the first character not in the specified radix. If that
character is a carriage return followed by a line feed, the line feed
is also input.
ACCEPTS IN AC1: source designator
AC3: radix (2-10) of number being input
RETURNS +1: failure, error code in AC3, updated string pointer,
if pertinent, in AC1
+2: success, number in AC2 and updated string pointer, if
pertinent, in AC1
NIN ERROR MNEMONICS:
IFIXX1: radix is not in range 2 to 10
(NIN)
IFIXX2: first nonspace character is not a digit
IFIXX3: overflow (number is greater than 2**35)
DESX1: invalid source/destination designator
DESX2: terminal is not available to this job
DESX3: JFN is not assigned
DESX5: file is not open
Node: NODE Previous: NIN Next: NOUT Up: Top
NODE JSYS 567
Performs the following network utility functions: set local node
name, get local node name, set local node number, get local node
number, set loopback port, clear loopback port, and find loopback
port.
ACCEPTS IN AC1: function code
AC2: address of argument block
RETURNS +1: always. If an error occurs, an illegal instruction
trap is generated.
The available functions and their argument blocks are described below.
Code Symbol Function
0 .NDSLN Set local node name
Argument Block:
Word Symbol Contents
0 .NDNOD Byte pointer to ASCIZ node name.
1 .NDGLN Get local node name
Argument Block:
Word Symbol Contents
0 .NDNOD Byte pointer to destination for
ASCIZ name of local node.
2 .NDSNM Set local node number
Argument Block:
(NODE)
Word Symbol Contents
0 .NDNOD Number to set (greater than 2,
less than 127)
3 .NDGNM Get local node number.
Argument Block:
Word Symbol Contents
0 .NDNOD Number to set (greater than 2,
less than 127)
4 .NDSLP Set loopback port (2020 only)
Argument Block:
Word Symbol Contents
0 .NDPRT NSP port number.
1 .BTLID Pointer to line id.
5 .NDCLP Clear loopback port (2020 only)
Argument Block:
Word Symbol Contents
0 .NDPRT NSP port number.
6 .NDFLP Find loopback port (2020 only)
Argument Block:
Word Symbol Contents
0 .NDPRT NSP port number
1B0 (ND%LPR) Loopback running.
1B1 (ND%LPA) Loopback port
assigned.
7 .NDSNT Set node table
Sets the system's table of accessible nodes.
Argument Block:
Word Symbol Contents
0 .NDNND Number of following words (1 per
node) in right half. Left half is
reserved.
(NODE)
1 .NDCNT Number of words in a node block
(described below)
2 .NDBK1 Addresses of N blocks of
information for each node for
which updated information is to be
conveyed to the monitor. The
format of these blocks is
described below.
Node Block:
Word Symbol Contents
0 .NDNAM Byte pointer to ASCIZ node name
1 .NDSTA Node state:
.NDSON On
Add to table of reachable nodes if
not already there.
.NDSOF Off
Remove from table if previously
there.
2 .NDNXT Byte pointer to the DN20 name.
10 .NDGNT Get node table
Reads the system's table of accessible nodes.
Argument Block:
Word Symbol Contents
0 .NDNND Number of following words in the
right half (set by the user on the
call) and the number of nodes for
which the monitor actually
returned data in the left half
(set by the monitor on return).
1 .NDCNT Number of words in a node block
(described below)
2 .NDBK1 Addresses of N blocks of
information for each node for
which the monitor will return data
to the user. The format of these
blocks is described below.
.NDBK1+N Start of an area into which the
monitor will sequentially place
node blocks (described below). If
there is not enough space to hold
(NODE)
all of the information, the
monitor will store as much as
possible and then fail with error
code ARGX04.
Node Block:
Word Symbol Contents
0 .NDNAM Byte pointer to the ASCIZ node
name
1 .NDSTA Node state
.NDSON On
.NDSOF Off
.NDSSH Shut
11 .NDSIC Set topology interrupt channel
This function is used by a process wishing to be
notified that the network topology has changed.
The program must do the .NDGNT function to obtain
the current topology.
Argument Block:
Word Symbol Contents
0 .NDCHN Channel number on which interrupts
are desired.
12 .NDCIC Clear topology interrupt channel
This function is used to clear the request for
interrupt on topology change (set by function
.NDSIC).
13 .NDGVR Get NSP version number
Argument Block:
Word Symbol Contents
0 .NDNVR Number of versions returned
1 .NDCVR Address of a block in which the
NSP communications version will be
returned. (Block format is shown
below.)
2 .NDRVR Address of a block in which the
NSP routing version will be
returned. (Block format is shown
below.)
(NODE)
Version Block:
Word Symbol Contents
0 .NDVER Version number
1 .NDECO ECO number
2 .NDCST Customer change order
14 .NDGLI Get line number
Returns information on lines known to NSP.
Argument Block:
Word Symbol Contents
0 .NDNLN Number of entries following in
right half (set by user on call)
and number of lines for which
information was returned in the
left half (set by monitor on
return).
1 .NDCNT Number of words in a line block,
as described below.
2 .NDBK1 Addresses of N blocks of
information for each line for
which the monitor will return data
to the user. The format of these
blocks is described below.
.NDBK1+N Start of an area into which the
monitor will sequentially place
line blocks (described below). If
there is not enough space to hold
all of the information, the
monitor will store as much as
possible and then fail with error
code ARGX04.
Line Block:
Word Symbol Contents
0 .NDLNM line number
1 .NDLST State of Line
.NDLON On
.NDLOF Off
.NDLCN Controller
loopback
.NDLCB Cable
(NODE)
loopback
.NDLND Byte pointer to ASCIZ
name of node at the end
of the line.
15 .NDVFY Verify node name
This function indicates whether the node name
supplied by the user is or is not in the monitor's
database of known nodes.
Argument Block:
Word Symbol Contents
0 .NDNOD Byte pointer to ASCIZ node name to
be checked.
1 .NDFLG Flags returned by monitor.
Flags:
ND%EXM The specified node exactly
matches a node name in
the monitor's node
database.
NODE ERROR MNEMONICS:
ARGX02: Invalid function
ARGX19: Invalid unit number
CAPX2: WHEEL, OPERATOR, or MAINTENANCE capability required
NODX02: Line not turned off
NODX03: Another line already looped
Node: NOUT Previous: NODE Next: ODCNV Up: Top
NOUT JSYS 224
Outputs an integer number.
ACCEPTS IN AC1: destination designator
AC2: number to be output
AC3: B0(NO%MAG) output the magnitude. That is, output the
number as an unsigned 36-bit number (e.g.,
output -1 as 777777 777777).
(NOUT)
B1(NO%SGN) output a plus sign for a positive number.
B2(NO%LFL) output leading filler. If this bit is not
set, trailing filler is output, and bit
3(NO%ZRO) is ignored.
B3(NO%ZRO) output 0's as the leading filler if the
specified number of columns (NO%COL)
allows filling. If this bit is not set,
blanks are output as leading filler if the
number of columns allows filling.
B4(NO%OOV) output on column overflow and return an
error. If this bit is not set, column
overflow is not output.
B5(NO%AST) output asterisks on column overflow. If
this bit is not set and bit 4 (NO%OOV) is
set, all necessary digits are output on
column overflow.
B11-B17 number of columns (including sign column)
(NO%COL) to output. If this field is 0, as many
columns as necessary are output.
B18-B35 radix (2-36) of number being output
(NO%RDX)
RETURNS +1: failure, error code in AC3
+2: success, updated string pointer in AC1, if pertinent
NOUT ERROR MNEMONICS:
NOUTX1: radix is not in range 2 to 36
NOUTX2: column overflow
DESX1: invalid source/destination designator
DESX2: terminal is not available to this job
DESX3: JFN is not assigned
DESX5: file is not open
IOX11: quota exceeded or disk full
Node: ODCNV Previous: NOUT Next: ODTIM Up: Top
ODCNV JSYS 222
(ODCNV)
Converts the internal date and time format into separate numbers for
local weekday, day, month, year, and time and does not convert the
numbers to text. (Refer to Section 2.8.2 for more information.) The
ODCNV call gives the caller the option of explicitly specifying the
time zone and daylight savings time.
ACCEPTS IN AC2: internal date and time, or -1 for current date and
time
AC4: B0(IC%DSA) apply daylight savings according to the
setting of B1(IC%ADS). If B0 is off,
daylight savings is applied only if
appropriate for date.
B1(IC%ADS) apply daylight savings if B0(IC%DSA) is
on.
B2(IC%UTZ) use time zone in B12-B17(IC%TMZ). If this
bit is off, the local time zone is used.
B3(IC%JUD) apply Julian day format (Jan 1 is day 1 in
conversion)
B12-B17 time zone to use if B2(IC%UTZ) is on.
(IC%TMZ)
RETURNS +1: always, with
AC2 containing the year in the left half, and the
numerical month (0=January) in the right half.
AC3 containing the day of the month (0=first day) in
the left half, and the day of the week (0=Monday)
in the right half.
AC4 containing
B0 and B2 on for compatibility with the IDCNV
call
B1(IC%ADS) on if daylight savings was applied
B3(IC%JUD) on if Julian day format was applied
B12-B17 time zone used
(IC%TMZ)
B18-B35 local time in seconds since midnight
(IC%TIM)
If IC%JUD is set, the julian day (1 = Jan 1, 365 = non-leap Dec 31,
366 = leap Dec 31, etc) is returned in the right half of AC2 and the
left half of AC3 is set to zero.
Generates an illegal instruction interrupt on error conditions below.
ODCNV ERROR MNEMONICS:
DATEX6: system date and time are not set
(ODCNV)
TIMEX1: time cannot be greater than 24 hours
ZONEX1: time zone out of range
Node: ODTIM Previous: ODCNV Next: ODTNC Up: Top
ODTIM JSYS 220
Outputs the date and time by converting the internal format of the
date and/or time to text. (Refer to Section 2.8.2.)
ACCEPTS IN AC1: destination designator
AC2: internal date and time, or -1 for current date and
time
AC3: format option flags (see below), 0 is the normal case
RETURNS +1: always, updated string pointer in AC1, if pertinent
The format option flags in AC3 indicate the format in which the date
and time are to be output.
ODTIM Option Flags
B0(OT%NDA) do not output the date and ignore B1-B8.
B1(OT%DAY) output the day of the week according to the format
specified by B2(OT%FDY).
B2(OT%FDY) output the full text for the day of the week. If this
bit is off, the 3-letter abbreviation of the day of the
week is output.
B3(OT%NMN) output the month as numeric and ignore B4(OT%FMN).
B4(OT%FMN) output the full text for the month. If this bit is
off, the 3-letter abbreviation of the month is output.
B5(OT%4YR) output the year as a 4-digit number. If this bit is
off, the year is output as a 2-digit number if between
1900 and 1999.
B6(OT%DAM) output the day of the month after the month. If this
bit is off, the day is output before the month.
B7(OT%SPA) output the date with spaces between the items
(e.g., 6 Feb 76). If B6(OT%DAM) is also on, a comma
is output after the day of the month (e.g., Feb 6, 76).
(ODTIM)
B8(OT%SLA) output the date with slashes (e.g., 2/6/76).
If B7-B8 are both off, the date is output with dashes
between the items (e.g., 6-Feb-76).
B9(OT%NTM) do not output the time and ignore B10-B13.
B10(OT%NSC) do not output the seconds. If this bit is off, the
seconds are output, preceded by a colon.
B11(OT%12H) output the time in 12-hour format with AM or PM
following the time. If this bit is off, the time is
output in 24-hour format.
B12(OT%NCO) output the time without a colon between the hours and
minutes.
B13(OT%TMZ) output the time and follow it with a "-" and a time
zone (e.g., -EDT).
B17(OT%SCL) suppress columnation of the date and time by omitting
leading spaces and zeros. This produces appropriate
output for a message. If this bit is off, the date and
time are output in columns of constant width regardless
of the particular date or time. However, full texts of
months and weekdays are not columnated. This output is
appropriate for tables.
If AC3 is 0, the ODTIM call outputs the date and time in columns in
the format
dd-mmm-yy hh:mm:ss
For example, 6-Feb-76 15:14:03.
If AC3 is -1, the ODTIM call interprets the contents as if
B1-B2,B4-B7, and B17 were on (i.e., AC3=336001000000) and outputs the
date and time in the format
weekday, month day, year hh:mm:ss
as in Friday, February 6, 1976 15:14:03
Additional examples are:
Contents of AC3 Typical Text
202201000000 Fri 6 Feb 76 1:06
336321000000 Friday, February 6, 1976 1:06AM-EST
041041000000 6/2/76 106:03
041040000000 6/02/76 106:03
Generates an illegal instruction interrupt on error conditions below.
ODTIM ERROR MNEMONICS:
(ODTIM)
DATEX6: system date and time are not set
TIMEX1: time cannot be greater than 24 hours
All I/O errors are also possible. These errors cause software
interrupts or process terminations as described for the BOUT call
description.
Node: ODTNC Previous: ODTIM Next: OPENF Up: Top
ODTNC JSYS 230
Outputs the date and/or the time as separate numbers for local year,
month, day, or time. (Refer to Section 2.8.2.) This JSYS is a subset
of the ODTIM call because the output of dates and times not stored in
internal format is permitted. Also, the caller has control over the
time and zone printed.
ACCEPTS IN AC1: destination designator
AC2: year in the left half, and numerical month
(0=January) in the right half
AC3: day of the month (0=first day) in the left half, and
day of the week (0=Monday), if desired, in the right
half
AC4: B1(IC%ADS) apply daylight savings on output
B12-B17(IC%TMZ) time zone in which to output
B18-B35(IC%TIM) local time in seconds since midnight
AC5: format option flags (refer to ODTIM for the
description of these flags)
NOTE
The only time zones that can be output by
B13(OT%TMZ) are Greenwich and USA zones.
RETURNS +1: always, updated string pointer in AC1, if pertinent.
Generates an illegal instruction interrupt on error conditions below.
ODTNC ERROR MNEMONICS:
DATEX1: year out of range
DATEX2: month is not less than 12
(ODTNC)
DATEX3: day of month too large
DATEX4: day of week is not less than 7
ZONEX1: time zone out or range
ODTNX1: time zone must be USA or Greenwich
All I/O errors can occur. These errors cause software interrupts or
process terminations as described for the BOUT call description.
Node: OPENF Previous: ODTNC Next: PBIN Up: Top
OPENF JSYS 21
Opens the given file. Refer to the TOPS-20 Monitor Calls User's Guide
for the explanations of the types of access allowed to a file.
ACCEPTS IN AC1: JFN (right half of AC1) of the file being opened.
AC2: B0-B5(OF%BSZ) Byte size (maximum of 36 decimal). If
a zero byte size is supplied, the byte
size defaults to 36 bits.
B6-B9(OF%MOD) File data mode. Possible data modes
are:
Code Symbol Mode
0 .GSNRM Normal (ASCII)
10 .GSIMG Image
17 .GSDMP Dump
The legal modes for a given device are:
Device Legal Modes
Disk .GSNRM, .GSDMP
Card
Reader .GSNRM, .GSIMG
Card
Punch .GSNRM, .GSIMG
PTY .GSNRM (PTY receives data in
mode of its TTY)
Tape .GSNRM, .GSDMP
TTY .GSNRM, .GSIMG
Modes for opening an Ethernet connection:
Mode Symbol Description
0 .PUOI Initiate connection,
wait for completion
1 .PUOIN Initiate connection,
no wait
2 .PUOL Listen mode, wait for
a connection
3 .PUOLN Listen mode, no wait
4 .PUOCN Open PUP set to OPEN
state
10 .PUORW "Raw" IO mode, i.e.,
no BSP processing
Note that these modes do not correspond
to the hardware data modes, which may be
specified by the .MOPSM function of
MTOPR%. The default hardware mode is
.PM32, 32 bits left justified in a full
word.
In addition to the above modes, a user
may specify an optional timeout interval
in 1B9-1B17 of AC2 and a connection ID in
AC3.
B18(OF%HER) Halt on I/O device or data error. If
this bit is on and a condition occurs
that causes an I/O device or data error
interrupt, the process will instead be
halted, and an illegal instruction
interrupt will be generated. If this
bit is off and the condition occurs,
the interrupt is generated on its
normally-assigned channel. This bit
remains in affect for the entire time
that the file is open.
B19(OF%RD) Allow read access.
B20(OF%WR) Allow write access.
B21(OF%EX) Reserved for future use.
B22(OF%APP) Allow append access.
B25(OF%THW) Allow thawed access. If this bit is
off, the file is opened for frozen
access.
B26(OF%AWT) Block program and print a message on
the job's controlling terminal if
access to file cannot be permitted.
The program is blocked until access is
granted.
B27(OF%PDT) Do not update access dates of the file.
B28(OF%NWT) Return an error if access to file
cannot be permitted.
If B26 and B28 are both off, the
default is to return an error if access
to the file cannot be granted.
B29(OF%RTD) Enforce restriced access. No other JFN
in the system may be opened with this
file until the current JFN is closed.
B30(OF%PLN) Disable line number checking and
consider a line number as 5 characters
of text.
B31(OF%DUD) Suppress the system updating of
modified pages in memory to thawed
files on disk until a UFPGS or CLOSF
JSYS is executed. This bit is ignored
for new files.
B32(OF%OFL) Open the device even if it is off line.
B33(OF%FDT) Force an update of the .FBREF date and
time (last read) in the FDB. Also,
increment right halfword (number of
(OPENF)
file references) of .FBCNT count word
in the FDB.
B34(OF%RAR) Wait if the file is offline.
RETURNS +1: failure, error code in AC1
+2: success
A byte size of 0 opens the file in 36-bit (full word) bytes and can be
given when subsequent I/O will be done with the PMAP call. A byte
size of 8 given for a JFN referring to a terminal opens the terminal
in binary mode. (Refer to Section 2.4.3.) A byte size of 8 given for
a JFN referring to a line printer opens the printer in 8-bit byte
mode, thereby allowing the data to be accessed with 8-bit byte
pointers. (Refer to Section 2.4.1.) A byte size other than 8 given
for the printer results in using 7-bit bytes.
NOTE
For sequential I/O, bytes are packed
into a 36-bit monitor buffer and are
unpacked by a pointer standard for the
device and data mode being used. For
example, a byte size of 7 (which is the
system standard for ASCII data) causes 5
7-bit bytes to be packed into the buffer
with the setting of the remaining bit
being unpredictable. If a byte size is
then used that retrieves all 36 bits of
data from the buffer, the last bit of
each word is indeterminate.
Even though each type of desired access can be indicated by a separate
bit, some accesses are implied when specific bits are set. For
example, the setting of the write access bit implies read access if
the process is allowed to read the file according to the file's access
code. This means that if the process has access to read the file and
it sets only the write access bit, the process will have the file
opened for read, write, and execute access. However, if an existing
file is opened and only write access is specified (only OF%WR is set),
the contents of the file are deleted, and the file is considered
empty. Thus, to update an existing file, both OF%RD and OF%WR must be
set.
Note that if OF%RD, OF%WR, and OF%APP are all zero, OPENF will
generate an error.
OPENF works as follows for archived versus migrated files:
Archived
OPENF Access Online Offline
(OPENF)
Read Ok Fail/Wait
Write Fail Fail
Append Fail Fail
Migrated
OPENF Access Online Offline
Read Ok Fail/Wait
Write Ok
(discard
implied)
Append Ok Fail/Wait
(discard (discard
implied) implied)
The fail cases will all return an appropriate error message (OPNXnn).
The fail/wait cases will return an error for fail or wait until the
OPENF can be successfully completed. Whether a fail or wait occurs
will be determined by the setting of OF%NWT (never wait for file) and
OF%RAR (retrieve file if necessary). If OF%NWT is set on the OPENF
call, OPENF will always fail (in the fail/wait cases). If OF%RAR or
the job default is set, the OPENF will wait for the file to be
retrieved and then complete successfully. In the Ok (discard implied)
cases, tape pointers, if any, for the file are discarded.
The CLOSF monitor call can be used to close a specific file.
OPENF ERROR MNEMONICS:
OPNX1: file is already open
OPNX2: file does not exist
OPNX3: read access required
OPNX4: write access required
OPNX5: execute access required
OPNX6: append access required
OPNX7: device already assigned to another job
OPNX8: device is not on line
OPNX9: invalid simultaneous access
OPNX10: entire file structure full
OPNX12: list access required
(OPENF)
OPNX13: invalid access requested
OPNX14: invalid mode requested
OPNX15: read/write access required
OPNX16: file has bad index block
OPNX17: no room in job for long file page table
OPNX18: Unit Record Devices are not available
OPNX23: disk quota exceeded
OPNX25: device is write-locked
OPNX26: illegal to open a string pointer
DESX1: invalid source/destination designator
DESX3: JFN is not assigned
DESX4: invalid use of terminal designator or string pointer
DESX7: JFN cannot refer to output wildcard designators
SFBSX2: invalid byte size
TTYX01: line is not active
Node: PBIN Previous: OPENF Next: PBOUT Up: Top
PBIN JSYS 73
Inputs the next sequential byte from the primary input designator.
This call is equivalent to a BIN call with the source designator given
as .PRIIN.
RETURNS +1: always, with the byte right-justified in AC1
Can cause several software interrupts or process terminations on
certain file conditions. (Refer to bit OF%HER of the OPENF call
description.)
PBIN ERROR MNEMONICS:
DESX1: invalid source/destination designator
DESX2: terminal is not available to this job
DESX5: file is not open
(PBIN)
IOX1: file is not open for reading
IOX4: end of file reached
IOX5: device or data error
Node: PBOUT Previous: PBIN Next: PEEK Up: Top
PBOUT JSYS 74
Outputs a byte sequentially to the primary output designator. This
call is equivalent to a BOUT call with the destination designator
given as .PRIOU.
ACCEPTS IN AC1: byte to be output, right-justified
RETURNS +1: always
Can cause several software interrupts or process terminations on
certain file conditions. (Refer to bit OF%HER of the OPENF call
description.)
PBOUT ERROR MNEMONICS:
DESX1: invalid source/destination designator
DESX2: terminal is not available to this job
DESX3: JFN is not assigned
DESX5: file is not open
IOX2: file is not open for writing
IOX5: device or data error
IOX6: illegal to write beyond absolute end of file
IOX11: quota exceeded or disk full
Node: PEEK Previous: PBOUT Next: PLOCK Up: Top
PEEK JSYS 311
Transfers a block of words from the monitor to the user space. The
desired monitor pages must have read access. This monitor call is
used to obtain data from the monitor for maintenance and test purposes
and should be executed only when GETAB information is not available.
(PEEK)
RESTRICTIONS: requires WHEEL, OPERATOR, or MAINTENANCE capability
enabled
ACCEPTS IN AC1: word count in the left half, and first virtual
address of the monitor in the right half
AC2: first user address
RETURNS +1: failure, error code in AC1
+2: success, the desired words are transferred.
PEEK ERROR MNEMONICS:
CAPX1: WHEEL or OPERATOR capability required
PEEKX2: read access failure on monitor page
Node: PLOCK Previous: PEEK Next: PMAP Up: Top
PLOCK JSYS 561
Acquires physical memory and places a designated section of the
process' address space in memory. Allows the process to specify the
memory pages to be used, or permits the system to select the pages.
RESTRICTIONS: requires WHEEL, OPERATOR, or MAINTENANCE capability
enabled
ACCEPTS IN AC1: address of first page if acquiring (locking) or -1 if
unlocking.
AC2: process handle (currently .FHSLF only) in the left
half and number of first page in the right half.
AC3: control flags in the left half and repeat count in
the right half. The control flags are
B0 (LK%CNT) right half of AC3 contains a count of the
number of pages to lock.
B1 (LK%PHY) value in AC1 is the first page desired.
If this bit is off and AC1 is not -1, the
system selects pages.
B2 (LK%NCH) pages will not be cached.
B3 (LK%AOL) off-line pages are to be locked.
RETURNS +1: always
If the PLOCK call is unable to honor any one of the requests to unlock
(PLOCK)
any one of the pages specified by the repeat count, it will unlock all
of the others.
A page that was locked with the PLOCK call may be unmapped. (Refer to
the PMAP call.) This will unlock the process' page and return the now
unlocked physical page to its previous state.
The page selected by the user must be capable of being placed off-line
for the PLOCK call to acquire it.
Generates an illegal instruction interrupt on error conditions below.
PLOCK ERROR MNEMONICS:
ARGX22: invalid flag
ARGX24 invalid count
Node: PMAP Previous: PLOCK Next: PMCTL Up: Top
PMAP JSYS 56
Maps one or more complete pages from a file to a process (for input),
from a process to a file (for output), or from one process to another
process. Also unmaps pages from a process and deletes pages from a
file. Each of the five uses of PMAP is described below.
Case I Mapping File Pages to a Process
This use of the PMAP call does not actually transfer any data; it
simply changes the contents of the process' page map. When changes
are made to the page in the process, the changes will also be
reflected in the page in the file, if write access has been specified
for the file.
ACCEPTS IN AC1: JFN of the file in the left half, and the page number
in the file in the right half. This AC contains the
source.
AC2: process handle in the left half, and the page number
in the process in the right half. This AC contains
the destination.
AC3: B0(PM%CNT) A count is in the right half of AC3.
This count specifies the number of
sequential pages to be mapped.
B2(PM%RD) Permit read access to the page.
B3(PM%WR) Permit write access to the page.
(PMAP)
B4(PM%EX) Reserved for future use.
The symbol PM%RWX can be used to set
B2-B4.
B5(PM%PLD) Preload the page being mapped (i.e., move
the page immediately instead of waiting
until it is referenced).
B9(PM%CPY) Create a private copy of the page when it
is written into (copy-on-write). If the
page is mapped between two processes
(Case III below), both processes will
receive a private copy of the page.
B11(PM%ABT) Unmap a page and throw its changed
contents away. This bit is significant
only when unmapping pages in a process
(see case IV below) and OF%DUD is set in
the OPENF. PM%ABT is particularly useful
in the case of erroneous data written to
a mapped page of a file open for
simultaneous access. In this case, it is
important that the erroneous page be
discarded and not be used to update the
file page.
B18-B35 Number of pages to be mapped if
(PM%RPT) B0(PM%CNT) is set.
RETURNS +1: always
This use of PMAP changes the map of the process such that addresses in
the page in the process specified by the right half of AC2 actually
refer to the page in the file specified by the right half of AC1. The
present contents of the page in the process are removed. If the page
in the file is currently nonexistent, it will be created when it is
written (i.e., when the corresponding page in the process is written).
This use of PMAP is legal only if the file is opened for at least read
access. The access bits specified in the PMAP call are ANDed with the
access that was specified when the file was opened. However,
copy-on-write is always granted, regardless of the file's access. The
access granted is placed in the process' map. The file cannot be
closed while any of its pages are mapped into any process. Thus,
before the file is closed, pages must be unmapped from each process by
a PMAP call with -1 in AC1 (see below).
Case II Mapping Process Pages to a File
This use of the PMAP call actually transfers data by moving the
contents of the specified page in the process to the specified page in
the file. The process' map for that page becomes empty.
ACCEPTS IN AC1: process handle in the left half, and the page number
(PMAP)
in the process in the right half. This AC contains
the source.
AC2: JFN of the file in the left half, and the page number
in the file in the right half. This AC contains the
destination.
AC3: access bits and repetition count. (Refer to Case I.)
RETURNS +1: always
The process page and the file page must be private pages. The
ownership of the process page is transferred to the file page. The
present contents of the page in the file is deleted.
The access granted to the file page is determined by ANDing the access
specified in the PMAP call with the access specified when the file was
opened.
When mapping pages from a process to a file, the end-of-file byte
pointer and the byte size are not automatically updated in the File
Descriptor Block (FDB). To allow the file to be read later via the
sequential I/O calls (e.g., BIN, SIN), the process executing the PMAP
call should close the file keeping the JFN (CLOSF call, bit CO%NRJ),
update the byte pointer and the byte size in the FDB (CHFDB call), and
then release the JFN (RLJFN call). (Refer to Section 2.2.8 for the
format of the FDB fields.)
Case III Mapping One Process' Pages to Another Process
This use of the PMAP call normally does not transfer any data; it
simply changes the contents of the page maps of the processes. When
changes are made to the page in one process, the changes will also be
reflected in the corresponding page in the other process.
ACCEPTS IN AC1: process handle in the left half, and the page number
in the process in the right half. This AC contains
the source.
AC2: a second process handle in the left half, and page
number in that process in the right half. This AC
contains the destination.
AC3: access bits and repetition count. (Refer to Case I.)
RETURNS +1: always
This use of PMAP changes the map of the destination process such that
addresses in the page specified by the right half of AC2 actually
refer to the page in the source process specified by the right half of
AC1. The present contents of the destination page are deleted.
The access granted to the destination page is determined by the access
specified in the PMAP call.
(PMAP)
Case IV Unmapping Pages In a Process
As stated previously, a file cannot be closed if any of its pages are
mapped in any process.
ACCEPTS IN AC1: -1
AC2: process handle in the left half, and page number in
the process in the right half
AC3: B0(PM%CNT) Repeat count. Only the process page
numbers are incremented.
B18-B35 Number of pages to remove from process
This format of the PMAP call removes the pages indicated in AC2 from
the process.
A page that was locked with the PLOCK call may be unmapped. Doing so
will unlock the process' page and return the now unlocked physical
page to its previous state.
Case V Deleting One or More Pages from a File
Deletes one or more pages from a file on disk and does not affect the
address space of any process.
ACCEPTS IN AC1: -1
AC2: JFN of the file in the left half and page number of
the file in the right half.
AC3: B0(PM%CNT) Indicates a repeat count is in right half
of AC3.
B18-35 Number of pages to delete from file
Illegal PMAP calls
The PMAP call is illegal if:
1. Both AC1 and AC2 designate files.
2. Both AC1 and AC2 are 0.
3. The PMAP call designates a file with write-only access.
4. The PMAP call designates a file with append-only access.
5. The source and/or the destination designates an execute-only
process and the process is not self (.FHSLF).
Can cause several software interrupts on certain file conditions.
(PMAP)
Generates an illegal instruction interrupt on error conditions below.
PMAP ERROR MNEMONICS:
DESX1: invalid source/destination designator
DESX3: JFN is not assigned
DESX5: file is not open
DESX7: JFN cannot refer to output wildcard designators
PMAPX1: invalid access requested
PMAPX2: invalid use of PMAP
PMAPX3: illegal to move shared page into file
PMAPX4: illegal to move file page into process
PMAPX5: illegal to move special page into file
PMAPX6: disk quota exceeded
PMAPX7: illegal to map file on dismounted structure
FRKHX1: invalid process handle
FRKHX2: illegal to manipulate a superior process
FRKHX3: invalid use of multiple process handle
FRKHX7: process page cannot exceed 777
FRKHX8: illegal to manipulate an execute-only process
LNGFX1: page table does not exist and file not open for write
IOX11: quota exceeded or disk full
ARGX06: invalid page number
CFRKX3: insufficient system resources
Node: PMCTL Previous: PMAP Next: PPNST Up: Top
PMCTL JSYS 560
Controls physical memory. This call allows a privileged program to
add or remove most pages of physical memory and to control use of
cache memory.
(PMCTL)
The PMCTL monitor call requires the process to have WHEEL, OPERATOR,
or MAINTENANCE capability enabled.
ACCEPTS IN AC1: function code
AC2: length of the argument block
AC3: address of the argument block
RETURNS +1: always
The defined functions and their argument blocks are as follows:
Function Symbol Meaning
0 .MCRCE Return the status of cache memory. The
status is returned in word .MCCST of the
argument block.
Argument Block
0 .MCCST If B35(MC%CEN) is on, the cache
is enabled.
1 .MCSCE Set the status of cache memory.
Argument Block
0 .MCCST Enable the cache if B35(MC%CEN)
is on.
2 .MCRPS Return the status of the given page(s). The
number of the page is given in word .MCPPN,
and its status is returned in word .MCPST.
Argument Block
0 .MCPPN Negative count in the left half;
number of physical page in the
right half
1 .MCPST Returned page status. The
status is represented by one of
the following values:
0 .MCPSA Page is available
for normal use.
1 .MCPSS Page is in a
transition state.
2 .MCPSO Page is off line
because it is
nonexistent.
Nonexistent memory
(PMCTL)
is marked as off
line at system
startup.
3 .MCPSE Page is off line
because the monitor
detected an error.
3 .MCSPS Set the status of the given page. The number
of the page is given in word .MCPPN, and the
status value is given in word .MCPST.
Argument Block
0 .MCPPN Number of physical page.
1 .MCPST Status for page. The status is
represented by one of the
following values:
0 .MCPSA Mark page available
for normal use.
2 .MCPSO Mark page off line
because it does not
exist.
3 .MCPSE Mark page off line
because it has an
error.
4 .MCRME Collect information
about MOS memory
errors. Store the
information in
block addressed by
AC3 and update AC2
on return.
A list of those pages that PMCTL cannot acquire follows:
1. the EPT
2. the monitor's UPT
3. any page containing a CST0 entry
4. any page containing an SPT entry
5. the page containing MMAP
6. any page belonging to the resident free space pool
(PMCTL)
In certain specialized monitors, for example TOPS-20AN, there are
additional pages that cannot be acquired. An estimate of the size of
these areas follows:
CST0 one word for every page of memory supported (two to four
pages)
SPT four pages
MMAP one page
Resident Free Space Pool two pages minimum
Generates an illegal instruction interrupt on error conditions below.
PMCTL ERROR MNEMONICS:
CAPX2: WHEEL, OPERATOR, or MAINTENANCE capability required
PMCLX1: invalid page state or state transition
PMCLX2: requested physical page is unavailable PMCLX3: requested
physical page contains errors
ARGX02: invalid function
ARGX06: invalid page number
Node: PPNST Previous: PMCTL Next: PRARG Up: Top
PPNST JSYS 557
Translates a project-programmer number (a TOPS-10 36-bit directory
designator) to its corresponding TOPS-20 string. The string consists
of the structure name and a colon followed by the directory name
enclosed in brackets. This monitor call and the STPPN monitor call
should appear only in programs that require translations of
project-programmer numbers. Both calls are temporary calls and may
not be defined in future releases.
ACCEPTS IN AC1: destination designator
AC2: project-programmer number (36 bits)
AC3: byte pointer to structure name string for which the
given project-programmer number applies.
RETURNS +1: always, string written to destination, with updated
byte pointer, if pertinent, in AC1
If the structure name string is a logical name, then the first
structure appearing in the logical name definition is used.
Generates an illegal instruction interrupt on error conditions below.
(PPNST)
PPNST ERROR MNEMONICS:
PPNX1: invalid PPN
PPNX2: structure is not mounted
GJFX22: insufficient system resources (Job Storage Block full)
STDVX1: no such device
DESX1: invalid source/destination designator
DESX2: terminal is not available to this job
DESX3: JFN is not assigned
DESX5: file is not open
DELFX6: internal format of directory is incorrect
DIRX1: invalid directory number
DIRX2: insufficient system resources
DIRX3: internal format of directory is incorrect
STRX01: structure is not mounted
STRX06: no such user number
IOX11: quota exceeded or disk full
Node: PRARG Previous: PPNST Next: PSOUT Up: Top
PRARG JSYS 545
Returns and/or sets arguments for the specified process.
ACCEPTS IN AC1: function code in the left half, and a process handle
in the right half
AC2: address of argument block
AC3: length of argument block
RETURNS +1: always, with the number of words in the argument
block in AC3
The codes for the functions are as follows:
1 .PRARD return the arguments beginning at the address
specified in AC2
(PRARG)
2 .PRAST set the arguments using the argument block at the
address specified in AC2
Generates an illegal instruction interrupt on error conditions below.
PRARG ERROR MNEMONICS:
PRAX1: invalid PRARG function code
PRAX2: no room in monitor data base for argument block
PRAX3: PRARG argument block too large
Node: PSOUT Previous: PRARG Next: PUPI Up: Top
PSOUT JSYS 76
Outputs a string sequentially to the primary output designator.
ACCEPTS IN AC1: byte pointer to an ASCIZ string in the caller's
address space
RETURNS +1: always, updated byte pointer in AC1
Can cause several software interrupts or process terminations on
certain file conditions. (Refer to bit OF%HER of the OPENF call
description.)
PSOUT ERROR MNEMONICS:
DESX1: invalid source/destination designator
DESX2: terminal is not available to this job
DESX3: JFN is not assigned
DESX5: file is not open
IOX2: file is not open for writing
IOX5: device or data error
IOX6: illegal to write beyond absolute end of file
IOX11: quota exceeded or disk full
Node: PUPI Previous: PSOUT Next: PUPO Up: Top
PUPI JSYS 441
Used for reading in PUP's directly without BSP processing.
ACCEPTS IN AC1: B0 (PU%NOW) never dismiss for I/O, give PUPX3 error instead
B1 (PU%CHK) check pup checksum, give PUPX5 error if bad
B2 (PU%SRC) perform source address check, PUPX7 error if bad
B3 (PU%MEI) Want header in 16-bit header mode (.PM16)
B18-B35 JFN of open port
AC2: length of user data area in words in the left half and
address of the user data block block in the right half
RETURNS: +1: failure, error code in AC1.
+2 success
PUPI ERROR MNEMONICS:
IOX1: Not open for reading
DESX4: Invalid use of terminal designator or string pointer
DESX5: File is not open
PUPX1: Block size error
PUPX3: Operation not possible now
PUPX4: JFN open for sequential I/O only
PUPX5: Checksum incorrect
PUPX7: Source address incorrect
PUPX8: JFN does not refer to device PUP:
Node: PUPO Previous: PUPI Next: PUPNM Up: Top
PUPO JSYS 442
Used for outputting PUP's directly without BSP processing.
ACCEPTS IN AC1: B0 (PU%NOW) never dismiss for I/O, give PUPX3 error instead
B1 (PU%CHK) check pup checksum
B2 (PU%SRC) perform source address check
B3 (PU%MEI) Header is in 16-bit header mode (.PM16)
B18-B35 JFN of open port
AC2: length of user data area in words in the left half and
address of the user data block block in the right half
RETURNS: +1: failure, error code in AC1.
+2 success
PUPO ERROR MNEMONICS:
IOX2: File is not open for writing
DESX4: Invalid use of terminal designator or string pointer
DESX5: File is not open
PUPX1: Block size error
PUPX2: PUP address error
PUPX4: JFN open for sequential I/O only
PUPX5: Checksum incorrect
PUPX7: Source address incorrect
PUPX8: JFN does not refer to device PUP:
Node: PUPNM Previous: PUPO Next: RCDIR Up: Top
PUPNM JSYS 443
Do pup name/address translation.
ACCEPTS IN AC1: Source/destination designator. If source, must be a string
pointer
AC2: 1B0 (PN%NAM) If set, lookup name string given by AC1 and
return address(es) to block pointed by AC2.
If not set, look up name string pointed to by AC2
and output resulting name string to AC1.
If PN%ATT is set, do this for the attribute
string.
1B1 (PN%FLD) If set and PN%NAM is set, allow recognition.
If set and PN%NAM is not set, omit fields where
possible.
If not set and PN%NAM is set, do not allow
recognition
If not set and PN%NAM is not set, output each
field.
1B2 (PN%OCT) If set, output octal numbers for unknown fields.
If not set and PN%NAM off, return an error if
the address is not found.
1B3 (PN%ADR) If PN%NAM is off, return address block pointer
in AC3
1B4 (PN%ATT) If set, lookup attribute name string pointer to
by AC4, output corresponding attribute value
string to AC1. PN%NAM must be off. PN%ATT on
suppresses outputting of the name string and
forces PN%OCT off.
B9-B17 Block length in words if PN%NAM is on.
B18-B35 Block address.
AC3: not used
AC4: Destination designator for attribute value string if
PN%ATT is on.
RETURNS: +1: failure, error code in AC1.
+2 success, with updated string pointers in AC1 and AC4 if
relevant. AC2 is updated only if PN%NAM is set; the left
half contains the number of words used in the block (i.e.,
twice the number of matching addresses, which can be greater
than the number of words in the block); the right half of AC2
is unchanged. The left half of AC3 contains the version
number of SYSTEM:PUP-NETWORK.DIRECTORY; the right half
contains the 16-bit byte address of the first word of the
address block if PN%ADR on in AC2 or a zero if not found
The format of the block pointed to by AC2 is any number of repetitions of the
following two word block:
<Network number>,,<Host number>
<Socket>
PUPNM ERROR MNEMONICS:
DESX1: Invalid source/destination designator
PUPNX1: Name or address not found
PUPNX2: Recognition invoked and name ambiguous
PUPNX3: Syntax error or illegal address
PUPNX4: Inconsistent overlapping elements in name string
PUPNX5: Syntax error in attribute name string
PUPNX6: Attribute name not found
Node: RCDIR Previous: PUPNM Next: RCM Up: Top
RCDIR JSYS 553
(RCDIR)
Translates the given directory string to its corresponding 36-bit
directory number. The directory string consists of the structure name
or logical name and a colon followed by the directory name enclosed in
either square brackets or angle brackets. No spaces can appear
between the structure name and the directory name, and each field
given must include its punctuation. An example of a directory string
is PS:<SMITH>. If the structure name is omitted from the string, the
user's connected structure is used. If the directory name is omitted
from the string, the user's connected directory is used.
Recognition can be used on the string but only on the directory name
field; recognition cannot be used on the structure name field.
Partial recognition can be allowed so that a user can employ
recognition when typing the name of a subdirectory. When recognition
is used on the directory name field and the directory name is not
ambiguous, the closing bracket is not required.
The directory name field can contain wildcard characters, and repeated
RCDIR calls can be executed to obtain the numbers of the directories
whose characters match the given directory. After the first call,
each subsequent RCDIR call returns the number of the next directory in
the group.
ACCEPTS IN AC1: flag bits in the left half
AC2: byte pointer to ASCIZ string to be translated, a JFN,
a 36-bit user number, or a 36-bit directory number
(given for the purpose of checking its validity)
AC3: 36-bit directory number (given when stepping to the
next directory in a group of directories)
RETURNS +1: always, with
AC1 containing flag bits in the left half
AC2 containing an updated byte pointer (if a pointer
was supplied as the argument). If recognition
was used, this pointer reflects the remainder of
the string that was appended to the original
string.
AC3 containing a 36-bit directory number if execution
of the call was successful
The flag bits supplied in the left half of AC1 are as follows:
B14(RC%PAR) Allow partial recognition on the directory name. If
the name given matches more than one directory, bit
RC%AMB is set on return and the string is updated to
reflect the unique portion of the directory name. If
bit RC%PAR is not set, the name given matches more than
one directory, and recognition is being used, bit
RC%AMB is set on return, but the string is not updated.
(RCDIR)
B15(RC%STP) Step to the next directory in the group and return the
number of that directory. AC1 must have bit RC%AWL
set. AC2 must contain a pointer to a string that
contains wildcard characters in the directory name
field. AC3 must contain a directory number.
B16(RC%AWL) Allow the directory name to contain wildcard
characters. No recognition is performed on a directory
name that contains wildcard characters. Also, the
directory name must include its terminating bracket.
This bit must be set if bit RC%STP is also set.
B17(RC%EMO) Match the given string exactly. When both the RC%PAR
and RC%EMO bits are on, recognition is not used on the
string, and the string is matched exactly. If this bit
is off, recognition is used on the string.
The flag bits returned in the left half of AC1 are as follows:
On success
B0(RC%DIR) Directory can be used only by connecting to it (i.e.,
it is a files-only directory). If this bit is off, the
user can also login to (if the directory is on the
public structure) or access this directory.
B1(RC%ANA) Obsolete
B2(RC%RLM) All messages from <SYSTEM>MAIL.TXT are repeated every
time the user logs in. If this bit is off, messages
are printed only once.
B6(RC%WLD) The directory name given contained wildcard characters.
On failure
B3(RC%NOM) No match was found for the string given. This bit is
returned if either 1) bit RC%EMO was on in the call and
a string was given that matched more than one directory
or 2) the syntax of the fields in the string is correct
but the structure is not mounted or the directory does
not exist.
B4(RC%AMB) The argument given was ambiguous. This bit is returned
if bit RC%EMO was off in the call and the string given
either matched more than one directory or did not
include the beginning bracket of the directory name
field.
B5(RC%NMD) There are no more directories in the group of
directories. This bit is returned if RC%STP was on in
the call and the numbers of all the directories in the
group have been returned.
The RCDIR monitor call can be used in one of two ways. The simplest
(RCDIR)
way is to translate a directory string that corresponds to only one
directory to its corresponding 36-bit directory number. The string
can be either recognized or matched exactly. Instead of accepting a
string, the program can supply a JFN or a 36-bit user number and
translate this argument to a directory number. When a JFN is supplied
as an argument, the number returned is that of the directory
containing the file associated with the JFN. When a user number is
supplied as an argument, the number returned is the logged-in
directory for that user. Finally, the program can supply a directory
number to check the number's validity, and if the RCDIR call is
successful, this same number is returned.
The second way of using the RCDIR call is to accept a directory string
that corresponds to more than one directory and to step through all
the directories matching the given string to obtain all the directory
numbers. Repeated RCDIR calls are executed until the number of the
last directory is returned. This use of RCDIR requires AC2 to contain
a pointer to a string containing wildcard characters and is ignored if
the string does not contain wildcard characters or if any other
argument is given in AC2.
The first RCDIR call executed must have bit RC%AWL set in AC1 and the
pointer to the string in AC2. If execution of the call is successful,
AC3 contains the number of the directory corresponding to the first
directory in the group. For example, if the string given is <SMITH*>
and the call is successful, the number returned corresponds to
<SMITH>. Subsequent RCDIR calls must set bits RC%STP and RC%AWL in
AC1, reset the pointer in AC2 (because it is updated on a successful
RCDIR call), and leave in AC3 the directory number returned from the
previous RCDIR call. (The directory number in AC3 is accepted only if
RC%STP is set in AC1 and a pointer to a string containing wildcard
characters is given in AC2.) On successful execution of each
subsequent RCDIR call, the number returned in AC3 corresponds to the
next directory in the group. When the number of the last directory in
the group has been returned, a subsequent RCDIR call sets bit RC%NMD
in AC1; the content of AC3 is indeterminate.
The RCUSR monitor call can be used to translate a user name string to
its corresponding user number. The DIRST monitor call can be used to
translate either a directory number or a user number to its
corresponding string.
Generates an illegal instruction interrupt on error conditions below.
RCDIR ERROR MNEMONICS:
RCDIX1: insufficient system resources
RCDIX2: invalid directory specification
RCDIX3: invalid structure name
RCDIX4: monitor internal error
DESX1: invalid source/destination designator
(RCDIR)
DESX2: terminal is not available to this job
DESX3: JFN is not assigned
DESX4: invalid use of terminal designator or string pointer
DESX7: JFN cannot refer to output wildcard designators
DESX8: file is not on disk
DESX10: structure is dismounted
STRX01: structure is not mounted
Node: RCM Previous: RCDIR Next: RCUSR Up: Top
RCM JSYS 134
Returns the word mask of the activated interrupt channels for the
specified process. (Refer to Section 2.5.1 and the AIC and DIC calls
for information on activating and deactivating software interrupt
channels.)
ACCEPTS IN AC1: process handle
RETURNS +1: always, 36-bit word in AC1, with bit n on meaning
channel n is activated
Generates an illegal instruction interrupt on error conditions below.
RCM ERROR MNEMONICS:
FRKHX1: invalid process handle
FRKHX2: illegal to manipulate a superior process
FRKHX3: invalid use of multiple process handle
Node: RCUSR Previous: RCM Next: RCVIM Up: Top
RCUSR JSYS 554
Translates the given user name string to its corresponding 36-bit user
number. The user name string consists of the user's name without any
punctuation. The string must be associated with a directory on
structure PS: that is not a files-only directory.
Recognition can be used on the string. In addition, the string can
(RCUSR)
contain wildcard characters.
ACCEPTS IN AC1: flag bits in the left half
AC2: byte pointer to ASCII string to be translated
AC3: 36-bit user number (given when stepping to the next
user name in a group)
RETURNS +1: always, with
AC1 containing flag bits in the left half
AC2 containing an updated byte pointer. If
recognition was used, this pointer reflects the
remainder of the string that is appended to the
original string.
AC3 containing a 36-bit user number if execution of
the call was successful. An example of a user
number is: 500000,,261.
The flag bits supplied in the left half of AC1 are as follows. For
additional information on these bits, refer to the RCDIR monitor call
description.
B14(RC%PAR) Allow partial recognition on the user name string.
B15(RC%STP) Step to the next user name in the group.
B16(RC%AWL) Allow the user name to contain wildcard characters.
B17(RC%EMO) Match the given string exactly.
The flag bits returned in the left half of AC1 are as follows. For
additional information on these bits, refer to the RCDIR monitor call
description.
On success
B1(RC%ANA) Obsolete
B2(RC%RLM) User sees all messages from <SYSTEM>MAIL.TXT every time
he logs in. If this bit is off, the user sees the
messages only once.
B6(RC%WLD) The user name given contained wildcard characters.
On failure
B3(RC%NOM) No match was found for the string given. This bit will
be on if the string given refers to a files-only
directory, if there is no directory on PS: that is
associated with the user name string, or bit RC%EMO was
on in the call and a string was given that matched more
(RCUSR)
than one user.
B4(RC%AMB) The string given was ambiguous because it matched more
than one user.
B5(RC%NMD) There are no more user names in the group.
The RCDIR monitor call can be used to translate a directory string to
its corresponding directory number. The DIRST monitor call can be
used to translate either a user number or a directory number to its
corresponding string.
Generates an illegal instruction interrupt on error conditions below.
RCUSR ERROR MNEMONICS:
RCUSX1: insufficient system resources
RCDIX4: monitor internal error
STRX07: invalid user number
STRX08: invalid user name
Node: RCVIM Previous: RCUSR Next: RCVOK% Up: Top
RCVIM JSYS 751
Retrieves a message from the ARPANET special message queue. The queue
must have been previously assigned with the ASNSQ JSYS.
RESTRICTIONS: for ARPANET systems only.
ACCEPTS IN AC1: special queue handle
AC2: address where extended message is to be stored
RETURNS +1: failure, error code in AC1
+2: success, message block stored at address specified in
AC2
The RCVIM JSYS will block until the message is received.
See SNDIM JSYS for a description of the message format.
RCVIM ERROR MNEMONICS:
SQX1: Special network queue handle out of range
SQX2: Special network queue not assigned
(RCVOK%)
Node: RCVOK% Previous: RCVIM Next: RDTTY Up: Top
RCVOK% JSYS 575
Allows the access-approval program (written by the installation) to
service an approval request in the GETOK% request queue after a user
program has issued a GETOK% JSYS.
RESTRICTIONS: Requires WHEEL or OPERATOR capability enabled
ACCEPTS IN AC1: Address of argument block
AC2: Length of argument block
RETURNS +1: always
Argument Block (returned):
Word Symbol Contents
0 .RCFCJ Function code,,job number
1 .RCUNO User number
2 .RCCDR Connected directory
3 .RCRQN Request number
4 .RCNUA # user args actually passed to RCVOK% block,,# user
args supplied in user block
5 .RCARA Address of user arguments
6 .RCCAP Capabilities enabled
7 .RCTER Controlling terminal number
10 .RCRJB Job number request is for
11 User arguments
. ..
. ..
11+n ..
The argument block returned contains two major segments, the job
section, which contains information about the job that issued the
GETOK% JSYS, and the user argument section, which contains the
arguments the user supplied with the GETOK% call. The user argument
section immediately follows the job section. However, as the job
section's length may grow with future releases of TOPS-20, the
access-control program should extract the address of the user argument
section from word 4 of the RCVOK% argument block. The following
sequence of instructions illustrates how to index through the user
argument section of the RCVOK% argument block:
;Build AOBJN pointer
HLRZ T1,ARGBLK+.RCNUA ;Get # user args passed
MOVN T1,T1 ;Negate
HRLZ T1,T1 ;Move to left half-word
HRR T1,ARGBLK+.RCARA ;Get address of user args
LP: MOVE T2,(T1) ;Get user arg
(RCVOK%)
...
...
AOBJN T1,LP
Returns an illegal instruction interrupt on error conditions below.
RCVOK% ERROR MNEMONICS:
CAPX1: wheel or operator capability required
Node: RDTTY Previous: RCVOK% Next: RELD Up: Top
RDTTY JSYS 523
Reads input from the primary input designator (.PRIIN) into
the caller's address space. Input is read until either a
break character is encountered or the given byte count is
exhausted, whichever occurs first. Output generated as a
result of character editing is output to the primary output
designator (.PRIOU).
The RDTTY call handles the following editing functions:
1. Delete the last character input (DELETE).
2. Delete back to the last punctuation character (CTRL/W).
3. Delete back to the beginning of the current line or, if
the current line is empty, back to the beginning of the
previous line (CTRL/U).
4. Retype the current line from its beginning or, if the
current line is empty, retype the previous line
(CTRL/R).
5. Accept the next character without regard to its usual
meaning (CTRL/V).
By handling these functions, the RDTTY call serves as an
interface between the terminal and the user program.
ACCEPTS IN AC1: byte pointer to string in caller's address space
where input is to be placed
AC2: B0(RD%BRK) Break on CTRL/Z or ESC.
B1(RD%TOP) Break on CTRL/G, CTRL/L, CTRL/Z, ESC,
carriage return, line feed.
B2(RD%PUN) Break on punctuation (see below).
B3(RD%BEL) Break on end of line (carriage return and
line feed, or line feed only).
(RDTTY)
B4(RD%CRF) Suppress a carriage return and return a
line feed only.
B5(RD%RND) Return to user program if user tries to
delete beyond beginning of the input
buffer (e.g., user types a CTRL/U or
DELETE past the first character in the
buffer). If this bit is not set, the
call rings the terminal's bell and waits
for more input.
B7(RD%RIE) Return to user program if input buffer is
empty. If this bit is not set, the call
waits for more input.
B10(RD%RAI) Convert lower-case input to upper-case
input.
B11(RD%SUI) Suppress CTRL/U indication (i.e., do not
print XXX, and on display terminals, do
not delete the characters from the
screen).
B18-B35 Number of bytes available in the string.
The input is terminated when this count
is exhausted, even if the specified break
character has not yet been typed.
If the left half of AC2 is 0, the input is terminated
on end of line only.
AC3: byte pointer to prompting-text (CTRL/R buffer), or 0
if no text. This text, followed by any text in the
input buffer, is output if the user types CTRL/R in
his first line of input. If no CTRL/R text exists or
the user types CTRL/R on other than the first line of
input, only the text on the current line will be
output.
RETURNS +1: failure, error code in AC1
+2: success, updated byte pointer in AC1, appropriate
bits set in the left half of AC2, and updated count
of available bytes in the right half of AC2
The bits returned in the left half of AC2 on a successful return are:
B12(RD%BTM) Break character terminated the input. If
this bit is not set, the input was
terminated because the byte count was
exhausted.
B13(RD%BFE) Control was returned to the program
because the user tried to delete beyond
the beginning of the input buffer and
RD%RND was on in the call.
B14(RD%BLR) The backup limit for editing was reached.
NOTE
(RDTTY)
Bits not described are reserved for use
by the monitor. The state of these bits
on completion of the RDTTY call is
undefined.
The punctuation break character set (RD%PUN) is as follows:
CTRL/A-CTRL/F ASCII codes 34-36
CTRL/H-CTRL/I ASCII codes 40-57
CTRL/K ASCII codes 72-100
CTRL/N-CTRL/Q ASCII codes 133-140
CTRL/S-CTRL/T ASCII codes 173-176
CTRL/X-CTRL/Y
Upon completion of the call, the terminating character is stored in
the string, followed by a NULL (unless the byte count was exhausted).
Also, any CTRL/V, along with the character following it, is stored in
the string.
RDTTY ERROR MNEMONICS:
RDTX1: invalid string pointer
IOX11: quota exceeded or disk full
Node: RELD Previous: RDTTY Next: RELSQ Up: Top
RELD JSYS 71
Releases one or all devices assigned to the job. When a device is
released by the job, the resource allocator receives an IPCF packet.
(Refer to the ALLOC monitor call description for the format of the
packet sent to the allocator.)
ACCEPTS IN AC1: device designator, or -1 to release all devices
assigned to this job
RETURNS +1: failure, error code in AC1
+2: success
The ASND monitor call can be used to assign a device to the caller.
If this JSYS is issued for a device on which the user has an open JFN,
an error will be returned.
RELD ERROR MNEMONICS:
DEVX1: invalid device designator
DEVX2: device already assigned to another job
(RELD)
DEVX6: job has open JFN on device
Node: RELSQ Previous: RELD Next: RESET Up: Top
RELSQ JSYS 753
Deassigns the ARPANET special message queue. (The LGOUT JSYS
deassigns all special message queues.) All pending messages relative
to the specified queue(s) are discarded.
RESTRICTIONS: for ARPANET systems only.
ACCEPTS IN AC1: special queue handle (returned by ASNSQ), or -1 to
deassign all special queues.
RETURNS +1: always
RELSQ functions as a no-op if an unassigned queue is specified in AC1.
Node: RESET Previous: RELSQ Next: RFACS Up: Top
RESET JSYS 147
Resets and initializes the current process. It is a good programming
practice to include this call at the beginning of each assembly
language program.
RETURNS +1: always
The RESET monitor call performs the following:
1. Closes all files at or below the current process and releases
all JFNs. If a file is nonexistent (i.e., has never been
closed), it is closed and then expunged.
2. Kills all inferior processes.
3. Clears the current process' software interrupt system. The
channel table and priority level table addresses remain
unchanged from any previous settings.
4. Sets the following fields of the controlling terminal's JFN
mode word (refer to Section 2.4.3.1):
TT%WAK(B18-B23) to wake up on every character
TT%ECO(B24) to cause echoing
.TTASI(B29) to translate both echo and output (ASCII data
mode)
(RESET)
Remaining fields of the mode word are not changed.
5. Releases all of the current process' PIDs.
6. Dequeues all of the current process' ENQ requests.
7. Clears the compatibility package's entry vector.
8. Releases all process handles that can be released. (Refer to
the RFRKH call description.)
Node: RFACS Previous: RESET Next: RFBSZ Up: Top
RFACS JSYS 161
Returns the ACs of the specified process.
ACCEPTS IN AC1: process handle
AC2: address of the beginning of a 20(octal) word table in
the caller's address space where the AC values of the
specified process are to be stored
RETURNS +1: always
The SFACS monitor call can be used to set the ACs for a specified
process.
Generates an illegal instruction interrupt on error conditions below.
RFACS ERROR MNEMONICS:
FRKHX1: invalid process handle
FRKHX2: illegal to manipulate a superior process
FRKHX3: invalid use of multiple process handle
FRKHX4: process is running
FRKHX8: illegal to manipulate an execute-only process
Node: RFBSZ Previous: RFACS Next: RFCOC Up: Top
RFBSZ JSYS 45
Returns the byte size for a specific opening of a file. (Refer to the
OPENF or SFBSZ call description for setting the byte size.)
(RFBSZ)
ACCEPTS IN AC1: JFN
RETURNS +1: failure, error code in AC1
+2: success, byte size right-justified in AC2
RFBSZ ERROR MNEMONICS:
DESX1: invalid source/destination designator
DESX2: terminal is not available to this job
DESX3: JFN is not assigned
DESX4: invalid use of terminal designator or string pointer
DESX5: file is not open
Node: RFCOC Previous: RFBSZ Next: RFMOD Up: Top
RFCOC JSYS 112
Returns the control character output control (CCOC) words for the
specified terminal. (Refer to Section 2.4.3.2.)
ACCEPTS IN AC1: file designator
RETURNS +1: always, with output control words in AC2 and AC3
The CCOC words consist of 2-bit bytes, each byte representing the
output control for one of the ASCII codes 0-37. If the given
designator is not associated with a terminal, the CCOC words are
returned in AC2 and AC3 with each 2-bit byte containing a value of 2
(send actual code and account format action).
The SFCOC monitor call can be used to set the CCOC words for a
specified terminal.
Generates an illegal instruction interrupt on error conditions below.
RFCOC ERROR MNEMONICS:
TTYX01: line is not active
Node: RFMOD Previous: RFCOC Next: RFORK Up: Top
RFMOD JSYS 107
Returns the JFN mode word associated with the specified file. (Refer
(RFMOD)
to Section 2.4.3.1.) The MTOPR monitor call should be used to return
the page length and width fields, especially when the fields have
values greater than 127. The RFMOD call returns these fields as 1
when their values are greater than 127.
ACCEPTS IN AC1: source designator
RETURNS +1: always, with mode word in AC2
If the designator is not a terminal, the RFMOD call returns in AC2 a
word in the following format
7B3+^D66B10+^D72B17+ 4 mode bits from the OPENF for the designator
This setting of the left half of AC2 indicates that the designator has
mechanical form feed, mechanical tab, lower case, page length of 66,
and page width of 72.
The SFMOD and STPAR monitor calls can be used to set various fields of
the JFN mode word.
RFMOD ERROR MNEMONICS:
TTYX01: line is not active
Node: RFORK Previous: RFMOD Next: RFPOS Up: Top
RFORK JSYS 155
Resumes one or more processes that had been directly frozen. This
monitor call does not resume a process that has been indirectly
frozen. (Refer to Section 2.6.2.1.) Also, the RFORK call cannot be
used to resume a process that is suspended because of a monitor call
intercept. (Refer to the UTFRK call.)
ACCEPTS IN AC1: process handle
RETURNS +1: always
The RFORK monitor call is a no-op if the referenced process(s) was not
directly frozen.
The FFORK monitor call can be used to freeze one or more processes.
Generates an illegal instruction interrupt on error conditions below.
RFORK ERROR MNEMONICS:
FRKHX1: invalid process handle
FRKHX2: illegal to manipulate a superior process
(RFORK)
FRKHX3: invalid use of multiple process handle
Node: RFPOS Previous: RFORK Next: RFPTR Up: Top
RFPOS JSYS 111
Returns the current position of the specified terminal's pointer.
(Refer to Section 2.4.3.4 for information on page lengths and widths
of terminals.)
ACCEPTS IN AC1: device designator
RETURNS +1: always, AC2 contains position within a page (i.e.,
line number) in the left half, and position within a
line (i.e., column number) in the right half
AC2 contains 0 if the designator is not associated with a terminal.
The SFPOS monitor call can be used to set the position of the
terminal's pointer.
Generates an illegal instruction interrupt on error conditions below.
RFPOS ERROR MNEMONICS:
DESX1: invalid source/destination designator
DESX3: JFN is not assigned
DESX5: file is not open
DEVX2: device already assigned to another job
TTYX01: line is not active
Node: RFPTR Previous: RFPOS Next: RFRKH Up: Top
RFPTR JSYS 43
Returns the current position of the specified file's pointer.
ACCEPTS IN AC1: JFN
RETURNS +1: failure, error code in AC1
+2: success, byte number in AC2
The SFPTR monitor call can be used to set the position of the file's
(RFPTR)
pointer.
RFPTR ERROR MNEMONICS:
DESX1: invalid source/destination designator
DESX2: terminal is not available to this job
DESX3: JFN is not assigned
DESX4: invalid use of terminal designator or string pointer
DESX5: file is not open
Node: RFRKH Previous: RFPTR Next: RFSTS Up: Top
RFRKH JSYS 165
Releases the specified handle of a process. A handle can be released
only if it describes either an existent process inferior to at least
one other process in the job or a process that has been killed via
KFORK (i.e., a nonexistent process).
ACCEPTS IN AC1: process handle, or -1 to release all relative handles
that can be released
RETURNS +1: failure, error code in AC1
+2: success
The process handles released when AC1 is -1 are the ones released on a
RESET or a KFORK monitor call.
RFRKH ERROR MNEMONICS:
FRKHX1: invalid process handle
FRKHX2: illegal to manipulate a superior process
FRKHX3: invalid use of multiple process handle
Node: RFSTS Previous: RFRKH Next: RFTAD Up: Top
RFSTS JSYS 156
Returns the status of the specified process.
SHORT FORM:
(RFSTS)
ACCEPTS IN AC1: 0,,process handle
RETURNS +1: always, with the status word in AC1 and the PC in AC2
Flags:
B0-B17 Unused, must be zero.
The process status word has the following format:
B0(RF%FRZ) The process is frozen. If this bit is off,
the process is not frozen.
B1-B17(RF%STS) The status code for the process. The
following values are possible:
Value Symbol Meaning
0 .RFRUN The process is runnable.
1 .RFIO The process is dismissed
for I/O.
2 .RFHLT The process is dismissed
by voluntary process
termination (HFORK or
HALTF) or was never
started.
3 .RFFPT The process is dismissed
by forced process
termination. Forced
termination occurs when
bit 17(SC%FRZ) of the
process capability word
is not set.
4 .RFWAT The process is dismissed
waiting for another
process to terminate.
5 .RFSLP The process is dismissed
for a specified amount of
time.
6 .RFTRP The process is dismissed
because it attempted to
execute a call on which
an intercept has been set
by its superior (via the
TFORK call).
7 .RFABK The process is dismissed
(RFSTS)
because it encountered an
instruction on which an
address break was set
(via the ADBRK call).
B18-B35(RF%SIC) The number of the software interrupt channel
that caused the forced process termination.
The RFSTS call returns with -1 (fullword) in AC3 if the specified
handle is assigned but refers to a deleted process. The call
generates an illegal instruction interrupt if the handle is
unassigned.
LONG FORM:
ACCEPTS IN AC1: flags,,process handle
AC2: address of status return block (used for long form
only)
RETURNS +1: always
Flags:
B0 RF%LNG Long form call
B1-B17 Unused, must be zero.
In the long form call, RF%LNG is set in AC1 and AC2 contains the
address of a status-return block. On the return, AC1 and AC2 are not
modified. The status-return block has the following format:
Word Symbol Meaning
0 .RFCNT Count of words returned in this block in the left
half, and count of maximum number of words to
return in right half (including this word). This
word is specified by the user.
1 .RFPSW Process status word. This word has the same
format as AC1 on a return from a short call.
2 .RFPFL Process PC flags. These are the same flags
returned in AC2 on a short call.
3 .RFPPC Process PC. This is only the PC, no flags are
returned in this word. This word is specified by
the user.
4 .RFSFL Status flag word.
Flags:
Bit Symbol Meaning
(RFSTS)
B0 RF%EXO Process is execute-only
Generates an illegal instruction interrupt on error conditions below.
RFSTS ERROR MNEMONICS:
DECRSV DEC reserved bits not zero
FRKHX1: invalid process handle
FRKHX2: illegal to manipulate a superior process
FRKHX3: invalid use of multiple process handle
Node: RFTAD Previous: RFSTS Next: RIN Up: Top
RFTAD JSYS 533
Returns the dates and times associated with the specified file.
ACCEPTS IN AC1: source designator
AC2: address of argument block
AC3: length of argument block
RETURNS +1: always, dates returned in the argument block
The format of the argument block is as follows:
Word Symbol Meaning
0 .RSWRT Internal date and time file was last written.
1 .RSCRV Internal date and time file was created.
2 .RSREF Internal date and time file was last referenced.
3 .RSCRE Internal system date and time of last write.
4 .RSTDT Tape-write date and time
5 .RSNET Online expiration date and time. May be a date
and time (in internal format) or an interval (in
days). Intervals are limited to half-word values.
6 .RSFET Offline expiration date and time. May be a date
and time (in internal format) or an interval (in
days). Intervals are limited to half-word values.
On a successful return, the values for the number of words specified
in AC3 are returned in the argument block. Words in the argument
(RFTAD)
block contain -1 if any one of the following occurs:
1. The corresponding date does not exist for the file.
2. The designator is not associated with a file.
3. The corresponding date is not currently assigned (i.e., the
argument block contains more than 4 words).
The SFTAD monitor call can be used to set the dates and times
associated with a specified file.
Generates an illegal instruction interrupt on error conditions below.
RFTAD ERROR MNEMONICS:
DESX1: invalid source/destination designator
DESX3: JFN is not assigned
DESX7: JFN cannot refer to output wildcard designators
Node: RIN Previous: RFTAD Next: RIR Up: Top
RIN JSYS 54
Inputs a byte nonsequentially (i.e., random byte input) from the
specified file. The size of the byte is that given in the OPENF call.
The RIN call can be used only when reading data from disk files.
ACCEPTS IN AC1: JFN
AC3: byte number within the file
RETURNS +1: always, with the byte right-justified in AC2
If the end of the file is reached, AC2 contains 0. The program can
process this end-of-file condition if an ERJMP or ERCAL is the next
instruction following the RIN call. Upon successful execution of the
call, the file's pointer is updated for subsequent I/O to the file.
The ROUT monitor call can be used to output a byte nonsequentially to
a specified file.
Can cause several software interrupts or process terminations on
certain file conditions. (Refer to bit OF%HER of the OPENF call
description.)
RIN ERROR MNEMONICS:
DESX1: invalid source/destination designator
(RIN)
DESX2: terminal is not available to this job
DESX3: JFN is not assigned
DESX4: invalid use of terminal designator or string pointer
DESX5: file is not open
IOX1: file is not open for reading
IOX3: illegal to change pointer for this opening of file
IOX4: end of file reached
IOX5: device or data error
Node: RIR Previous: RIN Next: RIRCM Up: Top
RIR JSYS 144
Returns the channel and priority level table addresses for the
specified process. (Refer to Section 2.5.3.) These table addresses
are set by the SIR monitor call. The RIR monitor call is useful when
several independent processes in one job want to share software
interrupt tables.
ACCEPTS IN AC1: process handle
RETURNS +1: always, with the priority level table address in the
left half of AC2, and the channel table address in
the right half of AC2
AC2 contains 0 if the SIR monitor call has not been executed by the
designated process.
Generates an illegal instruction interrupt on error conditions below.
RIR ERROR MNEMONICS:
FRKHX1: invalid process handle
FRKHX2: illegal to manipulate a superior process
FRKHX3: invalid use of multiple process handle
Node: RIRCM Previous: RIR Next: RLJFN Up: Top
RIRCM JSYS 143
Returns the mask for reserved software interrupt channels for the
specified process. A process is able to read its own or its
inferiors' channel masks.
ACCEPTS IN AC1: process handle
RETURNS +1: always, with the reserved channel mask for the
specified process in AC2
The SIRCM monitor call can be used to set the mask for reserved
software interrupt channels.
Generates an illegal instruction interrupt on error conditions below.
RIRCM ERROR MNEMONICS:
FRKHX1: invalid process handle
FRKHX2: illegal to manipulate a superior process
FRKHX3: invalid use of multiple process handle
Node: RLJFN Previous: RIRCM Next: RMAP Up: Top
RLJFN JSYS 23
Releases the specified JFNs. A JFN cannot be released unless it
either has never been opened or has already been closed. Also, a JFN
cannot be released if it is currently being assigned by a process,
unless that process is the same as the one executing the RLJFN and is
not at interrupt level. The GS%ASG bit returned from a GTSTS call for
the JFN indicates if the JFN is currently being assigned.
ACCEPTS IN AC1: JFN, or -1 to release all JFNs that do not specify
open files
RETURNS +1: failure, error code in AC1
+2: success
RLJFN ERROR MNEMONICS:
DESX1: invalid source/destination designator
DESX3: JFN is not assigned
DESX4: invalid use of terminal designator or string pointer
RJFNX1: file is not closed
RJFNX2: JFN is being used to accumulate filename
(RLJFN)
RJFNX3: JFN is not accessible by this process
OPNX1: file is already open
Node: RMAP Previous: RLJFN Next: RNAMF Up: Top
RMAP JSYS 61
Acquires a handle on a page in a process to determine the access
allowed for that page.
ACCEPTS IN AC1: process handle in the left half, and a page number
within the process in the right half
RETURNS +1: always, with a handle on the page in AC1, and access
information in AC2. The handle in AC1 is a
process/file designator in the left half and a page
number in the right half.
The access information returned in AC2 is as follows:
B2(RM%RD) read access allowed
B3(RM%WR) write access allowed
B4(RM%EX) execute access allowed
B5(RM%PEX) page exists
B9(RM%CPY) copy-on-write access
On rare conditions, if the specified page is shared with a file but no
JFN is associated with the file, AC1 contains -1 and AC2 contains 0.
Generates an illegal instruction interrupt on error conditions below.
RMAP ERROR MNEMONICS:
FRKHX1: invalid process handle
Node: RNAMF Previous: RMAP Next: ROUT Up: Top
RNAMF JSYS 35
Renames an existing file. The JFNs of both the existing file and the
new file specification must be closed.
ACCEPTS IN AC1: JFN of existing file to be renamed (i.e., source
file)
AC2: JFN of new file specification (i.e., destination file
specification)
(RNAMF)
RETURNS +1: failure, error code in AC1
+2: success, JFN in AC1 is released, and the JFN in AC2
is associated with the file under its new file
specification
If the JFN of the new file specification already refers to an existing
file, the existing file's contents are expunged.
When a file is renamed, many of the attributes of the existing file
are given to the renamed file. The settings of the following words in
the FDB (refer to Section 2.2.8) are copied from the existing file to
the renamed file.
Word .FBCTL (FB%LNG, FB%DIR, FB%NOD, FB%BAT, FB%FCF)
Word .FBADR
Word .FBCRE
Word .FBGEN (FB%DRN)
Word .FBBYV (FB%BSZ, FB%MOD, FB%PGC)
Word .FBSIZ
Word .FBCRV
Word .FBWRT
Word .FBREF
Word .FBCNT
Word .FBUSW
Note that the setting of FB%PRM (permanent file) does not get copied.
Thus, if a file with bit FB%PRM on is renamed, the renamed file has
FB%PRM off. The existing file is left in a deleted state with its
contents empty but its FDB existent.
Renaming a file with tape information (an archived or migrated file)
carries the tape information to the new file name. Renames which
would effectively destroy a file with archive status will fail.
RNAMF ERROR MNEMONICS:
DESX1: invalid source/destination designator
DESX3: JFN is not assigned
DESX4: invalid use of terminal designator or string pointer
DESX7: JFN cannot refer to output wildcard designators
OPNX1: file is already open
RNAMX1: files are not on same device
RNAMX2: destination file expunged
RNAMX3: write or owner access to destination file required
RNAMX4: quota exceeded in destination of rename
(RNAMF)
RNAMX5: destination file is not closed
RNAMX6: destination file has bad page table
RNAMX7: source file expunged
RNAMX8: write or owner access to source file required
RNAMX9: source file is nonexistent
RNMX10: source file is not closed
RNMX11: source file has bad page table
RNMX12: illegal to rename to self
RNMX13: insufficient system resources
Node: ROUT Previous: RNAMF Next: RPACS Up: Top
ROUT JSYS 55
Outputs a byte nonsequentially (i.e., random byte output) to the
specified file. The size of the byte is that given in the OPENF call
for the JFN. The ROUT call can be used only when writing data to disk
files.
ACCEPTS IN AC1: JFN
AC2: the byte to be output, right-justified
AC3: the byte number within the file
RETURNS +1: always
Upon successful execution of the call, the file's pointer is updated
for subsequent I/O to the file.
The RIN monitor call can be used to input a byte nonsequentially from
a specified file.
Can cause several software interrupts or process terminations on
certain file conditions. (Refer to bit OF%HER of the OPENF call
description.)
ROUT ERROR MNEMONICS:
DESX1: invalid source/destination designator
DESX2: terminal is not available to this job
DESX3: JFN is not assigned
(ROUT)
DESX4: invalid use of terminal designator or string pointer
DESX5: file is not open
IOX2: file is not opened for writing
IOX3: illegal to change pointer for this opening of file
IOX5: device or data error
IOX6: illegal to write beyond absolute end of file
IOX11: quota exceeded or disk full
Node: RPACS Previous: ROUT Next: RPCAP Up: Top
RPACS JSYS 57
Returns the accessibility of a page.
ACCEPTS IN AC1: process/file designator in the left half, and page
number within the file in the right half
RETURNS +1: always, with AC2 containing the following
information:
B2(PA%RD) read access allowed
B3(PA%WT) write access allowed
B4(PA%EX) execute access allowed
B5(PA%PEX) page exists
B6(PA%IND) indirect pointer
B9(PA%CPY) copy-on-write
B10(PA%PRV) private page
B20(P1%RD) read access allowed in first pointer
B21(P1%WT) write access allowed in first pointer
B22(P1%EX) execute access allowed in first pointer
B23(P1%PEX) page exists in first pointer
B27(P1%CPY) copy-on-write in first pointer
The bits in the left half are the result of tracing any indirect
pointer chains, and the bits in the right half contain information
about the first pointer (the one in the map directly indicated by the
argument) only. The left half and right half information will be
different only if an indirect pointer was encountered in the first
map. In this case, B6(PA%IND) is set, the left half access is less
than or equal to the right half access, and B9(PA%CPY) is set if it
was found set at any level. B5(PA%PEX) and B10(PA%PRV) always refer
to the last pointer (i.e., first non-indirect pointer) encountered.
The SPACS monitor call can be used to set the accessibility of a page.
Generates an illegal instruction interrupt on error conditions below.
(RPACS)
RPACS ERROR MNEMONICS:
DESX1: invalid source/destination designator
DESX3: JFN is not assigned
DESX4: invalid use of terminal designator or string pointer
DESX5: file is not open
DESX8: file is not on disk
FRKHX1: invalid process handle
FRKHX2: illegal to manipulate a superior process
FRKHX3: invalid use of multiple process handle
Node: RPCAP Previous: RPACS Next: RSCAN Up: Top
RPCAP JSYS 150
Returns the capabilities for the specified process. (Refer to Section
2.6.1 for the description of the capability word.)
ACCEPTS IN AC1: process handle
RETURNS +1: always, capabilities possible for this process in
AC2, and capabilities enabled for this process in AC3
The EPCAP monitor call can be used to enable the capabilities of a
process.
Generates an illegal instruction interrupt on error conditions below.
RPCAP ERROR MNEMONICS:
FRKHX1: invalid process handle
FRKHX3: invalid use of multiple process handle
Node: RSCAN Previous: RPCAP Next: RTFRK Up: Top
RSCAN JSYS 500
Places a text string in, or reads a text string from, the job's rescan
buffer (an area of storage in the Job Storage Block). This facility
allows a program to receive information that will be used as primary
input for another program before this other program reads input from
(RSCAN)
the terminal.
The RSCAN call has two steps: the acceptance and the use of the text
string. Each step has a different calling sequence. The first step
is to accept the text string to be used as input and to place this
string in the rescan buffer. The calling sequence for this step
specifies, in AC1, a pointer to the text string to be input. Note
that the string stored in the rescan buffer is terminated by a null
byte.
The second step is to cause the string to be available to the program
for reading via the BIN call. The calling sequence for this second
step specifies a function code of 0(.RSINI) in AC1 to indicate that
the last string entered at command level from the terminal is
available for reading. The program executing the RSCAN call can
determine when the data has been read by issuing a function code of
1(.RSCNT), which returns the number of characters remaining in the
buffer.
In other words, the first RSCAN call specifying a new text string
stores the string in the rescan buffer but does not cause it to be
read. A second RSCAN call must be given before the string can be
read. This second RSCAN causes the system to provide input from the
most recent string stored and can be given only once. After this
second RSCAN, nothing will be read from the rescan buffer until
another RSCAN call specifying a different text string is given. In
addition, the job receives input from the rescan buffer only if the
source for input in the BIN call is the JFN of the controlling
terminal. Therefore, if the source for input is other than the
controlling terminal, input will not come from the rescan buffer.
ACCEPTS IN AC1: byte pointer to a new text string, or 0 in the left
half and function code in the right half
RETURNS +1: failure, error code in AC1
+2: success
The defined functions are as follows:
Function Symbol Meaning
0 .RSINI Make the data in the buffer available as
input to any process in the current job that
is reading data from its controlling
terminal.
1 .RSCNT Return the number of characters remaining to
be read in the buffer. This function does
not cause data to be read; it is used to
determine when all the data has been read
after making the data available.
On a successful return, AC1 contains an updated byte pointer if a
pointer was given in the call. Otherwise, AC1 contains the number of
(RSCAN)
characters in the rescan buffer or 0 if there are no characters.
To clear the RSCAN buffer, supply a byte pointer (in AC1) to a null
string.
RSCAN ERROR MNEMONICS:
RSCNX2: invalid function code
Node: RTFRK Previous: RSCAN Next: RTIW Up: Top
RTFRK JSYS 322
Returns the handle of the process that was suspended because of a
monitor call intercept and the monitor call that the process was
attempting to execute. The superior process monitoring the intercepts
can receive only one interrupt at a time. Thus, the superior process
should execute the RTFRK call after receiving an interrupt to identify
the process that caused the interrupt.
The system maintains a queue of the processes that have been suspended
and that are waiting to interrupt the superior process monitoring the
intercepts. The RTFRK call advances the processes on the queue, and
if the call is not executed, subsequent interrupts are not generated.
See the description of the TFORK JSYS for more information on the
monitor call intercept facility.
RETURNS +1: always, with AC1 containing the handle of the process
that generated the interrupt, and AC2 containing the
monitor call instruction that caused the process to
be suspended. If no process is currently suspended
because of a monitor call intercept, AC1 and AC2
contain 0 on return.
Because the process handle returned in AC1 is a relative process
handle, it is possible that a process is currently suspended but that
all relative handles are in use. In this case, the caller should
release a relative process handle with the RFRKH call and then reissue
the RTFRK call.
Generates an illegal instruction interrupt on error conditions below.
RTFRK ERROR MNEMONICS:
FRKHX6: all relative process handles in use
(RTIW)
Node: RTIW Previous: RTFRK Next: RUNTM Up: Top
RTIW JSYS 173
Reads the terminal interrupt word (refer to Section 2.5.6) for the
specified process or the entire job and returns the terminal interrupt
word mask.
ACCEPTS IN AC1: B0(RT%DIM) return the mask for deferred terminal
interrupts
B18-B35 process handle, or -5 for entire job
(RT%PRH)
RETURNS +1: always, with the terminal interrupt mask in AC2, and
the deferred terminal interrupt mask in AC3. The
deferred interrupt mask is returned only if both
B0(RT%DIM) is on and the right half of AC1 indicates
a specific process.
The STIW monitor call can be used to set the terminal interrupt word
masks.
Generates an illegal instruction interrupt on error conditions below.
RTIW ERROR MNEMONICS:
FRKHX1: invalid process handle
FRKHX2: illegal to manipulate a superior process
FRKHX3: invalid use of multiple process handle
Node: RUNTM Previous: RTIW Next: RWM Up: Top
RUNTM JSYS 15
Returns the runtime of the specified process or of the entire job.
ACCEPTS IN AC1: process handle, or -5 for the entire job
RETURNS +1: always, with runtime (in milliseconds)
right-justified in AC1, a divisor to convert time to
seconds in AC2, and console time (in milliseconds) in
AC3. AC2 always contains 1000; thus, it is not
necessary to examine its contents.
Generates an illegal instruction interrupt on error conditions below.
RUNTM ERROR MNEMONICS:
FRKHX1: invalid process handle
(RUNTM)
RUNTX1: invalid process handle -3 or -4
Node: RWM Previous: RUNTM Next: RWSET Up: Top
RWM JSYS 135
Returns the word mask for the interrupts waiting on software channels
for the specified process.
ACCEPTS IN AC1: process handle
RETURNS +1: always, with
AC1 containing a 36-bit word with bit n on meaning an
interrupt on channel n is waiting.
AC2 containing the status of the interrupts in
progress. Bit n on in the left half means an
interrupt of priority level n occurring during
execution of user code is in progress. Bit 18+n
on in the right half means an interrupt of
priority level n occurring during execution of
monitor code is in progress.
Generates an illegal instruction interrupt on error conditions below.
RWM ERROR MNEMONICS:
FRKHX1: invalid process handle
FRKHX2: illegal to manipulate a superior process
FRKHX3: invalid use of multiple process handle
Node: RWSET Previous: RWM Next: SACTF Up: Top
RWSET JSYS 176
Releases the working set by removing all of the current process' pages
from its working set. The pages are moved to secondary storage and
are not preloaded the next time the process is swapped in. This
operation is invisible to the user.
RETURNS +1: always
(SACTF)
Node: SACTF Previous: RWSET Next: SAVE Up: Top
SACTF JSYS 62
Sets the account to which the specified file is to be charged.
ACCEPTS IN AC1: JFN
AC2: account number in bits 3-35 if bits 0-2 are 5.
Otherwise contains a byte pointer to an account
string in the address space of caller. If a null
byte is not seen, the string is terminated after 39
characters are processed.
RETURNS +1: failure, error code in AC1
+2: success, updated string pointer in AC2
If the account validation facility is enabled, the SACTF call verifies
the account given and returns an error if it is not valid for the
caller.
The GACTF monitor call can be used to obtain the account designator to
which a file is being charged.
SACTF ERROR MNEMONICS:
DESX1: invalid source/destination designator
DESX3: JFN is not assigned
DESX4: invalid use of terminal designator or string pointer
SACTX1: file is not on multiple-directory device
SACTX2: insufficient system resources (Job Storage Block full)
SACTX3: directory requires numeric account
SACTX4: write or owner access required
VACCX0: invalid account
VACCX1: account string exceeds 39 characters
VACCX2: account has expired
Node: SAVE Previous: SACTF Next: SCTTY Up: Top
SAVE JSYS 202
Saves, in nonsharable format, pages of a process into the specified
file. (Refer to Section 2.7.1 for the format of a nonsharable save
(SAVE)
file.) This file can then be copied into a given process with the GET
monitor call.
ACCEPTS IN AC1: process handle in the left half, and JFN in the right
half
AC2: one table entry, or 0 in the left half and pointer to
the table in the right half (see below)
RETURNS +1: always
The table has words in the format: length of the area to save in the
left half and address of the first word to save in the right half.
The table is terminated by a 0 word.
Nonexistent pages are not saved. The SAVE call also does not save the
accumulators. Thus, it is possible to save all assigned nonzero
memory with the one table entry 777760,,20 in AC2.
The SAVE call closes and releases the given JFN.
Can cause several software interrupts or process terminations on
certain file conditions.
Generates an illegal instruction interrupt on error conditions below.
SAVE ERROR MNEMONICS:
FRKHX1: invalid process handle
FRKHX2: illegal to manipulate a superior process
FRKHX3: invalid use of multiple process handle
FRKHX8: illegal to manipulate an execute-only process
SAVX1: illegal to save files on this device
IOX11: quota exceeded or disk full
All file errors can also occur.
Node: SCTTY Previous: SAVE Next: SCVEC Up: Top
SCTTY JSYS 324
Redefines the controlling terminal for the specified process and all
of its inferiors. The controlling terminal can be redefined at any
level in the job's process structure; inferior processes below this
level will use this terminal by default as their controlling terminal.
Therefore, the controlling terminal of a process is defined to be:
(SCTTY)
1. The one that has been explicitly defined for it via a SCTTY
call.
2. If no terminal has been explicitly defined for the process,
the terminal that has been explicitly defined for its closest
superior via a SCTTY call.
3. If no SCTTY call has been executed for a superior process,
the job's controlling terminal.
The effect of terminal interrupts on a process is dictated by the
controlling terminal for the process. This means that processes that
have enabled specific terminal characters will receive an interrupt
when those characters are typed on the controlling terminal. If no
SCTTY call has been executed for any process in the job, the
controlling terminal for all processes within the job is the job's
controlling terminal. (The job's controlling terminal is usually the
one used to log in and control the job.) In addition to being the
source of all terminal interrupts, the job's controlling terminal
serves as the primary I/O designators (refer to Section 1.1) for all
processes in the job, unless these designators have been changed for a
process.
When a SCTTY call is executed for a process within a job, the
controlling terminal and the source of terminal interrupts are changed
for that process and all of its inferiors. This group of processes
will receive interrupts only from the new controlling terminal and no
longer from the job's controlling terminal. These processes cannot
receive or change terminal interrupts from any other controlling
terminals. However, primary I/O will continue to be received from and
sent to the job's controlling terminal if the primary I/O designators
have not been changed. For most applications, the primary I/O
designators should be changed with the SPJFN call to correspond to the
new controlling terminal.
ACCEPTS IN AC1: function code in the left half, and process handle in
the right half
AC2: terminal designator
RETURNS +1: always
The available functions are as follows:
Code Symbol Meaning
0 .SCRET Return the designator of the given process'
controlling terminal. The designator is
returned in AC2.
1 .SCSET Change the given process' controlling
terminal to the terminal designated in AC2.
The terminal designator cannot refer to the
job's controlling terminal. This function
also changes the controlling terminal of all
(SCTTY)
processes inferior to the given process.
2 .SCRST Reset the given process' controlling terminal
to the job's controlling terminal. This
function also resets the controlling terminal
of all processes inferior to the given
process.
Functions .SCSET and .SCRST require the process to have the SC%SCT
capability (refer to Section 2.6.1) enabled in its capability word.
The SCTTY monitor call cannot be used to change the controlling
terminal for the current process or for any process superior to the
current process.
Generates an illegal instruction interrupt on error conditions below.
SCTTY ERROR MNEMONICS:
SCTX1: invalid function code
SCTX2: terminal already in use as controlling terminal
SCTX3: illegal to redefine the job's controlling terminal
SCTX4: SC%SCT capability required
FRKHX1: invalid process handle
FRKHX2: illegal to manipulate a superior process
DESX1: invalid source/destination designator
DEVX2: device already assigned to another job
Node: SCVEC Previous: SCTTY Next: SDSTS Up: Top
SCVEC JSYS 301
Sets the entry vector and the UUO locations for the compatibility
package.
ACCEPTS IN AC1: process handle
AC2: entry vector length in the left half, and entry
vector address in the right half
AC3: UUO location in the left half, and PC location in the
right half
RETURNS +1: always
(SCVEC)
The compatibility package's entry vector is as follows:
Word Symbol Meaning
0 .SVEAD Entry address for interpreting UUO's
1 .SVINE Initial entry for setup and first UUO
2 .SVGET Entry for GET share file routine (obsolete)
3 .SV40 Address to receive contents of location 40 on
the UUO call
4 .SVRPC Address to receive the return PC word on the
UUO call
5 .SVMAK Entry for MAKE share file routine (obsolete)
6 and 7 .SVCST Communication for handling CTRL/C, START
sequences between the compatibility package
and the TOPS-20 Command Language
The monitor transfers to the address specified in the right half of
AC2 on any monitor call whose operation code is 040-077 (i.e., monitor
UUO). This transfer occurs after the monitor stores the contents of
location 40 and the return PC in the locations specified by the left
half and right half of AC3, respectively. The entry vector is
retained but is not used by the monitor.
If AC2 is 0, the next UUO causes the compatibility package to be
merged into the caller's address space. In this case, the UUO and PC
locations are set from words 3 and 4, respectively, of the
compatibility package's entry vector.
If AC2 is -1, UUO simulation is disabled, and an occurrence of a UUO
is considered an illegal instruction. This action is useful when the
user is removing UUO's from a program.
The GCVEC monitor call can be used to obtain the entry vector for the
compatibility package.
SCVEC ERROR MNEMONICS:
FRKHX1: invalid process handle
FRKHX2: illegal to manipulate superior process
FRKHX3: invalid use of multiple process handle
FRKHX4: process is running
FRKHX8: illegal to manipulate an execute-only process
(SDSTS)
Node: SDSTS Previous: SCVEC Next: SDVEC Up: Top
SDSTS JSYS 146
Sets the status of a device. (Refer to Section 2.4 for the
descriptions of the status bits.) This call requires that the device
be opened.
ACCEPTS IN AC1: JFN
AC2: new status bits
RETURNS +1: always
The SDSTS call is a no-op for devices that do not have
device-dependent status bits.
The GDSTS monitor call can be used to obtain the status bits for a
particular device.
Generates an illegal instruction interrupt on error conditions below.
SDSTS ERROR MNEMONICS:
DESX1: invalid source/destination designator
DESX2: terminal is not available to this job
DESX3: JFN is not assigned
DESX4: invalid use of terminal designator or string pointer
DESX5: file is not open
DESX9: invalid operation for this device
Node: SDVEC Previous: SDSTS Next: SETER Up: Top
SDVEC JSYS 543
Sets the entry vector for the Record Management System (RMS).
RESTRICTIONS: requires RMS and BASIC software
ACCEPTS IN AC1: process handle
AC2: entry vector length in the left half, and entry
vector address in the right half
RETURNS +1: always
The Record Management System's entry vector is as follows:
(SDVEC)
Word Symbol Meaning
0 .SDEAD Entry address for the RMS calls
1 .SDINE Inital entry for the first RMS call
2 .SDVER Pointer to RMS version block
3 .SDDMS Address in which to store the RMS call
4 .SDRPC Address in which to store return PC word
The GDVEC monitor call can be used to obtain the entry vector for RMS.
Generates an illegal instruction interrupt on error conditions below.
SDVEC ERROR MNEMONICS:
ILINS5: RMS facility is not available
FRKHX8: illegal to manipulate an execute-only process
Node: SETER Previous: SDVEC Next: SETJB Up: Top
SETER JSYS 336
Sets the most recent error condition encountered by a process. This
error condition is stored in the process' Process Storage Block.
ACCEPTS IN AC1: process handle
AC2: error code that is to be set
RETURNS +1: always
The GETER monitor call can be used to obtain the most recent error
condition encountered by a process.
Generates an illegal instruction interrupt on error conditions below.
SETER ERROR MNEMONICS:
FRKHX1: invalid process handle
FRKHX2: illegal to manipulate a superior process
FRKHX3: process is running
FRKHX8: illegal to manipulate an execute-only process
Node: SETJB Previous: SETER Next: SETNM Up: Top
SETJB JSYS 541
(SETJB)
Sets job parameters for the specified job.
RESTRICTIONS: some functions require WHEEL or OPERATOR capability
enabled
ACCEPTS IN AC1: job number, or -1 for the current job
AC2: function code
AC3: value for function
RETURNS +1: always
The available functions, along with the legal values for these
functions, are described below.
Function Values Meaning
.SJDEN(0) Set default for magnetic tape density.
.SJDDN(0) System default density
.SJDN2(1) 200 bits/inch (8.1 rows/mm)
.SJDN5(2) 556 bits/inch (22.5 rows/mm)
.SJDN8(3) 800 bits/inch (32.2 rows/mm)
.SJD16(4) 1600 bits/inch (65.3 rows/mm)
.SJD62(5) 6250 bits/inch (246 rows/mm)
.SJPAR(1) Set default for magnetic tape parity.
.SJPRO(0) Odd parity
.SJPRE(1) Even parity
.SJDM(2) Set default for magnetic tape data mode.
.SJDDM(0) System default data mode
.SJDMC(1) Dump mode
.SJDM6(2) SIXBIT byte mode (7-track drives)
.SJDMA(3) ANSI ASCII mode (7 bits in 8-bit
bytes)
.SJDM8(4) Industry compatible mode
.SJDMH(5) High-density mode for TU70 and TU72
tape drives only (nine 8-bit bytes in
two words)
.SJRS(3) Set default for magnetic tape record
size in bytes. The maximum allowable
number of bytes depends on the hardware
data mode specified for the drive:
Maximum
Data Mode Number Bytes
default -
dump 8192
SIXBIT 49152
(SETJB)
ANSI ASCII 40960
industry compatible 32768
high density 8192
Note that the SETJB JSYS will not return
an error message if the above values are
exceeded. However, the OPENF or the
first data transfer (whichever is
performed first after function .SJDM)
will fail. Note that MTOPR function
.MOSRS can be used to override the
default record size specified with SETJB
function .SJDM.
.SJDFS(4) Set spooling mode.
.SJSPI(0) Immediate mode spooling
.SJSPD(1) Deferred mode spooling
.SJSRM(5) Set remark for current job session. AC3
contains a pointer to the session
remark, which is updated on a successful
return. The first 39 characters of the
session remark are placed in the job's
Job Storage Block.
.SJT20(6) Indicate if job is at EXEC level or
program level.
-1 job is at EXEC level
0 job is at program level
.SJDFR(7) Set job default retrieval. Allows a
user to override the system default for
OPENF.
.SJRFA(0) OPENF should always fail if file's
contents are not online. This is the
system default.
.SJRWA(1) OPENF should wait for the ARCF JSYS to
restore the contents of a file to
disk.
The SETJB monitor call requires the process to have WHEEL or OPERATOR
capability enabled to set parameters for a job other than the current
job.
The GETJI monitor call can be used to obtain the job parameters for a
specified job.
Generates an illegal instruction interrupt on error conditions below.
SETJB ERROR MNEMONICS:
SJBX1: invalid function
(SETJB)
SJBX2: invalid magnetic tape density
SJBX3: invalid magnetic tape data mode
SJBX4: invalid job number
SJBX5: job is not logged in
SJBX6: WHEEL or OPERATOR capability required
SJBX7: remark exceeds 39 characters
SJBX8: illegal to perform this function
Node: SETNM Previous: SETJB Next: SETSN Up: Top
SETNM JSYS 210
Sets the private name of the program being used by the current job.
This name is the one printed on SYSTAT listings.
ACCEPTS IN AC1: SIXBIT name used to identify program
RETURNS +1: always
The GETNM monitor call can be used to obtain the name of the program
currently being used.
Node: SETSN Previous: SETNM Next: SEVEC Up: Top
SETSN JSYS 506
Sets either the system name or the private name of the program being
used by the current job.
ACCEPTS IN AC1: SIXBIT name to be used as the system name. This name
is the one used for system statistics.
AC2: SIXBIT name to be used as the private name. This
name is the same as the one set with the SETNM call.
RETURNS +1: failure. (Currently, there are no failure returns
defined.)
+2: success
System program usage statistics are accumulated in the system tables
SNAMES, STIMES, and SPFLTS. (Refer to Section 2.3.2.) To make this
(SETSN)
possible, the SETSN call must be executed by each job whenever the
system program name is changed. In the usual case, the TOPS-20
Command Language handles this. The argument to SETSN should be: for
system programs (programs from SYS:) the filename, truncated to six
characters and converted to SIXBIT; for private programs, "(PRIV)."
Node: SEVEC Previous: SETSN Next: SFACS Up: Top
SEVEC JSYS 204
Sets the entry vector of the specified process. (Refer to Section
2.7.3.)
ACCEPTS IN AC1: process handle
AC2: entry vector word (length in the left half and
address of first word in the right half), or 0
RETURNS +1: always
The GEVEC monitor call can be used to obtain the process' entry
vector.
Generates an illegal instruction interrupt on error conditions below.
SEVEC ERROR MNEMONICS:
FRKHX1: invalid process handle
FRKHX2: illegal to manipulate superior process
FRKHX3: invalid use of multiple process handle
FRKHX8: illegal to manipulate an execute-only process
SEVEX1: entry vector is not less than 1000
Node: SFACS Previous: SEVEC Next: SFBSZ Up: Top
SFACS JSYS 160
Sets the ACs of the specified process.
ACCEPTS IN AC1: process handle
AC2: address of the beginning of a 20(octal) word table in
the caller's address space. This table contains the
values to be placed into the ACs of the specified
process.
(SFACS)
RETURNS +1: always
The specified process must not be running.
The RFACS call can be used to obtain the ACs for a specified process.
Generates an illegal instruction interrupt on error conditions below.
SFACS ERROR MNEMONICS:
FRKHX1: invalid process handle
FRKHX2: illegal to manipulate a superior process
FRKHX3: invalid use of multiple process handle
FRKHX4: process is running
FRKHX8: illegal to manipulate an execute-only process
Node: SFBSZ Previous: SFACS Next: SFCOC Up: Top
SFBSZ JSYS 46
Resets the byte size for a specific opening of a file. (Refer to the
OPENF and RFBSZ calls descriptions.)
ACCEPTS IN AC1: JFN
AC2: byte size, right-justified
RETURNS +1: failure, error code in AC1
+2: success
The SFBSZ monitor call recomputes the EOF limit and the file's pointer
based on the new byte size given.
SFBSZ ERROR MNEMONICS:
DESX1: invalid source/destination designator
DESX2: terminal is not available to this job
DESX3: JFN is not assigned
DESX4: invalid use of terminal designator or string pointer
DESX5: file is not open
DESX8: file is not on disk
(SFBSZ)
SFBSX1: illegal to change byte size for this opening of file
SFBX2: invalid byte size
Node: SFCOC Previous: SFBSZ Next: SFMOD Up: Top
SFCOC JSYS 113
Sets the control character output control (CCOC) for the specified
terminal. (Refer to Section 2.4.3.2 and the RFCOC call description.)
ACCEPTS IN AC1: file designator
AC2: control character output control word
AC3: control character output control word
RETURNS +1: always
The CCOC words consist of 2-bit bytes, each byte representing the
output control for one of the ASCII codes 0-37.
The SFCOC call is a no-op if the designator is not associated with a
terminal.
The RFCOC monitor call can be used to obtain the CCOC words for a
specified terminal.
SFCOC ERROR MNEMONICS:
DESX1: invalid source/destination designator
DESX2: terminal is not available to this job
DESX3: JFN is not assigned
DESX5: file is not open
DEVX2: device already assigned to another job
TTYX01: line is not active
Node: SFMOD Previous: SFCOC Next: SFORK Up: Top
SFMOD JSYS 110
Sets the program-related modes for the specified terminal. The modes
that can be set by this call are in the following bits of the JFN mode
(SFMOD)
word. (Refer to Section 2.4.3.1.)
B0(TT%OSP) output suppression control
B18-B23(TT%WAK) wakeup control
B24(TT%ECO) echoes on
B28-B29(TT%DAM) data mode
ACCEPTS IN AC1: file designator
AC2: JFN mode word
RETURNS +1: always
The SFMOD call is a no-op if the designator is not associated with a
terminal.
The STPAR monitor call can be used to set device-related modes of the
JFN mode word, and the RFMOD monitor call can be used to obtain the
JFN mode word.
SFMOD ERROR MNEMONICS:
DESX1: invalid source/destination designator
DESX3: JFN is not assigned
DESX5: file is not open
DEVX2: device already assigned to another job
TTYX01: line is not active
Node: SFORK Previous: SFMOD Next: SFPOS Up: Top
SFORK JSYS 157
Starts the specified process. If the process is frozen, the SFORK
call changes the PC but does not resume the process. The RFORK call
must be used to resume the process.
ACCEPTS IN AC1: process handle
AC2: the PC of the process being started. The PC contains
flags in the left half and the process start address
in the right half.
RETURNS +1: always
The SFRKV monitor call can be used to start a process at a given
position in its entry vector.
Generates an illegal instruction interrupt on error conditions below.
(SFORK)
SFORK ERROR MNEMONICS:
FRKHX1: invalid process handle
FRKHX2: illegal to manipulate a superior process
FRKHX3: invalid use of multiple process handle
FRKHX8: illegal to manipulate an execute-only process
Node: SFPOS Previous: SFORK Next: SFPTR Up: Top
SFPOS JSYS 526
Sets the position of the specified terminal's pointer. (Refer to
Section 2.4.3.4 for information on page lengths and widths of
terminals.)
ACCEPTS IN AC1: file designator
AC2: position within a page (i.e., line number) in the
left half, and position with a line (i.e., column
number) in the right half
RETURNS +1: always
The SFPOS monitor call is a no-op if the designator is not associated
with a terminal or is in any way illegal.
The RFPOS monitor call can be used to obtain the current position of
the terminal's pointer.
SFPOS ERROR MNEMONICS:
TTYX01: line is not active
Node: SFPTR Previous: SFPOS Next: SFRKV Up: Top
SFPTR JSYS 27
Sets the position of the specified file's pointer for subsequent I/O
to the file. The SFPTR call specifying a certain byte number,
followed by a BIN call, has the same effect as a RIN call specifying
the same byte number.
ACCEPTS IN AC1: JFN
AC2: byte number to which the pointer is to be set, or -1
to set the pointer to the current end of the file
(SFPTR)
RETURNS +1: failure, error code in AC1
+2: success
The RFPTR monitor call can be used to obtain the current position of
the file's pointer.
SFPTR ERROR MNEMONICS:
DESX1: invalid source/destination designator
DESX2: terminal is not available to this job
DESX3: JFN is not assigned
DESX4: invalid use of terminal designator or string pointer
DESX8: file is not on disk
SFPTX1: file is not open
SFPTX2: illegal to reset pointer for this file
SFPTX3: invalid byte number
Node: SFRKV Previous: SFPTR Next: SFTAD Up: Top
SFRKV JSYS 201
Starts the specified process using the given position in its entry
vector.
ACCEPTS IN AC1: process handle
AC2: position (0-n) in the entry vector to use for the
start address. Position 0 is always the primary
start address, and position 1 is the reenter address.
RETURNS +1: always
The process is started at the specified position in the entry vector,
not at the location pointed to by the entry vector word.
If the process has a TOPS-10 format entry vector (JRST in the left
half) (for example, it was obtained from a TOPS-10 format save file
via a GET call), then the left half of AC2 in the SFRKV call is the
start address offset. The only legal offsets are 0 and 1, and they
are only legal for entry vector position 0 (start address). Thus, for
TOPS-10 entry vectors, the left half of AC2 will be added to the
contents of .JBSA before using this value to start the program.
(SFRKV)
Entry vector position 0 means "use the contents of .JBSA=120 as the
start address," and position 1 means "use the contents of .JBREN=124
as the reenter address."
Note that it is illegal to use an entry vector position other than 0
or 1 for an execute-only process.
Generates an illegal instruction interrupt on error conditions below.
SFRKV ERROR MNEMONICS:
FRKHX1: invalid process handle
FRKHX2: illegal to manipulate a superior process
FRKHX3: invalid use of multiple process handle
FRKHX4: process is running
FRKHX8: illegal to manipulate an execute-only process
SFRVX1: invalid position in entry vector
Node: SFTAD Previous: SFRKV Next: SFUST Up: Top
SFTAD JSYS 534
Sets the dates and times associated with the specified file.
RESTRICTIONS: some functions require WHEEL or OPERATOR capability
enabled
ACCEPTS IN AC1: source designator
AC2: address of argument block
AC3: length of argument block
RETURNS +1: always
The format of the argument block is as follows:
Word Symbol Meaning
0 .RSWRT Internal date and time file was last written.
1 .RSCRV Internal date and time file was created.
2 .RSREF Internal date and time file was last referenced.
3 .RSCRE Internal date and time of last write.
(SFTAD)
4 .RSTDT Tape-write date and time
5 .RSNET Online expiration date and time. May be a date
and time (in internal format) or an interval (in
days). Intervals are limited to half-word values.
Date/times and intervals may not exceed
system/directory maximum.
6 .RSFET Offline expiration date and time. May be a date
and time (in internal format) or an interval (in
days). Intervals are limited to half-word values.
Date/times and intervals may not exceed
system/directory maximum.
The values in the argument block for the number of words (i.e.,
length) given in AC3 are set for the file. These values are checked
against the current date and time. Values greater than the current
date and time can be set only if the process has WHEEL or OPERATOR
capability enabled. In addition, the process must have WHEEL or
OPERATOR capability enabled to set the internal system date (.RSCRE).
If the designator represents a device for which dates are meaningless
(e.g., dates for terminals), or if any value given is -1, the given
value is ignored, and the current date, if pertinent, is not changed.
If the argument block has more than four words, given values for these
words are checked to be in valid format and then ignored, if valid.
To set dates for disk files, the process must have write or owner
access to the file.
The RFTAD monitor call can be used to obtain the dates and times
associated with a specified file.
Generates an illegal instruction interrupt on error conditions below.
SFTAD ERROR MNEMONICS:
DESX1: invalid source/destination designator
DESX3: JFN is not assigned
DESX7: JFN cannot refer to output wildcard designators
DATE6: system date and time not set
STADX2: invalid date or time
CFDBX2: illegal to change specified bits
OPNX25: device is write locked
CAPX1: WHEEL or OPERATOR capability required
(SFUST)
Node: SFUST Previous: SFTAD Next: SIBE Up: Top
SFUST JSYS 551
Sets the name of either the author of the file or the user who last
wrote to the file.
RESTRICTIONS: some functions require WHEEL or OPERATOR capability
enabled
ACCEPTS IN AC1: function code in the left half, and JFN of the file
in the right half
AC2: byte pointer to ASCIZ string containing the name
RETURNS +1: always, with an updated byte pointer in AC2
The defined functions are as follows:
Code Symbol Meaning
0 .SFAUT Set the name of the author of the file.
1 .SFLWR Set the name of the user who last wrote the
file.
The GFUST monitor call can be used to return the name of either the
author of the file or the user who last wrote the file.
The process must have WHEEL or OPERATOR capability enabled to set the
writer's name or to have write or owner access to the file to set the
author's name.
Generates an illegal instruction interrupt on error conditions below.
SFUST ERROR MNEMONICS:
SFUSX1: invalid function
SFUSX2: insufficient system resources
SFUSX4: file expunged
SFUSX5: write or owner access required
SFUSX6: no such user name
DESX1: invalid source/destination designator
DESX2: terminal is not available to this job
DESX3: JFN is not assigned
DESX4: invalid use of terminal designator or string pointer
DESX7: JFN cannot refer to output wildcard designators
(SFUST)
DESX8: file is not on disk
DESX10: structure is dismounted
CAPX1: WHEEL or OPERATOR capability required
Node: SIBE Previous: SFUST Next: SIN Up: Top
SIBE JSYS 102
Tests to see if the designated file input buffer is empty.
ACCEPTS IN AC1: source designator
RETURNS +1:
(one of the following is true:)
1. The device is an active terminal and the input
buffer is not empty. AC2 contains a count of the
bytes remaining in the input buffer.
2. The device is not a terminal, is open for read,
and the input buffer is not empty. AC2 contains
a count of the bytes remaining in the input
buffer.
+2:
(one of the following is true:)
1. The device is a non-active terminal. AC2
contains the error code.
2. The device is an active terminal and the input
buffer is empty. AC2 contains zero.
3. The device is not a terminal and is not open for
read. AC2 contains zero.
4. The device is not a terminal, is open for read,
and the input buffer is empty. AC2 contains
zero.
The SOBE monitor call can be used to determine if the output buffer is
empty, and the SOBF monitor call can be used to determine if the
output buffer is full.
(SIBE)
SIBE ERROR MNEMONICS:
DESX1: invalid source/destination designator
DESX3: JFN is not assigned
DESX5: file is not open
DEVX2: device already assigned to another job
TTYX01: line is not active
Node: SIN Previous: SIBE Next: SINM Up: Top
SIN JSYS 52
Reads a string from the specified source into the caller's address
space. The string can be a specified number of bytes or terminated
with a specified byte.
ACCEPTS IN AC1: source designator
AC2: byte pointer to string in the caller's address space
AC3: count of number of bytes in string, or 0
AC4: byte (right-justified) on which to terminate input
(optional)
RETURNS +1: always, updated byte pointers in AC2 and AC1, if
pertinent, and updated count in AC3, if pertinent
The contents of AC3 controls the number of bytes to read.
AC3=0 The string being read is terminated with a 0 byte.
AC3>0 A string of the specified number of bytes is to be read
or a string terminated with the byte given in AC4 is to
be read, whichever occurs first.
AC3<0 A string of minus the specified number of bytes is to
be read.
The contents of AC4 is ignored unless the contents of AC3 is a
positive number.
The input is terminated when the byte count becomes 0, the specified
terminating byte is reached, the end of the file is reached, or an
error occurs during the transfer. The program can process an
end-of-file condition if an ERJMP or ERCAL is the next instruction
following the SIN call.
(SIN)
After execution of the call, the file's pointer is updated for
subsequent I/O to the file. AC2 is updated to point to the last byte
read or, if AC3 contained 0, the last nonzero byte read. The count in
AC3 is updated toward zero by subtracting the number of bytes read
from the number of bytes requested to be read. If the input was
terminated by an end-of-file interrupt, AC1 through AC3 are updated
(where pertinent) to reflect the number of bytes transferred before
the end of the file was reached.
When the SIN call is used to read data from a magnetic tape, the size
of the records to read is specified with either the SET TAPE
RECORD-LENGTH command or the .MOSRS function of the MTOPR call. The
default record size is 1000(octal) words. The record size must be at
least as large as the largest record being read from the tape. The
SIN call will read across record boundaries on the tape until it reads
the number of bytes requested by the contents of AC3. The call gives
the data to the program with no indication of tape marks. Thus, if
the record is 1000 bytes and a SIN call is given requesting 2000
bytes, it would return two full records to the program.
When reading in reverse, the number of bytes requested (i.e., the
count in AC3) and the record size should equal the actual size of the
record on the tape. (Refer to Section 2.4.2.1 for more information
about magnetic tape I/O.)
Can cause several software interrupts or process terminations on
certain file conditions. (Refer to bit OF%HER of the OPENF call
description.)
Generates an illegal instruction interrupt on error conditions below.
SIN ERROR MNEMONICS:
DESX1: invalid source/destination designator
DESX2: terminal is not available to this job
DESX3: JFN is not assigned
DESX5: file is not open
IOX1: file is not open for reading
IOX4: end of file reached
IOX5: device or data error
IOX7: insufficient system resources (Job Storage Block full)
IOX8: monitor internal error
(SINM)
Node: SINM Previous: SIN Next: SINR Up: Top
SINM JSYS 571
Reads data from a block-mode terminal on a multiplexed JFN.
RESTRICTIONS: requires DECnet and ATS software
ACCEPTS IN AC1: source designator
AC2: address of argument block
RETURNS: +1 always
Argument block (user supplied):
Word Contents
0 flags,,number of words in block (including this word)
Flags:
Bit Symbol Meaning
B0 SI%TMG Truncate message if too long and give error
1 destination designator
2 0,,count of space for input
3 Reserved for user's identifier
4 Reserved for available count
Argument block (returned):
Word Contents
0 flags,,number of words in block (including this word)
Flags:
Bit Symbol Meaning
B1 SI%EOM end of terminal's message was encountered
1 updated destination designator
2 0,, updated count
3 user's identifier for terminal
4 count of available bytes
SINM ERROR MNEMONICS:
(SINM)
ARGX17: invalid argument block length
ARGX22: Invalid flags
ATSX06: JFN is not an ATS JFN
ATSX09: Table length too large
ATSX11: Byte count is too large
DESX4: invalid use of terminal designator or string pointer
IOX1: file is not open for reading
Node: SINR Previous: SINM Next: SIR Up: Top
SINR JSYS 531
Reads a record from the specified magnetic tape into the caller's
address space. The maximum size of the record to read is specified
with either the SET TAPE RECORD-LENGTH command or the .MOSRS function
of the MTOPR call. The default record size is 1000(octal) words.
Refer to Section 2.4.2.1 for more information about magnetic tape I/O.
ACCEPTS IN AC1: source designator
AC2: byte pointer to string in the caller's address space
AC3: count of number of bytes in string, or 0
AC4: byte (right-justified) on which to terminate input
(optional)
RETURNS +1: always, updated byte pointers in AC2 and AC1, if
pertinent, and updated count in AC3, if pertinent
The contents of AC3 and AC4 are interpreted in the same manner as they
are in the SIN monitor call.
Each SINR call returns one record to the caller. Thus, the caller can
read variable-length records by indicating in AC3 the number of bytes
to read. Upon execution of the call, AC3 is updated to reflect the
number of bytes read (i.e., the number of bytes in the record).
The number of bytes read depends on the number of bytes requested and
the record size. When using SINR, the program must set the record
size to a value greater than or equal to the actual size of the
largest record being read from the tape, or an error (IOX5) will be
returned. If the SINR call requests the same number of bytes as the
record size, the requested number is given to the caller. When the
record size equals the size of the actual record, all bytes in the
(SINR)
record are read, and AC3 contains 0 on return. When the record size
is larger than the actual record, all bytes of the record are read,
but AC3 contains the difference of the number requested and the number
read. If the SINR call requests fewer bytes than in the actual
record, the requested number is given to the caller, the remaining
bytes are discarded, and an error (IOX10) is returned. In all cases,
the next request for input begins reading at the first byte of the
next record on the tape because a SINR call never reads across record
boundaries.
When reading in reverse, the number of bytes requested (i.e., the
count in AC3) should be at least as large as the size of the record on
the tape. If the requested number is smaller, the remaining bytes in
the record are discarded from the beginning of the record.
The action taken on a SINR call differs from the action taken on a SIN
call. The SIN call reads across record boundaries to read all the
bytes in a file. The SINR call does not read across record boundaries
and will discard some bytes in the file if the requested number is
smaller than the actual record.
Can cause several software interrupts or process terminations on
certain file conditions. (Refer to bit OF%HER of the OPENF call
description.)
Generates an illegal instruction interrupt on error conditions below.
SINR ERROR MNEMONICS:
DESX1: invalid source/destination designator
DESX3: JFN is not assigned
DESX5: file is not open
IOX1: file is not open for reading
IOX4: end of file reached
IOX5: device or data error
IOX7: insufficient system resources (Job Storage Block full)
IOX8: monitor internal error
IOX10: record is longer than user requested
Node: SIR Previous: SINR Next: SIRCM Up: Top
SIR JSYS 125
Sets the channel and priority level table addresses for the specified
(SIR)
process. (Refer to Section 2.5.3.) These addresses are in the
specified process' address space.
ACCEPTS IN AC1: process handle
AC2: address of the priority level table in the left half,
and address of the channel table in the right half
RETURNS +1: always. The addresses in AC2 are stored in the
Process Storage Block.
If the contents of the tables are changed after execution of the SIR
call, the new contents will be used on the next interrupt.
The RIR monitor call can be used to obtain the table addresses for a
specified process.
Generates an illegal instruction interrupt on error conditions below.
SIR ERROR MNEMONICS:
SIRX1: table address is not greater than 20
FRKHX1: invalid process handle
FRKHX2: illegal to manipulate a superior process
FRKHX3: invalid use of multiple process handle
FRKHX8: illegal to manipulate an execute-only process
Node: SIRCM Previous: SIR Next: SIZEF Up: Top
SIRCM JSYS 142
Sets the mask for reserved software interrupt channels for the
specified inferior process. Conditions occurring on software channels
that have the corresponding mask bit set do not generate an interrupt
to the inferior process. Instead, the conditions cause the process to
terminate or freeze.
ACCEPTS IN AC1: inferior process handle
AC2: channel mask with bits set for reserved channels
AC3: deferred terminal interrupt word
RETURNS +1: always
The RIRCM monitor call can be used to obtain the mask for reserved
software interrupt channels. Although a process can read its own
channel mask, it cannot set its own; the SIRCM call can be given only
(SIRCM)
for inferior processes. This call provides a facility for a superior
process to monitor an inferior one (e.g., illegal instructions, memory
traps). However, if the inferior process contains an ERJMP or ERCAL
symbol after instructions that generate an interrupt on failure, the
ERJMP or ERCAL will prevent the generation of the interrupt. Thus,
the superior will not be able to monitor the inferior with the SIRCM
call.
Generates an illegal instruction interrupt on error conditions below.
SIRCM ERROR MNEMONICS:
FRKHX1: invalid process handle
FRKHX2: illegal to manipulate a superior process
FRKHX3: invalid use of multiple process handle
FRKHX8: illegal to manipulate an execute-only process
Node: SIZEF Previous: SIRCM Next: SJPRI Up: Top
SIZEF JSYS 36
Returns the length of an existing file.
ACCEPTS IN AC1: JFN
RETURNS +1: failure, error code in AC1
+2: success, byte count that referenced the last byte
written into the file in AC2, and number of pages
(512 words) in file in AC3. The byte count returned
depends on the byte size recorded in the FDB and not
on the byte size specified in the OPENF call.
For a file with holes, the byte count in AC2 does not reflect the
file's actual size.
The GTFDB monitor call can be used to obtain the byte size in which
the file was written.
SIZEF ERROR MNEMONICS:
DESX1: invalid source/destination designator
DESX2: terminal is not available to this job
DESX3: JFN is not assigned
DESX4: invalid use of terminal designator or string pointer
(SJPRI)
Node: SJPRI Previous: SIZEF Next: SKED% Up: Top
SJPRI JSYS 245
Sets the job priority by specifying the scheduler priority control
word for any job. The priority word is set for the top process and
for all existing inferior processes. Also, the priority word is
passed down to any forks that are created subsequent to the SJPRI
call.
RESTRICTIONS: requires WHEEL or OPERATOR capability enabled
ACCEPTS IN AC1: job number
AC2: priority word
RETURNS +1: always
The priority word contains a percentage of CPU resources in the left
half and 0 in the right half. By placing the desired percentage
(1-99) in the left half, a job can be guaranteed a certain percentage
of CPU time. A priority word of 0 indicates no special priority.
Generates an illegal instruction interrupt on error conditions below.
SJPRI ERROR MNEMONICS:
WHELX1: WHEEL or OPERATOR capability required
SJPRX1: job is not logged in
Node: SKED% Previous: SJPRI Next: SKPIR Up: Top
SKED% JSYS 577
Reads or modifies the monitor's data base relating to the class
scheduler.
RESTRICTIONS: Some functions require WHEEL or OPERATOR capability
enabled
ACCEPTS IN AC1: function code
AC2: address of argument block
RETURNS +1: always
The available functions are:
Code Symbol Function
1 .SKRBC Read bias control knob setting. Return a value
indicating the setting of the bias control knob.
(SKED%)
This setting determines whether the scheduler favors
compute-bound jobs or interactive jobs.
Argument block (returned):
Word Symbol Contents
0 .SACNT Count of words in argument block
(Including this word)
1 .SAKNB Bias control knob setting
2 .SKSBC Set bias control setting to the specified value.
Currently, the value may be an integer n such that
0< n <21. Requires WHEEL or OPERATOR capabilities
enabled.
Argument block (user supplied):
Word Symbol Contents
0 .SACNT Count of words in
argument block (Including this
word)
1 .SAKNB Bias control knob setting
3 .SKRCS Read class parameters. Returns the following
values:
1. Class of the job
2. Share of the processor allocated for this class.
The share is returned as a floating-point value
n, such that 0<= n <=1.
3. Use - amount of processor actually used by the
class. The use is returned as a floating-point
value n, such that 0<= n <=1.
4. 1 minute load average. The load average =
1/((1/J)*P) where J is the number of
CPU-runnable jobs in the class for the time
period and P is the fraction of CPU allocated to
the class. Thus 3 jobs running in a 50% class
would produce a load average of 6.
5. 5 minute load average
6. 15 minute load average
Argument block (returned):
(SKED%)
Word Symbol Contents
0 .SACNT Count of words in argument block
(Including this word)
1 .SACLS Class
2 .SASHR Share
3 .SAUSE Use
4 .SA1ML 1 minute load average
5 .SA5ML 5 minute load average
6 .SA15L 15 minute load average
4 .SKSCS Set class parameters (as described above).
Argument block (returned):
Word Symbol Contents
0 .SACNT Count of words in argument block
(Including this word)
1 .SACLS Class
2 .SASHR Share
5 .SKICS Start or stop the class scheduler. If the class
scheduler is being started, this function also
specifies the mode in which class-to-user
assignments are made and whether windfall is to be
allocated to the active classes or withheld from the
active classes.
Argument block (user specified):
Word Symbol Contents
0 .SACNT Count of words in argument block
(Including this word)
1 .SACTL Control flags
The flags are as follows:
Bit Symbol Meaning
B0 SK%ACT Class by
accounts
B1 SK%WDF Withhold
windfall
(SKED%)
B2 SK%STP Class
scheduler off
6 .SKSCJ Set the class of a job. This function takes a pair
of numbers, the job to set and the desired class.
If setting the class of the calling job, this
function is not privileged. If setting the class of
another job, it requires WHEEL or OPERATOR
capabilities enabled. In either case, the job must
be allowed to reside in the selected class. The
calling job may be designated by -1.
Argument block (user supplied)
Word Symbol Contents
0 .SACNT Count of words in argument block
(Including this word)
1 .SAJOB Job number
2 .SAJCL Class of job
7 .SKRJP Read class parameters for a job
Returns the following values:
1. Job's share of the processor. This value is
returned as a floating-point value n, such that
0<= n <=1.
2. Job's use of the processor. This value is
returned as a floating-point value n, such that
0<= n <=1.
Argument block (returned):
Word Symbol Contents
0 .SACNT Count of words in argument block
(including this word)
1 .SAJSH Job's share allotment
2 .SAJUS Job's current use
10 .SKBCR Read the class setting for batch jobs. A -1
indicates that there is no special class for batch
jobs.
Argument block (returned):
Word Symbol Contents
(SKED%)
0 .SACNT Count of words in argument block
(Including this word)
1 .SABCL Batch class
11 .SKBCS Set batch class. Specifies the class in which all
batch jobs will run. A -1 indicates no special
class for batch jobs. If this is set, it overrides
the valid classes for any user running a batch job.
Argument block (user supplied)
Word Symbol Contents
0 .SACNT Count of words in argument block
(Including this word)
1 .SABCL Batch class
12 .SKBBG Run all batch jobs in the "dregs" queue. The dregs
queue is a special queue whose processes are only
allowed to run when no normally scheduled processes
are available to run.
This function applies only if the class scheduler is
not being used. The argument is either 0 (clear) or
non-zero (set). A non-zero indicates that batch
jobs should be run in the "dregs" queue.
Argument block (returned):
Word Symbol Contents
0 .SACNT Count of words in argument block
(Including this word)
1 .SADRG Flag word.
0 = don't run in dregs queue
non-zero = run in dregs queue
13 .SKDDC Reserved
14 .SKRCV Read status.
Argument block (returned):
Word Symbol Contents
0 .SACNT Count of words in argument block
(Including this word)
1 .SACTL Flags
(SKED%)
The flags are as follows:
Bit Symbol Meaning
B0 SK%ACT Class by
accounts
B1 SK%WDF Withhold
windfall
B2 SK%STP Class
scheduler off
B3 SK%DRG Batch jobs are
being run in
dregs queue
SKED% ERROR MNEMONICS:
ARGX02: invalid function
CAPX1: WHEEL or OPERATOR capability required
Node: SKPIR Previous: SKED% Next: SMON Up: Top
SKPIR JSYS 127
Tests to see if the software interrupt system is enabled for the
specified process.
ACCEPTS IN AC1: process handle
RETURNS +1: failure, software interrupt system is off
+2: success, software interrupt system is on
The EIR monitor call is used to enable the software interrupt system,
and the DIR monitor call is used to disable the system.
Generates an illegal instruction interrupt on error conditions below.
SKPIR ERROR MNEMONICS:
FRKHX1: invalid process handle
FRKHX2: illegal to manipulate a superior process
FRKHX3: invalid use of multiple process handle
Node: SMON Previous: SKPIR Next: SNDIM Up: Top
SMON JSYS 6
Sets various monitor flags.
RESTRICTIONS: requires WHEEL or OPERATOR capability enabled. Some
functions are for ARPANET systems only.
ACCEPTS IN AC1: function code
AC2: new value for the indicated function
RETURNS +1: always
The codes for the functions are as follows:
Code Symbol Meaning
0 .SFFAC FACT file entries are allowed.
1 .SFCDE CHECKD found errors.
2 .SFCDR CHECKD is running.
3 .SFMST Manual start is in progress.
4 .SFRMT Remote LOGINs (dataset lines) are allowed.
5 .SFPTY PTY LOGINs are allowed.
6 .SFCTY CTY LOGINs are allowed.
7 .SFOPR Operator is in attendance.
10 .SFLCL Local LOGINs (hardwired lines) are allowed.
11 .SFBTE Bit table errors found on startup.
12 .SFCRD Users can change nonprivileged directory
parameters with the CRDIR monitor call.
13 .SFNVT ARPANET terminal LOGINs are allowed.
21 .SFUSG USAGE file entries are allowed.
22 .SFFLO Disk latency optimization using the RH20 backup
register is enabled. This feature is not to be
enabled unless the M8555 board of the RH20 is at
Revision Level D AND either of the KL10-C
processor is at Revision Level 10 or KL10-E
processor is at Revision Level 2.
23 .SFMTA If set, indicates that MOUNTR magtape allocation
is enabled.
35 .SFPNV Ethernet logins are allowed.
44 .SFNTN Turn ARPANET on.
45 .SFNDU Reinitialize ARPANET if it is down.
46 .SFNHI Initialize ARPANET host table.
47 .SFTMZ Set the local time zone to the value given in AC2.
50 .SFLHN Set the local ARPANET host number to the value
given in AC2.
51 .SFAVR Account validation will be running on this system.
52 .SFSTS Enable/disable status reporting.
53 .SFSOK Set GETOK% defaults
For this function, AC2 is set up as follows:
AC2: Flags,,GETOK% function code
Flags:
Bit Symbol Meaning
1B0 SF%EOK 0 = Disable access checking
1 = Enable access checking
1B1 SF%DOK 0 = Deny access if checking disabled
1 = Allow access if checking disabled
This function should be given by the
access-control program (supplied by the
installation) to turn on access checking for each
of the desired functions. It is also used to set
the default action for each function that is not
being checked by the access-control program.
Installation-defined function codes (400000+n) can
be enabled/disabled by using function code 400000.
If there is no access-control program, the default
action of the GETOK% JSYS will be to deny access
for any installation-defined function code.
See the description of the GETOK% JSYS for GETOK%
function codes.
54 .SFMCY Specifies the maximum offline expiration period
(tape recycle period) in days for ordinary files.
55 .SFRDU Read date update function
56 .SFACY Specifies the maximum offline expiration period
(tape recycle period) in days for archive files.
57 .SFRTW Sets/clears the no-retrieval-waits flag in the
monitor. When set, this specifies that those file
retrievals requests that are waiting for the
retrieval should fail rather than wait.
60 .SFTDF Set tape mount controls
Flags:
Bit Symbol Meaning
1B0 MT%UUT Set = unload unrecognizable
tapes
Clear = treat unrecognizable
tapes as unlabeled
61 .SFWSP Enable working set preloading
62 .SFDIR Initialize Pup directory.
63 .SFROU Set pup routing table entry. Call:
AC2: net number
AC3: Mask of bits to change.
AC4: new value for those bits
Returns +1 always with:
AC4: updated value of the routing table entry
A routing table entry has the following format:
1B0 Network inaccessible.
1B1 Broadcast packets allowed on net.
1B2-1B9 Net number to which packets should be routed.
Zero means route directly.
1B10-1B17 Host to which packets should be routed.
Zero means route directly.
1B18-1B35 Our address on this net.
Zero means not on this network.
64 .SFBUG Enable Pup bug logging.
65 .SFMEI Initialize a MEIS to begin reception of datagrams
intended for a host on the specified network.
Up to 256 host numbers be specified in successive
calls. Note that the network must be the same for
each call. The first call sets the routing table
entry for the network.
AC2: host number,,network number
AC3: MEIS serial number
Returns MTOX17 error if MEIS not found, SMONX2 if
bad host or network numbers given.
66 .SFETH Obsolete. Returns SMONX2 error always.
The TMON monitor call can be used to obtain the settings of the
various monitor flags.
Generates an illegal instruction interrupt on error conditions below.
GOKER3: Access control job already running
SMON ERROR MNEMONICS:
SMONX1: WHEEL or OPERATOR capability required
(SMON)
SMONX2: invalid SMON function
Node: SNDIM Previous: SMON Next: SNOOP Up: Top
SNDIM JSYS 750
Places a message in a previously assigned ARPANET special message
queue.
RESTRICTIONS: for ARPANET systems only.
ACCEPTS IN AC1: special queue handle
AC2: address of an extended message
RETURNS +1: failure, error code in AC1
+2: success, message queued
See BBN Report No. 1822 for the format of the message.
The RCVIM JSYS can be used to retrieve a message from the special
message queue.
SNDIM ERROR MNEMONICS:
SNDIX1: Invalid message size
SNDIX2: Insufficient system resources
(no buffers available)
SNDIX3: Illegal to specify NCP links 0-72
SNDIX4: Invalid header value for this queue
SNDIX5: IMP down
SQX1: Special network queue handle out of range
SQX2: Special network queue not assigned
Node: SNOOP Previous: SNDIM Next: SOBE Up: Top
SNOOP JSYS 516
Performs system performance analysis. The process can patch any
instruction in the monitor with this call. For example, the user
program can build a PC histogram by patching an instruction in the
(SNOOP)
code for the 1.0-millisecond clock.
The general procedure for using the SNOOP call is as follows:
1. The user program supplies a set of breakpoint routines that
are called by the monitor when control reaches one of the
patched instructions. These routines are mapped into the
monitor's address space into an area selected by the monitor.
Thus, the routines must have self-relocating code or must be
relocated by the user program to where they will be run,
based on the monitor address supplied by the monitor.
2. The user program defines a number of breakpoints, analogous
to DDT breakpoints.
3. The user program inserts all of the breakpoints
simultaneously.
4. The user program goes to "sleep" or waits for terminal input
while its breakpoint routines obtain control.
5. When the user program determines that the routines have
completed, it removes the breakpoints.
The user program breakpoint routines run in the monitor address space,
which means that the addresses of the code and the data are monitor
addresses. The user program must modify these addresses, based on the
values returned by the monitor, after the initialization but before
the "snooping." The breakpoint routines must preserve any
accumulators they use. Also, they must not cause a page fault if at
interrupt level or if a patch has been made in the page fault handler
or in the scheduler. Thus, the breakpoint routines should test for
swappable code being in memory before referencing it. If swappable
code needs to be referenced, the swappable monitor can be locked in
memory, if desired. When a patch is made to a routine called at many
interrupt levels, the program must specify a reentrant instruction to
be used for patching.
RESTRICTIONS: requires WHEEL or OPERATOR capability enabled
ACCEPTS IN AC1: function code
AC2: arguments for
AC3: the specified
AC4: function
RETURNS +1: failure, error code in AC1
+2: success
The following functions are available:
Function Symbol Meaning
(SNOOP)
Code
0 .SNPLC Declare and lock code into the monitor's
address space.
AC2: number of pages desired
AC3: page number in user space of start of
breakpoint routines to be locked
On return, the pages are locked contiguously
in the monitor's address space, and AC2
contains the monitor page numbers
corresponding to the given user page number.
1 .SNPLS Lock the swappable monitor. This function is
useful for analyzing swappable data at
interrupt level. On return, the entire
swappable monitor is locked.
2 .SNPDB Define a breakpoint
AC2: number of breakpoint
AC3: address in monitor space to be patched.
The patched instruction can be a skip
type instruction or a PUSHJ
instruction, and the patching is
similar to that in DDT. The routines
will receive control before the patched
instruction is executed.
AC4: instuction to be executed before the
patched instruction is executed. The
instruction can be:
JSR LOC where LOC is an address in
monitor space of the user's routine.
PUSHJ P,LOC when reentrant or recursive
code is patched.
AOS LOC to count frequency of monitor
execution points.
The error return is given if
breakpoints have already been inserted.
NOTE
Putting a SNOOP breakpoint on a
PUSHJ or other subroutine call
instruction (including JSYS,
(SNOOP)
MDISMS, etc) can cause
problems. If the process is
not in a NOSKED state already,
it can be rescheduled during
the breakpoint and the
breakpoint removed, whereupon
the subsequent return is made
to non-existent code.
3 .SNPIB Insert all breakpoints and start analyzing.
4 .SNPRB Remove all breakpoints and stop analyzing.
5 .SNPUL Unlock and release all storage, and undefine
and remove all breakpoints.
6 .SNPSY Obtain the address of a monitor symbol.
AC2: radix-50 symbol
AC3: radix-50 program name if a local
address is desired. If AC3 is 0, the
entire symbol table is searched.
On return, AC2 contains the monitor address
or value of the symbol.
7 .SNPAD Obtain a monitor symbol.
AC2: 36-bit value of symbol that is to be
looked up in the monitor's symbol
table.
AC3: radix-50 program name if a local value
is desired. If AC3 is 0, the entire
symbol table is searched.
On return, AC2 contains the first radix-50
monitor symbol that is closest to and has a
value less than the specified value, and AC3
contains the difference between the value of
the symbol returned and the specified value.
SNOOP ERROR MNEMONICS:
SNOPX1: WHEEL or OPERATOR capability required
SNOPX2: invalid function
SNOPX3: .SNPLC function must be first
SNOPX4: only one .SNPLC function allowed
(SNOOP)
SNOPX5: invalid page number
SNOPX6: invalid number of pages to lock
SNOPX7: illegal to define breakpoints after inserting them
SNOPX8: breakpoint is not set on instruction
SNOPX9: no more breakpoints allowed
SNOP10: breakpoints already inserted
SNOP11: breakpoints not inserted
SNOP12: invalid format for program name symbol
SNOP13: no such program name symbol
SNOP14: no such symbol
SNOP15: not enough free pages for snooping
SNOP16: multiply-defined symbol
SNOP17: breakpoint already defined
SNOP18: data page is not private or copy-or-write
Node: SOBE Previous: SNOOP Next: SOBF Up: Top
SOBE JSYS 103
Tests to see if the designated file output buffer is empty.
ACCEPTS IN AC1: destination designator
RETURNS +1: output buffer is not empty. Number of bytes
remaining in output buffer is returned in AC2.
+2: output buffer is empty; AC2 contains 0. This return
is given if an error occurs on the call; AC2
contains the appropriate error code.
If the designator is not associated with a terminal, the +2 return is
given.
The SIBE call can be used to determine if the input buffer is empty.
SOBE ERROR MNEMONICS:
DESX1: invalid source/destination designator
(SOBE)
DESX3: JFN is not assigned
DESX5: file is not open
DEVX2: device already assigned to another job
TTYX01: line is not active
Node: SOBF Previous: SOBE Next: SOUT Up: Top
SOBF JSYS 175
Tests to see if the designated file output buffer is full.
ACCEPTS IN AC1: file designator
RETURNS +1: output buffer is not full. This return is given if
an error occurs on the call; AC2 will contain 0.
+2: output buffer is full
On either return, the number of bytes remaining in the output buffer
is returned in AC2 (if no error occurred on the call).
SOBF ERROR MNEMONICS:
DESX1: invalid source/destination designator
DESX3: JFN is not assigned
DESX5: file is not open
DESX6: file must be a terminal
DEVX2: device already assigned to another job
TTYX01: line is not active
Node: SOUT Previous: SOBF Next: SOUTM Up: Top
SOUT JSYS 53
Writes a string from the caller's address space to the specified
destination. The string can be a specified number of bytes or
terminated with a specified byte.
ACCEPTS IN AC1: destination designator
AC2: byte pointer to string to be written
(SOUT)
AC3: count of the number of bytes in string, or 0
AC4: byte (right-justified) on which to terminate output
RETURNS +1: always, updated string pointers in AC2 and AC1, if
pertinent, and updated count in AC3, if pertinent
The contents of AC3 controls the number of bytes to write.
AC3=0 The string being written is terminated with a 0 byte.
AC3>0 A string of the specified number of bytes is to be
written or a string terminated with the byte given in
AC4 is to be written, whichever occurs first.
AC3<***0 A string of minus the specified number of bytes is to
be written.
The contents of AC4 is ignored unless the contents of AC3 is a
positive number.
The output is terminated when the byte count becomes 0, the specified
terminating byte is reached, or an error occurs during the transfer.
The specified terminating byte is copied to the destination.
After execution of the call, the file's pointer is updated for
subsequent I/O to the file. AC2 is updated to point to the last byte
written or, if AC3 contained 0, the last nonzero byte written. The
count in AC3 is updated toward zero by subtracting the number of bytes
written from the number of bytes requested to be written.
When the SOUT call is used to write data to a magnetic tape, it sends
a series of bytes packed into records of the specified record size.
The size of the records to write is specified with either the SET TAPE
RECORD-LENGTH command or the .MOSRS function of the MTOPR call. The
default record size is 1000(octal) words. Thus, if the record size is
1000 bytes, two SOUT calls, each writing 500 bytes, would write one
record. If during the writing, the end of tape mark was passed, an
error (IOX5) is given. However, the data has been successfully
written and the device status word has the MT%EOT bit set to indicate
this condition. Refer to Section 2.4.2.1 for more information about
magnetic tape I/O.
Can cause several software interrupts or process terminations on
certain file conditions. (Refer to bit OF%HER of the OPENF call
description.) Generates an illegal instruction interrupt on error
conditions below.
SOUT ERROR MNEMONICS:
DESX1: invalid source/destination designator
DESX2: terminal is not available to this job
DESX3: JFN is not assigned
(SOUT)
DESX5: file is not open
IOX2: file is not opened for writing
IOX5: device or data error
IOX6: illegal to write beyond absolute end of file
IOX7: insufficient system resources (Job Storage Block full)
IOX8: monitor internal error
IOX11: quota exceeded or disk full
Node: SOUTM Previous: SOUT Next: SOUTR Up: Top
SOUTM JSYS 572
Writes data to a block-mode terminal on a multiplexed JFN.
RESTRICTIONS: requires DECnet and ATS software
ACCEPTS IN AC1: destination designator
AC2: address of argument block
RETURNS: +1 always
Argument block (user supplied):
Word Contents
0 flags,,number of words in block (including this word)
Flags:
Bit Symbol Meaning
B0 SO%WMG write a message
1 source designator
2 0,,count of bytes
3 Host's identifier for terminal (HTN)
Argument block (returned):
Word Contents
0 flags,,number of words in block (including this word)
(SOUTM)
The flags returned are those supplied by the user.
1 updated source designator
2 0,, updated count
3 HTN (unchanged)
SOUTM ERROR MNEMONICS:
ARGX17: invalid argument block length
ARGX22: Invalid flags
ATSX06: JFN is not an ATS JFN
ATSX11: Byte count is too large
DESX4: invalid use of terminal designator or string pointer
IOX2: file is not open for writing
Node: SOUTR Previous: SOUTM Next: SPACS Up: Top
SOUTR JSYS 532
Writes a variable-length record from the caller's address space to the
specified magnetic tape. The maximum size of the record to write is
specified with either the SET TAPE RECORD-LENGTH command or the .MOSRS
function of the MTOPR call. The default record size is 1000(octal)
words. (Refer to Section 2.4.2.1 for more information about magnetic
tape I/O.)
ACCEPTS IN AC1: destination designator
AC2: byte pointer to string to be written
AC3: count of number of bytes in string, or 0
AC4: byte (right-justified) on which to terminate output
(optional)
RETURNS +1: always, updated byte pointers in AC2 and AC1, if
pertinent, and updated count in AC3, if pertinent
The contents of AC3 and AC4 are interpreted in the same manner as they
are in the SOUT monitor call.
Each SOUTR call writes at least one record. Thus, the caller can
write variable-length records by indicating in AC3 the number of bytes
to write in the record. If the SOUTR call requests more bytes to be
written than the maximum record size, then records of the maximum size
(SOUTR)
are written, plus another record containing the remaining bytes. If
the SOUTR call requests fewer bytes than the maximum, or a number
equal to the maximum, to be written, then records of the requested
size are written.
The SOUTR call differs from the SOUT call in that the SOUTR call
writes records on the tape upon execution of the call. The SOUT call
does not write a record on the tape until the number of bytes equal to
the record size have been written. Thus, if a record is being made
from several strings in the caller's address space, the SOUT call can
be used for the first strings and the SOUTR call for the last string.
Can cause several software interrupts or process terminations on
certain file conditions. (Refer to bit OF%HER of the OPENF call
description.)
Generates an illegal instruction interrupt on error conditions below.
SOUTR ERROR MNEMONICS:
DESX1: invalid source/destination designator
DESX3: JFN is not assigned
DESX5: file is not open
IOX2: file is not open for writing
IOX5: Device or data error
IOX6: illegal to write beyond absolute end of file
IOX7: insufficient system resources (Job Storage Block full)
IOX8: monitor internal error
IOX9: function legal for sequential write only
IOX11: quota exceeded or disk full
Node: SPACS Previous: SOUTR Next: SPJFN Up: Top
SPACS JSYS 60
Sets the accessibility of a page. This call affects the map word
directly indicated by the argument (i.e., no indirect pointers are
allowed).
ACCEPTS IN AC1: process/file designator in the left half, and page
number within the file in the right half
AC2: access information
(SPACS)
B2(PA%RD) permit read access
B3(PA%WT) permit write access
B4(PA%EX) permit execute access
B9(PA%CPY) copy-on-write
RETURNS +1: always
When used to modify a process page, the SPACS call does not allow any
greater access than can be obtained with the PMAP call (i.e., the
access specified on the OPENF call is applied to SPACS operations
involving file pointers).
The SPACS call does not allow bits to be set in a page that does not
already exist.
The RPACS monitor call can be used to obtain the accessibility of a
page.
Generates an illegal instruction interrupt on error conditions below.
SPACS ERROR MNEMONICS:
DESX1: invalid source/destination designator
DESX2: terminal is not available to this job
DESX3: JFN is not assigned
DESX4: invalid use of terminal designator or string pointer
DESX5: file is not open
DESX8: file is not on disk
SPACX1: invalid access requested
FRKHX1: invalid process handle
FRKHX2: illegal to manipulate a superior process
FRKHX3: invalid use of multiple process handle
FRKHX8: illegal to manipulate an execute-only process
Node: SPJFN Previous: SPACS Next: SPLFK Up: Top
SPJFN JSYS 207
Sets the primary JFNs of the specified process.
(SPJFN)
ACCEPTS IN AC1: process handle
AC2: primary input JFN in the left half, and primary
output JFN in the right half
RETURNS +1: always
The JFNs given cannot be either 100 or 101. These JFNs cause the
specified process to receive an error on any primary I/O operation.
The GPJFN monitor call can be used to obtain the primary JFNs.
Generates an illegal instruction interrupt on error conditions below.
SPJFN ERROR MNEMONICS:
FRKHX1: invalid process handle
FRKHX2: illegal to manipulate a superior process
FRKHX3: invalid use of multiple process handle
DESX3: JFN is not assigned
Node: SPLFK Previous: SPJFN Next: SPOOL Up: Top
SPLFK JSYS 314
Splices a process structure. The process that becomes the new
superior must be either the one executing the SPLFK monitor call or an
inferior of it. The new inferior process must be an inferior of the
executing process. The new superior process must not be the same
process as the new inferior process and must not be inferior to the
new inferior process. The new inferior process and all of its
inferiors will be frozen after execution of the SPLFK call.
ACCEPTS IN AC1: process handle of the new superior process
AC2: process handle of the new inferior process
RETURNS +1: failure, error code in AC1
+2: success, a process handle in AC1. This handle may be
used by the new superior process (in AC1) to refer to
its new inferior (in AC2).
SPLFK ERROR MNEMONICS:
SPLFX1: process is not inferior or equal to self
SPLFX2: process is not inferior to self
(SPLFK)
SPLFX3: new superior process is inferior to intended inferior
FRKHX1: invalid process handle
Node: SPOOL Previous: SPLFK Next: SPRIW Up: Top
SPOOL JSYS 517
Defines and initializes a device to be used for input spooling or sets
and reads the directory for a spooled device.
RESTRICTIONS: requires WHEEL or OPERATOR capability enabled
ACCEPTS IN AC1: length of argument block in the left half, and
function code in the right half
AC2: address of argument block
RETURNS +1: failure, error code in AC1
+2: success
The format of the argument block is different depending upon the
particular function desired. The available functions, along with
their argument block formats, are as follows:
Code Symbol Meaning
0 .SPLDI Define an input spooling device. The
argument block is:
Word Symbol Meaning
0 .SPLDV Device designator of input
device.
1 .SPLNA Pointer to name string
comprising the set of files to
be input.
2 .SPLGN Generation number of first
file. This number is
incremented by 1 each time the
spooled device is opened.
1 .SPLSD Set the directory of the spooled device. The
argument block is:
Word Symbol Meaning
0 .SPLDV Device designator of spooled
device.
(SPOOL)
1 .SPLDR Directory number. This number
is the logged-in directory
number of the user who opened
the spooled device.
This function requires the process to have
WHEEL or OPERATOR capability enabled.
2 .SPLRD Read the directory of the spooled device.
The argument block is:
Word Symbol Meaning
0 .SPLDV Designator of spooled device.
The directory number of the spooled device is
returned in word 1 of the argument block.
To read from a spooled input device, the user first defines the name
of the files comprising his set of spooled input files. The files
have names in the format:
STR:<SPOOLED-DIRECTORY>DEVICE-DIR#.NAME.1,2,3,...
The spooled directory is the directory to receive any spooled input
from the device. The .SPLSD function can be used by a privileged
process to set the directory. The default directory for all of the
spooled devices is <SPOOL>.
The device is the name of the device being used for spooled input. It
is the same name that was given on the original GTJFN call.
The directory number is the logged-in directory number of the user
that opened the spooled device.
The name is the name of the set of files to be input. The .SPLDI
function is used to define this name.
The generation number begins with the value specified by the .SPLDI
function and increments by one each time the spooled device is opened.
Thus, if the input spooler for the card reader (CDR) is reading files
for a user whose directory number is 23, then the files might have
names like
<SPOOL>CDR-23.BATCH-SEQUENCE-37.1,2,3,...
To initialize the spooled card reader, the user would then execute the
SPOOL call giving "BATCH-SEQUENCE-37" as the name of the set of files
to be input and "1" as the beginning generation number.
SPOOL ERROR MNEMONICS:
SPLX1: invalid function
(SPOOL)
SPLX2: argument block too small
SPLX3: invalid device designator
SPLX4: WHEEL or OPERATOR capability required
SPLX5: illegal to specify 0 as generation number for first file
SPLX6: no directory to write spooled files into
Node: SPRIW Previous: SPOOL Next: SSAVE Up: Top
SPRIW JSYS 243
Sets the priority word for the specified process.
RESTRICTIONS: requires WHEEL or OPERATOR capability enabled
ACCEPTS IN AC1: process handle
AC2: priority word
RETURNS +1: always
Refer to the SJPRI monitor call description for the format of the
priority word.
Generates an illegal instruction interrupt on error conditions below.
SPRIW ERROR MNEMONICS:
WHELX1: WHEEL or OPERATOR capability required
Node: SSAVE Previous: SPRIW Next: STAD Up: Top
SSAVE JSYS 203
Creates a sharable save format file for the given JFN by copying (not
sharing) pages from the given process. (Refer to Section 2.7.2 for
the format of a sharable save file.) This monitor call is used for
creating shared programs. It saves the file in groups of contiguous
pages for which the same access is desired. SSAVE closes and releases
the given JFN.
ACCEPTS IN AC1: process handle in the left half, and JFN in the right
half
AC2: one table entry, or 0 in the left half and the
address of the table in the right half (see below)
(SSAVE)
AC3: flag bits (not yet implemented; AC3 should be 0)
RETURNS +1: always
The table has a one-word entry for each group of pages and is
terminated by a zero word. Each word has the following format:
Bit Symbol Meaning
0-17 SS%NNP Negative of the number of pages in each group
(right-justified).
18 SS%CPY Allow copy-on-write access to the group of
pages.
19 SS%UCA Limit the access according to the current
access of the user's page. (See below.)
20 SS%RD Allow read access to the group of pages.
21 SS%WR Allow write access to the group of pages.
22 SS%EXE Allow execute access to the group of pages.
27-35 SS%FPN Number of the first page in the group
(right-justified).
When B19(SS%UCA) is set, the access to the group of pages is
determined by ANDing the access bits specified in the table word with
the corresponding access bits for the user's pages (as determined by
the RPACS call). This means that a given access is allowed only if
both the SSAVE call indicates it and the page currently has it. If
B19(SS%UCA) is not set, the access granted to the group of pages is
that indicated by the bits set in the table word.
The SSAVE call does not save the accumulators nor does it save
nonexistent pages.
The GET monitor call is used to map a file saved with the SSAVE call
back into a given process.
Can cause several software interrupts or process terminations on
certain file conditions.
Generates an illegal instruction interrupt on error conditions below.
SSAVE ERROR MNEMONICS:
FRKHX1: invalid process handle
FRKHX2: illegal to manipulate a superior process
FRKHX3: invalid use of multiple process handle
SSAVX1: illegal to save files on this device
(SSAVE)
SSAVX2: page count is not less than or equal to 1000
SSAVX3: insufficient system resources (Job Storage Block full)
SSAVX4: directory area of EXE file is more than one page
IOX11: quota exceeded or disk full
All I/O errors can also occur.
Node: STAD Previous: SSAVE Next: STCMP Up: Top
STAD JSYS 226
Sets the system's date. (Refer to Section 2.8.2.)
RESTRICTIONS: some functions require WHEEL or OPERATOR capability
enabled
ACCEPTS IN AC1: day in the left half, and fraction of the day in the
right half
RETURNS +1: failure, error code in AC1
+2: success
The STAD call requires the process to have WHEEL or OPERATOR
capability enabled if the system's date is already set.
The GTAD monitor call can be used to obtain the system's date.
STAD ERROR MNEMONICS:
STADX1: WHEEL or OPERATOR capability required
STADX2: invalid date or time
Node: STCMP Previous: STAD Next: STDEV Up: Top
STCMP JSYS 540
Compares two ASCIZ strings in the caller's address space. Note that
letters are always considered as upper case, regardless of their case
within the string. Therefore, the strings ABC and abc are considered
an exact match.
ACCEPTS IN AC1: byte pointer to test string
AC2: byte pointer to base string
(STCMP)
RETURNS +1: always, with
AC1 containing the compare code:
B0(SC%LSS) Test string is less than base string.
B1(SC%SUB) Test string is a subset of base
string.
B2(SC%GTR) Test string is greater than base
string.
AC2 containing base byte pointer, updated such that
an ILDB instruction will reference the first
nonmatching byte.
One string is considered less than another string if the ASCII value
of the first nonmatching character in the first string is less than
the ASCII value of the character in the same position in the second
string.
One string is considered a subset of another string if both of the
following conditions are true:
1. From left to right, the ASCII values of the characters in
corresponding positions are the same.
2. The test string is shorter than the base string.
Two strings are considered equal if the ASCII values of the characters
in corresponding positions are the same and the two strings are the
same size. In this case, the contents of AC1 is 0 on return.
Node: STDEV Previous: STCMP Next: STI Up: Top
STDEV JSYS 120
Translates the given device name string to its corresponding device
designator.
ACCEPTS IN AC1: byte pointer to the string to be translated
RETURNS +1: failure, error code in AC2
+2: success, device designator (refer to Section 2.4) in
AC2
The string to be translated is terminated by the first space (ASCII
code 40), null (ASCII code 0), or colon (ASCII code 72).
The DEVST monitor call can be used to translate a device designator to
its corresponding string.
(STDEV)
STDEV ERROR MNEMONICS:
STDVX1: no such device
Node: STI Previous: STDEV Next: STIW Up: Top
STI JSYS 114
Simulates terminal input.
RESTRICTIONS: some functions require WHEEL or OPERATOR capability
enabled
ACCEPTS IN AC1: file designator (only terminal designators are legal)
AC2: character to be input, right-justified
RETURNS +1: always
The character is taken from the accumulator and placed into the
specified terminal's input buffer whether or not the buffer is empty.
The DIBE call can be used to prevent sending an interrupt character
(e.g., CTRL/C) before the program has processed all of the previous
input.
The STI monitor call requires the process to have WHEEL or OPERATOR
capability enabled if the specified terminal either is not assigned or
opened by the process or is not accepting advice. (Refer to the TLINK
bit TT%AAD.)
The use of this monitor call is not recommended for pseudo-terminals
(PTYs). The recommended procedure for placing a character in the PTY
input buffer is to open the PTY for output with OPENF and then perform
output with the BOUT call.
Generates an illegal instruction interrupt on error conditions below.
STI ERROR MNEMONICS:
TTYX1: device is not a terminal
DESX2: terminal is not available to this job
DEVX2: device already assigned to another job
WHELX1: WHEEL or OPERATOR capability required
TTYX01: line is not active
(STIW)
Node: STIW Previous: STI Next: STO Up: Top
STIW JSYS 174
Sets the terminal interrupt word (refer to Section 2.5.6) for the
entire job or a specific process. This call declares that terminal
characters that usually cause an interrupt are instead to be passed to
the program as input. In actuality, the STIW call sets the interrupt
word mask, thus determining for each of the 36 terminal codes if the
job or process should receive an interrupt. The call's effect is
different, depending on whether the call is being executed for the
entire job or for a specific process in the job.
When the STIW call is executed for the entire job, codes corresponding
to the bits on in the mask will cause an interrupt if a process in the
job has enabled for an interrupt on that code. If multiple processes
have enabled that code, the lowest inferior process receives the
interrupt. (If several processes at the same lowest level have
enabled the code, the process that receives the interrupt is
determined by the system.) If no process has enabled that code, the
character corresponding to the code is passed to the program. Also,
characters are passed to the program when their corresponding bits are
off in the mask, even if a process has enabled that code. Initially,
all codes are declared to cause an interrupt (i.e., all bits in the
mask are on), and the program can execute the RTIW call to determine
the current status. Thus if the program wishes to read a terminal
interrupt character as input, it executes the STIW call for the entire
job and turns off the mask bit corresponding to the character.
When the STIW call is executed for a specific process in the job,
codes corresponding to the bits on in the mask are assumed to be
enabled by the specific process and cause an interrupt if in fact they
are enabled. If the process has not enabled for the code, the
character corresponding to the code is ignored, if it is typed.
Characters corresponding to the bits off in the mask are assumed not
to be enabled by the process. This use of the STIW call is implicitly
executed on an ATI call.
Each time the STIW call is executed for a specific process, the mask
is changed to reflect the bits changed in that process.
The STIW call sets or clears specific terminal codes for a particular
process without actually changing the channel assignment that each
code has. The ATI call is used to set the channel assignment, and the
DTI call is used to clear the assignment.
The STIW call requires the process to have SC%CTC capability enabled
to disable the code for CTRL/C interrupts or to give -5 as an
argument.
ACCEPTS IN AC1: B0(ST%DIM) set the deferred terminal interrupt mask
given in AC3
B18-B35 process handle, or -5 for entire job
(ST%PRH)
(STIW)
AC2: terminal interrupt word mask.
Bit n on means terminal code n is enabled.
AC3: deferred terminal interrupt word mask.
Bit n on means terminal code n is deferred.
RETURNS +1: always
The argument in AC3 is ignored, and no change is made to the deferred
interrupt word mask, if B0(ST%DIM) is not set or if the process handle
in AC1 does not indicate a specific process.
If multiple processes enable the same interrupt character and any one
of the processes declares it deferred, the character is deferred for
all the processes that enabled it.
The RTIW call can be used to obtain the terminal interrupt word masks.
STIW ERROR MNEMONICS:
FRKHX1: invalid process handle
FRKHX2: illegal to manipulate a superior process
FRKHX3: invalid use of multiple process handle
FRKHX8: illegal to manipulate an execute-only process
Node: STO Previous: STIW Next: STPAR Up: Top
STO JSYS 246
Simulates terminal output.
ACCEPTS IN AC1: file designator (only terminal designators are legal)
RETURNS +1: always, with the character right-justified in AC2
The character is taken from the specified terminal's output buffer and
placed in the accumulator. The process is blocked until the character
is in the accumulator.
The use of this monitor call is not recommended for pseudo-terminals
(PTYs). The recommended procedure for reading a character from the
PTY output buffer is to open the PTY for input with OPENF and then
perform input with the BIN call.
Generates an illegal instruction interrupt on error conditions below.
STO ERROR MNEMONICS:
TTYX1: device is not a terminal
(STO)
DESX2: terminal is not available to this job
DEVX2: device already assigned to another job
TTYX01: line is not active
Node: STPAR Previous: STO Next: STPPN Up: Top
STPAR JSYS 217
Sets the device-related modes for the specified terminal. The modes
that can be set by this call are in the following bits of the JFN mode
word. (Refer to Section 2.4.3.1.)
B1(TT%MFF) mechanical form feed
B2(TT%TAB) mechanical tab
B3(TT%LCA) lower case
B4-B10(TT%LEN) page length
B11-B17(TT%WID) page width
B25(TT%ECM) echo control
B30(TT%UOC) upper-case output control
B31(TT%LIC) lower-case input control
B32-B33(TT%DUM) duplex mode
B34(TT%PGM) output page mode
ACCEPTS IN AC1: file designator
AC2: JFN mode word
RETURNS +1: always
The STPAR monitor call is a no-op if the designator is not associated
with a terminal.
The SFMOD monitor call can be used to set program-related modes of the
JFN mode word, and the RFMOD monitor call can be used to obtain the
JFN mode word.
When the page length and width fields are set with the STPAR call,
they have a maximum range of 127. The MTOPR call can be used to set
these fields to values greater than 127. A nonzero value of less than
2 for the length or less than 10 for the width causes STPAR to leave
the field unchanged.
STPAR ERROR MNEMONICS:
DESX1: invalid source/destination designator
DESX3: JFN is not assigned
DESX5: file is not open
(STPAR)
DEVX2: device already assigned to another job
TTYX01: line is not active
Node: STPPN Previous: STPAR Next: STSTS Up: Top
STPPN JSYS 556
Translates the given directory name string to its corresponding
project-programmer number (a TOPS-10 36-bit directory designator).
This project-programmer number is associated with the structure
containing the given directory and is valid only for the current
mounting of that structure. The STPPN monitor call and the PPNST
monitor call should appear only in programs that require translations
of project-programmer numbers. Both calls are temporary calls and may
not be defined in future releases.
ACCEPTS IN AC1: byte pointer to ASCIZ string containing the directory
name, a JFN, or a 36-bit directory number
RETURNS +1: always, with the corresponding project-programmer
number in AC2
Generates an illegal instruction interrupt on error conditions below.
STPPN ERROR MNEMONICS:
STRX02: insufficient system resources
STRX03: no such directory name
STRX04: ambiguous directory specification
DESX1: invalid source/destination designator
DESX2: terminal is not available to this job
DESX3: JFN is not assigned
DESX4: invalid use of terminal designator or string pointer
DESX7: JFN cannot refer to output wildcard designators
DESX8: file is not on disk
DESX10: structure is dismounted
Node: STSTS Previous: STPPN Next: STTYP Up: Top
STSTS JSYS 25
(STSTS)
Sets the status of a file. (Refer to the GTSTS monitor call for the
format of the JFN status word.)
ACCEPTS IN AC1: JFN in the right half
AC2: status word
RETURNS +1: failure, error code in AC1
+2: success
The STSTS call is used to set the following bits of the status word:
B9(GS%ERR) file may be in error
B13(GS%HLT) I/O errors are terminating conditions
B17(GS%FRK) file, if opened, is opened for restricted access
STSTS ERROR MNEMONICS:
DESX1: invalid source/destination designator
DESX2: terminal is not available to this job
DESX3: JFN is not assigned
DESX4: invalid use of terminal designator or string pointer
Node: STTYP Previous: STSTS Next: SWJFN Up: Top
STTYP JSYS 302
Sets the terminal type number for the specified terminal line. (Refer
to Section 2.4.3.4.)
ACCEPTS IN AC1: file designator (only terminal designators are legal)
AC2: terminal type number
RETURNS +1: always
The STTYP call sets the bits in the JFN mode word for mechanical form
feed and tab, lower case, and page length and width according to their
settings in the device characteristics word. These bits can
subsequently be changed with the STPAR monitor call.
The GTTYP monitor call can be used to obtain the terminal type number
for a specified line.
Generates an illegal instruction interrupt on error conditions below.
STTYP ERROR MNEMONICS:
(STTYP)
DESX1: invalid source/destination designator
DESX2: terminal is not available to this job
STYPX1: invalid terminal type
TTYX01: line is not active
Node: SWJFN Previous: STTYP Next: SWTRP% Up: Top
SWJFN JSYS 47
Swaps the association of two JFNs by literally exchanging all
information cells of each JFN.
ACCEPTS IN AC1: JFN
AC2: another JFN
RETURNS +1: always
Generates an illegal instruction interrupt on error conditions below.
SWJFN ERROR MNEMONICS:
DESX1: invalid source/destination designator
DESX2: terminal is not available to this job
DESX3: JFN is not assigned
DESX4: invalid use of terminal designator or string pointer
SWJFX1: illegal to swap same JFN
Node: SWTRP% Previous: SWJFN Next: SYERR Up: Top
SWTRP% JSYS 573
Provides the ability for a process to intercept arithmetic overflow or
underflow conditions efficiently. Use of the SWTRP% JSYS to trap for
these conditions is more efficient in some applications than using the
software interrupt system.
SWTRP% also allows a process to declare its LUUO block for LUUO's
executed in a non-zero section.
ACCEPTS IN AC1: process handle
(SWTRP%)
AC2: function code
AC3: function dependent argument
RETURNS +1: always
The functions are as follows:
Code Symbol Function
0 .SWART Set arithmetic trap location
AC3 contains the address of the arithmetic trap
block (see LUUO block below). A zero in AC3 clears
the arithmetic trap.
1 .SWRAT Read arithmetic trap location
Returns the trap block address in AC3 (see LUUO
block below). A zero is returned if an arithmetic
trap is not set.
2 .SWLUT Set LUUO block address for non-zero sections
AC3 contains the 30-bit address. A zero in AC3
clears the location. See below for the format of
the LUUO block.
3 .SWRLT Read LUUO block address
Returns the 30-bit address in AC3. A zero is
returned if no block is currently in effect.
The LUUO block has the following format:
0 12 13 17 18 26 27 30 31 35
========================================
! PC flags ! 0 ! opcode ! AC ! 0 !
----------------------------------------
! 0 ! PC+1 !
----------------------------------------
! 0 ! E of the LUUO !
----------------------------------------
! 0 ! New PC !
========================================
0 5 6 35
An LUUO executed in section zero will store the opcode, AC, and
effective address of the LUUO in user location 40 and will execute the
instruction in user location 41. An LUUO executed in a non-zero
section makes use of the UPT (user page table). SWTRP% allows a
process to store the desired address in the UPT so that subsequent
LUUOs will produce the desired effect. The address in the UPT points
to the LUUO block shown above (and stored in user space). See the
Hardware Reference Manual for more information on LUUOs.
(SYERR)
Node: SYERR Previous: SWTRP% Next: SYSGT Up: Top
SYERR JSYS 527
Places information in the System Error (SYSERR) file. (Refer to the
TOPS-10 and TOPS-20 SYSERR Manual for information on the SYSERR file.)
RESTRICTIONS: requires WHEEL, OPERATOR, or MAINTENANCE capability
enabled
ACCEPTS IN AC1: address of argument block
AC2: length of argument block
RETURNS +1: always
The first four words of the header block must contain the standard
header information required by SYSERR. Generates an illegal
instruction interrupt on error conditions below.
SYERR ERROR MNEMONICS:
CAPX1: WHEEL or OPERATOR capability required
SYEX1: unreasonable SYSERR block size
SYEX2: no buffer space available for SYSERR
Node: SYSGT Previous: SYERR Next: TBADD Up: Top
SYSGT JSYS 16
Returns the table number, table length, and word 0 of the specified
system table. (Refer to Section 2.3.2 for the names of the system
tables.)
ACCEPTS IN AC1: SIXBIT table name
RETURNS +1: always, with
AC1 containing word 0 of the table
AC2 containing the negative of the number of words in
the table in the left half, and the table number
in the right half
The table number returned can be given to the GETAB monitor call as an
argument. However, because the MONSYM file includes symbol
definitions for the system tables, execution of the SYSGT call is not
required to obtain the table number for the GETAB call.
The contents of AC2 is 0 on return if the specified table was not
found.
(TBADD)
Node: TBADD Previous: SYSGT Next: TBDEL Up: Top
TBADD JSYS 536
Adds an entry to a standard-formatted command table used for user
program command recognition. (Refer to the TBLUK call description for
the format of the command table.)
ACCEPTS IN AC1: address of word 0 (header word) of table
AC2: entry to be added to table. (Refer to the TBLUK call
for the format of a table entry.)
RETURNS +1: always, address in the table of the new entry in AC1
Generates an illegal instruction interrupt on error conditions below.
TBADD ERROR MNEMONICS:
TADDX1: table is full
TADDX2: entry is already in table
Node: TBDEL Previous: TBADD Next: TBLUK Up: Top
TBDEL JSYS 535
Deletes an entry from a standard-formatted command table used for user
program command recognition. (Refer to the TBLUK call description for
the format of the command table.)
ACCEPTS IN AC1: address of word 0 (header word) of table
AC2: address of entry to be deleted. This address is
returned in AC1 on a TBLUK call.
RETURNS +1: always
Generates an illegal instruction interrupt on error conditions below.
TBDEL ERROR MNEMONICS:
TDELX1: table is empty
TDELX2: invalid table entry location
Node: TBLUK Previous: TBDEL Next: TEXTI Up: Top
TBLUK JSYS 537
(TBLUK)
Compares the specified string in the caller's address space with
strings indicated by a standard-formatted command table. This call is
used to implement a consistent style of user program command
recognition and abbreviation. The TBLUK call performs the function of
string lookup in the table, and the TBADD and TBDEL calls perform the
functions of adding to and deleting from the table.
The command table has the following format:
Word Meaning
0 Number of actual entries (not including this
entry) in the table in the left half, and maximum
number of entries in the table (not including this
entry) in the right half.
1 through n Address of an argument in the left half. This
argument contains optional bits pertinent to the
string followed by the ASCIZ string itself. The
right half of each table entry is available for
use by the user program.
The argument pointed to by the left half of each table entry can have
one of two formats, depending on the setting of bits 0-7 of the first
word of the argument. If bits 0-6 are all off and B7(CM%FW) is on,
the string actually begins in the next word of the argument, and the
remainder of this word contains data bits relevant to the string.
Table Entry
0 17 18 35
!=======================================================!
! ADR ! for use by program !
!=======================================================!
Argument
0 6 7 35
!=======================================================!
ADR ! 0 !1! data bits !
!-------------------------------------------------------!
! start of string !
!=======================================================!
The following bits are currently defined:
Bit Symbol Meaning
33 CM%ABR Consider this entry a valid abbreviation for
another entry in the table. The right half of
this table entry points to the entry for which
this is an abbreviation. The program can set this
(TBLUK)
bit to include entries in the table that are less
than the minimum unique abbreviation. For
example, this bit can be set to include the entry
ST (for START) in the table. If TBLUK is
performed for ST, it will be accepted as a valid
abbreviation even though there may be other entrys
beginning with ST.
34 CM%NOR Do not recognize this string, even if a string is
specified that matches exactly, and consider an
exact match as ambiguous. A program can set this
bit to include entries that are initial substrings
of other entries in the table to enforce a minimum
abbreviation of these other entries (e.g., to
include D and DE in the table to enforce DEL as
the minimum abbreviation of DELETE).
7 CM%FW Indicate that the remainder of this word is a flag
word containing data bits relevant to the string.
This bit must be on to distinguish a flag word
from a null string.
If any bit of bits 0-6 of the first word of the argument is on or if
B7(CM%FW) is off, the string begins in that word. In this case, the
data bits do not apply and are assumed to be off.
Table Entry
0 17 18 35
!=======================================================!
! ADR ! !
!=======================================================!
Argument
0 35
!=======================================================!
ADR ! start of string !
!=======================================================!
The addresses in the command table must be sorted according to the
alphabetical order of the strings. Note that letters are always
considered as uppercase. Therefore, the strings ABC and abc are
considered equivalent strings. This order results in efficient
searching of strings and determination of ambiguous strings.
The right half of each table entry can be used by the program for an
address to a dispatch table for the command or for a pointer to a
parameter block for additional information about the call. The
contents of this half word is ignored by the three table calls.
ACCEPTS IN AC1: address of word 0 (header word) of table
(TBLUK)
AC2: byte pointer to string in caller's address space that
is to be compared with the string in the table
RETURNS +1: always, with
AC1 containing the address of the entry that matches
the input string or address where the entry would
be if it were in the table.
AC2 containing recognition bits:
B0(TL%NOM) The input string does not match any
string in the table.
B1(TL%AMB) The input string matches more than one
string in the table (i.e., is
ambiguous).
B2(TL%ABR) The input string is a valid
abbreviation of a string in the table.
B3(TL%EXM) The input string is an exact match
with a string in the table.
AC3 containing a byte pointer to the remainder of the
string in the table if the match was on an
abbreviation (TL%ABR is on). This string can
then be output to complete the command.
Generates an illegal instruction interrupt on error conditions below.
TBLUK ERROR MNEMONICS:
TLUKX1: internal format of table is incorrect
Node: TEXTI Previous: TBLUK Next: TFORK Up: Top
TEXTI JSYS 524
Reads input from a terminal or a file into a string in the caller's
address space. Input is read until either a specified break character
is encountered or the byte count is exhausted, whichever occurs first.
When used for terminal input, the TEXTI call handles the following
editing functions:
1. Delete the last character input (DELETE).
2. Delete back to the last punctuation character (CTRL/W).
3. Delete back to the beginning of the current line or, if the
current line is empty, back to the beginning of the previous
line (CTRL/U).
(TEXTI)
4. Retype the current line from its beginning or, if current
line is empty, retype the previous line (CTRL/R).
5. Accept the next character without regard to its usual meaning
(CTRL/V).
ACCEPTS IN AC1: address of argument block
RETURNS +1: failure, error code in AC1
+2: success, updated pointer in word .RDDBP, appropriate
bits set in the left half of word .RDFLG, and updated
count in word .RDDBC of the argument block
The format of the argument block is as follows:
Word Symbol Meaning
0 .RDCWB Count of words following this word in the
argument block.
1 .RDFLG Flag bits. (See below.)
2 .RDIOJ Byte pointer to string, or input JFN in the
left half and output JFN in the right half
(if RD%JFN is on in the flag word .RDFLG).
The input JFN is where the input is being
read from, and the output JFN is where any
output generated from character editing is
placed.
3 .RDDBP Byte pointer to string in caller's address
space where input is to be placed
(destination string pointer).
4 .RDDBC Number of bytes available in the destination
string (field width).
5 .RDBFP Byte pointer to the beginning of the
destination buffer. This pointer indicates
the maximum limit to which the user can edit
back into the buffer with DELETE, CTRL/W, or
CTRL/U. This buffer is not separate (i.e.,
is not disjoint) from the destination string.
On the first TEXTI, this pointer is normally
the same as the destination byte pointer
(.RDDBP), but does not have to be the same.
If the count in word .RDCWB is 4, then the
byte pointer in word .RDDBP will be used as
the pointer to the destination buffer.
6 .RDRTY Byte pointer to the beginning of the
prompting-text (CTRL/R buffer). This text,
along with any text in the destination
buffer, is output if the user types CTRL/R on
(TEXTI)
his first line of input. If there is no
CTRL/R text or the user types CTRL/R on other
than the first line of input, only the text
in the destination buffer will be output.
6 .RDRTY The CTRL/R buffer is useful for retyping
(Cont.) characters that preceded the user's input,
such as a prompt from the program. The text
in this buffer cannot be edited by the user,
and if the user deletes back to the end of
this buffer, his action is treated as if he
has deleted all of his input. This buffer is
logically adjacent to the destination buffer,
but may be physically disjoint from it. When
the CTRL/R buffer is disjoint, it must be
terminated with a null byte.
7 .RDBRK Address of a 4-word block of break character
mask bits. If a bit is on in the mask, then
the corresponding character is considered a
break character. Any bits set in this mask
override break characters set in the flag
word.
The mask occupies the leftmost 32 bits of
each wthereby allowing a mask of 128 bits.
The rightmost 4 bits of each word are
ignored. The mapping isfrom left to right.
The ASCII character set maps into this
128-bit mask.
If this word is zero, there is no break
character set mask defined.
10 .RDBKL Byte pointer to the backup limit in the
destination buffer. This pointer indicates
the position in the destination buffer to
which the user can edit back without being
informed. This pointer is used to indicate
to the program that previously parsed text
has been edited and may need to be reparsed
by the program. The pointer can either be
equal to the start of the buffer pointer
(.RDBFP) or to the destination string pointer
(.RDDBP) or be between these two pointers.
Words 5 through 10 (.RDBFP through .RDBKL) in the argument block are
optional. A zero in any of the words means that no pointer has been
given.
The illustration below is a logical arrangement of the CTRL/R and
destination buffers, with the placement of the pointers when they are
given as not being equal. Remember that the CTRL/R buffer does not
have to be adjacent to the destination buffer and that two or more of
these pointers can be equal.
(TEXTI)
destination buffer
can be edited
!=======================================================!
! CTRL/R buffer; ! Cannot be ! ! !
! cannot be edited, ! edited ! ! !
! but will be output ! ! ! !
! on a CTRL/R ! ! ! !
!=======================================================!
CTRL/R Beginning of Backup Destination
buffer destination limit string
pointer buffer pointer pointer pointer
(.RDRTY) (.RDBFP) (.RDBKL) (.RDDBP)
The flag bits that can be set in word 1 (.RDFLG) of the argument block
are as follows:
Bit Symbol Meaning
0 RD%BRK Break on CTRL/Z or ESC.
1 RD%TOP TOPS-10 character set. Break on CTRL/G,
CTRL/K, CTRL/L, CTRL/Z, ESC, carriage return,
line feed.
2 RD%PUN Break on punctuation:
CTRL/A-CTRL/F ASCII codes 34-37
CTRL/H-CTRL/I ASCII codes 40-57
CTRL/N-CTRL/Q ASCII codes 72-100
CTRL/S-CTRL/T ASCII codes 133-140
CTRL/X-CTRL/Y ASCII codes 173-176
3 RD%BEL Break on end of line (carriage return and
line feed, or line feed only).
4 RD%CRF Suppress a carriage return and return a line
feed only.
5 RD%RND Return to user program if the user tries to
delete beyond the beginning of the
destination buffer. If this bit is not set,
the TEXTI call causes the terminal's bell to
ring and waits for more input.
6 RD%JFN JFNs have been given for the source
designator (word .RDIOJ of the argument
block). If this bit is not set, the source
designator is a pointer to a string.
(TEXTI)
7 RD%RIE Return to user program if the input buffer is
empty. If this bit is not set, the TEXTI
call waits for more input.
8 RD%BBG Not used
9 RD%BEG Causes TEXTI to return when the .RDBKL
pointer is reached and TEXTI is about to wait
for more input.
10 RD%RAI Convert lower-case input to upper-case input.
11 RD%SUI Suppress the CTRL/U indication if user types
a CTRL/U (i.e., do not print XXX and on
display terminals, do not delete the
characters from the screen).
On a successful return, the following bits can be set in word 1
(.RDFLG) of the argument block:
Bit Symbol Meaning
12 RD%BTM A break character terminated the input. If
this bit is not set, the input was terminated
because the byte count was exhausted.
13 RD%BFE Control was returned to the user program
because the user tried to delete beyond the
beginning of the destination buffer and
RD%RND was on in the call.
14 RD%BLR The backup limit for editing was reached.
TEXTI ERROR MNEMONICS:
ARGX17: invalid argument block length
RDTX1: invalid string pointer
IOX11: quota exceeded or disk full
Node: TFORK Previous: TEXTI Next: THIBR Up: Top
TFORK JSYS 321
Sets and removes monitor call intercepts (JSYS traps) for the given
inferior processes. When the process attempts to execute a call on
which an intercept has been set, it is suspended before it executes
the call. Control is passed to the closest superior process that is
monitoring the execution of that call. This control is passed by the
superior receiving an interrupt when the inferior process is
suspended. The superior process can then determine via the RTFRK call
which process caused the interrupt and how to handle the interrupt.
(TFORK)
It can use any of the process manipulation calls and then use the
UTFRK call to resume the suspended inferior process. Alternatively,
the superior can simply decide to resume the inferior and allow it to
execute the call. If this is the case, the next higher superior
process monitoring the intercepted call receives an interrupt, and
control is passed to that superior. If each superior process
monitoring the call decides to resume the suspended process without
changing its PC word, then the suspended process is allowed to execute
the monitor call as it normally would.
Note that an RFORK should be performed when an interrupt is received,
or the inferior process will not trap again.
ACCEPTS IN AC1: function code in the left half, and process handle in
the right half
AC2: software interrupt channel number in the left half,
and size (in bits) of the monitor call bit table
AC3: address of monitor call bit table
RETURN +1: always
The available functions are as follows:
Code Symbol Meaning
0 .TFSET Set monitor call intercepts for the given
process. The calls that will be intercepted
are indicated in the monitor call bit table.
The given process must be frozen. This
function is illegal for an execute-only
process.
1 .TFRAL Remove all monitor call intercepts for the
given process. The process must be frozen.
This function is illegal for an execute-only
process.
2 .TFRTP Remove for the given process only the monitor
call intercepts that are indicated in the
monitor call bit table. The given process
must be frozen. This function is illegal for
an execute-only process.
3 .TFSPS Set the given software channel as the channel
on which to generate the interrupt.
4 .TFRPS Return in the left half of AC2 the software
channel on which the interrupt will be
generated.
5 .TFTST Test if the caller is to be intercepted when
it attempts to execute monitor calls. On
successful return AC2 contains -1 if it is to
(TFORK)
be intercepted or 0 if it is not to be
intercepted.
6 .TFRES Remove intercepts set for all inferiors and
clear the software channel assigned to the
interrupt for monitor call intercepts.
7 .TFUUO Set monitor call intercepts for TOPS-10
monitor calls (UUOs) for the given process.
The process must be frozen. This function is
illegal for an execute-only process.
10 .TFSJU Set monitor call intercepts for both the
calls indicated in the monitor call bit table
and the TOPS-10 monitor calls. This function
is a combination of functions .TFSET and
.TFUUO. The given process must be frozen.
This function is illegal for an execute-only
process.
11 .TFRUU Remove monitor call intercepts for the
TOPS-10 monitor calls. The given process
must be frozen.
To set monitor call intercepts, the process must first issue .TFSPS
(code 3). Then, .TFSET (code 0), .TFUUO (code 7) or .TFSJU (code 10)
may be issued to set intercepts.
The process handle in the right half of AC1 must refer to an inferior
process or must be -4 to refer to all inferiors. When intercepts are
set for a given process, they also apply to all processes inferior to
the given process. When a process is created, it is subject to the
same intercepts as the process that created it.
If the software channel is given as 77, any intercepts bypass the
given process without causing either an interrupt to its superior or a
suspended state of the process.
The monitor call bit table contains a bit for each of the TOPS-20
monitor calls. When a bit in the table is on, the corresponding
monitor call is to be intercepted when the given process attempts to
execute it. If the bit is off, the corresponding monitor call will
not be intercepted. The size of the bit table is 1000(octal) words.
A process can remove only the intercepts it previously set; it cannot
remove intercepts that other processes set.
When the process being monitored attempts to execute the trapped-for
JSYS, the process and its inferiors enter a suspended state. This
suspended state differs from the normal "frozen" state of a process in
the following ways:
1. The inferiors of the monitored process are not frozen and
continue to operate.
(TFORK)
2. The monitored process is resumed with the UTFRK monitor call.
RFORK will not resume the process.
3. All interrupts for the monitored process are queued and are
acted upon immediately after the UTFRK monitor call.
After the suspension of the inferior process, the superior process may
do one of the following:
1. Allow the inferior process to resume execution of the
intercepted JSYS.
2. Make changes in the working environment of the suspended
process and allow that process to resume execution of the
intercepted JSYS.
3. Execute the intercepted JSYS on behalf of the suspended
process, and then allow the suspended process to continue.
The user interface to the monitor call intercept facility is provided
for by three JSYS's:
1. TFORK (trap)
2. RTFRK (read)
3. UTFRK (untrap)
Generates an illegal instruction interrupt on error conditions below.
TFORK ERROR MNEMONICS:
FRKHX8: illegal to manipulate an execute-only process
TFRKX1: invalid function code
TFRKX2: unassigned process handle or not immediate inferior
TFRKX3: process not frozen
Node: THIBR Previous: TFORK Next: TIME Up: Top
THIBR JSYS 770
(THIBR)
Blocks the current process for the specified elapsed time or until
awakened by a TWAKE monitor call, whichever occurs first. The THIBR
call is a temporary call and may not be defined in future releases.
ACCEPTS IN AC1: 0 in the left half, and maximum number of seconds to
block in the right half
RETURNS +1: never
+2: always, time expired or TWAKE call occurred
Node: TIME Previous: THIBR Next: TIMER Up: Top
TIME JSYS 14
Returns the amount of time since the system was last restarted.
RETURNS +1: always, time (in milliseconds) right-justified in
AC1, and divisor to convert the time to seconds in
AC2. AC2 always contains 1000; thus, it is not
necessary to examine its contents.
This is a monotonically increasing number (when the system is running)
independent of any resets of the time and date.
Node: TIMER Previous: TIME Next: TLINK Up: Top
TIMER JSYS 522
Controls the amount of time either a process within a job or the
entire job can run. An interrupt is generated when the time has
elapsed.
Only one process in the job is allowed to time the entire job. If the
job is already being timed, an error is given if another process
attempts to time the job. An error is also given if a process other
than the one that set the runtime limit of the job attempts to remove
that limit.
ACCEPTS IN AC1: process handle in the left half, and function code in
the right half.
AC2: time at which to generate an interrupt. Refer to the
individual function descriptions for the specific
arguments.
AC3: number of the software channel on which to generate
an interrupt when the time has expired.
(TIMER)
RETURNS +1: failure, error code in AC1
+2: success
The available functions are as follows:
Code Symbol Meaning
0 .TIMRT Specify the total runtime of the entire job.
This function allows one process within a job
to time the entire job. AC2 contains the
total runtime in milliseconds that the job
can accumulate before an interrupt is
generated on the specified channel. If AC2
contains 0, the limit on the runtime of the
job is removed. The process handle given in
AC1 must be .FHJOB (-5).
1 .TIMEL Specify an elapsed time after which an
interrupt is generated for the given process.
AC2 contains the number of milliseconds that
can now elapse before the interrupt is
generated on the specified channel.
2 .TIMDT Specify an exact time at which an interrupt
is generated for the given process. AC2
contains the internal format (refer to
section 2.8.2) of the date and time when the
interrupt is to be generated.
3 .TIMDD Remove any pending interrupt requests that
are to occur for the process at the given
time. AC2 contains the internal format
(refer to section 2.8.2) of the date and time
of the interrupt request to be removed.
4 .TIMBF Remove any pending interrupt requests that
are to occur for the process before the given
time. AC2 contains the internal format
(refer to section 2.8.2) of the date and
time.
5 .TIMAL Remove all pending requests for the given
process including the runtime limit on the
entire job.
The runtime limit for a job can be obtained via the GETJI monitor call
(contents of word .JIRT on return). If the job's time limit has been
exceeded, the value returned by the GETJI call will be zero.
TIMER ERROR MNEMONICS:
TIMX1: invalid function
TIMX2: invalid process handle
(TIMER)
TIMX3: time limit already set
TIMX4: illegal to clear time limit
TIMX5: invalid software interrupt channel number
TIMX6: time has already passed
TIMX7: no space available for a clock
TIMX8: user clock allocation exceeded
TIMX9: no such clock entry found
TIMX10: no system date and time
Node: TLINK Previous: TIMER Next: TMON Up: Top
TLINK JSYS 216
Controls terminal linking. (Refer to Section 2.4.3.5 for more
information.)
RESTRICTIONS: some functions require WHEEL or OPERATOR capability
enabled
ACCEPTS IN AC1: B0(TL%CRO) Clear link from remote to object
designator. If the remote designator is
-1, all remote links to the object
designator are cleared.
B1(TL%COR) Clear link from object to remote
designator. If the remote designator is
-1, links from the object to all remote
designators are cleared.
B2(TL%EOR) Establish link from object to remote
designator.
B3(TL%ERO) Establish link from remote to object
designator.
B4(TL%SAB) Examine B5(TL%ABS) to determine the
setting of the object designator's accept
link bit. If this bit is off, B5 is
ignored.
B5(TL%ABS) Set the object designator's accept link
bit. When B4(TL%SAB) is on, the object
designator is accepting links if TL%ABS
is on and refusing links if TL%ABS is
off.
(TLINK)
B6(TL%STA) Examine B7(TL%AAD) to determine the
setting of the object designator's accept
advice bit. If this bit is off, B7 is
ignored.
B7(TL%AAD) Set the object designator's accept advice
bit. When B6(TL%STA) is on, the object
designator is accepting advice if TL%AAD
is on and refusing advice if TL%ADD is
off.
B18-B35 Object designator
(TL%OBJ)
AC2: remote designator in the right half
RETURNS +1: failure, error code in AC1
+2: success
The object and remote designators must be either 4xxxxx or -1. An
object designator of -1 indicates the controlling terminal.
The following restrictions apply if the process does not have WHEEL
capability enabled:
1. The object designator must specify this terminal.
2. The object-to-remote link must be specified before or at the
same time as the remote-to-object link.
If the accept bit of the remote designator is not set, a link from the
object-to-remote designator causes the remote designator's bell to
ring. If the remote designator does not set the accept bit within 15
seconds, the TLINK call returns an error.
When terminals are linked together and a character is typed on one
terminal, the same ASCII character code is sent to all terminals in
the link. The character always appears in the output buffers of all
terminals regardless of the current mode of each individual terminal.
The character is sent according to the data mode and terminal type of
the terminal that originates the character. For example, if one
terminal originates a TAB and has mechanical tabs set, all terminals
in the link receive the ASCII code for a TAB in their output buffers.
TLINK ERROR MNEMONICS:
DESX1: invalid source/destination designator
TLNKX1: illegal to set remote to object before object to remote
TLNKX2: link was not received within 15 seconds
TLNKX3: links full
(TLINK)
TTYX01: line is not active
Node: TMON Previous: TLINK Next: TTMSG Up: Top
TMON JSYS 7
Tests various monitor flags.
ACCEPTS IN AC1: function code
RETURNS +1: always, value of the function in AC2
The codes for the functions are as follows:
Code Symbol Meaning
0 .SFFAC FACT file entries are allowed.
1 .SFCDE CHECKD found errors.
2 .SFCDR CHECKD is running.
3 .SFMST Manual start is in progress.
4 .SFRMT Remote LOGINs (dataset lines) are allowed.
5 .SFPTY PTY LOGINs are allowed.
6 .SFCTY CTY LOGINs are allowed.
7 .SFOPR Operator is in attendance.
10 .SFLCL Local LOGINs (hardwired lines) are allowed.
11 .SFBTE Bit table errors found on startup.
12 .SFCRD Users can change nonprivileged directory
parameters with the CRDIR monitor call.
13 .SFNVT ARPANET terminal LOGINs are allowed.
21 .SFUSG USAGE file entries are allowed.
22 .SFFLO Disk latency optimization using the RH20 backup
register is enabled. This feature is not to be
enabled unless the M8555 board of the RH20 is at
Revision Level D AND either of the KL10-C
processor is at Revision Level 10 or KL10-E
processor is at Revision Level 2.
23 .SFMTA If set, enables MOUNTR magtape allocation.
44 .SFNTN Turn ARPANET on.
45 .SFNDU Reinitialize ARPANET if it is down.
46 .SFNHI Initialize ARPANET host table.
47 .SFTMZ Set the local time zone to the value given in AC2.
50 .SFLHN Set the local ARPANET host number to the value
given in AC2.
51 .SFAVR Account validation will be running on this system.
52 .SFSTS Enable/disable status reporting.
53 .SFSOK Get GETOK% defaults
For this function, AC2 is set up as follows:
AC2: Flags,,GETOK% function code
Flags:
(TMON)
Bit Symbol Meaning
1B0 SF%EOK 0 = Disable access checking
1 = Enable access checking
1B1 SF%DOK 0 = Deny access if checking disabled
1 = Allow access if checking disabled
See the description of the GETOK% JSYS for GETOK%
function codes.
54 .SFMCY Specifies the maximum offline expiration period
(tape recycle period) for ordinary files.
55 .SFRDU Read date update function
56 .SFACY Specifies the maximum offline expiration period
for archive files (tape recycle period).
57 .SFRTW Sets/clears the no-retrieval-wait flag in the
monitor. When set, this specifies that those file
retrievals requests that are waiting for the
retrieval should fail rather than wait.
60 .SFTDF Set tape mount controls
Flags:
Bit Symbol Meaning
1B0 MT%UUT Set = unload unrecognizable
tapes
Clear = treat unrecognizable
tapes as unlabeled
61 .SFWSP Enable working set preloading
The SMON monitor call can be used to set various monitor flags.
Generates an illegal instruction interrupt on error conditions below.
TMON ERROR MNEMONICS:
TMONX1: invalid TMON function
Node: TTMSG Previous: TMON Next: TWAKE Up: Top
TTMSG JSYS 775
Sends a message to a specified terminal or to all terminals. The
TTMSG call is a temporary call and may not be defined in future
releases.
RESTRICTIONS: requires WHEEL or OPERATOR capability enabled
ACCEPTS IN AC1: 400000 + TTY number, or -1 to send to all terminals
(TTMSG)
AC2: byte pointer to string in caller's address space to
be sent
RETURNS +1: always
The TTMSG monitor call is a no-op if the specified terminal does not
exist.
Generates an illegal instruction interrupt on error conditions below.
TTMSG ERROR MNEMONICS:
GTDIX1: WHEEL or OPERATOR capability required
Node: TWAKE Previous: TTMSG Next: UFPGS Up: Top
TWAKE JSYS 771
Wakes the specified job that is blocked because of the execution of a
THIBR call. If more than one process in a job is blocked because of a
THIBR call, execution of the TWAKE call causes any one of the
processes to be awakened. The TWAKE call is a temporary call and may
not be defined in future releases.
ACCEPTS IN AC1: 0 in the left half, and number of job to be awakened
in the right half
RETURNS +1: failure, error code in AC1
+2: success, signal sent. Job will be awakened
immediately if blocked by a THIBR call or as soon as
next THIBR call is executed.
TWAKE ERROR MNEMONICS:
ATACX1: invalid job number
Node: UFPGS Previous: TWAKE Next: USAGE Up: Top
UFPGS JSYS 525
Updates pages of the specified file. This monitor call is used to
guarantee that a certain sequence of file pages has been written to
the disk before any other operation is performed.
ACCEPTS IN AC1: JFN in the left half, and file page number of the
first page to be updated in the right half
AC2: flags,,count of number of sequential pages to update
(UFPGS)
RETURNS +1: failure, error code in AC1
+2: success, all modified pages are written to disk. The
FDB is updated, if necessary.
FLAGS:
Bit Symbol Meaning
0 UF%NOW Allows performing a UFPGS call without
blocking. The JSYS will not block even if some
pages need to be written to disk.
If UF%NOW is not set, the UFPGS call causes the process to block until
all writes to the disk are completed.
UFPGS ERROR MNEMONICS:
UFPGX1: file is not opened for write
DESX3: JFN is not assigned
DESX4: invalid use of terminal designator or string pointer
DESX7: JFN cannot refer to output wildcard designators
DESX8: file is not on disk
LNGFX1: page table does not exist and file not open for write
IOX11: quota exceeded or disk full
Node: USAGE Previous: UFPGS Next: USRIO Up: Top
USAGE JSYS 564
Controls accounting on the system by writing entries into the system's
data file. All entries to the data file are made with this call.
Examples of the types of entries entered into the data file are disk
storage usage for regulated structures, input and output spooler
usage, job session entry, and date and time changes.
The file written by the USAGE call is an intermediate binary file,
which is converted by a system program to the final ASCII file. Each
entry in the final file is at least two records long, each record
being defined as a string of ASCII characters terminated with a
line-feed character. The first record contains system and file
information; its format is the same for all entries. Subsequent
records contain data pertaining to the entry; their formats vary
according to the particular data being entered.
(USAGE)
Refer to the TOPS-20 USAGE File Specification for additional
information on the system's data file.
RESTRICTIONS: requires WHEEL or OPERATOR capability enabled
ACCEPTS IN AC1: function code
AC2: function argument or address of record descriptor
block
RETURNS +1: always
The available functions are as follows:
Code Symbol Meaning
0 .USENT Write an entry into the system's data file.
AC2 contains the address of the record
descriptor block.
1 .USCLS Close the system's data file, which is named
PS:<ACCOUNTS>SYSTEM-DATA.BIN. No additional
entires are recorded into this file and a new
SYSTEM-DATA.BIN is opened for subsequent
entries.
2 .USCKP Perform a checkpoint of all jobs. Data
recorded during a checkpoint includes the
billable data (e.g., connect time, runtime)
accumulated during the job session, starting
from time of login or the last SET ACCOUNT
command and ending at the time this function is
performed. The data collected on a LOGIN or
SET ACCOUNT command is entered into the session
entry in the data file. The default checkpoint
time interval is 10 minutes.
3 .USLGI Initialize a checkpoint entry for the job.
This function is used internally by the LOGIN
monitor call. AC2 contains the address of the
record descriptor block.
4 .USLGO Terminate the checkpoint entry for the job and
write an entry into the system's data file,
which is named PS:<ACCOUNTS>SYSTEM-DATA.BIN.
This function is used internally by the LGOUT
monitor call. AC2 contains the address of the
record descriptor block.
5 .USSEN Terminate the current session, write an entry
into the system's data file, which is named
PS:<ACCOUNTS>SYSTEM-DATA.BIN, and initialize a
new checkpoint entry for the job. This
function is used internally by the CACCT
monitor call. AC2 contains the address of the
(USAGE)
record descriptor block.
6 .USCKI Set the checkpoint time interval. AC2 contains
the interval in minutes.
7 .USENA Install the accounting data base from the file
named PS:<SYSTEM>ACCOUNTS-TABLE.BIN into the
running monitor. The ACTGEN program uses this
file to generate the list of valid accounts.
10 .USCAS Change accounting shift. This function will
perform a "session end" function for every
active job.
11 .USSAS Set accounting shifts. Sets the times when
automatic accounting shift changes are to
occur. This function takes an argument in AC2
which is a pointer to a block of the following
format:
table header
table entry
...
table entry
The table header word contains the number of
actual entries in the table in the left
halfword, and the maximum number of table
entries in the right halfword. Each table
entry is one word in the following format:
B0-B6 US%DOW Days of the week
that this entry is in
effect. Bit n is set if
this entry is in effect
for day n (0 = Monday).
B7-B17 Unused, must be zero.
B18-B35 US%SSM Time of day that
automatic shift change
should occur. Time is
specified in seconds since
midnight.
The maximum number of table entries is 100
decimal.
12 .USRAS Read accounting shifts. This function returns
the times of the automatic shift changes that
were set with .USSAS. AC2 contains a pointer
to an argument block that is filled in by this
(USAGE)
function. The block has the same format as the
.USSAS block. Note that the right halfword
(maximum size) of the table header must be
specified by the user for .USRAS.
The record descriptor block, whose address is given in AC2, is set up
by the UITEM. macro defined in ACTSYM.MAC. (Refer to Appendix B for
the definition of the UITEM. macro.) The names of all data entries
are generated by this macro. The USENT. macro is used to generate the
header of the record descriptor block.
The format of the data generated by the USAGE call is a list of items
describing the entries in a single record. This list has a header
word containing the version numbers and the type of entry. The data
words follow this header with two words per data item. The list is
terminated with a zero word.
Generates an illegal instruction interrupt on error conditions below.
USAGE ERROR MNEMONICS:
CAPX1: WHEEL or OPERATOR capability required
ARGX02: invalid function
ARGX04: argument block too small
ARGX05: argument block too long
USGX01: invalid USAGE entry type code
USGX02: item not found in argument list
USGX03: default item not allowed
Node: USRIO Previous: USAGE Next: UTEST Up: Top
USRIO JSYS 310
Places the user program into user I/O mode in order that it can
execute various hardware I/O instructions. The user IOT flag is
turned on in the PC of the running process. The program can leave
user I/O mode by executing a JRSTF with a PC in which bit 6 is zero
(e.g., JRSTF @[.+1]).
RESTRICTIONS: requires WHEEL or OPERATOR capability enabled
RETURNS +1: failure, error code in AC1
+2: success, user IOT flag is set
USRIO ERROR MNEMONICS:
(USRIO)
CAPX2: WHEEL, OPERATOR, or MAINTENANCE capability required
Node: UTEST Previous: USRIO Next: UTFRK Up: Top
UTEST JSYS 563
Provides a method for determining if every instruction in a section of
monitor code actually gets executed. This monitor call does not test
the code by executing it; it confirms that a test of the code is
complete by reporting the instructions that were executed during the
test.
RESTRICTIONS: requires WHEEL or OPERATOR capability enabled
ACCEPTS IN AC1: function code in the left half, and length of the
argument block in the right half.
AC2: address of the argument block
RETURNS +1: always
The available functions are as follows:
Code Symbol Meaning
0 .UTSET Start testing of the code.
1 .UTCLR Stop testing of the code and update the bit map
in the argument block.
The format of the argument block is as follows:
Word Symbol Meaning
0 .UTADR Address of the beginning of the section of code
that is to be tested.
1 .UTLEN Length of section of code that is to be tested.
2 .UTMAP Start of bit map representing the instructions
that are to be tested in the section of code.
This map contains one bit for each location in
the section. If a bit is on in the map, the
corresponding instruction is to be tested. If
a bit is off, the corresponding instruction is
not to be tested.
Locations that contain data and that would
cause the section of code to execute improperly
if that data were changed should not be tested.
(UTEST)
Internally, a copy of the code being tested is placed in a buffer,
which is dynamically locked down during execution of the UTEST call.
The system allows any monitor routine to be tested as long as a
pushdown stack pointed to by AC P (i.e., 17) is set up whenever the
routine is called.
After execution of the .UTCLR function, the bit map is changed to
reflect the instructions that were actually executed during the test.
If a bit is on in the map, the corresponding instruction was executed.
If a bit is off, the corresponding instruction was not executed.
Generates an illegal instruction interrupt on error conditions below.
UTEST ERROR MNEMONICS:
CAPX3: WHEEL capability required
UTSTX1: invalid function code
UTSTX2: area of code too large to test
UTSTX3: UTEST facility in use by another process
Node: UTFRK Previous: UTEST Next: VACCT Up: Top
UTFRK JSYS 323
Resumes the execution of a process that is suspended because of a
monitor call intercept. The instruction where the execution resumes
depends on the current PC word of the suspended process. To prevent
the suspended process from executing the call, the superior process
handling the intercept can change the PC word (via the SFORK or SFRKV
call). Then on execution of the UTFRK call, the suspended process
continues at the new PC. If the superior process handling the
intercept does not change the PC word of the suspended process, then
the next superior process intercepting that particular monitor call
will receive the interrupt.
See the description of the TFORK JSYS for more information on the
monitor call intercept facility.
ACCEPTS IN AC1: flag bits in the left half, and process handle in the
right half
RETURNS +1: always
The flag bit that can be given in AC1 is as follows:
Bit Symbol Meaning
0 UT%TRP Cause a failure return for the suspended
process. This return will be either the
(UTFRK)
generation of an illegal instruction interrupt
or the processing of an ERJMP or ERCAL
instruction.
The UTFRK monitor call is a no-op if
1. The process handle given is valid but the process specified
is not suspended because of a monitor call intercept.
2. The caller is not one of the processes monitoring the
suspended process and therefore is not permitted to resume
the process.
Generates an illegal instruction interrupt on error conditions below.
UTFRK ERROR MNEMONICS:
FRKHX1: invalid process handle
FRKHX2: illegal to manipulate a superior process
FRKHX3: invalid use of multiple process handle
FRKHX8: illegal to manipulate an execute-only process
Node: VACCT Previous: UTFRK Next: WAIT Up: Top
VACCT JSYS 566
Verifies accounts by validating the supplied account for the given
user.
ACCEPTS IN AC1: 36-bit user number, 36-bit directory number, or -1 to
validate the account for the current user
AC2: byte pointer to account string
RETURNS +1: always, with updated pointer in AC2
Generates an illegal instruction interrupt on error conditions below.
VACCT ERROR MNEMONICS:
VACCX0: invalid account
VACCX1: account string exceeds 39 characters
VACCX2: account has expired
MONX02: insufficient system resources (JSB full)
(VACCT)
DELFX6: internal format of directory is incorrect
DIRX1: invalid directory number
DIRX3: internal format of directory is incorrect
STRX01: structure is not mounted
OPNX9: invalid simultaneous access
OPNX16: file has bad index block
Node: WAIT Previous: VACCT Next: WFORK Up: Top
WAIT JSYS 306
Dismisses the current process indefinitely and does not return. If
the software interrupt system is enabled for this process, the process
can be interrupted out of the wait state. Upon execution of a DEBRK
call, the process continues to wait until the next interrupt unless
the interrupt routine changes the PC word. In this case, the process
resumes execution at the new PC location. If the interrupt routine
changes the PC word, it must set the user-mode bit (bit 5) of the PC
word. (Refer to Section 2.5.7.)
Node: WFORK Previous: WAIT Next: WILD% Up: Top
WFORK JSYS 163
Causes the current process to wait for an inferior process to
terminate (voluntarily or involuntarily). A process is considered
terminated if its state is either .RFHLT or .RFFPT (refer to RFSTS
JSYS for a description of process status).
ACCEPTS IN AC1: inferior process handle, or -4 in the right half to
wait for any one of the inferior processes to
terminate
RETURNS +1: always, when one of the specified processes
terminates
This call returns immediately if the specified process or one of the
inferior processes has already terminated.
Generates an illegal instruction interrupt on error conditions below.
WFORK ERROR MNEMONICS:
FRKHX1: invalid process handle
(WFORK)
FRKHX2: illegal to manipulate a superior process
Node: WILD% Previous: WFORK Next: ZZZZZ Up: Top
WILD% JSYS 565
Compares a possibly wild string against a non-wild string to see if
the latter matches the wild string. For example, "AND" would be a
legal match for the wild string "A*D". Likewise "AND" would be a
legal match for the wild string "A%%". The WILD% JSYS will also
compare a possibly wild file specification against a non-wild file
specification.
ACCEPTS IN AC1: flags in the left half, function in the right half
AC2: wild argument - JFN or byte pointer to string
AC3: non-wild argument - JFN or byte pointer to string
RETURNS +1: always, with information returned in AC1.
This call returns immediately if the specified process or one of the
inferior processes has already terminated.
The available functions are as follows:
Code Symbol Meaning
0 .WLSTR Compare a non-wild string against a wild string
AC2 contains a byte pointer to a wild string
and AC3 contains a byte pointer to a non-wild
string. The comparison is made without regard
to what kind of characters the strings contain.
Thus tabs, spaces, and carriage returns for
example are treated just as letters are. The
following flag can be set in AC1:
B0(WL%LCD) Lower case characters are to be
treated as distinct from upper
case letters. If this bit is not
set, a lower case character will
match the corresponding upper
case character.
On return, AC1 contains the following flag:
B0(WL%NOM) If set, this bit indicates that
(WILD%)
the non-wild string did not match
the wild string.
B1(WL%ABR) If set, this bit indicates that
the non-wild string is not
matched, but is an abbreviation
of the wild string.
1 .WLJFN Compare a non-wild file specification against a
wild file specification. AC2 contains a JFN
with flags (as returned by GTJFN) for the wild
file and AC3 contains a JFN (without flags) for
the non-wild file. Flags are returned in AC1
that indicate which parts of the file
specification do not match. These flags are:
B1(WL%DEV) Device field does not match
B2(WL%DIR) Directory field does not match
B3(WL%NAM) Name field does not match
B4(WL%EXT) File type does not match
B5(WL%GEN) Generation number does not match
If a JFN is given that is a parse-only JFN, and one of the fields is
not specified (such as a file name), that field will be treated as a
null field. Thus the filenames PS:<DBELL>FOO.BAR.3 and
PS:<DBELL>.BAR.3 will not match.
If no flags are specified in AC1, then the WILD% JSYS will simply
compare the two strings character by character. This feature can be
used to compare two non-wild strings.
WILD% ERROR MNEMONICS:
DESX3: JFN is not assigned
RDTX1: Invalid string pointer
ARGX02: Invalid function
ARGX22: Invalid flags
Node: Ethernet
Ethernet Help
The following JSYS's have either been added or modified to
MONITR in order to run the Ethernet.
PUPI PUPO PUPNM
OPENF modifications
MTOPR functions
GETAB tables
ATNVT functions
SMON functions
In addition, some additional error codes for these JSYS's
are as follows:
PUPX1: Block size error
PUPX2: PUP address error
PUPX3: Operation not possible now
PUPX4: JFN open for sequential I/O only
PUPX5: Checksum incorrect
PUPX6: Destination address incorrect
PUPX7: Source address incorrect
PUPX8: JFN does not refer to device PUP:
PUPNX1: Name or address not found
PUPNX2: Recognition invoked and name ambiguous
PUPNX3: Syntax error or illegal address
PUPNX4: Inconsistent values in name expression
PUPNX5: Syntax error in attribute name string
PUPNX6: Attribute name not found
ATNX14: JFNs do not refer to same device
ATNX15: PUP JFNs do not refer to same local port
ATNX16: PUP JFNs do not refer to BSP port
ATNX17: PUP connection not open
For further documentation, read the individual JSYS calls.
Node: ZZZZZ Previous: WILD% Up: Top
ZZZZZ
APPENDIX A
MONSYM.MAC
1 ;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED
2 ; OR COPIED IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE.
3 ;
4 ;COPYRIGHT (C) 1976,1977,1978,1979 BY DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
5
7
8 ; TEMP DEFINITION OF XHLLI
9 501000 000000 OPDEF XHLLI [HLLI] ;NOT IN MACRO YET
10 ;MONITOR CALL DEFINITIONS AND ERROR MNEMONICS
11
12 ;NOTE:
13 ; THE FOLLOWING SYMBOLS ARE RESERVED:
14 ;
15 ; SYMBOL RESERVED BY
16 ; ====== ===========
17 ;
18 ; .OF??? RMS-20
19 ; .SZ??? RMS-20
20 ; .PS??? RMS-20
21
22 ;MACRO TO DEFINE JSYS NAMES
23
24 DEFINE DEFJS (NAME,NUM,SECT,XTRA,OLDNEW)<
25 OPDEF NAME'% [104B8+NUM]
26 IFDEF .PSECT,<
27 INTERN NAME'%
28 IFIDN <OLDNEW,OLD,
29 OPDEF NAME [104B8+NUM]
30 IFDEF .PSECT,<
31 INTERN NAME
32
33 SALL
34
35 000000 IFNDEF REL,<REL==0 ;ASSEMBLING REL IF NON-0
36 IFE REL,<
37 UNIVERSAL MONSYM
38 IFN REL,<
39 TITLE MONSYM
40 IFNDEF .PSECT,<
41 .DIRECT .XTABM
42
43
44 ;JSYS DEFINITIONS WITH 'NIM' AS A FOURTH ARGUMENT ARE CLASSIFIED
45 ; AS 'NOT IN MONITOR'
46
47 DEFINE JSLIST <
48
49 DEFJS LOGIN,1,MSEC1,,OLD
50 DEFJS CRJOB,2,MSEC1,,OLD
51 DEFJS LGOUT,3,MSEC1,,OLD
52 DEFJS CACCT,4,MSEC1,,OLD
53 DEFJS EFACT,5,MSEC1,,OLD
54 DEFJS SMON,6,MSEC1,,OLD
55 DEFJS TMON,7,MSEC1,,OLD
56 DEFJS GETAB,10,MSEC1,,OLD
57 DEFJS ERSTR,11,MSEC1,,OLD
58 DEFJS GETER,12,MSEC1,,OLD
59 DEFJS GJINF,13,MSEC1,,OLD
60 DEFJS TIME,14,MSEC1,,OLD
61 DEFJS RUNTM,15,MSEC1,,OLD
62 DEFJS SYSGT,16,MSEC1,,OLD
63 DEFJS GNJFN,17,MSEC1,,OLD
64 DEFJS GTJFN,20,MSEC1,,OLD
65 DEFJS OPENF,21,MSEC1,,OLD
66 DEFJS CLOSF,22,MSEC1,,OLD
67 DEFJS RLJFN,23,MSEC1,,OLD
68 DEFJS GTSTS,24,MSEC1,,OLD
69 DEFJS STSTS,25,MSEC1,,OLD
70 DEFJS DELF,26,MSEC1,,OLD
71 DEFJS SFPTR,27,MSEC1,,OLD
72 DEFJS JFNS,30,MSEC1,,OLD
73 DEFJS FFFFP,31,MSEC1,,OLD
74 DEFJS RDDIR,32,MSEC1,,OLD ;OBSOLETE,,OLD
75 DEFJS CPRTF,33,,NIM,OLD
76 DEFJS CLZFF,34,MSEC1,,OLD
77 DEFJS RNAMF,35,MSEC1,,OLD
78 DEFJS SIZEF,36,MSEC1,,OLD
79 DEFJS GACTF,37,MSEC1,,OLD
80 DEFJS STDIR,40,MSEC1,,OLD ;OBSOLETE,,OLD
81 DEFJS DIRST,41,MSEC1,,OLD
82 DEFJS BKJFN,42,MSEC1,,OLD
83 DEFJS RFPTR,43,MSEC1,,OLD
84 DEFJS CNDIR,44,,NIM,OLD
85 DEFJS RFBSZ,45,MSEC1,,OLD
86 DEFJS SFBSZ,46,MSEC1,,OLD
87 DEFJS SWJFN,47,MSEC1,,OLD
88 DEFJS BIN,50,MSEC1,,OLD
89 DEFJS BOUT,51,MSEC1,,OLD
90 DEFJS SIN,52,MSEC1,,OLD
91 DEFJS SOUT,53,MSEC1,,OLD
92 DEFJS RIN,54,MSEC1,,OLD
93 DEFJS ROUT,55,MSEC1,,OLD
94 DEFJS PMAP,56,MSEC1,,OLD
95 DEFJS RPACS,57,MSEC1,,OLD
96 DEFJS SPACS,60,MSEC1,,OLD
97 DEFJS RMAP,61,MSEC1,,OLD
98 DEFJS SACTF,62,MSEC1,,OLD
99 DEFJS GTFDB,63,MSEC1,,OLD
100 DEFJS CHFDB,64,MSEC1,,OLD
101 DEFJS DUMPI,65,MSEC1,,OLD
102 DEFJS DUMPO,66,MSEC1,,OLD
103 DEFJS DELDF,67,MSEC1,,OLD
104 DEFJS ASND,70,MSEC1,,OLD
105 DEFJS RELD,71,MSEC1,,OLD
106 DEFJS CSYNO,72,,NIM,OLD
107 DEFJS PBIN,73,MSEC1,,OLD
108 DEFJS PBOUT,74,MSEC1,,OLD
109 DEFJS PSIN,75,,NIM,OLD
110 DEFJS PSOUT,76,MSEC1,,OLD
111 DEFJS MTOPR,77,MSEC1,,OLD
112 DEFJS CFIBF,100,MSEC1,,OLD
113 DEFJS CFOBF,101,MSEC1,,OLD
114 DEFJS SIBE,102,MSEC1,,OLD
115 DEFJS SOBE,103,MSEC1,,OLD
116 DEFJS DOBE,104,MSEC1,,OLD
117 DEFJS GTABS,105,MSEC1,,OLD ;OBSOLETE
118 DEFJS STABS,106,MSEC1,,OLD ;OBSOLETE
119 DEFJS RFMOD,107,MSEC1,,OLD
120 DEFJS SFMOD,110,MSEC1,,OLD
121 DEFJS RFPOS,111,MSEC1,,OLD
122 DEFJS RFCOC,112,MSEC1,,OLD
123 DEFJS SFCOC,113,MSEC1,,OLD
124 DEFJS STI,114,MSEC1,,OLD
125 DEFJS DTACH,115,MSEC1,,OLD
126 DEFJS ATACH,116,MSEC1,,OLD
127 DEFJS DVCHR,117,MSEC1,,OLD
128 DEFJS STDEV,120,MSEC1,,OLD
129 DEFJS DEVST,121,MSEC1,,OLD
130 DEFJS MOUNT,122,MSEC1,,OLD ;OBSOLETE
131 DEFJS DSMNT,123,,,OLD ;OBSOLETE
132 DEFJS INIDR,124,MSEC1,,OLD ;OBSOLETE
133 DEFJS SIR,125,MSEC1,,OLD
134 DEFJS EIR,126,MSEC1,,OLD
135 DEFJS SKPIR,127,MSEC1,,OLD
136 DEFJS DIR,130,MSEC1,,OLD
137 DEFJS AIC,131,MSEC1,,OLD
138 DEFJS IIC,132,MSEC1,,OLD
139 DEFJS DIC,133,MSEC1,,OLD
140 DEFJS RCM,134,MSEC1,,OLD
141 DEFJS RWM,135,MSEC1,,OLD
142 DEFJS DEBRK,136,MSEC1,,OLD
143 DEFJS ATI,137,MSEC1,,OLD
144 DEFJS DTI,140,MSEC1,,OLD
145 DEFJS CIS,141,MSEC1,,OLD
146 DEFJS SIRCM,142,MSEC1,,OLD
147 DEFJS RIRCM,143,MSEC1,,OLD
148 DEFJS RIR,144,MSEC1,,OLD
149 DEFJS GDSTS,145,MSEC1,,OLD
150 DEFJS SDSTS,146,MSEC1,,OLD
151 DEFJS RESET,147,MSEC1,,OLD
152 DEFJS RPCAP,150,MSEC1,,OLD
153 DEFJS EPCAP,151,MSEC1,,OLD
154 DEFJS CFORK,152,MSEC1,,OLD
155 DEFJS KFORK,153,MSEC1,,OLD
156 DEFJS FFORK,154,MSEC1,,OLD
157 DEFJS RFORK,155,MSEC1,,OLD
158 DEFJS RFSTS,156,MSEC1,,OLD
159 DEFJS SFORK,157,MSEC1,,OLD
160 DEFJS SFACS,160,MSEC1,,OLD
161 DEFJS RFACS,161,MSEC1,,OLD
162 DEFJS HFORK,162,MSEC1,,OLD
163 DEFJS WFORK,163,MSEC1,,OLD
164 DEFJS GFRKH,164,MSEC1,,OLD
165 DEFJS RFRKH,165,MSEC1,,OLD
166 DEFJS GFRKS,166,MSEC1,,OLD
167 DEFJS DISMS,167,MSEC1,,OLD
168 DEFJS HALTF,170,MSEC1,,OLD
169 DEFJS GTRPW,171,MSEC1,,OLD
170 DEFJS GTRPI,172,MSEC1,,OLD
171 DEFJS RTIW,173,MSEC1,,OLD
172 DEFJS STIW,174,MSEC1,,OLD
173 DEFJS SOBF,175,MSEC1,,OLD
174 DEFJS RWSET,176,MSEC1,,OLD
175 DEFJS GETNM,177,MSEC1,,OLD
176 DEFJS GET,200,MSEC1,,OLD
177 DEFJS SFRKV,201,MSEC1,,OLD
178 DEFJS SAVE,202,MSEC1,,OLD
179 DEFJS SSAVE,203,MSEC1,,OLD
180 DEFJS SEVEC,204,MSEC1,,OLD
181 DEFJS GEVEC,205,MSEC1,,OLD
182 DEFJS GPJFN,206,MSEC1,,OLD
183 DEFJS SPJFN,207,MSEC1,,OLD
184 DEFJS SETNM,210,MSEC1,,OLD
185 DEFJS FFUFP,211,MSEC1,,OLD
186 DEFJS DIBE,212,MSEC1,,OLD
187 DEFJS FDFRE,213,,NIM,OLD
188 DEFJS GDSKC,214,MSEC1,,OLD
189 DEFJS LITES,215,MSEC1,,OLD ;OBSOLETE
190 DEFJS TLINK,216,MSEC1,,OLD
191 DEFJS STPAR,217,MSEC1,,OLD
192 DEFJS ODTIM,220,MSEC1,,OLD
193 DEFJS IDTIM,221,MSEC1,,OLD
194 DEFJS ODCNV,222,MSEC1,,OLD
195 DEFJS IDCNV,223,MSEC1,,OLD
196 DEFJS NOUT,224,MSEC1,,OLD
197 DEFJS NIN,225,MSEC1,,OLD
198 DEFJS STAD,226,MSEC1,,OLD
199 DEFJS GTAD,227,MSEC1,,OLD
200 DEFJS ODTNC,230,MSEC1,,OLD
201 DEFJS IDTNC,231,MSEC1,,OLD
202 DEFJS FLIN,232,MSEC1,,OLD
203 DEFJS FLOUT,233,MSEC1,,OLD
204 DEFJS DFIN,234,MSEC1,,OLD
205 DEFJS DFOUT,235,MSEC1,,OLD
206
207 DEFJS CRDIR,240,MSEC1,,OLD
208 DEFJS GTDIR,241,MSEC1,,OLD
209 DEFJS DSKOP,242,MSEC1,,OLD
210 DEFJS SPRIW,243,MSEC1,,OLD
211 DEFJS DSKAS,244,MSEC1,,OLD
212 DEFJS SJPRI,245,MSEC1,,OLD
213 DEFJS STO,246,MSEC1,,OLD
214 DEFJS ARCF,247,MSEC1,,OLD ;ARCHIVE SYSTEM JSYS
215 DEFJS ASNDP,260,,NIM,OLD
216 DEFJS RELDP,261,,NIM,OLD
217 DEFJS ASNDC,262,,NIM,OLD
218 DEFJS RELDC,263,,NIM,OLD
219 DEFJS STRDP,264,,NIM,OLD
220 DEFJS STPDP,265,,NIM,OLD
221 DEFJS STSDP,266,,NIM,OLD
222 DEFJS RDSDP,267,,NIM,OLD
223 DEFJS WATDP,270,,NIM,OLD
224
225 DEFJS GTNCP,272,MSEC1,,OLD ;TOPS20AN
226 DEFJS GTHST,273,MSEC1,,OLD ;TOPS20AN
227 DEFJS ATNVT,274,MSEC1,,OLD ;TOPS20AN
228 DEFJS CVSKT,275,MSEC1,,OLD ;TOPS20AN
229 DEFJS CVHST,276,MSEC1,,OLD ;TOPS20AN
230 DEFJS FLHST,277,MSEC1,,OLD ;TOPS20AN
231
232 DEFJS GCVEC,300,MSEC1,,OLD
233 DEFJS SCVEC,301,MSEC1,,OLD
234 DEFJS STTYP,302,MSEC1,,OLD
235 DEFJS GTTYP,303,MSEC1,,OLD
236 DEFJS BPT,304,MSEC1,,OLD ;OBSOLETE
237 DEFJS GTDAL,305,MSEC1,,OLD
238 DEFJS WAIT,306,MSEC1,,OLD
239 DEFJS HSYS,307,MSEC1,,OLD
240 DEFJS USRIO,310,MSEC1,,OLD
241 DEFJS PEEK,311,MSEC1,,OLD
242 DEFJS MSFRK,312,MSEC1,,OLD
243 DEFJS ESOUT,313,MSEC1,,OLD
244 DEFJS SPLFK,314,MSEC1,,OLD
245 DEFJS ADVIS,315,,NIM,OLD
246 DEFJS JOBTM,316,,NIM,OLD
247 DEFJS DELNF,317,MSEC1,,OLD
248 DEFJS SWTCH,320,MSEC1,,OLD ;OBSOLETE
249 DEFJS TFORK,321,MSEC1,,OLD
250 DEFJS RTFRK,322,MSEC1,,OLD
251 DEFJS UTFRK,323,MSEC1,,OLD
252 DEFJS SCTTY,324,MSEC1,,OLD
253
254 DEFJS SETER,336,MSEC1,,OLD
255
256
257 ;NEW (NOT IN BBN TENEX) JSYS'S ADDED STARTING AT 500
258
259 DEFJS RSCAN,500,MSEC1,,OLD
260 DEFJS HPTIM,501,MSEC1,,OLD
261 DEFJS CRLNM,502,MSEC1,,OLD
262 DEFJS INLNM,503,MSEC1,,OLD
263 DEFJS LNMST,504,MSEC1,,OLD
264 DEFJS RDTXT,505,MSEC1,,OLD ;OBSOLETED BY RDTTY AND TEXTI
265 DEFJS SETSN,506,MSEC1,,OLD
266 DEFJS GETJI,507,MSEC1,,OLD
267 DEFJS MSEND,510,MSEC1,,OLD
268 DEFJS MRECV,511,MSEC1,,OLD
269 DEFJS MUTIL,512,MSEC1,,OLD
270 DEFJS ENQ,513,MSEC1,,OLD
271 DEFJS DEQ,514,MSEC1,,OLD
272 DEFJS ENQC,515,MSEC1,,OLD
273 DEFJS SNOOP,516,MSEC1,,OLD
274 DEFJS SPOOL,517,MSEC1,,OLD
275 DEFJS ALLOC,520,MSEC1,,OLD
276 DEFJS CHKAC,521,MSEC1,,OLD
277 DEFJS TIMER,522,MSEC1,,OLD
278 DEFJS RDTTY,523,MSEC1,,OLD
279 DEFJS TEXTI,524,MSEC1,,OLD
280 DEFJS UFPGS,525,MSEC1,,OLD
281 DEFJS SFPOS,526,MSEC1,,OLD
282 DEFJS SYERR,527,MSEC1,,OLD
283 DEFJS DIAG,530,MSEC1,,OLD
284 DEFJS SINR,531,MSEC1,,OLD
285 DEFJS SOUTR,532,MSEC1,,OLD
286 DEFJS RFTAD,533,MSEC1,,OLD
287 DEFJS SFTAD,534,MSEC1,,OLD
288 DEFJS TBDEL,535,MSEC1,,OLD
289 DEFJS TBADD,536,MSEC1,,OLD
290 DEFJS TBLUK,537,MSEC1,,OLD
291 DEFJS STCMP,540,MSEC1,,OLD
292 DEFJS SETJB,541,MSEC1,,OLD
293 DEFJS GDVEC,542,MSEC1,,OLD
294 DEFJS SDVEC,543,MSEC1,,OLD
295 DEFJS COMND,544,MSEC1,,OLD
296 DEFJS PRARG,545,MSEC1,,OLD
297 DEFJS GACCT,546,MSEC1,,OLD
298 DEFJS LPINI,547,MSEC1,,OLD
299 DEFJS GFUST,550,MSEC1,,OLD
300 DEFJS SFUST,551,MSEC1,,OLD
301 DEFJS ACCES,552,MSEC1,,OLD
302 DEFJS RCDIR,553,MSEC1,,OLD
303 DEFJS RCUSR,554,MSEC1,,OLD
304 DEFJS MSTR,555,MSEC1,,OLD
305 DEFJS STPPN,556,MSEC1,,OLD
306 DEFJS PPNST,557,MSEC1,,OLD
307 DEFJS PMCTL,560,MSEC1,,OLD
308 DEFJS PLOCK,561,MSEC1,,OLD
309 DEFJS BOOT,562,MSEC1,,OLD
310 DEFJS UTEST,563,MSEC1,,OLD
311 DEFJS USAGE,564,MSEC1,,OLD
312 DEFJS WILD,565,MSEC1
313 DEFJS VACCT,566,MSEC1,,OLD
314 DEFJS NODE,567,MSEC1,,OLD
315 DEFJS ADBRK,570,MSEC1,,OLD
316 DEFJS SINM,571,MSEC1
317 DEFJS SOUTM,572,MSEC1
318 DEFJS SWTRP,573,MSEC1
319 DEFJS GETOK,574,MSEC1
320 DEFJS RCVOK,575,MSEC1
321 DEFJS GIVOK,576,MSEC1
322 DEFJS SKED,577,MSEC1 ;SCHEDULER CONTROL JSYS
323 DEFJS MTU,600,MSEC1 ;MTU JSYS
324
325 ;TEMPORARY JSYS DEFINITIONS
326
327 DEFJS SNDIM,750,MSEC1,,OLD ;TOPS20AN
328 DEFJS RCVIM,751,MSEC1,,OLD ;TOPS20AN
329 DEFJS ASNSQ,752,MSEC1,,OLD ;TOPS20AN
330 DEFJS RELSQ,753,MSEC1,,OLD ;TOPS20AN
331
332 DEFJS METER,766,MSEC1 ;METER JSYS. FOR KL ONLY
333 DEFJS SMAP,767,MSEC1,NIM ;RESERVED FOR FUTURE
334 DEFJS THIBR,770,MSEC1,,OLD
335 DEFJS TWAKE,771,MSEC1,,OLD
336 DEFJS MRPAC,772,MSEC1,,OLD
337 DEFJS SETPV,773,,NIM,OLD
338 DEFJS MTALN,774,MSEC1,,OLD
339 DEFJS TTMSG,775,MSEC1,,OLD
340 DEFJS MDDT,777,MSEC1
341
342 ;;; END OF DEFINE JSLIST
343
344 ;NOW EXPAND THE JSYS DEFINITIONS
345
346 JSLIST
347
348 ;ERROR CONDITION INSTRUCTIONS. THESE ARE NOP'S UNLESS IMMEDIATELY
349 ;FOLLOWING A JSYS WHICH FAILS.
350
351 320700 000000 OPDEF ERJMP [JUMP 16,0] ;JUMP ON ERROR
352 320740 000000 OPDEF ERCAL [JUMP 17,0] ;CALL ON ERROR (SIMULATE PUSHJ 17,ADR)
353 IFNDEF FOR,<
354 IFDEF .PSECT,<
355 INTERN ERJMP,ERCAL
356
357
358 DEFINE GOPDEF (OP,DEF)<
359 OPDEF OP [DEF]
360 IFNDEF FOR,<
361 IFDEF .PSECT,<
362 INTERN OP
363
364 400000 000000 IFIW==:1B0 ;INSTRUCTION FORMAT INDIRECT WORD
365 000000 EFIW==:0 ;EXTENDED FORMAT INDIRECT WORD
366
367 ;THE NO-OPERATION INSTRUCTION (MAY CHANGE FROM PROCESSOR TO PROCESSOR)
368
369 GOPDEF NOP,<TRN 0,0
370 .NODDT NOP
371
372 ;SPECIAL LOSEG SYMBOLS
373
374 000075 .JBHSO==:75 ; 0 ,, HIGHSEG ORIGIN PAGE NUMBER
375 000112 .JBEDV==:112 ;POINTER TO EXEC DATA VECTOR
376 000000 .EDCNT==:0 ;'EDV',,COUNT (INCLUDES THIS WORD)
377 000001 .EDHSB==:1 ;POINTER TO HIDDEN SYMBOL MAP SWITCHING BLOCK
378 000002 .EDSYM==:2 ;.JBSYM IN SYMBOL SPACE
379 000003 .EDUSY==:3 ;.JBUSY IN SYMBOL SPACE
380 000004 .EDHSF==:4 ;POINTER TO SYMBOLS HIDDEN FLAG WORD
381
382 ;*****************************************
383 ;JSYS SPECIFIC ARGUMENTS
384 ;THE FOLLOWING ARE ORDERED ALPHABETICALLY BY JSYS NAME
385 ;*****************************************
386
387
388 ;ACCES - ACCESS A DIRECTORY (E.G., BY CONNECTING)
389
390 400000 000000 AC%CON==:1B0 ;CONNECT TO THE SPECIFIED DIRECTORY
391 200000 000000 AC%OWN==:1B1 ;GAIN OWNERSHIP
392 100000 000000 AC%REM==:1B2 ;REMOVE OWNERSHIP
393
394 ;OFFSETS IN ARGUMENT BLOCK
395
396 000000 .ACDIR==:0 ;DIRECTORY DESIGNATOR
397 000001 .ACPSW==:1 ;POINTER TO PASSWORD STRING
398 000002 .ACJOB==:2 ;JOB NUMBER (-1 FOR SELF)
399
400
401 ;ADBRK - Address break JSYS function codes and bits
402
403 ;FUNCTION CODES
404
405 000000 .ABSET==:0 ;SET USER ADDRESS BREAK
406 000001 .ABRED==:1 ;READ USER ADDRESS BREAK
407 000002 .ABCLR==:2 ;CLEAR USER ADDRESS BREAK
408 000003 .ABGAD==:3 ;GET ADDRESS OF TRAPPED INSTRUCTION
409
410 ;FUNCTION BITS FOR FUNCTION .ABSET
411
412 400000 000000 AB%RED==:1B0 ;READ
413 200000 000000 AB%WRT==:1B1 ;WRITE
414 100000 000000 AB%XCT==:1B2 ;EXECUTE
415
416
417 ;ALLOC JSYS FUNCTION CODES
418
419 000000 .ALCAL==:0 ;ALLOCATE A DEVICE
420
421
422 ; ARCF
423
424 000000 .ARRAR==:0 ; Request file archive (user)
425 000000 .ARCLR==:0 ; Clear the request
426 000001 .ARSET==:1 ; Set the request
427 ; AR%NDL can be specified in AC2, defined elsewhere
428 000001 .ARRIV==:1 ; Request file migration (system)
429 000002 .AREXM==:2 ; File exempt from migration (system)
430 000003 .ARRFR==:3 ; Request file's contents be restored to disk
431 400000 000000 AR%NMS==:1B0 ; Request no msg on restoration
432 200000 000000 AR%WAT==:1B1 ; Wait for file to be restored to disk
433 000004 .ARDIS==:4 ; Clear archive status for file
434 400000 000000 AR%CR1==:1B0 ; Clear 1st run info
435 200000 000000 AR%CR2==:1B1 ; Clear 2nd run info
436 000005 .ARSST==:5 ; Set archive status for file
437 000000 .AROFL==:0 ; Flags
438 400000 000000 AR%O1==:1B0 ; Set run 1 info
439 200000 000000 AR%O2==:1B1 ; Set run 2 info
440 100000 000000 AR%OFL==:1B2 ; Flush contents of file
441 040000 000000 AR%ARC==:1B3 ; Set FB%ARC (archive the file)
442 020000 000000 AR%CRQ==:1B4 ; Clear archive/migration request
443 000001 .ARTP1==:1 ; Tape 1 ID
444 000002 .ARSF1==:2 ; XWD TSN 1, TFN 1
445 777777 000000 AR%TSN==:777777B17 ; Tape saveset number
446 777777 AR%TFN==:777777B35 ; Tape file number
447 000003 .ARTP2==:3 ; Tape 2 ID
448 000004 .ARSF2==:4 ; XWD TSN 2, TFN 2
449 ;;; AR%TSN==:777777B17 ; Tape saveset number
450 ;;; AR%TFN==:777777B35 ; Tape file number
451 000005 .ARODT==:5 ; Date and time
452 000006 .ARPSZ==:6 ; Number of pages in the file (.ARGST only)
453 000006 .ARRST==:6 ; Restore contents to archived file
454 000007 .ARGST==:7 ; Get tape info for file (blk as for ARSST)
455 000010 .ARRFL==:10 ; Retrieve failed
456 000011 .ARNAR==:11 ; Set/clear resist archive
457
458 ; Function reason codes for IPCF msgs
459
460 000000 .RETM==:0 ; Send retrieve message
461 000000 .RETR==:0 ; Normal retrieve
462 000001 .RETRW==:1 ; User waiting for retrieve
463 000001 .NOTM==:1 ; Send notification message
464 000000 .FLXP==:0 ; Archive file expunged
465 000001 .ACLR==:1 ; Archive status cleared
466
467 ;ATNVT ;TOPS20AN
468
469 100000 000000 AN%NTP==:1B2 ;TOPS20AN ;NEW TELNET PROTOCOL
470
471
472 ;ATACH
473
474 400000 000000 AT%CCJ==:1B0 ;C JOB WHEN ATTACHED
475 200000 000000 AT%NAT==:1B1 ;NO ATTACH
476 100000 000000 AT%TRM==:1B2 ;ATTACH JOB TO TERMINAL IN REGISTER 4
477 777777 AT%JOB==:777777B35 ;JOB NUMBER
478
479
480
481 ;BOOT
482
483 000000 .BTROM==:0 ;ACTIVATE ROM BOOT
484 000000 .BTDTE==:0 ;DTE-20 NUMBER
485 000001 .BTLDS==:1 ;LOAD SECONDARY BOOTSTRAP PROGRAM
486 000001 .BTERR==:1 ;ERROR FLAGS
487 000002 .BTSEC==:2 ;ADDRESS OF SECONDARY BOOTSTRAP PROGRAM
488 000002 .BTLOD==:2 ;LOAD MEMORY (OBSOLETE)
489 000002 .BTSMP==:2 ;SEND MOP MESSAGE
490 000003 .BTFLG==:3 ;FLAGS
491 400000 000000 BT%BEL==:1B0 ;SEND TO -11 DOORBELL AFTER SETUP
492 000004 .BTCNT==:4 ;NUMBER OF BYTES TO BE TRANSFERRED
493 000005 .BTLPT==:5 ;BYTE POINTER TO DATA TO BE LOADED
494 000003 .BTDMP==:3 ;DUMP MEMORY
495 000005 .BTDPT==:5 ;BYTE POINTER TO DESTINATION OF DUMPED DATA
496 000004 .BTIPR==:4 ;INITIALIZE COMMUNICATIONS PROTOCOL
497 000001 .BTPRV==:1 ;PROTOCOL VERSION NUMBER
498 000005 .BTTPR==:5 ;TERMINATE COMMUNICATIONS PROTOCOL
499 000006 .BTSTS==:6 ;RETURN PROTOCOL STATUS
500 000001 .BTCOD==:1 ;STATUS CODE
501 000007 .BTBEL==:7 ;WAIT FOR DOORBELL
502 000010 .BTRMP==:10 ;READ MOP MESSAGE
503 000005 .BTMPT==:5 ;POINTER TO DESTINATION FOR MOP MESSAGE
504 000011 .BTKML==:11 ;LOAD KMC11
505 000000 .BTKMC==:0 ;KMC11 ADDRESS
506 000001 .BTKER==:1 ;ERROR FLAGS
507 400000 000000 BT%CVE==:1B0 ;CRAM VERIFY ERROR (RH IS BAD DATA)
508 200000 000000 BT%DVE==:1B1 ;DRAM VERIFY ERROR (RH IS BAD DATA)
509 100000 000000 BT%RVE==:1B2 ;REG VERIFY ERROR (RH IS BAD DATA)
510 000002 .BTKCC==:2 ;COUNT OF CRAM DATA
511 000003 .BTKCP==:3 ;POINTER TO CRAM DATA (16 BIT DATA)
512 000004 .BTKDC==:4 ;COUNT OF DRAM DATA
513 000005 .BTKDP==:5 ;POINTER TO DRAM DATA (8 BIT DATA)
514 000006 .BTKRC==:6 ;COUNT OF REGISTER DATA
515 000007 .BTKRP==:7 ;POINTER TO REGISTER DATA (16 BIT DATA)
516 000010 .BTKSA==:10 ;RH IS STARTING ADDRESS
517 400000 000000 BT%KSA==:1B0 ;IS SET RH WANT TO START KMC11
518 000012 .BTKMD==:12 ;DUMP KMC11
519 000013 .BTRLC==:13 ;RETURN LINE COUNTERS
520 000000 .BTPRT==:0 ;PORT NUMBER
521 400000 000000 BT%ZRO==:1B0 ;CLEAR COUNTERS AFTER READING
522 000001 .BTZTM==:1 ;TIME SINCE COUNTERS HAVE BEEN ZEROED
523 000002 .BTSCC==:2 ;STATUS COUNT COUNT
524 000003 .BTSCP==:3 ;STATUS COUNT POINTER
525 000004 .BTRCC==:4 ;RECEIVE COUNT COUNT
526 000005 .BTRCP==:5 ;RECEIVE COUNT POINTER
527 000006 .BTTCC==:6 ;TRANSMIT COUNT COUNT
528 000007 .BTTCP==:7 ;TRANSMIT COUNT POINTER
529 000014 .BTCLI==:14 ;CONVERT LINEID TO PORT NUMBER
530 000001 .BTLID==:1 ;POINTER TO ASCIZ LINE-ID
531 000015 .BTCPN==:15 ;CONVERT PORT NUMBER TO LINE-ID
532 000016 .BTSTA==:16 ;SET STATION POLLING STATUS
533 000017 .BTSSP==:17 ;SET LINE STARTUP PRIORITY
534 000001 .BTPRI==:1 ;PRIORITY VALUE
535 000020 .BTSTP==:20 ;SET STATION POLLING PRIORITY
536 000021 .BTSDD==:21 ;SEND DDCMP MESSAGE
537 000001 .BTMSG==:1 ;ADDR OF MESSAGE
538 000002 .BTLEN==:2 ;BYTE COUNT OF MESSAGE
539 000022 .BTRDD==:22 ;RECEIVE A MESSAGE FROM DDCMP
540 000001 .BTSUP==:1 ;STATION CAME UP
541 000002 .BTSDW==:2 ;STATION WENT DOWN
542 000003 .BTCMP==:3 ;XMIT COMPLETE
543 000004 .BTSSF==:4 ;STARTUP FAILED
544 400000 000000 BT%CTL==:1B0 ;CONTROL MESSAGE
545 000023 .BTCHN==:23 ;ASSIGN A SOFTWARE INTERRUPT CHANNEL
546 000001 .BTESI==:1 ;CHANNEL NUMBER
547
548 ;CFORK
549
550 400000 000000 CR%MAP==:1B0 ;SET MAP FOR NEW FORK TO POINT TO
551 ; THIS PROCESS
552 200000 000000 CR%CAP==:1B1 ;MAKE CAPABILITIES IDENTICAL
553 040000 000000 CR%ACS==:1B3 ;SET ACS FROM BLOCK
554 020000 000000 CR%ST==:1B4 ;START PROCESS AT PC
555 777777 CR%PCV==:777777B35 ;VALUE OF PC
556
557
558 ;CHFDB
559
560 400000 000000 CF%NUD==:1B0 ;NO UPDATE DIRECTORY
561 000777 000000 CF%DSP==:777B17 ;FDB DISPLACEMENT
562 777777 CF%JFN==:777777B35 ;JFN
563
564
565
566 ;CHKAC JSYS DEFINITIONS
567
568 ;CHKAC FLAG DEFINITIONS
569
570 400000 000000 CK%JFN==:1B0 ;JFN IS GIVEN AS AN ARGUMENT
571
572 ;CHKAC ARGUMENT BLOCK OFFSET VALUES
573
574 000000 .CKAAC==:0 ;ACCESS CODE
575 000001 .CKALD==:1 ;LOGGED IN USER NUMBER OF USER
576 000002 .CKACD==:2 ;CONNECTED DIR NUMBER OF USER
577 000003 .CKAEC==:3 ;ENABLED CAPABILITIES OF USER BEING CHK'D
578 000004 .CKAUD==:4 ;DIR NUMBER OF DIRECTORY CONTAINING FILE
579 000005 .CKAPR==:5 ;PROTECTION OF FILE
580
581 ;CHKAC ACCESS CODES
582
583 000000 .CKARD==:0 ;READ AN EXISTING FILE
584 000001 .CKAWT==:1 ;WRITE AN EXISTING FILE
585 000001 .CKAWR==:1 ; (ANOTHER NAME FOR ABOVE)
586 000002 .CKAEX==:2 ;EXECUTE AN EXISTING FILE
587 000003 .CKAAP==:3 ;APPEND TO AN EXISTING FILE
588 000004 .CKADL==:4 ;GET DIR LISTING OF AN EXISTING FILE
589 000006 .CKADR==:6 ;READ THE DIRECTORY
590 000007 .CKAOF==:7 ;OPEN FILES IN DIR (NOT IMPLEMENTED)
591 000010 .CKACN==:10 ;CONNECT TO A DIR
592 000011 .CKACF==:11 ;CREATE FILES IN DIR
593
594
595 ;CLOSF
596
597 400000 000000 CO%NRJ==:1B0 ;NO RELEASE JFN
598 200000 000000 CO%WCL==:1B1 ;TOPS20AN ;WAIT UNTIL MATCHING CLS IS RECEIVED
599 777777 CO%JFN==:777777B35 ;JFN
600
601
602 ;CLZFF
603
604 400000 000000 CZ%NIF==:1B0 ;NO INFERIOR FORK FILES
605 200000 000000 CZ%NSF==:1B1 ;NO SELF FORK FILES
606 100000 000000 CZ%NRJ==:1B2 ;NO RELEASE JFN
607 040000 000000 CZ%NCL==:1B3 ;NO CLOSE FILE
608 020000 000000 CZ%UNR==:1B4 ;UNRESTRICT
609 010000 000000 CZ%ARJ==:1B5 ;ALWAYS RELEASE JFN
610 004000 000000 CZ%ABT==:1B6 ;ABORT
611 002000 000000 CZ%NUD==:1B7 ;NO UPDATE DIRECTORY
612 777777 CZ%PRH==:777777B35 ;PROCESS HANDLE
613
614
615
616 ;CNDIR
617
618 400000 000000 CN%CKP==:1B0 ;CHECK PASSWORD ONLY
619 200000 000000 CN%NOC==:1B1 ;NO CONNECT
620 100000 000000 CN%JOB==:1B2 ;DOING CONNECT FOR ANOTHER JOB
621 777777 CN%DIR==:777777B35 ;DIRECTORY NUMBER
622
623
624 ;COMND
625
626 ;COMND - COMMAND STATE BLOCK
627
628 000000 .CMFLG==:0 ;USER FLAGS,,REPARSE DISPATCH ADDRESS
629 000001 .CMIOJ==:1 ;INJFN,,OUTJFN
630 000002 .CMRTY==:2 ;R BUFFER POINTER
631 000003 .CMBFP==:3 ;PTR TO TOP OF BUFFER
632 000004 .CMPTR==:4 ;PTR TO NEXT INPUT TO BE PARSED
633 000005 .CMCNT==:5 ;COUNT OF SPACE LEFT IN BUFFER AFTER PTR
634 000006 .CMINC==:6 ;COUNT OF CHARACTERS FOLLOWING PTR
635 000007 .CMABP==:7 ;ATOM BUFFER POINTER
636 000010 .CMABC==:10 ;ATOM BUFFER SIZE
637 000011 .CMGJB==:11 ;ADR OF GTJFN ARG BLOCK
638 777777 CM%GJB==:777777 ;ADR OF GTJFN ARG BLOCK
639
640 ;COMND - FUNCTION DESCRIPTOR BLOCK
641
642 000000 .CMFNP==:0 ;FUNCTION AND POINTER
643 777000 000000 CM%FNC==:777B8 ;FUNCTION CODE
644 000777 000000 CM%FFL==:777B17 ;FUNCTION-SPECIFIC FLAGS
645 777777 CM%LST==:777777 ;LIST POINTER TO OTHER BLOCKS
646 000001 .CMDAT==:1 ;DATA FOR FUNCTION
647 000002 .CMHLP==:2 ;HELP TEXT POINTER
648 000003 .CMDEF==:3 ;DEFAULT STRING POINTER
649 000004 .CMBRK==:4 ;FIELD BREAK MASK POINTER
650
651 ;COMND - FLAGS IN .CMFLG
652
653 400000 000000 CM%ESC==:1B0 ;ESC SEEN
654 200000 000000 CM%NOP==:1B1 ;NO PARSE
655 100000 000000 CM%EOC==:1B2 ;END OF COMMAND SEEN
656 040000 000000 CM%RPT==:1B3 ;REPEAT PARSE NEEDED
657 020000 000000 CM%SWT==:1B4 ;SWITCH TERMINATED WITH ":"
658 010000 000000 CM%PFE==:1B5 ;PREVIOUS FIELD ENDED WITH ESC
659 004000 000000 CM%RAI==:1B6 ;RAISE INPUT
660 002000 000000 CM%XIF==:1B7 ;EXCLUDE INDIRECT FILES
661 001000 000000 CM%WKF==:1B8 ;WAKEUP AFTER EACH FIELD
662
663 ;FUNCTION BLOCK FLAGS (IN WORD .CMFNP)
664
665 000020 000000 CM%BRK==:1B13 ;BREAK MASK PRESENT
666 000010 000000 CM%PO==:1B14 ;PARSE-ONLY
667 000004 000000 CM%HPP==:1B15 ;HELP POINTER PRESENT
668 000002 000000 CM%DPP==:1B16 ;DEFAULT POINTER PRESENT
669 000001 000000 CM%SDH==:1B17 ;SUPPRESS DEFAULT HELP MESSAGE
670
671 ;FLAGS FOR CMDIR FUNCTION
672
673 400000 000000 CM%DWC==:1B0 ;DIRECTORY WILD CARDING ALLOWED
674
675 ;FLAGS FOR CMTAD FUNCTION
676
677 400000 000000 CM%IDA==:1B0 ;INPUT DATE
678 200000 000000 CM%ITM==:1B1 ;INPUT TIME
679 100000 000000 CM%NCI==:1B2 ;NO CONVERT TO INTERNAL
680
681 ;FLAGS IN KEYWORD TABLE (FIRST WORD OF STRING IF B0-6 = 0)
682
683 000001 CM%INV==:1B35 ;INVISIBLE
684 000002 CM%NOR==:1B34 ;NO-RECOGNIZE (PLACEHOLDER)
685 000004 CM%ABR==:1B33 ;ABBREVIATION FOR ANOTHER ENTRY
686 002000 000000 CM%FW==:1B7 ;FLAG WORD (MUST ALWAYS BE ON)
687
688
689 ;COMND - FUNCTION CODES
690
691 000000 .CMKEY==:0 ;KEYWORD
692 000001 .CMNUM==:1 ;NUMBER
693 000002 .CMNOI==:2 ;NOISE WORD
694 000003 .CMSWI==:3 ;SWITCH
695 000004 .CMIFI==:4 ;INPUT FILE
696 000005 .CMOFI==:5 ;OUTPUT FILE
697 000006 .CMFIL==:6 ;GENERAL FILESPEC
698 000007 .CMFLD==:7 ;ARBITRARY FIELD
699 000010 .CMCFM==:10 ;CONFIRM
700 000011 .CMDIR==:11 ;DIRECTORY NAME
701 000012 .CMUSR==:12 ;USER NAME
702 000013 .CMCMA==:13 ;COMMA
703 000014 .CMINI==:14 ;INIT LINE
704 000015 .CMFLT==:15 ;FLOATING POINT NUMBER
705 000016 .CMDEV==:16 ;DEVICE NAME
706 000017 .CMTXT==:17 ;TEXT TO ACTION CHAR
707 000020 .CMTAD==:20 ;TIME AND DATE
708 000021 .CMQST==:21 ;QUOTED STRING
709 000022 .CMUQS==:22 ;UNQUOTED STRING
710 000023 .CMTOK==:23 ;TOKEN
711 000024 .CMNUX==:24 ;NUMBER DELIMITED BY NON-DIGIT
712 000025 .CMACT==:25 ;ACCOUNT
713 000026 .CMNOD==:26 ;NODE NAME
714
715 ;DEFINE BREAK MASKS
716
717 BRINI. ;INITIALIZE BREAK MASK FOR STANDARD FIELD
718 BRKCH. (0,37) ;ALL CONTROL CHARACTERS
719 BRKCH. (40,54) ;SPACE THROUGH COMMA
720 BRKCH. (56,57) ;DOT AND SLASH
721 BRKCH. (72,77) ;COLON THROUGH QUESTION MARK
722 BRKCH. (100) ;ATSIGN
723 BRKCH. (133,140) ;OPEN BRACKET THROUGH ACCENT GRAVE
724 BRKCH. (173,177) ;CLOSE BRACKET THROUGH TILDE
725
726 777777 777760 FLDB0.==W0. ;STANDARD FIELD BREAK MASK
727 777754 001760 FLDB1.==W1.
728 400000 000760 FLDB2.==W2.
729 400000 000760 FLDB3.==W3.
730
731 ;KEYWORD BREAK SET. SAME AS STANDARD FIELD FOR NOW
732
733 777777 777760 KEYB0.==FLDB0.
734 777754 001760 KEYB1.==FLDB1.
735 400000 000760 KEYB2.==FLDB2.
736 400000 000760 KEYB3.==FLDB3.
737
738 ;USERNAME BREAK SET. BREAKS ON EVERYTHING EXCEPT DOT AND ALPHABETICS.
739
740 UNBRK. "." ;MODIFY FIELD BREAK SET INTO USER BREAK SET. DON'T BREAK O
741 N DOT
742 UNBRK. "%" ;DON'T BREAK ON PERCENT
743 UNBRK. "*" ;STAR
744
745 777777 777760 USRB0.==W0.
746 767544 001760 USRB1.==W1.
747 400000 000760 USRB2.==W2.
748 400000 000760 USRB3.==W3.
749
750 ;ACCOUNT MASK CURRENTLY THE SAME AS USER MASK
751
752 777777 777760 ACTB0.==USRB0.
753 767544 001760 ACTB1.==USRB1.
754 400000 000760 ACTB2.==USRB2.
755 400000 000760 ACTB3.==USRB3.
756
757 ;FILESPEC FIELD - FILESPEC PUNCTUATION CHARACTERS
758 ;ARE LEGAL ( :, <, , ., ;)
759
760 UNBRK. ":" ;MODIFY USERNAME BREAK SET INTO FILE BREAK SET. DON'T BREA
761 K ON THESE
762 UNBRK. "<"
763 UNBRK. ""
764 UNBRK. "["
765 UNBRK. "]"
766 UNBRK. ";"
767 UNBRK. "$" ;ALLOW DOLLARSIGN! (I NEVER KNEW THAT BEFORE)
768
769 777777 777760 FILB0.==W0.
770 747544 000120 FILB1.==W1.
771 400000 000260 FILB2.==W2.
772 400000 000760 FILB3.==W3.
773
774 ;READ DEVICE NAME
775
776 BRINI. FLDB0.,FLDB1.,FLDB2.,FLDB3. ;VERY SIMILAR TO STANDARD FIELD
777 UNBRK. "$" ;ALLOW DOLLARSIGN IN DEVICE NAME (LIKE FILESPEC)
778 UNBRK. "" ;UNDERSCORE TOO
779
780 777777 777760 DEVB0.==W0.
781 757754 001760 DEVB1.==W1.
782 400000 000740 DEVB2.==W2.
783 400000 000760 DEVB3.==W3.
784
785 ;READ TO END OF LINE
786
787 BRINI. ;INITIALIZE END OF LINE BREAK SET
788 BRKCH. .CHLFD ;BREAK ON LINEFEED
789 BRKCH. .CHCRT ;AND CARRIAGE RETURN
790
791 000220 000000 EOLB0.==W0.
792 000000 EOLB1.==W1.
793 000000 EOLB2.==W2.
794 000000 EOLB3.==W3.
795
796
797 ;CRDIR
798
799 400000 000000 CD%LEN==:1B0 ;FLAGS ,, LENGTH OF CRDIR BLOCK
800 200000 000000 CD%PSW==:1B1 ;SET PASSWORD STRING
801 100000 000000 CD%LIQ==:1B2 ;SET LOGGED IN QUOTA
802 040000 000000 CD%PRV==:1B3 ;SET PRIVILEGES
803 020000 000000 CD%MOD==:1B4 ;SET MODE BITS
804 010000 000000 CD%LOQ==:1B5 ;SET LOGGED OUT QUOTA
805 004000 000000 CD%NUM==:1B6 ;SET DIRECTORY NUMBER FROM PARAM BLK
806 002000 000000 CD%FPT==:1B7 ;SET DEFAULT FILE PROTECTION
807 001000 000000 CD%DPT==:1B8 ;SET DIRECTORY PROTECTION
808 000400 000000 CD%RET==:1B9 ;SET DEFAULT RETENTION COUNT
809 000200 000000 CD%LLD==:1B10 ;SET LAST LOGIN DATE
810 000100 000000 CD%UGP==:1B11 ;SET USER GROUPS
811 000040 000000 CD%DGP==:1B12 ;SET DIRECTORY GROUPS
812 000020 000000 CD%SDQ==:1B13 ;SET SUBDIRECTORY QUOTA
813 000010 000000 CD%CUG==:1B14 ;SET CREATABLE USER GROUPS
814 000004 000000 CD%DAC==:1B15 ;SET DEFAULT ACCOUNT
815 000001 000000 CD%DEL==:1B17 ;DELETE DIRECTORY
816 777777 CD%APB==:777777B35 ;ADDRESS OF PARAMETER BLOCK
817 000000 .CDLEN==:0 ;LENGTH OF ARGUMENT BLOCK
818 400000 000000 CD%NSQ==:1B0 ;DO NOT UPDATE QUOTAS OF SUPERIOR DIR
819 200000 000000 CD%NCE==:1B1 ;DO NOT CHANGE PARAMETERS OF EXISTING DIRS
820 100000 000000 CD%NED==:1B2 ; Set def online exp from .CDDNE
821 040000 000000 CD%FED==:1B3 ; Set def offline exp from .CDDFE
822 000001 .CDPSW==:1 ;POINTER TO PASSWORD STRING
823 000002 .CDLIQ==:2 ;LOGGED IN QUOTA
824 000003 .CDPRV==:3 ;PRIVILEGE WORD
825 000004 .CDMOD==:4 ;MODE WORD
826 400000 000000 CD%DIR==:1B0 ;DIRECTORY NAME FOR CNDIR ONLY (FILES ONLY)
827 200000 000000 CD%ANA==:1B1 ;ALPHANUMERIC ACCOUNTS
828 100000 000000 CD%RLM==:1B2 ;REPEAT LOGIN MESSAGES
829 002000 000000 CD%DAR==:1B7 ; Archived online expired files
830 000005 .CDLOQ==:5 ;LOGGED OUT QUOTA
831 000006 .CDNUM==:6 ;DIRECTORY NUMBER
832 000007 .CDFPT==:7 ;DEFAULT FILE PROTECTION
833 000010 .CDDPT==:10 ;DIRECTORY PROTECTION
834 000011 .CDRET==:11 ;DEFAULT RETENTION COUNT
835 000012 .CDLLD==:12 ;LAST LOGIN DATE
836 000013 .CDUGP==:13 ;USER GROUPS
837 000014 .CDDGP==:14 ;DIRECTORY GROUPS
838 000015 .CDSDQ==:15 ;MAXIMUM NUMBER OF SUBDIRECTORIES
839 000016 .CDCUG==:16 ;POINTER TO CREATABLE USER GROUP LIST
840 000017 .CDDAC==:17 ;POINTER TO DEFAULT ACCOUNT
841 000020 .CDDNE==:20 ; Default online expiration
842 000021 .CDDFE==:21 ; Default offline expiration
843
844
845
846 ;CRJOB
847
848 400000 000000 CJ%LOG==:1B0 ;ATTEMPT TO LOG IN THE NEW JOB
849 200000 000000 CJ%NAM==:1B1 ;USE NAME AND PSWD IN ARG BLK
850 140000 000000 CJ%ACT==:3B3 ;WHERE TO GET ACCOUNT
851 000000 .CJUCA==:0 ;USE CURRENT ACCT OF CREATOR
852 000001 .CJUAA==:1 ;USE ACCOUNT IN ARG BLOCK
853 000002 .CJUDA==:2 ;USE DEFAULT ACCOUNT OF NEW USER
854 020000 000000 CJ%ETF==:1B4 ;PUT EXEC IN TOP FORK
855 010000 000000 CJ%FIL==:1B5 ;GET FILE IN ARG BLOCK
856 004000 000000 CJ%ACS==:1B6 ;LOAD THE ACS FROM ARG BLOCK
857 002000 000000 CJ%OWN==:1B7 ;RETAIN OWNERSHIP OF NEW JOB
858 001000 000000 CJ%WTA==:1B8 ;NEW JOB WAITS TIL ATTACHED
859 000400 000000 CJ%NPW==:1B9 ;NO PASSWORD CHECK AT LOGIN TIME
860 000200 000000 CJ%NUD==:1B10 ;NO UPDATE OF LAST-LOGIN DATE
861 000100 000000 CJ%SPJ==:1B11 ;DO SPJFN IN NEW JOB FROM ARG BLK
862 000040 000000 CJ%CAP==:1B12 ;PASS ENABLED CAPABILITIES AS ALLOWED
863 000020 000000 CJ%CAM==:1B13 ;CAPABILITY MASK AT LOGIN
864 000010 000000 CJ%SLO==:1B14 ;SIGNAL (IPCF) AT LOGOUT TIME
865 000001 000000 CJ%DSN==:1B17 ;DISOWN EXISTING JOB # IN 3
866
867 000000 .CJNAM==:0 ;NAME STRING POINTER
868 000001 .CJPSW==:1 ;PASSWORD STRING POINTER
869 000002 .CJACT==:2 ;ACCOUNT DESIGNATOR/STRING
870 000003 .CJFIL==:3 ;FILE NAME STRING POINTER
871 000004 .CJSFV==:4 ;SFRKV OFFSET
872 000005 .CJTTY==:5 ;TTY DESIGNATOR, OR NULL DESIGNATOR
873 000006 .CJTIM==:6 ;TIME LIMIT
874 000007 .CJACS==:7 ;ADDRESS OF 16. WORDS OF AC'S
875 000010 .CJEXF==:10 ;EXEC FLAGS, FOR EXEC AC1
876 000011 .CJPRI==:11 ;PRIMARY JFN'S FOR SPJFN IN NEW JOB
877 000012 .CJCPU==:12 ;CPU LIMIT (0 IF NONE)
878 000013 .CJCAM==:13 ;CAPABILITY MASK TO APPLY TO LOGIN
879 000014 .CJSLO==:14 ;PID TO SIGNAL AT LOGOUT TIME
880
881 002545 CR%PRA==:2545 ;MAGIC # FOR EXEC/CRJOB LINKAGE VIA PRARG
882
883
884 ;CRLNM
885
886 000000 .CLNJ1==:0 ;DELETE 1 LOGICAL NAME FROM JOB
887 000001 .CLNS1==:1 ;DELETE 1 LOGICAL NAME FROM SYSTEM
888 000002 .CLNJA==:2 ;DELETE ALL JOB WIDE LOGICAL NAMES
889 000003 .CLNSA==:3 ;DELETE ALL SYSTEM LOGICAL NAMES
890 000004 .CLNJB==:4 ;CREATE A JOB WIDE LOGICAL NAME
891 000005 .CLNSY==:5 ;CREATE A SYSTEM WIDE LOGICAL NAME
892
893
894 ;DELDF
895
896 400000 000000 DD%DTF==:1B0 ;DELETE TEMPORARY FILES
897 200000 000000 DD%DNF==:1B1 ;DELETE NONEXISTENT FILES
898 100000 000000 DD%RST==:1B2 ;REBUILD THE SYMBOL TABLE
899 040000 000000 DD%CHK==:1B3 ;CHECK THE DIR FOR CONSISTENCY ONLY
900
901
902 ;DELF
903
904 400000 000000 DF%NRJ==:1B0 ;DON'T RELEASE JFN
905 200000 000000 DF%EXP==:1B1 ;EXPUNGE CONTENTS
906 100000 000000 DF%FGT==:1B2 ;FORGET (EXPUNGE W/O DEASSIGNING ADDRESSES)
907 040000 000000 DF%DIR==:1B3 ;DELETE, FORGET, AND EXPUNGE A DIRECTORY
908 ; FILE. (ONLY IF E-CREATE KILL FAILED)
909 020000 000000 DF%ARC==:1B4 ; Delete of archive status file allowed
910 010000 000000 DF%CNO==:1B5 ; Delete only contents of file
911 ; Immediate expunge implied
912
913 777777 DF%JFN==777777B35 ;JFN
914
915
916 ;DIAG JSYS DEFINITIONS
917
918 700000 000000 DG%ADT==:7B2 ;ADDRESS TYPE FIELD
919 077400 000000 DG%DVC==:177B9 ;DEVICE CODE FIELD
920 000130 .DGRH0==:130 ;MBC0
921 000137 .DGRH7==:137 ;MBC7
922 007700 DG%UNI==:77B29 ;UNIT NUMBER
923 000077 DG%SUN==:77B35 ;SUBUNIT NUMBER
924
925 ;DIAG JSYS FUNCTION CODES
926
927 000001 .DGACU==:1 ;ASSIGN DEVICE
928 000002 .DGACH==:2 ;ASSIGN CONTROLLER AND ALL DEVICES
929 000003 .DGRCH==:3 ;RELEASE DEVICE(S)
930 000004 .DGSCP==:4 ;SETUP CHANNEL PROGRAM
931 000005 .DGRCP==:5 ;RELEASE CHANNEL PROGRAM
932 000006 .DGGCS==:6 ;GET CHANNEL STATUS
933
934 ;DIAG NEW CONTROL FUNCTIONS
935
936 000100 .DGGEM==:100 ;LEAVE LARGE HOLE FOR MORE RH20 FUNCTIONS
937 ;GET MEM (FOR TGHA)
938 000101 .DGREM==:101 ;RELEASE MEM (FOR TGHA)
939 000102 .DGPDL==:102 ;UNIT ONLINE
940
941
942 ;DSKAS
943
944 400000 000000 DA%DEA==:1B0 ;DEASSIGN DISK ADDRESS
945 200000 000000 DA%ASF==:1B1 ;ASSIGN FREE PAGE
946 100000 000000 DA%CNV==:1B2 ;CONVERT SOFTWARE TO HARDWARE ADDRESS
947 040000 000000 DA%HWA==:1B3 ;HARDWARE ADDRESS GIVEN
948 020000 000000 DA%INI==:1B4 ;INITIALIZE THE BIT TABLE
949 010000 000000 DA%WRT==:1B5 ;WRITE THE BIT TABLE FILE
950 777777 DA%ADR==:777777B35 ;DISK ADDRESS
951
952
953
954 ;DVCHR, DEVUNT AND DVCH1 BIT DEFINITIONS
955
956 400000 000000 DV%OUT==:1B0 ;DEVICE CAN DO OUTPUT
957 200000 000000 DV%IN==:1B1 ;DEVICE CAN DO INPUT
958 100000 000000 DV%DIR==:1B2 ;DEVICE HAS A DIRECTORY
959 040000 000000 DV%AS==:1B3 ;DEVICE IS ASSIGNABLE
960 020000 000000 DV%MDD==:1B4 ;DEVICE IS A MULTIPLE DIRECTORY DEVICE
961 010000 000000 DV%AV==:1B5 ;DEVICE IS AVAILABLE TO THIS JOB
962 004000 000000 DV%ASN==:1B6 ;DEVICE IS ASSIGNED BY ASND
963 002000 000000 DV%MDV==:1B7 ;RESERVED (HISTORICAL)
964 001000 000000 DV%MNT==:1B8 ;DEVICE IS MOUNTED
965 000777 000000 DV%TYP==:777B17 ;DEVICE TYPE FIELD
966 400000 DV%PSD==:1B18 ;PSEUDO DEVICE
967 077777 DV%UNT==:77777 ;UNIT MASK
968 177777 DV%MOD==:177777B35 ;DEVICE DATA MODE
969 000001 DV%M0==:1B35 ;DEVICE CAN BE OPENED IN MODE 0
970 000002 DV%M1==:1B34 ;DEVICE CAN BE OPENED IN MODE 1
971 000004 DV%M2==:1B33 ;DEVICE CAN BE OPENED IN MODE 2
972 000010 DV%M3==:1B32 ;DEVICE CAN BE OPENED IN MODE 3
973 000020 DV%M4==:1B31 ;DEVICE CAN BE OPENED IN MODE 4
974 000040 DV%M5==:1B30 ;DEVICE CAN BE OPENED IN MODE 5
975 000100 DV%M6==:1B29 ;DEVICE CAN BE OPENED IN MODE 6
976 000200 DV%M7==:1B28 ;DEVICE CAN BE OPENED IN MODE 7
977 000400 DV%M10==:1B27 ;DEVICE CAN BE OPENED IN MODE 10
978 001000 DV%M11==:1B26 ;DEVICE CAN BE OPENED IN MODE 11
979 002000 DV%M12==:1B25 ;DEVICE CAN BE OPENED IN MODE 12
980 004000 DV%M13==:1B24 ;DEVICE CAN BE OPENED IN MODE 13
981 010000 DV%M14==:1B23 ;DEVICE CAN BE OPENED IN MODE 14
982 020000 DV%M15==:1B22 ;DEVICE CAN BE OPENED IN MODE 15
983 040000 DV%M16==:1B21 ;DEVICE CAN BE OPENED IN MODE 16
984 100000 DV%M17==:1B20 ;DEVICE CAN BE OPENED IN MODE 17
985 400000 000000 D1%SPL==:1B0 ;DEVICE IS SPOOLED
986 200000 000000 D1%ALC==:1B1 ;DEVICE IS UNDER CONTROL OF ALLOCATOR
987 100000 000000 D1%VVL==:1B2 ;VOLUME VALID
988 040000 000000 D1%NIU==:1B3 ;DEVICE SLOT IS NOT IN USE (FOR STRUCTURES
989 ; NOT YET MOUNTED)
990 020000 000000 D1%INI==:1B4 ;DEVICE IS BEING INITIALIZED (STRUCTURE
991 ; IS AVAILABLE ONLY TO THE FORK WHOSE NUMBER
992 ; IS STORED IN SDBSTS)
993
994
995
996 ;DEVICE TYPE DEFINITIONS
997
998 000000 .DVDSK==:0 ;DISK
999 000002 .DVMTA==:2 ;MAGTAPE
1000 000003 .DVDTA==:3 ;DECTAPE
1001 000004 .DVPTR==:4 ;PAPER TAPE READER
1002 000005 .DVPTP==:5 ;PAPER TAPE PUNCH
1003 000006 .DVDSP==:6 ;DISPLAY
1004 000007 .DVLPT==:7 ;LINE PRINTER
1005 000010 .DVCDR==:10 ;CARD READER
1006 000011 .DVFE==:11 ;FRONT END DEVICE
1007 000012 .DVTTY==:12 ;TERMINAL
1008 000013 .DVPTY==:13 ;PTY
1009 000015 .DVNUL==:15 ;NULL DEVICE
1010 000016 .DVNET==:16 ;ARPA NETWORK
1011 000017 .DVPLT==:17 ;PLOTTER
1012 000021 .DVCDP==:21 ;CARD PUNCH
1013 000022 .DVDCN==:22 ;DECNET ACTIVE COMPONENT
1014 000023 .DVSRV==:23 ;DECENT PASSIVE COMPONENT
1015 000024 .DVATS==:24 ;APPLICATIONS TERMINAL SERVICE
1016
1017
1018 ;DSKOP
1019
1020 400000 000000 DOP%SA==:1B0 ;SOFTWARE ADDRESS
1021 600000 000000 DOP%AT==:3B1 ;ADDRESS TYPE FIELD
1022 000001 .DOPPU==:1 ;PHYSICAL CHANNEL AND UNIT
1023 174000 000000 DOP%CN==:37B6 ;CHANNEL NUMBER
1024 003740 000000 DOP%UN==:77B12 ;UNIT NUMBER
1025 000037 777777 DOP%UA==:37777777 ;UNIT ADDRESS
1026 000002 .DOPSR==:2 ;STRUCTURE AND RELATIVE ADDRESS
1027 177600 000000 DOP%SN==:777B10 ;STRUCTURE NUMBER
1028 000177 777777 DOP%RA==:177777777 ;RELATIVE ADDRESS
1029 000200 000000 DOP%EO==:1B10 ;ERROR IF UNIT OFFLINE
1030 000100 000000 DOP%IL==:1B11 ;INHIBIT ERROR LOGGING
1031 000040 000000 DOP%IR==:1B12 ;INHIBIT ERROR RECOVERY
1032 000010 000000 DOP%WR==:1B14 ;WRITE
1033 777777 DOP%CT==:777777B35 ;WORD COUNT
1034
1035
1036 ;DUMPI/DUMPO
1037
1038 400000 000000 DM%NWT==:1B0 ;NO WAIT FOR COMPLETION
1039 200000 000000 DM%FIN==:1B1 ;FINISH PREVIOUS REQUEST
1040 ;***NOT INPLEMENTED YET***
1041 777777 DM%PTR==:777777B35 ;POINTER TO COMMAND LIST
1042
1043
1044
1045 ;DEFINE DECNET DISCONNECT CODES. THESE ARE STIPULATED BY THE NSP SPEC
1046 ;AND MAY HAVE MEANININGS NOT IMPLIED BY THE COMMENTS
1047
1048 000000 .DCX0==:0 ;NO SPECIAL ERROR
1049 000001 .DCX1==:1 ;RESOURCE ALLOCATION FAILURE
1050 000002 .DCX2==:2 ;DESTINATION NODE DOES NOT EXIST
1051 000003 .DCX3==:3 ;NODE SHUTTING DOWN
1052 000004 .DCX4==:4 ;DESTINATION PROCESS DOES NOT EXIST
1053 000005 .DCX5==:5 ;INVALID NAME FIELD
1054 000006 .DCX6==:6 ;DESTINATION PROCESS QUEUE OVERFLOW
1055 000007 .DCX7==:7 ;UNSPECIFIED ERROR
1056 000010 .DCX8==:D8 ;THIRD PARTY ABORTED LINK
1057 000011 .DCX9==:D9 ;USER ABORT (ASYNCHRONOUS DISCONNECT)
1058 000013 .DCX11==:D11 ;UNDEFINED ERROR CODE
1059 000025 .DCX21==:D21 ;CI WITH ILLEGAL DESTINATION ADDRESS
1060 000026 .DCX22==:D22 ;CC WITH ILLEGAL DESTINATION ADDRESS
1061 000027 .DCX23==:D23 ;CI OR CC WITH ZERO SOURCE ADDRESS
1062 000030 .DCX24==:D24 ;FLOW CONTROL VIOLATION
1063 000040 .DCX32==:D32 ;TOO MANY CONNECTIONS TO NODE
1064 000041 .DCX33==:D33 ;TOO MANY CONNECTIONS TO DEST. PROCESS
1065 000042 .DCX34==:D34 ;ACCESS NOT PERMITTED
1066 000043 .DCX35==:D35 ;LOGICAL LINK SERVICES MISMATCH
1067 000044 .DCX36==:D36 ;INVALID ACCOUNT
1068 000045 .DCX37==:D37 ;SEGSIZE TOO SMALL
1069 000046 .DCX38==:D38 ;PROCESS ABORTED
1070 000047 .DCX39==:D39 ;NO PATH TO DESTINATION NODE
1071 000050 .DCX40==:D40 ;LINK ABORTED DUE TO DATA LOSS
1072 000051 .DCX41==:D41 ;DESTINATION PROCESS DOES NOT EXIST
1073 000052 .DCX42==:D42 ;CONFIRMATION IF DI
1074 000053 .DCX43==:D43 ;IMAGE DATA FIELD TOO LONG
1075
1076
1077 ;EFACT - FACT FILE ENTRY DEFINITIONS
1078
1079 000000 .EFHDR==:0 ;HEADER WORD
1080 777000 000000 EF%COD==:777B8 ;ENTRY TYPE CODE
1081 000777 000000 EF%JOB==:777B17 ;JOB NUMBER
1082 777700 EF%LIN==:7777B29 ;LINE NUMBER
1083 000077 EF%SIZ==:77B35 ;ENTRY SIZE
1084 000001 .EFUSR==:1 ;USER NUMBER WORD
1085 000002 .EFTAD==:2 ;TIME AND DATE OF ENTRY
1086
1087 ; FACT FILE ENTRY TYPE CODES
1088
1089 000501 .EFLGI==:501 ;LOGIN
1090 000141 .EFLGO==:141 ;LOGOUT
1091 000502 .EFCAC==:502 ;CHANGE ACCOUNT
1092 000142 .EFATT==:142 ;CONSOLE ATTACH
1093 000143 .EFDET==:143 ;CONSOLE DETACH
1094 000201 .EFCHK==:201 ;CHECKPOINT
1095 000540 .EFSDU==:540 ;START DISK-UTILIZATION ENTRIES
1096 000601 .EFDSK==:601 ;DISK SPACE UTILIZATION
1097 000741 .EFTIM==:741 ;TIME SET
1098 000740 .EFRES==:740 ;SYSTEM RESTARTED
1099 000401 .EFLPT==:401 ;LINE PRINTER USAGE
1100 000402 .EFCDR==:402 ;CARD READER USAGE
1101
1102
1103 ;ENQ/DEQ BIT DEFINITIONS AND FUNCTION CODES
1104
1105 ;FUNCTION CODES
1106
1107 000000 .ENQBL==:0 ;ENQ BLOCK OPTION
1108 000001 .ENQAA==:1 ;ENQ ALLOCATE ONLY IF AVAILABLE
1109 000002 .ENQSI==:2 ;ENQ SOFTWARE INTERRUPT WHEN LOCKED
1110 000003 .ENQMA==:3 ;ENQ MODIFY ACCESS
1111 000000 .DEQDR==:0 ;DEQ RESOURCE
1112 000001 .DEQDA==:1 ;DEQ ALL RESOURCES OF THIS FORK
1113 000002 .DEQID==:2 ;DEQ THIS ID NUMBER
1114 000000 .ENQCS==:0 ;ENQC STATUS
1115 000001 .ENQCG==:1 ;ENQC GET ENQ/DEQ QUOTA FOR A JOB
1116 000002 .ENQCC==:2 ;ENQC CHANGE ENQ/DEQ QUOTA FOR A JOB
1117 000003 .ENQCD==:3 ;ENQC DUMP LOCKS AND QUEUE ENTRIES
1118
1119
1120
1121 ;BIT DEFINITIONS
1122
1123 400000 000000 EN%SHR==:1B0 ;SHARABLE REQUEST
1124 200000 000000 EN%BLN==:1B1 ;BYPASS LEVEL NUMBER
1125 100000 000000 EN%NST==:1B2 ;ALLOW NESTING
1126 040000 000000 EN%LTL==:1B3 ;LONG TERM LOCK
1127 000777 000000 EN%LVL==:777B17 ;LEVEL NUMBER
1128 777777 EN%JOB==:777777B35 ;JOB NUMBER
1129 400000 000000 EN%QCE==:1B0 ;ERROR CODE IN RH OF STATUS WORD
1130 400000 000000 EN%QCL==:1B0 ;LOCK DUMP (.ENQCD ONLY)
1131 200000 000000 EN%QCO==:1B1 ;THIS FORK OWNS THE LOCK
1132 100000 000000 EN%QCQ==:1B2 ;THIS FORK IS IN THE QUEUE FOR THIS LOCK
1133 100000 000000 EN%QCT==:1B2 ;LOCK CONTAINS A TEXT STRING
1134 040000 000000 EN%QCX==:1B3 ;THE LOCK IS LOCKED EXCLUSIVELY
1135 020000 000000 EN%QCB==:1B4 ;USER IS BLOCKED FOR LOCK
1136
1137
1138 ;ENQ/DEQ ARGUMENT BLOCK DATA STRUCTURE
1139
1140 000000 .ENQLN==:0 ;# OF LOCKS ,, LENGTH OF ARGUMENT BLOCK
1141 770000 000000 .ENHLN==:77B5 ;LENGTH OF HEADER AREA
1142 007777 000000 .ENNLK==:7777B17 ;NUMBER OF LOCKS
1143 777777 .ENALN==:777777B35 ;LENGTH OF ARGUMENT BLOCK
1144 000001 .ENQID==:1 ;PSI CHANNEL # ,, REQUEST ID
1145 000002 .ENQLV==:2 ;FLAGS LEVEL NUMBER ,, JFN, -1, -2, OR -3
1146 000003 .ENQUC==:3 ;STRING POINTER OR USER CODE
1147 000004 .ENQRS==:4 ;# OF RESOURCES IN POOL ,, # OF RESOURCES WANTED
1148 000005 .ENQMS==:5 ;ADDRESS OF RESOURCE BLOCK
1149
1150
1151
1152 ;ENQC DUMP DATA STRUCTURE
1153
1154 000000 .ENQDF==:0 ;FLAGS + LEVEL # ,, OFN, 400000+JOB #, -2, OR -3
1155 ;OR: FLAGS + PSI # ,, JOB # OF Q-ENTRY CREATOR
1156
1157 000001 .ENQDR==:1 ;TOTAL RESOURCES IN POOL ,, RESOURCES REMAINING
1158 000002 .ENQDT==:2 ;TIME STAMP OF LAST REQUEST LOCKED
1159 000003 .ENQDC==:3 ;USER CODE OF LOCK OR START OF TEXT STRING
1160
1161 000001 .ENQDI==:1 ;GROUP # OR # REQUESTED ,, ENQ ID
1162
1163
1164 ;FLOUT/DFOUT
1165 ;FORMAT CONTROL WORD
1166
1167 600000 000000 FL%SGN==:3B1 ;FIRST FIELD SIGN CONTROL
1168 000000 .FLDIG==:0 ;DIGIT
1169 000001 .FLSPC==:1 ;SPACE
1170 000002 .FLPLS==:2 ;PLUS SIGN
1171 000003 .FLSPA==:3 ;SPACE
1172 140000 000000 FL%JUS==:3B3 ;FIRST FIELD JUSTIFICATION CONTROL
1173 000000 .FLLSP==:0 ;LEADING SPACES
1174 000001 .FLLZR==:1 ;LEADING ZEROS
1175 000002 .FLLAS==:2 ;LEADING ASTERISKS
1176 000003 .FLTSP==:3 ;TRAILING SPACES
1177 020000 000000 FL%ONE==:1B4 ;FIRST FIELD NONBLANK
1178 010000 000000 FL%DOL==:1B5 ;DOLLAR SIGN PREFIX
1179 004000 000000 FL%PNT==:1B6 ;DECIMAL POINT
1180 003000 000000 FL%EXP==:3B8 ;THIRD FIELD EXPONENT CONTROL
1181 000000 .FLEXN==:0 ;NO EXPONENT
1182 000001 .FLEXE==:1 ;E EXPONENT PREFIX
1183 000002 .FLEXD==:2 ;D EXPONENT PREFIX
1184 000003 .FLEXM==:3 ;*10 EXPONENT PREFIX
1185 000600 000000 FL%ESG==:3B10 ;EXPONENT SIGN CONTROL
1186 000000 .FLDGE==:0 ;DIGIT
1187 000001 .FLPLE==:1 ;PLUS SIGN
1188 000002 .FLSPE==:2 ;SPACE
1189 000003 .FLDGT==:3 ;DIGIT
1190 000100 000000 FL%OVL==:1B11 ;COLUMN OVERFLOW
1191 000037 000000 FL%RND==:37B17 ;DIGIT POSITION FOR ROUNDING
1192 770000 FL%FST==:77B23 ;FIRST FIELD WIDTH
1193 007700 FL%SND==:77B29 ;SECOND FIELD WIDTH
1194 000077 FL%THD==:77B35 ;THIRD FIELD WIDTH
1195
1196
1197
1198 ;GDSTS
1199
1200 ;SEE MTOPR FOR CARD READER AND LINE PRINTER STATUS BITS
1201 ;SEE GENERAL FIELD AND VALUE SECTION FOR MAGTAPE STATUS BITS
1202 ;SEE TOPS20AN SECTION FOR NETWORK STATUS BITS
1203
1204 740000 000000 .GDFSM==:17B3 ;TOPS20AN ;FINITE MACHINE STATE
1205
1206
1207 ;GET
1208
1209 200000 GT%ADR==:1B19 ;USE ADDRESS LIMITS IN AC2
1210 100000 GT%PRL==:1B20 ;PRELOAD PAGES
1211 040000 GT%NOV==:1B21 ;DON'T OVERLAY EXISTING PAGES
1212 020000 GT%FL2==:1B22 ;IF ON, AC3 CONTAINS FLAGS
1213 400000 000000 G2%FCH==:1B0 ;MAKE FAST-CACHE ENTRY
1214
1215
1216
1217 ;GETAB - TABLE INDICES
1218
1219 000000 .JOBTT==:0 ;JOB NUMBER TO TTY NUMBER
1220 000001 .JOBRT==:1 ;JOB RUNTIME
1221 000002 .TICKP==:2 ;TICKS PER SECOND
1222 000003 .JOBDI==:3 ;JOB NUMBER TO DIRECTORY NUMBERS (OBS)
1223 000004 .TTYJO==:4 ;TTY NUMBER TO JOB NUMBER
1224 000005 .NCPGS==:5 ;NUMBER PHYSICAL CORE PAGES
1225 000006 .DEVNA==:6 ;DEVICE NAME
1226 000007 .DEVCH==:7 ;DEVICE CHARACTERISTICS
1227 000010 .DEVUN==:10 ;DEVICE UNIT NUMBERS
1228 000011 .DSKER==:11 ;DISK ERROR WORDS
1229 000012 .DRMER==:12 ;DRUM ERROR WORDS
1230 000013 .SYSVE==:13 ;VERSION TEXT
1231 000014 .SYSTA==:14 ;STATISTICS
1232 000015 .QTIME==:15 ;SCHED QUEUE TIMES
1233 000016 .JOBNA==:16 ;JOB NUMBER TO PROGRAM NAME
1234 000017 .SNAME==:17 ;SUBSYSTEM NAME
1235 000020 .STIME==:20 ; " TIME
1236 000021 .SPFLT==:21 ; " PAGE FAULTS
1237 000022 .SSIZE==:22 ; " SIZE INTEGRAL
1238 000023 .SNBLK==:23 ; " NUMBER WAKEUPS
1239 000024 .DBUGS==:24 ;DBUGSW, DCHKSW
1240 000025 .LOGDE==:25 ;LOG, JOB 0 DESIGNATORS
1241 000026 .PTYPA==:26 ;PTY PARAMETERS
1242 000027 .SYMTA==:27 ;GTTAB SYMBOL TABLE
1243 000030 .DWNTI==:30 ;HSYS VARIABLES
1244 000031 .JOBPN==:31 ;JOB NUMBER TO PROGRAM NAME
1245 000032 .BLDTD==:32 ;MONITOR BUILD TIME AND DATE
1246 000033 .LSTDR==:33 ;LAST DIR NUMBER ASSIGNED (OBS)
1247 000034 .APRID==:34 ;APR SERIAL NUMBER
1248 000035 .HQLAV==:35 ;HIGH QUEUE LOAD AVERAGES
1249 000036 .LQLAV==:36 ;LOW QUEUE LOAD AVERAGES
1250 000037 .NETRD==:37 ;TOPS20AN ;ARPANET STATUS
1251 000040 .IMPHR==:40 ;TOPS20AN ;HOST READY
1252 000041 .HSTST==:41 ;TOPS20AN ;DEAD HOST STATUS
1253 000042 .HSTNA==:42 ;TOPS20AN ;HOST NAMES
1254 000043 .HOSTN==:43 ;TOPS20AN ;HOST NAME INDEX
1255 000044 .NETLS==:44 ;TOPS20AN ;LOCAL SOCKET
1256 000045 .NETFS==:45 ;TOPS20AN ;FOREIGN SOCKET
1257 000046 .NETAW==:46 ;TOPS20AN ;ARPA CONNECTION ADDRESS
1258 000047 .NETBA==:47 ;TOPS20AN ;BIT ALLOCATION
1259 000050 .NETST==:50 ;TOPS20AN ;CONNECTION STATUS
1260 000051 .NETBU==:51 ;TOPS20AN ;ARPANET BUFFERS
1261 000052 .NETBT==:52 ;TOPS20AN ;BYTE COUNT STATISTICS
1262 000053 .IMPL1==:53 ;TOPS20AN ;IMP LINK TABLE ONE
1263 000054 .IMPL2==:54 ;TOPS20AN ;IMP LINK TABLE TWO
1264 000055 .IMPL3==:55 ;TOPS20AN ;IMP LINK TABLE THREE
1265 000056 .IMPL4==:56 ;TOPS20AN ;IMP LINK TABLE FOUR
1266 000057 .LHOST==:57 ;TOPS20AN ;LOCAL HOST NUMBER
1267 000060 .JBONT==:60 ;OWNING JOB
1268 000061 .NSWPG==:61 ;DEFAULT SWAPPING PAGES
1269
1270
1271
1272 ;GETJI
1273
1274 000000 .JIJNO==:0 ;JOB NUMBER
1275 000001 .JITNO==:1 ;TERMINAL NUMBER
1276 000002 .JIUNO==:2 ;USER NUMBER
1277 000003 .JIDNO==:3 ;DIRECTORY NUMBER
1278 000004 .JISNM==:4 ;SUBSYS NAME
1279 000005 .JIPNM==:5 ;PROGRAM NAME
1280 000006 .JIRT==:6 ;RUN TIME
1281 000007 .JICPJ==:7 ;CONTROLLING PTY JOB NUMBER
1282 000010 .JIRTL==:10 ;RUN TIME LIMIT (SET BY TIMER JSYS)
1283 000011 .JIBAT==:11 ;CONTROLLED BY BATCH
1284 000012 .JIDEN==:12 ;MAGTAPE DEFAULT DENSITY
1285 000013 .JIPAR==:13 ;MAGTAPE DEFAULT PARITY
1286 000014 .JIDM==:14 ;MAGTAPE DEFAULT DATA MODE
1287 000015 .JIRS==:15 ;MAGTAPE DEFAULT RECORD SIZE
1288 000016 .JIDFS==:16 ;DEFERRED SPOOLING
1289 000017 .JILNO==:17 ;LOGGED-IN DIRECTORY NUMBER
1290 000020 .JISRM==:20 ;POINTER TO JOB SESSION REMARK
1291 000021 .JILLN==:21 ;LAST LOGIN DATE TIME
1292 000022 .JISRT==:22 ;JOB RUNTIME AT START OF THIS ACCOUNTING SESSION
1293 000023 .JISCT==:23 ;JOB CONSOLE TIME AT START OF THIS SESSION
1294 000024 .JIT20==:24 ;-1 IF AT TOPS20 COMMAND LEVEL
1295 000025 .JISTM==:25 ;DATE TIME JOB WAS INITIALIZED
1296 000026 .JIBCH==:26 ;BATCH STREAM AND FLAGS
1297 600000 000000 OB%WTO==3B1 ;WRITE TO OPERATOR CAPABILITIES
1298 000000 .OBALL==0 ;WTO AND WTOR ALLOWED
1299 000001 .OBNWR==1 ;NO WTOR ALLOWED
1300 000002 .OBNOM==2 ;NO MESSAGE ALLOWED
1301 000177 000000 OB%BSN==177B17 ;BATCH-STREAM NUMBER
1302 000027 .JILLO==:27 ;LOGICAL LOCATION (NODE NAME)
1303
1304 000027 .JIMAX==:.JILLO ;CURRENT HIGHEST GETJI OFFSET
1305
1306
1307 ;GFRKS
1308
1309 400000 000000 GF%GFH==:1B0 ;GET RELATIVE FORK HANDLES
1310 200000 000000 GF%GFS==:1B1 ;GET FORK STATUS
1311
1312
1313 ;GFUST
1314
1315 000000 .GFAUT==:0 ;GET FILE AUTHOR
1316 000001 .GFLWR==:1 ;GET FILE LAST WRITER
1317
1318 ;GTHST ;TOPS20AN
1319
1320 000000 .GTHSZ==:0 ;HOST TABLE SIZES
1321 000001 .GTHIX==:1 ;INDEX TO STRING CONVERSION
1322 000002 .GTHNS==:2 ;NUMBER TO STRING CONVERSION
1323 000003 .GTHSN==:3 ;STRING TO NUMBER CONVERSION
1324 000004 .GTHHN==:4 ;HOST NUMBER TO STATUS
1325 000005 .GTHHI==:5 ;HOST INDEX TO STATUS
1326
1327 ;GETOK DEFINITIONS
1328 000001 .GOASD==:1 ;ASSIGN DEVICE
1329 000000 .GEERB==:0 ;ERROR BLOCK ADDRESS
1330 000001 .GEADD==:1 ;DEVICE DESIGNATOR
1331 000002 .GOCAP==:2 ;ENABLE CAPABILITIES
1332 000001 .GENCP==:1 ;NEW CAPABILITIES
1333 000003 .GOCJB==:3 ;ALLOW CRJOB JSYS
1334 000004 .GOLOG==:4 ;ALLOW LOGINS
1335 000001 .GELUN==:1 ;USER NUMBER
1336 000005 .GOCFK==:5 ;ALLOW CFORK JSYS
1337 000001 .GEFCT==:1 ;NUMBER OF FORKS
1338 000006 .GOTBR==:6 ;ALLOW SET TERMINAL BAUD RATE
1339 000001 .GELIN==:1 ;LINE NUMBER
1340 000002 .GESPD==:2 ;SPEED
1341 000007 .GOLGO==:7 ;ALLOW LOGOUT
1342 000001 .GEUSD==:1 ;PAGES USED
1343 000002 .GEQUO==:2 ;QUOTA
1344 000003 .GERLG==:3 ;USER REQUESTING LOGOUT
1345 000010 .GOENQ==:10 ;ALLOW SET ENQ QUOTA
1346 000001 .GEEQU==:1 ;DESIRED QUOTA
1347 000002 .GEEUN==:2 ;JOB NUMBER
1348 000011 .GOCRD==:11 ;ALLOW CREDIR
1349 000012 .GOSMT==:12 ;ALLOW SMOUNT
1350 000001 .GESDE==:1 ;DEVICE DESIGNATOR
1351
1352 000013 .GOMDD==:13 ;ALLOW MDDT ENTRY
1353 000014 .GOCLS==:14 ;VERIFY CLASS ASSIGNMENT FOR A JOB
1354 000001 .GEJOB==:1 ;JOB #
1355 000002 .GECLS==:2 ;CLASS DESIRED
1356 000015 .GOCL0==:15 ;SET CLASS AT LOGIN
1357 000016 .GOMTA==:16 ;MT ACCESS REQUEST
1358
1359 000001 .GEACC==:1 ;ACCESS CODE FROM HDR1
1360 000002 .GEUSN==:2 ;USER NUMBER
1361 000003 .GEUNT==:3 ;MT UNIT NUMBER
1362 000004 .GEACD==:4 ;DESIRED ACCESS (BITS)
1363 000005 .GELTP==:5 ;LABEL TYPE
1364
1365
1366 000024 .GOKMZ==:D20 ;MAX ARGUMENT BLOCK SIZE FOR GETOK REQUEST
1367 ;ERROR BLOCK ADDRESS OFFSETS
1368
1369 000000 .GESIZ==:0 ;SIZE OF THIS BLOCK
1370 000001 .GEERN==:1 ;ERROR NUMBER
1371 000002 .GEPTR==:2 ;POINTER TO ERROR STRING
1372 000003 .GEBSZ==:3 ;STRING SIZE
1373
1374 ;GTJFN DEFINITIONS
1375
1376 ;FLAGS PROVIDED TO GTJFN ON CALL
1377
1378 400000 000000 GJ%FOU==:1B0 ;FILE IS FOR OUTPUT USE
1379 200000 000000 GJ%NEW==:1B1 ;NEW FILE ONLY
1380 100000 000000 GJ%OLD==:1B2 ;OLD FILE ONLY
1381 040000 000000 GJ%MSG==:1B3 ;PRINT AN APPROPRIATE MESSAGE
1382 020000 000000 GJ%CFM==:1B4 ;CONFIRMATION IS REQUIRED
1383 010000 000000 GJ%TMP==:1B5 ;TEMPORARY
1384 004000 000000 GJ%NS==:1B6 ;DONT SEARCH SEARCH LISTS
1385 002000 000000 GJ%ACC==:1B7 ;NO ACCESS BY OTHER FORKS
1386 001000 000000 GJ%DEL==:1B8 ;IGNORE "DELETED" BIT
1387 000600 000000 GJ%JFN==:3B10 ;JFN USE FIELD
1388 000000 .GJDNU==:0 ;DO NOT USE JFN PROVIDED
1389 000002 .GJERR==:2 ;ERROR IF CANNOT USE JFN PROVIDED
1390 000003 .GJALT==:3 ;USE ALTERNATE IF CANNOT USE GIVEN JFN
1391 000100 000000 GJ%IFG==:1B11 ;ACCEPT INPUT FILE GROUP DESCRIPTORS
1393 000020 000000 GJ%FLG==:1B13 ;RETURN FLAGS
1394 000010 000000 GJ%PHY==:1B14 ;PHYSICAL DEVICE ONLY
1395 000004 000000 GJ%XTN==:1B15 ;EXTENDED FORMAT (E+11 EXISTS)
1396 000002 000000 GJ%FNS==:1B16 ;ACCUMULATOR 2 CONTAINS JOB FILE NUMBERS
1397 000001 000000 GJ%SHT==:1B17 ;SHORT CALL FORMAT
1398
1399 ;FLAGS PROVIDED TO GTJFN (IN SECOND FLAG WORD)
1400
1401 400000 000000 G1%RND==:1B0 ;RETURN ON NULL(IN ALTERNATE FLAG WORD)
1402 200000 000000 G1%RBF==:1B1 ;R BUFFER IS DISJOINT (OBSOLETE)
1403 100000 000000 G1%NLN==:1B2 ;NO LONG NAMES
1404 040000 000000 G1%RCM==:1B3 ;RETURN CONFIRM MESSAGE
1405 020000 000000 G1%RIE==:1B4 ;RETURN WHEN MAIN STRING IS EMPTY
1406 010000 000000 G1%IIN==:1B5 ; Ignore invisible status
1407
1408
1409
1410 ;FLAGS RETURNED BY GTJFN
1411
1412 400000 000000 GJ%DEV==:1B0 ;ASTERISK WAS GIVEN FOR DEVICE
1413 200000 000000 GJ%UNT==:1B1 ;ASTERISK WAS GIVEN FOR UNIT
1414 100000 000000 GJ%DIR==:1B2 ;ASTERISK WAS GIVEN FOR DIRECTORY
1415 040000 000000 GJ%NAM==:1B3 ;ASTERISK WAS GIVEN FOR NAME
1416 020000 000000 GJ%EXT==:1B4 ;ASTERISK WAS GIVEN FOR EXTENSION
1417 010000 000000 GJ%VER==:1B5 ;ASTERISK WAS GIVEN FOR GENERATION
1418 004000 000000 GJ%UHV==:1B6 ;USE HIGHEST GENERATION
1419 002000 000000 GJ%NHV==:1B7 ;USE NEXT HIGHER GENERATION
1420 001000 000000 GJ%ULV==:1B8 ;USE LOWEST GENERATION
1421 000400 000000 GJ%PRO==:1B9 ;PROTECTION GIVEN
1422 000200 000000 GJ%ACT==:1B10 ;ACCOUNT GIVEN
1423 000100 000000 GJ%TFS==:1B11 ;TEMPORARY FILE SPECIFIED (;T)
1424 000040 000000 GJ%GND==:1B12 ;COMPLEMENT OF GJ%DEL ON CALL
1425 000001 000000 GJ%GIV==:1B17 ; Comp of G1%IIV
1426
1427 ;GTJFN TABLE OFFSETS
1428
1429 000000 .GJGEN==:0 ;FLAGS ,, GENERATION
1430 000000 .GJDEF==:<Z 0 ;DEFAULT GENERATION
1431 777777 .GJNHG==:<Z -1 ;NEXT HIGHER GENERATION
1432 777776 .GJLEG==:<Z -2 ;LOWEST EXISTING GENERATION
1433 777775 .GJALL==:<Z -3 ;ALL GENERATIONS (I.E., ;*)
1434 000001 .GJSRC==:1 ;SOURCE JFN ,, OUTPUT JFN
1435 000002 .GJDEV==:2 ;DEFAULT DEVICE
1436 000003 .GJDIR==:3 ;DEFAULT DIRECTORY
1437 000004 .GJNAM==:4 ;DEFAULT NAME
1438 000005 .GJEXT==:5 ;DEFAULT EXTENSTION
1439 000006 .GJPRO==:6 ;DEFAULT PROTECTION
1440 000007 .GJACT==:7 ;DEFAULT ACCOUNT
1441 000010 .GJJFN==:10 ;DESIRED JFN
1442 000011 .GJF2==:11 ;SECOND GROUP FLAGS,,COUNT
1443 000012 .GJCPP==:12 ;COPY BUFFER POINTER
1444 000013 .GJCPC==:13 ;COPY BUFFER COUNT
1445 000014 .GJRTY==:14 ;RETYPE (R) POINTER
1447 000016 .GJATR==:16 ;POINTER TO ARBITRARY ATTRIBUTE BLOCK
1448
1449 ;GNJFN - FLAGS RETURNED
1450
1451 000020 000000 GN%STR==:1B13 ;STRUCTURE CHANGED
1452 000010 000000 GN%DIR==:1B14 ;DIRECTORY CHANGED
1453 000004 000000 GN%NAM==:1B15 ;NAME CHANGED
1454 000002 000000 GN%EXT==:1B16 ;EXTENSION CHANGED
1455
1456 ;GTNCP ;TOPS20AN
1457
1458 000000 .GTNSZ==:0 ;SIZE OF TABLE
1459 000001 .GTNIX==:1 ;NCP INDEX
1460 000002 .GTNNI==:2 ;NVT INPUT
1461 000003 .GTNNO==:3 ;NVT OUTPUT
1462 000004 .GTNJF==:4 ;JFN
1463
1464 000000 .NCIDX==:0 ;NCP INDEX
1465 000001 .NCFHS==:1 ;FOREIGN HOST
1466 000002 .NCLSK==:2 ;LOCAL SOCKET
1467 000003 .NCFSK==:3 ;FOREIGN SOCKET
1468 000004 .NCFSM==:4 ;FINITE STATE MACHINE STATE
1469 000005 .NCLNK==:5 ;LINK
1470 000006 .NCNVT==:6 ;NVT, -1 IF NOT A TELNET CONNECTION
1471 000007 .NCSIZ==:7 ;BYTE SIZE OF CONNECTION
1472 000010 .NCMSG==:10 ;MSG ALLOC
1473 000011 .NCBAL==:11 ;BIT ALLOC
1474 000012 .NCDAL==:12 ;DESIRED ALLOC
1475 000013 .NCBTC==:13 ;BITS XFERRED
1476 000014 .NCBPB==:14 ;BYTES/BUFFER
1477 000015 .NCCLK==:15 ;TIME-OUT COUNTDOWN
1478 000016 .NCSTS==:16 ;CONNECTION STATUS
1479
1480
1481 ;GTRPW
1482
1483 400000 000000 PF%USR==:1B0 ;PAGE FAIL WORD - USER MODE REFERENCE
1484 010000 000000 PF%WRT==:1B5 ; " - WRITE REFERENCE
1485 000010 000000 TSW%RD==:1B14 ;TRAP STATUS WORD - READ
1486 000004 000000 TSW%WT==:1B15 ; " - WRITE
1487 000004 000000 TSW%WR==:1B15 ; (ANOTHER NAME FOR ABOVE)
1488 000002 000000 TSW%EX==:1B16 ; " - EXECUTE
1489 000001 000000 TSW%MN==:1B17 ; " - MONITOR MODE REFERENCE
1490
1491
1492 ;GTSTS BITS RETURNED IN 2
1493
1494 400000 000000 GS%OPN==:1B0 ;FILE IS OPEN
1495 200000 000000 GS%RDF==:1B1 ;IF OPEN, FILE IS OPEN FOR READ
1496 100000 000000 GS%WRF==:1B2 ;IF OPEN, FILE IS OPEN FOR WRITE
1497 040000 000000 GS%XCF==:1B3 ;IF OPEN, FILE IS OPEN FOR EXECUTE
1498 020000 000000 GS%RND==:1B4 ;OK TO RESET BYTE POINTER
1499 ; (FILE IS NOT APPEND)
1501 ; (NOT IMPLEMENTED -- OBSOLETE)
1502 004000 000000 GS%CAL==:1B6 ;OK TO CALL AS A PROCEDURE
1503 ; (NOT IMPLEMENTED -- OBSOLETE)
1504 002000 000000 GS%LNG==:1B7 ;FILE IS LONG
1505 001000 000000 GS%EOF==:1B8 ;AT END OF FILE ON READ
1506 000400 000000 GS%ERR==:1B9 ;FILE MAY BE IN ERROR
1507 000200 000000 GS%NAM==:1B10 ;FILE HAS A NAME (JFN EXISTS)
1508 000100 000000 GS%AST==:1B11 ;ONE OR MORE FIELDS OF NAME
1509 ; IS WILD
1510 000040 000000 GS%ASG==:1B12 ;JFN IS BEING ASSIGNED
1511 000020 000000 GS%HLT==:1B13 ;TERMINATE ON I/O ERROR
1512 000001 000000 GS%FRK==:1B17 ;FILE IS RESTRICTED TO SOME FORK
1513 000017 GS%MOD==:17B35 ;DATA MODE
1514 000000 .GSNRM==:0 ;NORMAL MODE
1515 000010 .GSIMG==:10 ;IMAGE (BINARY) MODE
1516 000017 .GSDMP==:17 ;DUMP MODE
1517
1518
1519
1520 ;HPTIM
1521
1522 000000 .HPELP==:0 ;ELAPSED TIME
1523 000001 .HPRNT==:1 ;RUN TIME
1524
1525
1526 ;IDCNV (ALSO IDTNC AND ODCNV)
1527
1528 400000 000000 IC%DSA==:1B0 ;DAYLIGHT SAVINGS IF APPROPRIATE
1529 200000 000000 IC%ADS==:1B1 ;APPLY DAYLIGHT SAVINGS
1530 100000 000000 IC%UTZ==:1B2 ;USE TIME ZONE GIVEN
1531 040000 000000 IC%JUD==:1B3 ;USE JULIAN DATE CONVERSION
1532 000077 000000 IC%TMZ==:77B17 ;TIME ZONE
1533 777777 IC%TIM==777777B35 ;LOCAL TIME
1534
1535
1536 ;IDTIM IDTNC
1537
1538 400000 000000 IT%NDA==:1B0 ;NO DATE
1539 200000 000000 IT%NNM==:1B1 ;NO NUMERIC MONTH
1540 100000 000000 IT%SNM==:1B2 ;SECOND NUMBER IS MONTH
1541 040000 000000 IT%ERR==:1B3 ;ERROR IF NUMBERS ARE NOT IN SPECIFIED
1542 ; ORDER
1543 004000 000000 IT%NTI==:1B6 ;NO TIME
1544 002000 000000 IT%NIS==:1B7 ;NO SECONDS
1545 001000 000000 IT%AIS==:1B8 ;ALWAYS INCLUDE SECONDS
1546 000400 000000 IT%NAC==:1B9 ;NO COLON ALLOWED BETWEEN HH AND MM
1547 000200 000000 IT%AAC==:1B10 ;ALWAYS ALLOW COLON
1548 000100 000000 IT%AMS==:1B11 ;ALWAYS INTERPRET ONE COLON AS HHMM:SS
1549 000040 000000 IT%AHM==:1B12 ;ALWAYS INTERPRET ONE COLON AS HH:MM
1550 000010 000000 IT%N24==:1B14 ;NO 24-HOUR FORMAT
1551 000004 000000 IT%NTM==:1B15 ;NO TIME MODIFIER (AM, PM)
1552 000002 000000 IT%NTZ==:1B16 ;NO TIME ZONE
1553
1555 ;.IMOPR - MONITOR ROUTINE USED BY MDDT AND SNOOP. THIS IS NOT
1556 ;A JSYS SO THAT CALLS ARE FAST.
1557
1558 000001 .IMALC==:1 ;ALLOCATE PAGES FOR USE IN MAPPING SYMBOLS
1559 000002 .IMMAP==:2 ;MAP PAGES OF THE SYMBOL TABLE
1560 000003 .IMUMP==:3 ;UNMAP PAGES OF THE SYMBOL TABLE
1561
1562
1563 ;INLNM
1564
1565 000000 .INLJB==:0 ;GET JOB WIDE LOGICAL NAME FROM INDEX
1566 000001 .INLSY==:1 ;GET SYSTEM LOGICAL NAME FROM INDEX
1567
1568 ;IPCF BIT DEFINITIONS AND DATA STRUCTURES
1569
1570 ;PACKET FORMAT
1571
1572 000000 .IPCFL==:0 ;FLAGS WORD
1573 400000 000000 IP%CFB==:1B0 ;DON'T BLOCK READ
1574 200000 000000 IP%CFS==:1B1 ;INDIRECT SENDER'S PID
1575 100000 000000 IP%CFR==:1B2 ;INDIRECT RECEIVER'S PID
1576 040000 000000 IP%CFO==:1B3 ;OVERDRAW SEND
1577 020000 000000 IP%TTL==:1B4 ;TRUNCATE ON TOO LARGE MESSAGE
1578 010000 000000 IP%CPD==:1B5 ;CREATE A PID ON THE SEND
1579 004000 000000 IP%JWP==:1B6 ;MAKE THE CREATED PID BE JOB WIDE
1580 002000 000000 IP%NOA==:1B7 ;NO ACCESS OF PID BY OTHER FORKS
1581 400000 IP%CFP==:1B18 ;SENDER IS PRIV'D AND IS ENVOKING PRIVS
1582 200000 IP%CFV==:1B19 ;PAGE TRANSFER MODE
1583 100000 IP%CFZ==:1B20 ;ZERO LENGTH MESSAGE WAS SENT
1584 040000 IP%INT==:1B21 ; Internal call - unavailable to users
1585 007700 IP%CFE==:77B29 ;ERROR FIELD
1586
1587 ;ERRORS SENT BY INFO
1588
1589 000015 .IPCPI==:15 ;INSUFFICIENT PRIVILEGE
1590 000016 .IPCUF==:16 ;ILLEGAL FUNCTION
1591 000067 .IPCSN==:67 ;SEND INFO YOUR NAME
1592 000072 .IPCFF==:72 ;INFO FREE SPACE EXHAUSTED
1593 000074 .IPCBP==:74 ;PID HAS NO NAME OR IS ILLEGAL
1594 000075 .IPCDN==:75 ;DUPLICATE NAME
1595 000076 .IPCNN==:76 ;UNKNOWN NAME
1596 000077 .IPCEN==:77 ;ILLEGAL NAME
1597 000066 .IPCKM==:66 ;NOTIFICATION THAT PID HAS BEEN DELETED
1598 000070 IP%CFC==:7B32 ;SYSTEM SENDER CODE
1599 000001 .IPCCC==:1 ;SENT BY [SYSTEM]IPCF
1600 000002 .IPCCF==:2 ;SENT BY SYSTEM WIDE [SYSTEM]INFO
1601 000003 .IPCCP==:3 ;SENT BY RECEIVER'S [SYSTEM]INFO
1602 000007 IP%CFM==:7B35 ;SPECIAL MESSAGE RETURN FIELD
1603 000001 .IPCFN==:1 ;MESSAGE WAS NOT DELIVERED
1604 000001 .IPCFS==:1 ;PID OF SENDER
1605 000002 .IPCFR==:2 ;PID OF RECEIVER
1606 000003 .IPCFP==:3 ;POINTER TO MESSAGE BLOCK
1607 000004 .IPCFD==:4 ;LOGGED IN DIR OF SENDER
1609 000006 .IPCSD==:6 ;CONNECTED DIRECTORY NUMBER OF SENDER
1610 000007 .IPCAS==:7 ;POINTER TO ACCOUNT STRING OF SENDER
1611 000010 .IPCLL==:10 ;POINTER TO LOGICAL LOCATION OF SENDER
1612
1613 000026 .IPCSU==:26 ;SPOOL MESSAGE CODE FROM IPCC
1614 000027 .IPCSL==:27 ;LOGOUT MESSAGE CODE FROM IPCC
1615 000030 .IPCSA==:30 ;RESOURCE ALLOCATOR MESSAGE CODE
1616 000031 .IPCDS==:31 ;STRUCTURE DISMOUNT MESSAGE CODE FROM IPCC
1617 000032 .IPCLI==:32 ;LOGIN MESSAGE CODE FROM IPCC
1618 000033 .IPCLO==:33 ;LOGOUT MESSAGE TO CREATOR FROM IPCC
1619 000034 .IPCKP==:34 ;DELETED PID MESSAGE FROM IPCC
1620 000035 .IPCCA==:35 ;CREATE AN APPLICATION (RESERVED FOR TPS USE)
1621 000036 .IPCTR==:36 ;REQUEST FROM TAPE
1622 000037 .IPCMS==:37 ;STRUCTURE MOUNT MESSAGE CODE FROM IPCC
1623 000040 .IPCRS==:40 ;STRUCTURE REMOVAL MSSG CODE FROM IPCC
1624 000041 .IPCSR==:41 ; Archive message code from IPCC
1625
1626 000015 .IPCSS==:15 ;IPCC REQUEST TO INFO TO DELETE PIDS
1627
1628
1629 ;[SYSTEM] INFO DEFINITIONS
1630
1631 000000 .IPCI0==:0 ;CODE,,FUNCTION
1632 000001 .IPCIW==:1 ;FIND PID FOR NAME
1633 000002 .IPCIG==:2 ;FIND NAME FOR PID
1634 000003 .IPCII==:3 ;ASSIGN NAME TO PID
1635 000004 .IPCIJ==:4 ;ASSIGN NAME TO PID
1636 000005 .IPCIK==:5 ;NOTIFY WHEN SPECIFIED PID IS KILLED
1637 000015 .IPCIS==:15 ;MONITOR DROP PID FUNCTION
1638 000001 .IPCI1==:1 ;PID TO GET A COPY OF REPLY
1639 000002 .IPCI2==:2 ;START OF DATA
1640
1641
1642 ;JFNS
1643
1644 700000 000000 JS%DEV==7B2 ;DEVICE FIELD OUTPUT CONTROL
1645 070000 000000 JS%DIR==:7B5 ;DIRECTORY FIELD OUTPUT CONTROL
1646 007000 000000 JS%NAM==:7B8 ;NAME FIELD OUTPUT CONTROL
1647 000700 000000 JS%TYP==:7B11 ;FILE TYPE FIELD OUTPUT CONTROL
1648 000070 000000 JS%GEN==:7B14 ;GENERATION FIELD OUTPUT CONTROL
1649 000007 000000 JS%PRO==:7B17 ;PROTECTION FIELD OUTPUT CONTROL
1650 700000 JS%ACT==:7B20 ;ACCOUNT FIELD OUTPUT CONTROL
1651 ;VALUES FOR ABOVE 7 FIELDS:
1652 000000 .JSNOF==:0 ;NEVER OUTPUT FIELD
1653 000001 .JSAOF==:1 ;ALWAYS OUTPUT FIELD
1654 000002 .JSSSD==:2 ;SUPPRESS IF SYSTEM DEFAULT
1655 040000 JS%TMP==:1B21 ;RETURN ;T IF TEMP FILE
1656 020000 JS%SIZ==:1B22 ;RETURN SIZE
1657 010000 JS%CDR==:1B23 ;RETURN CREATION DATE
1658 004000 JS%LWR==:1B24 ;RETURN LAST WRITE
1659 002000 JS%LRD==:1B25 ;RETURN LAST READ
1660 001000 JS%PTR==:1B26 ;AC 2 HOLDS STRING POINTER NOT JFN
1661 000400 JS%ATR==:1B27 ;RETURN ATTRIBUTES
1663 000100 JS%OFL==:1B29 ;RETURN ;OFF-LINE IF OFFLINE FILE
1664 000010 JS%PSD==:1B32 ;PUNCTUATE SIZE AND DATE
1665 000004 JS%TBR==:1B33 ;TAB BEFORE FIELDS RETURNED
1666 000002 JS%TBP==:1B34 ;TAB BEFORE POSSIBLE FIELDS
1667 000001 JS%PAF==:1B35 ;PUNCTUATE ALL FIELDS
1668
1669
1670 ;LNMST
1671
1672 000000 .LNSJB==:0 ;GET JOB WIDE DEFINITION OF A LN
1673 000001 .LNSSY==:1 ;GET SYSTEM DEFINITION OF A LOGICAL NAME
1674
1675
1676 ;LOCK
1677
1678 400000 000000 LK%CNT==:1B0 ;USE COUNT IN AC3
1679 200000 000000 LK%PHY==:1B1 ;USE AC1 AS PHYSICAL PAGE NUMBER
1680 100000 000000 LK%NCH==:1B2 ;MAP PAGES CACHE INHIBITED
1681 040000 000000 LK%AOL==:1B3 ;ALLOW LOCKING IN OFFLINE PAGES
1682
1683
1684
1685 ;METER JSYS DEFS.
1686
1687 000001 .MEREA==:1 ;READ EBOX TICKS
1688 000002 .MERMA==:2 ;READ MBOX TICKS
1689
1690 ;MSTR
1691
1692 000000 .MSRNU==:0 ;READ STATUS OF NEXT DISK UNIT
1693 000001 .MSRUS==:1 ;READ STATUS OF A DISK UNIT
1694 000000 .MSRCH==:0 ;CHANNEL NUMBER
1695 000001 .MSRCT==:1 ;CONTROLLER NUMBER
1696 000002 .MSRUN==:2 ;UNIT NUMBER
1697 000003 .MSRST==:3 ;STATUS
1698 400000 000000 MS%MNT==:1B0 ;THIS UNIT IS PART OF A MOUNTED STRUCTURE
1699 200000 000000 MS%16B==:1B1 ;THIS UNIT WRITTEN IN 16-BIT MODE
1700 ; (RESERVED FOR FUTURE)
1701 100000 000000 MS%DIA==:1B2 ;THIS UNIT IS CURRENTLY IN USE BY AN
1702 ; ON-LINE DIAGNOSTIC
1703 040000 000000 MS%OFL==:1B3 ;THIS UNIT IS OFF-LINE
1704 020000 000000 MS%ERR==:1B4 ;THERE WAS AN ERROR READING THIS UNIT
1705 010000 000000 MS%BBB==:1B5 ;ONE OF THE BAT BLOCKS IS BAD
1706 004000 000000 MS%HBB==:1B6 ;ONE OF THE HOME BLOCKS IS BAD
1707 002000 000000 MS%WLK==:1B7 ;UNIT IS WRITE-LOCKED
1708 000777 000000 MS%TYP==:777B17 ;DISK TYPE CODE
1709 ; DEFINED THE SAME AS .UTTXX IN PHYPAR
1710 000001 .MSRP4==:1 ;RP04
1711 000005 .MSRP5==:5 ;RP05
1712 000006 .MSRP6==:6 ;RP06
1713 000007 .MSRP7==:7 ;RP07
1714 000011 .MSRM3==:11 ;RM03
1715 000004 .MSRSN==:4 ;STRUCTURE NAME
1717 000006 .MSRNS==:6 ;UNIT # IN STRUCTURE,,# OF UNITS IN STRUCTURE
1718 000007 .MSRSW==:7 ;NUMBER OF PAGES FOR SWAPPING
1719 000010 .MSRUI==:10 ;UNIT ID
1720 000013 .MSROI==:13 ;OWNER ID
1721 000016 .MSRFI==:16 ;FILE-SYSTEM ID
1722 000021 .MSRSP==:21 ;NUMBER OF SECTORS PER PAGE
1723 000022 .MSRSC==:22 ;NUMBER OF SECTORS PER CYLINDER
1724 000023 .MSRPC==:23 ;NUMBER OF PAGES PER CYLINDER
1725 000024 .MSRCU==:24 ;NUMBER OF CYLINDERS PER UNIT
1726 000025 .MSRSU==:25 ;NUMBER OF SECTORS PER UNIT
1727 000026 .MSRBT==:26 ;NUMBER OF BIT-WORDS IN BIT TABLE PER CYLINDER
1728 000027 .MSRLN==:27 ;MAX LENGTH OF ARGUMENT BLOCK IN WORDS
1729
1730 000002 .MSMNT==:2 ;MOUNT A STRUCTURE
1731 000000 .MSTNM==:0 ;NAME OF STRUCTURE
1732 000001 .MSTAL==:1 ;ALIAS NAME
1733 000002 .MSTNU==:2 ;NUMBER OF UNITS IN STRUCTURE
1734 000002 .MSTFL==:2 ;FLAGS (LHS)
1735 777777 000000 MS%FLG==:777777,,0 ;MASK FOR .MSTFL
1736 400000 000000 MS%NFH==:1B0 ;NO FIX BAD HOME BLOCK
1737 200000 000000 MS%NFB==:1B1 ;NO FIX BAD BAT BLOCK
1738 100000 000000 MS%XCL==:1B2 ;MOUNT FOR EXCLUSIVE USE BY JOB
1739 040000 000000 MS%IGN==:1B3 ;IGNORE ERRORS
1740 000003 .MSTUI==:3 ;START OF UNIT INFORMATION
1741 000000 .MSTCH==:0 ;CHANNEL NUMBER
1742 000001 .MSTCT==:1 ;CONTROLLER NUMBER
1743 000002 .MSTUN==:2 ;UNIT NUMBER
1744 000003 .MSTNO==:3 ;# OF ARGUMENT WORDS/UNIT
1745
1746 000003 .MSDIS==:3 ;DISMOUNT A STRUCTURE
1747 000000 .MSDNM==:0 ;NAME OF STRUCTURE
1748
1749 000004 .MSGSS==:4 ;GET STATUS OF A STRUCTURE
1750 000000 .MSGSN==:0 ;STRUCTURE NAME (ALIAS)
1751 000001 .MSGST==:1 ;STATUS
1752 400000 000000 MS%PS==:1B0 ;STRUCTURE IS A PUBLIC STRUCTURE
1753 200000 000000 MS%DIS==:1B1 ;STRUCTURE IS BEING DISMOUNTED
1754 100000 000000 MS%DOM==:1B2 ;STRUCTURE IS DOMESTIC
1755 040000 000000 MS%PPS==:1B3 ;STRUCTURE IS THE PRIMARY PUBLIC STRUCTURE
1756 020000 000000 MS%INI==:1B4 ;STRUCTURE IS BEING INITIALIZED
1757 010000 000000 MS%LIM==:1B5 ;STRUCTURE LIMITED TO 2050 SIZES
1758 004000 000000 MS%NRS==:1B6 ;STRUCTURE IS NOT REGULATED
1759 000002 .MSGNU==:2 ;NUMBER OF UNITS IN STRUCTURE
1760 000003 .MSGMC==:3 ;MOUNT COUNT
1761 000004 .MSGFC==:4 ;OPEN FILE COUNT
1762 000005 .MSGSI==:5 ;STRUCTURE ID
1763 000006 .MSGLN==:6 ;LENGTH OF ARGUMENT BLOCK
1764
1765 000005 .MSSSS==:5 ;SET STATUS OF A STRUCTURE
1766 000000 .MSSSN==:0 ;STRUCTURE NAME
1767 000001 .MSSST==:1 ;NEW STATUS BITS
1768 000002 .MSSMW==:2 ;MASK WORD OF BITS TO BE CHANGED
1769 000003 .MSSLN==:3 ;LENGTH OF ARGUMENT BLOCK
1771 000006 .MSINI==:6 ;INITIALIZE A STRUCTURE
1772 000000 .MSINM==:0 ;NAME OF STRUCTURE
1773 000001 .MSIAL==:1 ;ALIAS NAME
1774 000002 .MSINU==:2 ;NUMBER OF UNITS IN STRUCTURE
1775 000002 .MSIFL==:2 ;FLAGS (LHS)
1776 ;FLAGS DEFINED IN .MSMNT FUNCTION
1777 000077 000000 MS%FCN==:77B17 ;FUNCTION CODE
1778 000001 .MSCRE==:1 ;CREATE NEW FILE SYSTEM
1779 000002 .MSRRD==:2 ;RECONSTRUCT THE ROOT-DIRECTORY
1780 000003 .MSWHB==:3 ;WRITE THE HOME BLOCKS
1781 000004 .MSRIX==:4 ;REBUILD INDEX TABLE (IDXFIL)
1782 000003 .MSISU==:3 ;START OF UNIT INFORMATION
1783 000000 .MSICH==:0 ;CHANNEL NUMBER
1784 000001 .MSICT==:1 ;CONTROLLER NUMBER
1785 000002 .MSIUN==:2 ;UNIT NUMBER
1786 000003 .MSINO==:3 ;# OF ARGUMENT WORDS/UNIT
1787 000006 .MSIST==:6 ;STATUS WORD
1788 000007 .MSISW==:7 ;NUMBER OF PAGES FOR SWAPPING ON THIS UNIT
1789 000010 .MSIFE==:10 ;NUMBER OF PAGES FOR FRONT-END FILE SYSTEM
1790 000011 .MSIUI==:11 ;UNIT ID
1791 000014 .MSIOI==:14 ;OWNER ID
1792 000017 .MSIFI==:17 ;FILE SYSTEM ID
1793 000022 .MSIFB==:22 ;NUMBER OF PAGES FOR BOOTSTRAP.BIN (OPTIONAL)
1794
1795 000007 .MSIMC==:7 ;INCREMENT MOUNT COUNT
1796 000010 .MSDMC==:10 ;DECREMENT MOUNT COUNT
1797 000000 .MSDEV==:0 ;DEVICE DESIGNATOR OR STRUCTURE
1798 000001 .MSJOB==:1 ;JOB NUMBER FOR WHICH TO CHANGE COUNT
1799
1800 000011 .MSGSU==:11 ;GET STRUCTURE USERS
1801 000000 .MSUAL==:0 ;POINTER TO ALIAS OF STRUCTURE
1802 000001 .MSUFL==:1 ;FLAGS,,# OF ITEMS RETURNED
1803 400000 000000 MS%GTA==:1B0 ;GET USERS WHO HAVE ACCESSED STRUCTURE
1804 200000 000000 MS%GTM==:1B1 ;GET USERS WHO HAVE MOUNTED STRUCTURE
1805 100000 000000 MS%GTC==:1B2 ;GET USERS WHO ARE CONNECTED TO STRUCTURE
1806 000002 .MSUJ1==:2 ;FIRST JOB NUMBER RETURNED
1807
1808 000012 .MSHOM==:12 ;MODIFY HOMEBLOCK WORD
1809 000000 .MSHNM==:0 ;POINTER TO ALIAS, OR DESIGNATOR FOR ALIAS
1810 000001 .MSHOF==:1 ;OFFSET INTO HOMEBLOCK OF WORD BEING CHANGED
1811 000002 .MSHVL==:2 ;NEW VALUES FOR BITS BEING CHANGED
1812 000003 .MSHMK==:3 ;MASK DECLARING WHICH BITS BEING CHANGED
1813
1814 000013 .MSICF==:13 ;INCREMENT MOUNT COUNT ON A FORK BASIS
1815 000014 .MSDCF==:14 ;DECREMENT MOUNT COUNT ON A FORK BASIS
1816 000000 .MSDEV==:0 ;DEVICE DESIGNATOR OR STRUCTURE
1817
1818 000015 .MSOFL==:15 ;ENABLE PSI INTERRUPTS INTERRUPTS FOR
1819 ; DISK (FOR DEVICE ALLOCATOR)
1820 000000 .MSCHN==:0 ;CHANNEL ON WHICH TO RECEIVE INTERRUPT
1821
1822
1823 000016 .MSIIC==:16 ;IGNORE INCREMENT CHECK FOR STRUCTURE USE
1825 ;MTOPR - FUNCTION CODES
1826
1827 000000 .MOCLE==:0 ;CLEAR ERRORS
1828 000031 .MONOP==:31 ;NOP (WAIT FOR ACTIVITY TO STOP)
1829 000001 .MOREW==:1 ;REWIND
1830 000003 .MOEOF==:3 ;WRITE EOF
1831 000004 .MODTE==:4 ;ASSIGN FE DEVICE TO A DTE
1832 000006 .MOFWR==:6 ;FORWARD SPACE RECORD
1833 000007 .MOBKR==:7 ;BACKSPACE RECORD
1834 000011 .MORUL==:11 ;REWIND AND UNLOAD
1835 000013 .MOERS==:13 ;ERASE TAPE
1836 000016 .MOFWF==:16 ;FORWARD SPACE FILE
1837 000017 .MOBKF==:17 ;BACKSPACE FILE
1838 000026 .MOSPD==:26 ;SET TTY SPEED (FOR KL ONLY)
1839 000027 .MORSP==:27 ;READ LINE SPEED (FOR KL ONLY)
1840 400000 000000 MO%RMT==:1B0 ;FLAG TO SAY LINE IS REMOTE
1841 200000 000000 MO%AUT==:1B1 ;FLAG TO SAY LINE IS "AUTO" SPEED
1842 ; (RSX20F ONLY)
1843 000002 .MOSDR==:2 ;SET READ DIRECTION
1844 000026 .MORDR==:26 ;READ READ DIRECTION
1845 000010 .MOEOT==:10 ;SKIP TO LOGICAL END OF TAPE
1846 000005 .MOSRS==:5 ;SET RECORD SIZE
1847 000015 .MORRS==:15 ;READ RECORD SIZE
1848 000024 .MOSDN==:24 ;SET DENSITY
1849 000012 .MORDN==:12 ;READ DENSITY
1850 000004 .MOSDM==:4 ;SET DATA MODE
1851 000014 .MORDM==:14 ;READ DATA MODE
1852 000020 .MOSPR==:20 ;SET PARITY
1853 000021 .MORPR==:21 ;READ PARITY
1854 000022 .MONRB==:22 ;GET NUMBER OF REMAINING BYTES IN RECORD
1855 000023 .MOFOU==:23 ;FORCE OUT RECORD
1856 000025 .MOINF==:25 ;GET INFORMATION ABOUT TAPE
1857 000000 .MOICT==:0 ;COUNT OF ARGUMENTS TO BE RETURNED
1858 000001 .MOITP==:1 ;MAGTAPE TYPE CODE
1859 ; DEFINED THE SAME AS .UTTXX IN PHYPAR
1860 000003 .MTT45==:3 ;MAGTAPE TYPE TU45
1861 000013 .MTT77==:13 ;MAGTAPE TYPE TU77
1862 000015 .MTT78==:15 ;MAGTAPE TYPE TU78
1863 000017 .MTT70==:17 ;MAGTAPE TYPE TU70
1864 000020 .MTT71==:20 ;MAGTAPE TYPE TU71
1865 000021 .MTT72==:21 ;MAGTAPE TYPE TU72
1866 000022 .MTT73==:22 ;RESERVED FOR 200 IPS STC GCR DRIVE
1867 000002 .MOIID==:2 ;MAGTAPE REEL ID
1868 000003 .MOISN==:3 ;CHAN,CONTROLLER,UNIT ,, SERIAL #
1869 000004 .MOIRD==:4 ;# OF READS DONE
1870 000005 .MOIWT==:5 ;# OF WRITES DONE
1871 000006 .MOIRC==:6 ;RECORD # FROM BOT
1872 000007 .MOIFC==:7 ;FILE COUNT ON TAPE
1873 000010 .MOISR==:10 ;# OF SOFT READ ERRORS
1874 000011 .MOISW==:11 ;# OF SOFT WRITE ERRORS
1875 000012 .MOIHR==:12 ;# OF HARD READ ERRORS
1876 000013 .MOIHW==:13 ;# OF HARD WRITE ERRORS
1877 000014 .MOIRF==:14 ;# RECORDS READ
1879 000032 .MOLOC==:32 ;ATTACH MT TO MTA
1880 000000 .MOCNT==:0 ;OFFSET FOR COUNT
1881 000001 .MOMTN==:1 ;OFFSET FOR MT NUMBER
1882 000002 .MOLBT==:2 ;LABEL TYPE (.LTxxx)
1883 000003 .MODNS==:3 ;DENSITY (.SJDxx)
1884 000004 .MOAVL==:4 ;ADDRESS OF VOLUME LABELS
1885 000005 .MONVL==:5 ;# OF VOLUME LABELS (VOL1 + UVLSs)
1886 000006 .MOCVN==:6 ;CURRENT VOLUME NUMBER WITHIN SET
1887 000007 .MOVSN==:7 ;VOLUME SET NAME
1888 000037 .MOSTA==:37 ;CURRENT MAGTAPE STATUS
1889 000001 .MODDN==:1 ;1ST WORD OF .MOSTA DENSITIES CAPABLE
1890
1891 200000 000000 SJ%CP2==:1B1 ;200 BPI
1892 100000 000000 SJ%CP5==:1B2 ;556 BPI
1893 040000 000000 SJ%CP8==:1B3 ;800 BPI
1894 020000 000000 SJ%C16==:1B4 ;1600 BPI
1895 010000 000000 SJ%C62==:1B5 ;6250 BPI
1896
1897 000002 .MODDM==:2 ;2ND WORD OF .MOSTA DATA MODES CAPABLE
1898 200000 000000 SJ%CMC==:1B1 ;CORE DUMP MODE
1899 100000 000000 SJ%CM6==:1B2 ;SIXBIT
1900 040000 000000 SJ%CMA==:1B3 ;ANSI ASCII
1901 020000 000000 SJ%CM8==:1B4 ;INDUSTRY COMPATABLE
1902 010000 000000 SJ%CMH==:1B5 ;HIGH DENSITY MODE
1903 000003 .MOTRK==:3 ;3RD WORD OF .MOSTA NUMBER OF TRACKS
1904 200000 000000 SJ%7TR==:1B1 ;7 TRACK DRIVE
1905 100000 000000 SJ%9TR==:1B2 ;9 TRACK DRIVE
1906
1907 000004 .MOCST==:4 ;4TH WORD OF .MOSTA TAPE STATUS
1908 400000 000000 SJ%OFS==:1B0 ;OFF LINE
1909 200000 000000 SJ%MAI==:1B1 ;MAINTENANCE MODE ENABLED
1910 100000 000000 SJ%MRQ==:1B2 ;MAINTENANCE MODE REQUESTED
1911 040000 000000 SJ%BOT==:1B3 ;BOT
1912 020000 000000 SJ%REW==:1B4 ;REWINDING
1913 010000 000000 SJ%WLK==:1B5 ;WRITE LOCKED
1914
1915 000005 .MODVT==:5 ;5TH WORD OF .MOSTA DEVICE TYPE
1916
1917 ; DEFINITIONS FOR THIS ARE SAME AS USED IN .MTALN
1918 000040 .MOOFL==:40 ;PSI FOR MAGTAPES
1919 000042 .MOPST==:42 ;PSI FOR EOT ON MT'S
1920 ; T3/ PSI ASSIGNMENT (-1 = CLEAR)
1921 000001 .MORVS==:.MOREW ;REWIND VOLUME SET
1922 000043 .MORVL==:43 ;REWIND CURRENT VOLUME
1923 000044 .MOVLS==:44 ;VOLUME SWITCH FOR UNLABELED TAPES
1924 000045 .MONTR==:45 ;SET/CLEAR NO TRANSLATE FLAG
1925 ; T3/ -1 = DON'T CONVERT EBCDIC TO ASCII
1926 ; T3/0= CONVERT
1927 000046 .MORDL==:46 ;READ USER LABELS
1928 ; T2/ GETS LABEL I.D.
1929 ; T3/ SP TO WHERE 76 CHARCTERS ARE TO BE PLACED
1930 000047 .MOWUL==:47 ;WRITE USER LABELS
1931 ; T2/ LABEL I.D.
1933 000050 .MORLI==:50 ;READ LABEL INFORMATION FOR MT
1934 000001 .MOMTP==:1 ;TYPE OF LABEL
1935 000002 .MOMVN==:2 ;VOLUME NAME
1936 000003 .MOMOW==:3 ;OWNER
1937 000004 .MOMFM==:4 ;FORMAT OF TAPE FILE
1938 000005 .MOMRL==:5 ;RECORD LENGTH
1939 000006 .MOMBL==:6 ;BLOCK LENGTH
1940 000007 .MOMCD==:7 ;CREATION DATE
1941 000010 .MOMED==:10 ;EXPIRATION DATE
1942 000011 .MOMFI==:11 ;FILE NAME
1943 000012 .MOMGN==:12 ;GENERATION NUMBER
1944 000013 .MOMGV==:13 ;GENERATION VERSION NUMBER
1945 000014 .MOVMB==:14 ;VALUE OF MODE BYTE
1946 000051 .MOSMV==:51 ;SET MODE VALUE
1947 000000 .TPFST==:0 ;STREAM MODE
1948 000001 .TPFCP==:1 ;ALL FORMATTING CONTROLS PRESENT
1949 000002 .TPFFC==:2 ;FORTRAN CONTROLS PRESENT
1950 000003 .TPFNC==:3 ;NO CONTROLS PRESENT
1951 000003 .TPFMX==:3 ;MAX VALUE OF FIELD
1952 000052 .MOSDS==:52 ;SET DEFERRED VOLUME-SWITCH MODE
1953 000027 .MOPSI==:27 ;SET ERROR PSI FOR LPT AND CDR
1954 400000 000000 MO%MSG==:1B0 ;SUPPRESS STANDARD CTY MESSAGES
1955 000027 .MOSID==:27 ;SET REEL I.D.
1956 000030 .MOIEL==:30 ;INHIBIT ERROR LOGGING
1957 000045 .MOSHV==:45 ;SET HDR1 AND HDR2 VALUES FOR MT
1958 000001 .MOFMT==:1 ;OFFSET FOR FORMAT
1959 000002 .MOEPD==:2 ;EXPIRATION DATE
1960 000003 .MOBSZ==:3 ;BLOCK SIZE
1961 000004 .MORSZ==:4 ;RECORD SIZE
1962
1963 ;DEF FOR IPCF MESSAGE SENT ON A VOLUME SWITCH OR OTHER CONDITION
1964 ;MESSAGE CODE IS .IPCTR. OFFSETS THAT FOLLOW ARE
1965 ;RELATIVE TO WORD CONTAINING .IPCTR.
1966
1967 000000 .VMCOD==:0 ;CODE FOR THIS MESSAGE
1968 ; IS SUBCODE OF .IPCTR FUNCTION
1969 000001 .VMABT==:1 ;ABORT CLOSE
1970 000002 .VMICN==:2 ;INTERNAL ERROR (HOPEFULLY NOT USED)
1971 000003 .VMERR==:3 ;LABEL R/W ERROR
1972 000004 .VMVSM==:4 ;VOLUME SWITCH
1973 000005 .VMSTS==:5 ;UNIT STATUS CHANGE (NOT USED YET)
1974 000006 .VMUNL==:6 ;UNIT UNLOAD
1975 000007 .VMREW==:7 ;REWIND
1976 000001 .VSMTN==:1 ;MT NUMBER
1977 000002 .VSFLG==:2 ;FLAGS
1978 777777 000000 VS%FLG==:-1B17 ;FLAGS PART OF WORD
1979 400000 000000 VS%WRT==:1B0 ;WRITE PREVIOUS VOLUME WAS OPENED FOR WRITE
1980 777777 VS%COD==:777777 ;CODE
1981 000001 .VSMNV==:1 ;MOUNT NTH VOLUME
1982 000002 .VSFST==:2 ;MOUNT FIRST VOLUME
1983 000003 .VSLST==:3 ;MOUNT LAST VOLUME
1984 000004 .VSMRV==:4 ;MOUNT RELATIVE VOLUME NUMBER (SIGNED)
1985 000005 .VSFLS==:5 ;FORCE LABELED TAPE VOLUME-SWITCH
1987
1988 000032 .MOLVF==:32 ;LOAD DEVICE'S VFU
1989 000033 .MORVF==:33 ;READ VFU FILE NAME
1990 000034 .MOLTR==:34 ;LOAD TRANSLATION RAM
1991 000035 .MORTR==:35 ;READ RAM FILE NAME
1992 000036 .MOSTS==:36 ;SET SOFTWARE STATUS
1993 000037 .MORST==:37 ;READ SOFTWARE STATUS
1994 000001 MO%LPC==1 ;PAGE COUNTER OVERFLOW
1995 000002 MO%LCI==2 ;CHARACTER INTERRUPT (HARD ERROR)
1996 000004 MO%LVF==4 ;VFU ERROR. PAPER MUST BE RE-ALIGNED
1997 000020 MO%LVU==20 ;LINE PRINTER HAS OPTICAL VFU
1998 000040 MO%RPE==40 ;RAM PARITY ERROR
1999
2000 000001 MO%RCK==:1 ;READ CHECK
2001 000002 MO%PCK==:2 ;PICK CHECK
2002 000004 MO%SCK==:4 ;STACK CHECK
2003 000010 MO%HEM==:10 ;HOPPER EMPTY
2004 000020 MO%SFL==:20 ;STACKER FULL
2005
2006 000001 000000 MO%FNX==:1B17 ;NON-EXISTENT DEVICE
2007 000002 000000 MO%OL==:1B16 ;DEVICE IS OFF-LINE
2008 000004 000000 MO%HE==:1B15 ;HARDWARE ERROR
2009 000010 000000 MO%SER==:1B14 ;SOFTWARE ERROR
2010 000020 000000 MO%IOP==:1B13 ;I/O IN PROGRESS
2011 000040 000000 MO%EOF==:1B12 ;END OF FILE
2012 ; 1B11 ;RESERVED
2013 000200 000000 MO%FER==:1B10 ;FATAL ERROR
2014 400000 000000 MO%LCP==:1B0 ;LOWER CASE PRINTER
2015 200000 000000 MO%RLD==:1B1 ;FRONT-END WAS RELOADED
2016 000040 .MOFLO==:40 ;FLUSH OUTPUT
2017
2018 ;SEE SETJB FOR VARIOUS ARGUMENT VALUES
2019
2020 000034 .MOSNT==:34 ;SET TTY NON-TERMINAL STATUS
2021 000001 .MOSMN==:1 ;NO SYSTEM MESSAGES(I.E. SUPPRESS)
2022 000000 .MOSMY==:0 ;YES SYSTEM MESSAGES(DEFAULT)
2023 000035 .MORNT==:35 ;READ TTY NON-TERMINAL STATUS
2024
2025 ;PTY MTOPR NUMBERS
2026
2027 000024 .MOAPI==:24 ;ASSIGN PTY INTERRUPT CHANNELS
2028 400000 000000 MO%WFI==:1B0 ;ENABLE WAITING FOR INPUT
2029 200000 000000 MO%OIR==:1B1 ;ENABLE OUTPUT IS WAITING
2030 000077 000000 MO%SIC==:77B17 ;SOFTWARE INTERRUPT CHANNEL
2031 000025 .MOPIH==:25 ;TEST PTY INPUT HUNGRY
2032 000000 .MONWI==:0 ;NOT WAITING FOR INPUT
2033 777777 777777 .MOWFI==:-1 ;WAITING FOR INPUT
2034 000026 .MOBAT==:26 ;SET BATCH BIT
2035 000001 .MOJCB==:1 ;JOB CONTROLLED BY BATCH
2036 000000 .MONCB==:0 ;JOB NOT CONTROLLED BY BATCH
2037
2038
2039 ;TTY MODE DEFINITIONS
2041 000030 .MORLW==:30 ;READ WIDTH
2042 000031 .MOSLW==:31 ;SET WIDTH
2043 000032 .MORLL==:32 ;READ LENGTH
2044 000033 .MOSLL==:33 ;SET LENGTH
2045 000036 .MOSIG==:36 ;SET "IGNORE INPUT WHEN INACTIVE" BIT
2046 000037 .MORBM==:37 ;READ 128 CHARACTER BREAK MASK
2047
2048 776117 777740 MO%WN1==:776117,,777740 ;BIT DEFINITIONS FOR NON-FORMATTING CONTROL
2049 000000 MO%WN2==:0 ;FOR ASCII CODES 40-777
2050 000000 MO%WN3==:0 ;FOR ASCII CODES 100-137
2051 000020 MO%WN4==:20 ;FOR ASCII CODES 137-177
2052
2053 001260 000420 MO%WF1==:001260,,000420 ;FORMATTING CONTROL BITS
2054 000000 MO%WF2==:0 ;FOR ASCII CODES 40-77
2055 000000 MO%WF3==:0 ;FOR ASCII CODES 100-137
2056 000020 MO%WF4==:20 ;FOR ASCII CODES 140-177
2057
2058 000400 000400 MO%WP1==:000400,,400 ;PUNCTUATION BIT DEFINITIONS
2059 777774 001760 MO%WP2==:777774,,001760 ; FOR ASCII CODES 40-77
2060 400000 000760 MO%WP3==:400000,,000760 ; FOR ASCII CODES 100-137
2061 400000 000760 MO%WP4==:400000,,000760 ; FOR ASCII CODES 140-177
2062
2063 000400 MO%WA1==:400 ;ALPHANUMERICS DEFINITIONS
2064 000003 776000 MO%WA2==:000003,,776000 ; FOR ASCII CODES 40-77
2065 377777 777000 MO%WA3==:377777,,777000 ; FOR ASCII CODES 100-137
2066 377777 777020 MO%WA4==:377777,,777020 ; FOR ASCII CODES 140-177
2067 000040 .MOSBM==:40 ;SET 128 CHARACTER BREAK MASK
2068 000041 .MORFW==:41 ;READ FIELD WIDTH
2069 000042 .MOSFW==:42 ;SET FIELD WIDTH
2070 000043 .MOXOF==:43 ;SET/CLEAR XOFF/XON HANDLING
2071 000000 .MOOFF==:0 ;TURN OFF XON/XOFF PROCESSING
2072 000001 .MOONX==:1 ;TURN ON XON/XOFF PROCESSING
2073 000044 .MORXO==:44 ;READ VALUE OF XOFF BIT
2074 000045 .MOSLC==:45 ;SET LINE COUNTER
2075 000046 .MORLC==:46 ;READ LINE COUNTER
2076 000047 .MOSLM==:47 ;SET LINE COUNTER MAXIMUM
2077 000050 .MORLM==:50 ;READ LINE COUNTER MAXIMUM
2078 000051 .MOTPS==:51 ;PSI FOR NON-CONTROLLING TERMINAL
2079
2080 ;NET MTOPR NUMBERS
2081
2082 000020 .MOACP==:20 ;TOPS20AN ;ACCEPT CONNECTION ON SOCKET
2083 000021 .MOSND==:21 ;TOPS20AN ;SEND ALL CURENTLY BUFFERED BYTES
2084 000022 .MOSIN==:22 ;TOPS20AN ;SEND INS/INR COMMAND
2085 000024 .MOAIN==:24 ;TOPS20AN ;ASSIGN INS/INR AND FSM PSI CHANNELS
2086 770000 000000 MO%NIN==:77B5 ;TOPS20AN ;INS/INR SOFTWARE INTERRUPT CHANNEL
2087 000077 000000 MO%FSM==:77B17 ;TOPS20AN ;FSM CHANGE OF STATE INTERRUPT CHANNEL
2088
2089
2090 ;DEFINITIONS FOR DECNET
2091
2092 000024 .MOACN==:24 ;ASSIGN CONNECT INTERRUPT CHANNEL
2093 777000 000000 MO%CDN==:777B8 ;CONNECT INTERRUPT CHANNEL
2095 777000 MO%DAV==:777B26 ;DATA AVAILABLE CHANNEL
2096 000777 .MONCI==:777 ;NO CHANGE
2097 000776 .MOCIA==:776 ;CLEAR INTERRUPT ASSIGNMENT
2098
2099 000025 .MORLS==:25 ;READ LINK STATUS
2100 400000 000000 MO%CON==:1B0 ;LINK IS CONNECTED
2101 200000 000000 MO%SRV==:1B1 ;LINK IS A SERVER
2102 100000 000000 MO%WFC==:1B2 ;WAITING FOR A CONNECT
2103 040000 000000 MO%WCC==:1B3 ;WAITING FOR THIS LINK TO CONFIRM
2104 020000 000000 MO%EOM==:1B4 ;EOM PRESENT IN INPUT BUFFER
2105 010000 000000 MO%ABT==:1B5 ;CONNECTION ABORTED
2106 004000 000000 MO%SYN==:1B6 ;SYNCH DI RECIEVED
2107 002000 000000 MO%INT==:1B7 ;INT MESSAGE AVAILABLE
2108 001000 000000 MO%LWC==:1B8 ;LINK WAS CONNECTED
2109 000026 .MORHN==:26 ;READ HOST NAME
2110 000027 .MORTN==:27 ;READ TASK NAME
2111 000030 .MORUS==:30 ;READ USER DATA
2112 000031 .MORPW==:31 ;READ PASSWORD
2113 000032 .MORAC==:32 ;READ ACCOUNT
2114 000033 .MORDA==:33 ;READ OPTIONAL DATA
2115 000034 .MORCN==:34 ;READ CONNECT OBJECT NUMBER
2116 000035 .MORIM==:35 ;READ INTERRUPT MESSAGE
2117 000036 .MOSIM==:36 ;SEND INTERRUPT MESSAGE
2118 000037 .MOROD==:37 ;READ OBJ-DESC OF CONNECTION
2119 000040 .MOCLZ==:40 ;CLOSE/REJECT A CONNECTION
2120 000041 .MOCC==:41 ;ACCEPT A CONNECTION
2121 000042 .MORSS==:42 ;READ SEGMENT SIZE
2122
2123 ;DEFINITIONS FOR ATS
2124
2125 ;FUNCTION CODES FOR MTOPR ARE IN COLUMN 1
2126
2127 000001 .MOAMO==:1 ;SET MODE WORD
2128 000001 .MOAMM==:1 ;MESSAGE MODE
2129 000002 .MOADM==:2 ;DATA MODE
2130 000002 .MOAAT==:2 ;ACQUIRE TERMINAL
2131 400000 000000 MO%AER==:1B0 ;HTN FIELD CONTAINS AN ERROR CODE
2132 000003 .MOASI==:3 ;ENABLE INTERRUPTS
2133 777000 000000 MO%IFL==:777B8 ;FUNCTION TO BE PERFORMED
2134 000000 .MOAAI==:0 ;ASSIGN INTERRUPT CHANNEL
2135 000001 .MOADI==:1 ;DEASSIGN INTERRUPT CHANNEL
2136 000777 000000 MO%IEV==:777B17 ;EVENT BEING ASSIGNED OR DEASSIGNED
2137 000000 .MOADT==:0 ;DATA ARRIVAL
2138 000001 .MOAST==:1 ;STATUS ARRIVAL
2139 777777 MO%ACH==:777777B35 ;CHANNEL NUMBER
2140 000004 .MORCD==:4 ;GET STATUS
2141 000777 MO%WDV==:777B35 ;WHICH DEVICES TO REPORT ON
2142 000000 .MOALD==:0 ;ALL TERMINALS
2143 000001 .MOCHG==:1 ;TERMINALS WHOSE STATUS HAS CHANGED
2144 000002 .MOLST==:2 ;TERMINALS SPECIFIED IN LIST
2145 400000 000000 MO%ARM==:1B0 ;ASK THE RESOURCE MANAGER
2146 200000 000000 MO%MDA==:1B1 ;MORE DATA AVAILABLE FOR THIS JFN
2147 400000 000000 AT%OPN==:1B0 ;HTN IS OPEN AND USABLE
2149 100000 000000 AT%DHT==:1B2 ;DEASSIGNING HTN
2150 040000 000000 AT%TXF==:1B3 ;TERMINAL IS XOFF'D
2151 020000 000000 AT%UND==:1B4 ;DEVICE REQUESTED IS UNDEFINED
2152 010000 000000 AT%NAV==:1B5 ;DEVICE REQUESTED IS NOT AVAILABLE
2153 004000 000000 AT%OFL==:1B6 ;DEVICE REQUESTED IS OFFLINE
2154 002000 000000 AT%FUL==:1B7 ;SERVER IS FULL
2155 001000 000000 AT%UNS==:1B8 ;DEVICE TYPE IS UNSUPPORTED
2156 000400 000000 AT%REJ==:1B9 ;NODE NRM REJECTED THE REQUEST
2157 000200 000000 AT%MIE==:1B10 ;MONITOR INTERNAL ERROR (NODE OR HOST)
2158 000100 000000 AT%STF==:1B11 ;VT62 START-UP FAILED
2159 000040 000000 AT%CRJ==:1B12 ;CONNECTION WAS REJECTED
2160 000020 000000 AT%NDP==:1B13 ;DATA PIPE IS NOT OPEN
2161 777777 AT%SER==:777777B35 ;STATUS REPORT ERROR CODE (18 BITS)
2162 000005 .MOADE==:5 ;DEASSIGN TERMINAL
2163 400000 000000 MO%AAB==:1B0 ;DON'T SEND REMAINING DATA
2164
2165 ;DEFS FOR MTU JSYS
2166
2167 ;FUNCTIONS:
2168
2169 000001 .MTNVV==:1 ;SET NO VOLUME VALID
2170 000000 .MTCNT==:0 ;COUNT WORD
2171 000001 .MTCOD==:1 ;ERROR CODE
2172 000002 .MTPTR==:2 ;SP TO OPERATOR RESPONSE
2173
2174 000002 .MTRAL==:2 ;READ ALL LABELS
2175 000001 .MTVL1==:1 ;SP TO VOL1 AREA
2176 000002 .MTVL2==:2 ;SP TO VOL2 AREA
2177 000003 .MTHD1==:3 ;SP TO HDR1 AREA
2178 000004 .MTHD2==:4 ;SP TO HDR2 AREA
2179 000003 .MTASI==:3 ;RETURN MT TO MTA ASSOCIATION
2180 000001 .MTPHU==:1 ;RETURN MTA UNIT NUMBER HERE
2181 777777 777777 .MTNUL==:-1 ;NO ASSIGNMENT CODE
2182 000004 .MTCVV==:4 ;CLEAR VV
2183
2184 ;MUTIL JSYS FUNCTION CODES
2185
2186 000001 .MUENB==:1 ;ENABLE PID FOR RECEIVING
2187 000002 .MUDIS==:2 ;DISABLE PID FROM RECEIVING
2188 000003 .MUGTI==:3 ;GET PID OF [SYSTEM]INFO
2189 000004 .MUCPI==:4 ;CREATE A PRIVATE INFO FOR A JOB
2190 000005 .MUDES==:5 ;DESTROY A PID
2191 000006 .MUCRE==:6 ;CREATE A PID
2192 000007 .MUSSQ==:7 ;SET SEND AND RECEIVE QUOTAS
2193 000010 .MUCHO==:10 ;CHANGE OWNER OF A PID
2194 000011 .MUFOJ==:11 ;FIND OWNER'S JOB NUMBER
2195 000012 .MUFJP==:12 ;FIND JOB'S PIDS
2196 000013 .MUFSQ==:13 ;FIND SEND AND RECEIVE QUOTAS
2197 000015 .MUFFP==:15 ;FIND FORK'S PIDS
2198 000016 .MUSPQ==:16 ;SET PID QUOTA
2199 000017 .MUFPQ==:17 ;FIND PID QUOTA
2200 000020 .MUQRY==:20 ;QUERY
2201 000021 .MUAPF==:21 ;ASSOCIATE A PID WITH A FORK
2203 000023 .MUDFI==:23 ;DEFINE PID OF [SYSTEM]INFO
2204 000024 .MUSSP==:24 ;SET SYSTEM PID TABLE
2205 000025 .MURSP==:25 ;READ SYSTEM PID TABLE
2206 000026 .MUMPS==:26 ;GET MAXIMUM PACKET SIZE
2207 000027 .MUSKP==:27 ;SET PID TO RECEIVE KILLED PID MESSAGE
2208 000030 .MURKP==:30 ;READ PID THAT RECEIVES KILLED PID MESSAGES
2209 000031 .MUSPS==:31 ;Get system maximum packet size
2210
2211
2212 ;SYSTEM PID TABLE INDEX VALUES
2213
2214 000000 .SPIPC==:0 ;PID OF IPCC
2215 000001 .SPINF==:1 ;PID OF INFO
2216 000002 .SPQSR==:2 ;PID OF QUASAR
2217 000003 .SPMDA==:3 ;PID OF QSRMDA
2218 000004 .SPOPR==:4 ;PID OF OPERATOR JOB (ORION)
2219 000005 .SPNSR==:5 ;PID OF NETSER
2220
2221
2222 ;NODE
2223
2224 000000 .NDSLN==:0 ;SET LOCAL NODE NAME
2225 000001 .NDGLN==:1 ;GET LOCAL NODE NAME
2226 000000 .NDNOD==:0 ;POINTER TO NODE NAME
2227 000002 .NDSNM==:2 ;SET LOCAL NODE NUMBER
2228 000003 .NDGNM==:3 ;GET LOCAL NODE NUMBER
2229 000004 .NDSLP==:4 ;SET LOOPBACK ON PORT
2230 000000 .NDPRT==:0 ;PORT TO SET IN LOOPBACK
2231 000005 .NDCLP==:5 ;CLEAR LOOPBACK ON PORT
2232 000006 .NDFLP==:6 ;FIND LOOPBACK PORT
2233 400000 000000 ND%LPR==1B0 ;LOOPBACK RUNNING
2234 200000 000000 ND%LPA==1B1 ;LOOPBACK ASSIGNED TO PORT
2235 000007 .NDSNT==:7 ;SET NETWORK TOPOLOGY INFORMATION
2236 000010 .NDGNT==:10 ;GET NETWORK TOPOLOGY INFORMATION
2237 000000 .NDNND==:0 ;NUMBER OF NODE BLOCK POINTERS FOLLOWING
2238 000001 .NDCNT==:1 ;NUMBER OF WORDS IN A NODE BLOCK
2239 000002 .NDBK1==2 ;FIRST ADDRESS OF A NODE BLOCK
2240
2241 ;NODE BLOCK DEFINITIONS
2242 000000 .NDNAM==:0 ;POINTER TO ASCIZ NODE NAME
2243 000001 .NDSTA==:1 ;NODE STATE
2244 000000 .NDSON==:0 ;ON
2245 000001 .NDSOF==:1 ;OFF
2246 000002 .NDNXT==:2 ;POINTER TO ASCIZ NEARER NEIGHBOR STRING
2247 000003 .NDNBS==:3 ;NODE BLOCK SIZE
2248
2249 000011 .NDSIC==:11 ;SET TOPOLOGY CHANGE INTERRUPT CHANNEL
2250 000000 .NDCHN==:0 ;CHANNEL NUMBER
2251 000012 .NDCIC==:12 ;CLEAR NETWORK TOPOLOGY INTERRUPT
2252 000013 .NDGVR==:13 ;GET NSP VERSION INFORMATION
2253 000000 .NDNVR==:0 ;NUMBER OF VERSIONS RETURNED
2254 000001 .NDCVR==:1 ;POINTER TO COMMUNICATONS VERSION BLOCK
2255 000002 .NDRVR==:2 ;POINTER TO ROUTING VERSION BLOCK
2257 000000 .NDVER==:0 ;VERSION NUMBER
2258 000001 .NDECO==:1 ;ECO NUMBER
2259 000002 .NDCST==:2 ;CUSTOMER LEVEL
2260 000014 .NDGLI==:14 ;GET LINE INFORMATION
2261 000000 .NDNLN==:0 ;<# OF ENTRIES FOLLOWING,,# LINE RETURNED
2262 000001 .NDCNT==:1 ;NUMBER OF WORDS IN A LINE BLOCK
2263
2264 ; LINE BLOCK DEFINITION
2265 000000 .NDLNM==:0 ;NSP PORT (LINE) NUMBER
2266 000001 .NDLST==:1 ;STATE OF LINE
2267 000001 .NDLON==:1 ;ON
2268 000002 .NDLOF==:2 ;OFF
2269 000003 .NDLCN==:3 ;CONTROLLER LOOPBACK
2270 000004 .NDLCB==:4 ;CABLE LOOPBACK
2271 000002 .NDLND==:2 ;BYTE POINTER NODE AT END OF LINE
2272 000003 .NDLSZ==:3 ;SIZE OF BLOCK
2273 000015 .NDVFY==:15 ;VERIFY NODE NAME
2274 000001 .NDFLG==:1 ;FLAGS RETURNED BY MONITOR
2275 400000 000000 ND%EXM==:1B0 ;NODE SPECFIED EXACTLY MATCHES A KNOWN NODE
2276
2277 ;NOUT
2278
2279 400000 000000 NO%MAG==:1B0 ;OUTPUT MAGNITUDE
2280 200000 000000 NO%SGN==:1B1 ;OUTPUT SIGN
2281 100000 000000 NO%LFL==:1B2 ;LEADING FILLER
2282 040000 000000 NO%ZRO==:1B3 ;FILL WITH ZERO'S
2283 020000 000000 NO%OOV==:1B4 ;OUTPUT ON COLUMN OVERFLOW
2284 010000 000000 NO%AST==:1B5 ;OUTPUT ASTERISKS ON OVERFLOW
2285 000177 000000 NO%COL==:177B17 ;NUMBER OF COLUMNS TO USE
2286 777777 NO%RDX==:777777 ;RADIX
2287
2288
2289 000004 OF%FDT==:1B33 ;FORCE DATE UPDATE
2290
2291 ;ODCNV -- SEE IDCNV FOR BITS
2292
2293
2294 ;ODTIM
2295
2296 400000 000000 OT%NDA==:1B0 ;DO NOT OUTPUT DATE
2297 200000 000000 OT%DAY==:1B1 ;OUTPUT DAY OF WEEK
2298 100000 000000 OT%FDY==:1B2 ;OUTPUT NUMERIC MONTH
2299 040000 000000 OT%NMN==:1B3 ;OUTPUT NUMERIC MONTH
2300 020000 000000 OT%FMN==:1B4 ;OUTPUT MONTH IN FULL
2301 010000 000000 OT%4YR==:1B5 ;OUTPUT 4-DIGIT YEAR
2302 004000 000000 OT%DAM==:1B6 ;OUTPUT DAY AFTER MONTH
2303 002000 000000 OT%SPA==:1B7 ;OUTPUT SPACES IN DATE
2304 001000 000000 OT%SLA==:1B8 ;OUTPUT SLASHES IN DATE
2305 000400 000000 OT%NTM==:1B9 ;DO NOT OUTPUT TIME
2306 000200 000000 OT%NSC==:1B10 ;DO NOT OUTPUT SECONDS
2307 000100 000000 OT%12H==:1B11 ;OUTPUT 12-HOUR FORMAT
2308 000040 000000 OT%NCO==:1B12 ;DO NOT OUTPUT COLON
2309 000020 000000 OT%TMZ==:1B13 ;OUTPUT TIME ZONE
2311
2312
2313 ;ODTNC -- SEE IDCNV FOR BITS
2314
2315
2316 ;OPENF
2317
2318 770000 000000 OF%BSZ==:77B5 ;BYTE SIZE
2319 007400 000000 OF%MOD==:17B9 ;MODE
2320 400000 OF%HER==:1B18 ;HALT ON IO ERROR
2321 200000 OF%RD==:1B19 ;READ
2322 100000 OF%WR==:1B20 ;WRITE
2323 040000 OF%EX==:1B21 ;EXECUTE (RESERVED FOR THE FUTURE)
2324 020000 OF%APP==:1B22 ;APPEND
2325 002000 OF%THW==:1B25 ;THAWED
2326 001000 OF%AWT==:1B26 ;ALWAYS WAIT
2327 000400 OF%PDT==:1B27 ;PRESERVE DATES
2328 000200 OF%NWT==:1B28 ;NEVER WAIT
2329 000100 OF%RTD==:1B29 ;RESTRICTED
2330 000040 OF%PLN==:1B30 ;SET TO DISABLE LINE NUMBER CHECKING FOR
2331 ; NON-LINE NUMBER FILES
2332 000020 OF%DUD==:1B31 ;DON'T UPDATE TO DISK BY DDMP
2333 000010 OF%OFL==:1B32 ;ALLOW OPENING THE DEVICE EVEN IF OFFLINE
2334 000004 OF%FDT==:1B33 ;FORCE DATE UPDATE
2335 000002 OF%RAR==:1B34 ; Wait if file is off-line
2336
2337
2338
2339 ;PMAP BIT DEFINITIONS
2340
2341 400000 000000 PM%CNT==:1B0 ;RH WORD CONTAINS A COUNT
2342 200000 000000 PM%MVP==:1B1 ;MOVE PAGE INSTEAD OF INDIRECT POINTER
2343 ; (NOT IMPLEMENTED
2344 100000 000000 PM%RD==:1B2 ;READ
2345 040000 000000 PM%WT==:1B3 ;WRITE
2346 040000 000000 PM%WR==:1B3 ; (ANOTHER NAME FOR ABOVE)
2347 020000 000000 PM%EX==:1B4 ;EXECUTE (RESERVED FOR THE FUTURE)
2348 160000 000000 PM%RWX==:7B4 ;CONVENIENT ABBREV FOR RD+WT+EX
2349 010000 000000 PM%PLD==:1B5 ;PRELOAD PAGES BEING MAPPED
2350 004000 000000 PM%IND==:1B6 ;USE INDIRECT PTRS (RESERVED FOR THE FUTURE)
2351 001000 000000 PM%TPU==:1B8 ;TRAP TO USER
2352 ; (NOT IMPLEMENTED -- OBSOLETE)
2353 000400 000000 PM%CPY==:1B9 ;COPY ON WRITE
2354 000100 000000 PM%ABT==:1B11 ;ABORT UNMAP.
2355 777777 PM%RPT==:777777B35 ;REPEAT COUNT
2356
2357
2358 ;PMCTL - PHYSICAL MEMORY CONTROL
2359
2360 000000 .MCRCE==:0 ;READ CACHE ENABLE
2361 000001 .MCSCE==:1 ;SET CACHE ENABLE
2362 000000 .MCCST==:0 ;ARGLIST OFFSET FOR CACHE STATE
2363 000001 MC%CEN==:1 ;CACHE ENABLED
2365 000003 .MCSPS==:3 ;SET PAGE STATUS
2366 000000 .MCPPN==:0 ;ARGLIST OFFSET FOR PHYSICAL PAGE NUMBER
2367 000001 .MCPST==:1 ;ARGLIST OFFSET FOR PAGE STATE
2368 000000 .MCPSA==:0 ;PAGE AVAILABLE
2369 000001 .MCPSS==:1 ;PAGE IN TRANSITION STATE
2370 000002 .MCPSO==:2 ;PAGE OFFLINE
2371 000003 .MCPSE==:3 ;PAGE OFFLINE DUE TO ERROR
2372 000004 .MCRME==:4 ;READ MEMORY ERROR INFORMATION
2373 000001 .PMMER==:1 ;MOS MEMORY ERROR
2374 000000 .PMMTP==:0 ;ENTRY HEADER AND TYPE
2375 000001 .PMMRG==:1 ;ERROR REGISTER
2376 000002 .PMMSY==:2 ;SYNDROME
2377 000003 .PMMBN==:3 ;BLOCK NUMBER
2378 000004 .PMMSB==:4 ;SPARE BIT NUMBER
2379 000005 .PMMEA==:5 ;ERROR ADDRESS
2380 000006 .PMMSN==:6 ;START OF SERIAL NUMBERS
2381 000004 .PMMNS==:4 ;# OF SERIAL NUMBERS TO STORE
2382
2383
2384 ;PRARG - PROCESS ARGUMENTS
2385
2386 ;FUNCTION CODE DEFINITIONS
2387
2388 000001 .PRARD==:1 ;READ ARGUMENT BLOCK
2389 000002 .PRAST==:2 ;SET ARGUMENT BLOCK
2390
2391
2392
2393 ;RCUSR AND RCDIR
2394
2395 ; FLAGS SUPPLIED ON CALL
2396
2397 000010 000000 RC%PAR==:1B14 ;PARTIAL RECOGNITION IS ALLOWED
2398 000004 000000 RC%STP==:1B15 ;STEP WILDCARD (RCDIR ONLY)
2399 000002 000000 RC%AWL==:1B16 ;ALLOW WILDCARDS (RCDIR ONLY)
2400 000001 000000 RC%EMO==:1B17 ;EXACT MATCH ONLY
2401
2402 ; FLAGS RETURNED
2403
2404 400000 000000 RC%DIR==1B0 ;FILES-ONLY DIRECTORY
2405 200000 000000 RC%ANA==1B1 ;ALPHANUMERIC ACCOUNTS ALLOWED
2406 100000 000000 RC%RLM==1B2 ;REPEAT LOGIN MESSAGE
2407 040000 000000 RC%NOM==:1B3 ;NO MATCH FOUND
2408 020000 000000 RC%AMB==:1B4 ;AMBIGUOUS
2409 010000 000000 RC%NMD==:1B5 ;NO MORE DIRS - RETURNED IF STP IS REQUESTED
2410 004000 000000 RC%WLD==:1B6 ;WILDCARD DIR WAS INPUT
2411
2412
2413
2414 ;RCVOK
2415
2416 000000 .RCFCJ==:0 ;FUNCTION CODE,, JOB NUMBER
2417 000001 .RCUNO==:1 ;USER NUMBER
2419 000003 .RCRQN==:3 ;REQUEST NUMBER
2420 000004 .RCNUA==:4 ;NUMBER OF USER ARGS
2421 000005 .RCARA==:5 ;POINTER TO USER ARGS
2422 000006 .RCCAP==:6 ;CURRENT CAPABILITIES
2423 000007 .RCTER==:7 ;TERMINAL NUMBER
2424 000010 .RCRJB==:10 ;REQUESTED JOB
2425
2426 ;RDTTY AND TEXTI
2427
2428 400000 000000 RD%BRK==:1B0 ;BREAK ON REGULAR BREAK SET
2429 200000 000000 RD%TOP==:1B1 ;BREAK ON TOPS10 BREAK SET
2430 100000 000000 RD%PUN==:1B2 ;BREAK ON PUNCTUATION
2431 040000 000000 RD%BEL==:1B3 ;BREAK ON END OF LINE
2432 020000 000000 RD%CRF==:1B4 ;SUPPRESS CR (RETURNS LF ONLY)
2433 010000 000000 RD%RND==:1B5 ;RETURN IF NOTHING TO DELETE
2434 004000 000000 RD%JFN==:1B6 ;JFNS GIVEN FOR SOURCE
2435 002000 000000 RD%RIE==:1B7 ;RETURN ON INPUT (BUFFER) EMPTY
2436 001000 000000 RD%BBG==:1B8 ;BEGINNING OF (DEST) BUFFER GIVEN
2437 000400 000000 RD%BEG==:1B9 ;RETURN IMMEDIATELY WHEN TYPIST EDITS TO .RDBKL
2438 000200 000000 RD%RAI==:1B10 ;RAISE LOWERCASE INPUT
2439 000100 000000 RD%SUI==:1B11 ;SUPPRESS U INDICATION
2440 000040 000000 RD%BTM==:1B12 ;BREAK CHARACTER TERMINATED INPUT
2441 000020 000000 RD%BFE==:1B13 ;RETURNED BECAUSE BUFFER EMPTY
2442 000010 000000 RD%BLR==:1B14 ;BACKUP LIMIT REACHED
2443
2444 ;TEXTI ARG BLOCK
2445
2446 000000 .RDCWB==:0 ;COUNT OF WORDS IN BLOCK
2447 000001 .RDFLG==:1 ;FLAGS
2448 000002 .RDIOJ==:2 ;IO JFNS
2449 000003 .RDDBP==:3 ;DEST BYTE POINTER
2450 000004 .RDDBC==:4 ;DEST BYTE COUNT
2451 000005 .RDBFP==:5 ;TOP OF BUFFER POINTER
2452 000006 .RDRTY==:6 ;RETYPE (R) POINTER
2453 000007 .RDBRK==:7 ;BREAK SET MASK POINTER
2454 000010 .RDBKL==:10 ;BACKUP LIMIT POINTER
2455
2456
2457
2458 ;RFSTS
2459
2460 400000 000000 RF%LNG==:1B0 ;LONG FORM OF RFSTS CALL, ARG BLOCK IN 2
2461 777777 RF%PRH==:777777B35 ;PROCESS HANDLE
2462
2463 ;RFSTS ARG BLOCK
2464
2465 000000 .RFCNT==:0 ;XWD COUNT OF WORDS RETURNED,
2466 ; MAXIMUM WORDS TO RETURN
2467 000001 .RFPSW==:1 ;PROCESS STATUS WORD
2468 000002 .RFPFL==:2 ;PROCESS' PC FLAGS
2469 000003 .RFPPC==:3 ;PROCESS' PC
2470 000004 .RFSFL==:4 ;STATUS FLAGS FOR PROCESS:
2471 400000 000000 RF%EXO==1B0 ;PROCESS IS EXECUTE-ONLY
2473 ;PROCESS STATUS WORD
2474
2475 400000 000000 RF%FRZ==:1B0 ;PROCESS IS FROZEN
2476 377777 000000 RF%STS==:377777B17 ;PROCESS STATUS CODE
2477 000000 .RFRUN==:0 ;RUNNABLE
2478 000001 .RFIO==:1 ;DISMISSED FOR I/O
2479 000002 .RFHLT==:2 ;HALTED
2480 000003 .RFFPT==:3 ;FORCED PROCESS TERMINATION
2481 000004 .RFWAT==:4 ;WAITING FOR INFERIOR PROCESS
2482 000005 .RFSLP==:5 ;SLEEP
2483 000006 .RFTRP==:6 ;JSYS TRAPPED
2484 000007 .RFABK==:7 ;ADDRESS BREAK FREEZE
2485 777777 RF%SIC==:777777B35 ;SOFTWARE INTERRUPT CHANNNEL
2486
2487
2488 ;RFTAD/SFTAD
2489
2490 000000 .RSWRT==:0 ;WRITE DATE WORD
2491 000001 .RSCRV==:1 ;CREATION DATE WORD
2492 000002 .RSREF==:2 ;REFERENCE DATE WORD
2493 000003 .RSCRE==:3 ;INTERNAL SYSTEM WRITE DATE WORD
2494 000004 .RSTDT==:4 ; Tape write date word
2495 000005 .RSNET==:5 ; Online expiration date/interval word
2496 000006 .RSFET==:6 ; Offline expiration date/interval word
2497
2498
2499 ;RMAP
2500
2501 100000 000000 RM%RD==1B2 ;READ ACCESS ALLOWED
2502 040000 000000 RM%WR==:1B3 ;WRITE ACCESS ALLOWED
2503 020000 000000 RM%EX==:1B4 ;EXECUTE ACCESS ALLOWED
2504 010000 000000 RM%PEX==:1B5 ;PAGE EXISTS
2505 000400 000000 RM%CPY==:1B9 ;COPY ON WRITE
2506
2507
2508 ;RPACS/SPACS BIT DEFINITIONS
2509
2510 100000 000000 PA%RD==:1B2 ;READ ACCESS ALLOWED
2511 040000 000000 PA%WT==:1B3 ;WRITE ACCESS ALLOWED
2512 040000 000000 PA%WR==:1B3 ; (ANOTHER NAME FOR ABOVE)
2513 020000 000000 PA%EX==:1B4 ;EXECUTE ACCESS ALLOWED
2514 ; (RESERVED FOR THE FUTURE)
2515 010000 000000 PA%PEX==:1B5 ;PAGE EXISTS
2516 004000 000000 PA%IND==:1B6 ;INDIRECT POINTER
2517 001000 000000 PA%TPU==:1B8 ;TRAP TO USER
2518 ; (NOT IMPLEMENTED -- OBSOLETE)
2519 000400 000000 PA%CPY==:1B9 ;COPY ON WRITE
2520 000200 000000 PA%PRV==:1B10 ;PRIVATE
2521 100000 P1%RD==:1B20 ;READ ACCESS ALLOWED IN 1ST POINTER
2522 040000 P1%WR==:1B21 ;WRITE ACCESS ALLOWED IN 1ST POINTER
2523 040000 P1%WT==:1B21 ; (ANOTHER NAME FOR ABOVE)
2524 020000 P1%EX==:1B22 ;EXECUTE ACCESS ALLOWED IN 1ST POINTER
2525 ; (RESERVED FOR THE FUTURE)
2527 000400 P1%CPY==:1B27 ;COPY-ON-WRITE IN 1ST POINTER
2528
2529
2530
2531 ;RSCAN
2532
2533 000000 .RSINI==:0 ;MAKE RESCAN BUFFER AVAILABLE FOR INPUT
2534 000001 .RSCNT==:1 ;COUNT CHARACTERS LEFT TO READ FROM RESCAN BUFFER
2535
2536
2537 ;RTIW
2538
2539 400000 000000 RT%DIM==:1B0 ;DEFERRED TERMINAL INTERRUPT MASK GIVEN
2540 377777 RT%PRH==:377777B35 ;PROCESS HANDLE
2541
2542
2543 ;SCTTY
2544
2545 000000 .SCRET==:0 ;RETURN DESIGNATOR (CTTY) FOR FORK
2546 000001 .SCSET==:1 ;SET SCTTY FOR FORK
2547 000002 .SCRST==:2 ;CLEAR FORK CTTY (RESTORE JOB CTTY)
2548
2549 ;SCVEC
2550
2551 000000 .SVEAD==:0 ;ENTRY ADDRESS
2552 000001 .SVINE==:1 ;INITIAL ENTRY FOR SETUP
2553 000002 .SVGET==:2 ;ENTRY ADDRESS FOR GET SHARE FILE ROUTINE
2554 000003 .SV40==:3 ;ADDRESS TO GET LOCATION 40
2555 000004 .SVRPC==:4 ;ADDRESS TO GET RETURN PC
2556 000005 .SVMAK==:5 ;ENTRY FOR MAKE SHARE FILE ROUTINE
2557 000006 .SVCST==:6 ;2 WORD BLOCK FOR CONTROL-C/START PROCESSING
2558
2559
2560 ;SDVEC
2561
2562 000000 .SDEAD==:0 ;ENTRY ADDRESS
2563 000001 .SDINE==:1 ;INITIAL ENTRY
2564 000002 .SDVER==:2 ;DMS VERSION
2565 000003 .SDDMS==:3 ;ADDRESS TO STORE DMS JSYS
2566 000004 .SDRPC==:4 ;ADDRESS TO STORE RETURN PC
2567
2568
2569
2570 ;SETJB FUNCTION CODES
2571
2572 000000 .SJDEN==:0 ;SET DEFAULT MAGTAPE DENSITY
2573 000000 .SJDDN==:0 ;SYSTEM DEFAULT DENSITY
2574 000001 .SJDN2==:1 ;200 BPI
2575 000002 .SJDN5==:2 ;556 BPI
2576 000003 .SJDN8==:3 ;800 BPI
2577 000004 .SJD16==:4 ;1600 BPI
2578 000005 .SJD62==:5 ;6250 BPI
2579 000001 .SJPAR==:1 ;SET DEFAULT MAGTAPE PARITY
2581 000001 .SJPRE==:1 ;EVEN PARITY
2582 000002 .SJDM==:2 ;SET DEFAULT MAGTAPE DATA MODE
2583 000000 .SJDDM==:0 ;SYSTEM DEFAULT DATA MODE
2584 000001 .SJDMC==:1 ;CORE DUMP MODE
2585 000002 .SJDM6==:2 ;SIX BIT BYTE MODE (FOR 7-TRACK DRIVES)
2586 000003 .SJDMA==:3 ;ANSI ASCII MODE (7 BITS IN 8 BIT BYTE)
2587 000004 .SJDM8==:4 ;INDUSTRY COMPATIBLE MODE
2588 000005 .SJDMH==:5 ;HI-DENSITY MODE (9 EIGHT BIT
2589 ; BYTES IN 2 WORDS)
2590 000003 .SJRS==:3 ;SET DEFAULT MAGTAPE RECORD SIZE
2591 000004 .SJDFS==:4 ;SET DEFERRED SPOOLING
2592 000000 .SJSPI==:0 ;IMMEDIATE MODE SPOOLING
2593 000001 .SJSPD==:1 ;DEFERRED MODE SPOOLING
2594 000005 .SJSRM==:5 ;SET JOB SESSION REMARK
2595 000006 .SJT20==:6 ;DECLARE WHETHER TOPS20 COMMAND LEVEL OR NOT
2596 000007 .SJDFR==:7 ; Set default job retrieval mode
2597 000000 .SJRFA==:0 ; OPENF should always fail
2598 000001 .SJRWA==:1 ; OPENF should always request wait
2599 000010 .SJBAT==:10 ;SET BATCH FLAGS AND STREAM
2600 ;SEE .JIBCH FOR FIELD DEFINITIONS
2601 000011 .SJLLO==:11 ;SET JOB LOCATION
2602
2603
2604 ;SFORK
2605
2606 400000 000000 SF%CON==:1B0 ;CONTINUE PROCESS, IGNORE PC IN AC2
2607 777777 SF%PRH==:777777B35 ;PROCESS HANDLE
2608
2609
2610 ;SFUST
2611
2612 000000 .SFAUT==:0 ;SET AUTHOR STRING
2613 000001 .SFLWR==:1 ;SET LAST WRITER STRING
2614
2615
2616
2617 ;SMON FUNCTION CODES AND BIT DEFINITIONS (SYSTEM FLAGS)
2618
2619 000000 .SFFAC==:0 ;ALLOW FACT ENTRIES
2620 000001 .SFCDE==:1 ;CHECKDISK FOUND ERRORS
2621 000002 .SFCDR==:2 ;CHECKDISK RUNNING
2622 000003 .SFMST==:3 ;MANUAL START IN PROGRESS
2623 000004 .SFRMT==:4 ;REMOTE LOGINS ALLOWED
2624 000005 .SFPTY==:5 ;PTY LOGINS ALLOWED
2625 000006 .SFCTY==:6 ;CTY LOGIN ALLOWED
2626 000007 .SFOPR==:7 ;OPERATOR IN ATTENDANCE
2627 000010 .SFLCL==:10 ;LOCAL LOGINS ALLOWED
2628 000011 .SFBTE==:11 ;BIT TABLE ERRORS FOUND ON STARTUP
2629 000012 .SFCRD==:12 ;USER CAN CHANGE DIRECTORY CHARACTERISTICS
2630 000013 .SFNVT==:13 ;TOPS20AN ;NVT LOGIN ALLOWED
2631 000014 .SFWCT==:14 ;WHEEL LOGIN ON CTY ALLOWED
2632 000015 .SFWLC==:15 ;WHEEL LOGIN ON LOCAL TERMINALS ALLOWED
2633 000016 .SFWRM==:16 ;WHEEL LOGIN ON REMOTE TERMINALS ALLOWED
2635 000020 .SFWNV==:20 ;TOPS20AN ;WHEEL LOGIN ON NVT'S ALLOWED
2636 000021 .SFUSG==:21 ;USAGE FILE IN USE
2637 000022 .SFFLO==:22 ;FULL LATENCY OPTIMIZATION
2638 ;CAUTION: SETTING THIS REQUIRES THAT THE
2639 ; SYSTEM BE AT REVISION LEVEL 10, AND
2640 ; THAT RH20 BOARD M8555 BE AT REVISION LEVEL D.
2641 ; OTHERWISE, THE FILE-SYSTEM MAY BE DAMAGED.
2642
2643 000023 .SFMTA==:23 ;MAGTAPE ALLOCATION ENABLED
2644 ;BELOW ARE FUNCTION CODES THAT DO NOT MAP DIRECTLY INTO BITS
2645
2646
2647 000044 .SFNTN==:44 ;TOPS20AN ;NETWORK ON/OFF CONTROL
2648 000045 .SFNDU==:45 ;TOPS20AN ;NET DOWN/UP REQUEST
2649 000046 .SFNHI==:46 ;TOPS20AN ;NET HOST TABLE INITIALIZE
2650 000047 .SFTMZ==:47 ;SET TIME ZONE THIS SYSTEM IS IN
2651 000050 .SFLHN==:50 ;TOPS20AN ;SET LOCAL HOST NUMBER OF THIS NET SITE
2652 000051 .SFAVR==:51 ;ACCOUNT VALIDATION ON/OFF
2653 000052 .SFSTS==:52 ;ENABLE/DISABLE STATUS REPORTING
2654 000053 .SFSOK==:53 ;GETOK/GIVOK DEFAULT SETTING
2655 000054 .SFMCY==:54 ;SET MAX ORDINARY OFFLINE EXP PERIOD
2656 000055 .SFRDU==:55 ;READ DATE UPDATE FUNCTION
2657 000056 .SFACY==:56 ;SET MAX ARCHIVE EXP PERIOD
2658 000057 .SFRTW==:57 ;SET [NO] RETRIEVAL WAITS NON-0 = NO WAIT
2659 000060 .SFTDF==:60 ;TAPE MOUNT CONTROLS
2660 400000 000000 MT%UUT==1B0 ;UNLOAD UNREADABLE TAPES
2661 000061 .SFWSP==:61 ;WORKING SET PRELOADING
2662
2663 400000 000000 SF%FAC==:1B<.SFFAC ;FACT ENTRIES ALLOWED
2664 200000 000000 SF%CDE==:1B<.SFCDE ;CHECKDISK FOUND ERRORS
2665 100000 000000 SF%CDR==:1B<.SFCDR ;CHECKDISK RUNNING
2666 040000 000000 SF%MST==:1B<.SFMST ;MANUAL START IN PROGRESS
2667 020000 000000 SF%RMT==:1B<.SFRMT ;REMOTE LOGINS ALLOWED
2668 010000 000000 SF%PTY==:1B<.SFPTY ;PTY LOGINS ALLOWED
2669 004000 000000 SF%CTY==:1B<.SFCTY ;CTY LOGIN ALLOWED
2670 002000 000000 SF%OPR==:1B<.SFOPR ;OPERATOR IN ATTENDANCE
2671 001000 000000 SF%LCL==:1B<.SFLCL ;LOCAL LOGINS ALLOWED
2672 000400 000000 SF%BTE==:1B<.SFBTE ;BIT TABLE ERRORS FOUND ON STARTUP
2673 000200 000000 SF%CRD==:1B<.SFCRD ;USER CAN CHANGE DIRECTORY CHARACTERISTICS
2674 000100 000000 SF%NVT==:1B<.SFNVT ;TOPS20AN ;NVT LOGINS ALLOWED
2675 000001 000000 SF%USG==:1B<.SFUSG ;USAGE FILE IN USE
2676 400000 SF%FLO==:1B<.SFFLO ;FULL LATENCY OPTIMIZATION IN USE
2677 ;CAUTION: SETTING THIS REQUIRES THAT THE
2678 ; SYSTEM BE AT REVISION LEVEL 10, AND
2679 ; THAT RH20 BOARD M8555 BE AT REVISION LEVEL D.
2680 ; OTHERWISE, THE FILE-SYSTEM MAY BE DAMAGED.
2681 200000 SF%MTA==:1B<.SFMTA ;MAGTAPE ALLOCATION ENABLED
2682
2683
2684 400000 000000 SF%EOK==:1B0 ;ENABLE ACCESS CHECKING
2685 200000 000000 SF%DOK==:1B1 ;ALLOW ACCESS IF CHECKING DISABLED
2686
2687
2689
2690 400000 000000 SI%TMG==:1B0 ;TRUNCATE MESSAGE
2691 200000 000000 SI%EOM==:1B1 ;END-OF-MESSAGE FOUND
2692
2693 ;SKED JSYS
2694
2695 000000 .SACNT==:0 ;ARGUMENT BLOCK OFFSET FOR COUNT
2696
2697 ;FUNCTION CODES
2698
2699 000001 .SKRBC==:1 ;READ BIAS CONTROL KNOB
2700 000001 .SAKNB==:1 ;OFFSET FOR KNOB VALUE
2701 000002 .SKSBC==:2 ;SET BIAS CONTROL KNOB
2702 000003 .SKRCS==:3 ;READ SHARE OF A CLASS
2703 000001 .SACLS==:1 ;CLASS
2704 000002 .SASHR==:2 ;SHARE
2705 000003 .SAUSE==:3 ;USE
2706 000004 .SA1ML==:4 ;1 MINUTE LOAD AVERAGE
2707 000005 .SA5ML==:5 ;5 MINUTE LOAD AVERAGE
2708 000006 .SA15L==:6 ;15 MINUTE LOAD
2709 000004 .SKSCS==:4 ;SET SHARE OF A CLASS
2710 000005 .SKICS==:5 ;START OR STOP CLASS SCHEDULING
2711 000001 .SACTL==:1 ;WORD FOR CONTROL BITS
2712 000006 .SKSCJ==:6 ;SET CLASS OF A JOB
2713 000001 .SAJOB==:1 ;JOB
2714 000002 .SAJCL==:2 ;CLASS OF JOB
2715 000007 .SKRJP==:7 ;READ CLASS PARAMETERS FOR A JOB
2716 000003 .SAJSH==:3 ;JOB'S SHARE ALLOTMENT
2717 000004 .SAJUS==:4 ;JOB'S CURRENT USE
2718 000010 .SKBCR==:10 ;READ CLASS SETTING FOR BATCH JOBS
2719 000001 .SABCL==:1 ;BATCH CLASS
2720 000011 .SKBCS==:11 ;SET CLASS FOR BATCH JOBS
2721 000012 .SKBBG==:12 ;RUN BATCH JOBS ON DREGS QUEUE
2722 000001 .SADRG==:1 ;WORD TO SPECIFY DREGS OR NOT
2723 000013 .SKDDC==:13 ;SET SYSTEM CLASS DEFAULT
2724 000001 .SADCL==:1 ;DEFAULT CLASS WORD
2725 000014 .SKRCV==:14 ;READ STATUS
2726 400000 000000 SK%ACT==:1B0 ;CLASS BY ACCOUNTS
2727 200000 000000 SK%WDF==:1B1 ;WITHHOLD WINDFALL
2728 100000 000000 SK%STP==:1B2 ;CLASS SCHEDULER OFF
2729 040000 000000 SK%DRG==:1B3 ;BATCH JOBS ARE BEING RUN ON DREGS QUEUE
2730
2731 ;SNOOP JSYS DEFINITIONS
2732
2733 ;SNOOP FUNCTION CODES
2734
2735 000000 .SNPLC==:0 ;LOCK CODE INTO MONITOR VIRT MEMORY
2736 000001 .SNPLS==:1 ;LOCK DOWN THE SWAPPABLE MONITOR
2737 000002 .SNPDB==:2 ;DEFINE A BREAK POINT
2738 000003 .SNPIB==:3 ;INSERT THE BREAK POINTS
2739 000004 .SNPRB==:4 ;REMOVE THE BREAK POINTS
2740 000005 .SNPUL==:5 ;UNLOCK AND RELEASE ALL SNOOP RESOURCES
2741 000006 .SNPSY==:6 ;LOOK UP A MONITOR SYMBOL
2743
2744 ;SOUTM JSYS DEFINITIONS
2745
2746 400000 000000 SO%WMG==1B0 ;WRITE END-OF-MESSAGE
2747
2748 ;SPOOL JSYS FUNCTION CODES
2749
2750 000000 .SPLDI==:0 ;DEFINE AN INPUT SPOOLING DEVICE
2751 000001 .SPLSD==:1 ;SET DIRECTORY OF SPOOLED DEVICE
2752 000002 .SPLRD==:2 ;READ DIRECTORY OF SPOOLED DEVICE
2753
2754 ;FLAGS IN SPOOL MESSAGE ON LOGOUT AND SPOOLED FILE CLOSE
2755
2756 400000 000000 SP%BAT==:1B0 ;JOB IS A BATCH JOB
2757 200000 000000 SP%DFS==:1B1 ;SPOOLING IS DEFERRED
2758 100000 000000 SP%ELO==:1B2 ;JOB EXECUTED LGOUT JSYS ITSELF
2759 040000 000000 SP%FLO==:1B3 ;JOB FORCED TO LOG OUT BY TRAP IN TOP FK
2760 020000 000000 SP%OLO==:1B4 ;OTHER JOB AIMED LGOUT AT THIS ONE
2761
2762 ;SPOOL ARGUMENT BLOCK
2763
2764 000000 .SPLDV==:0 ;DEVICE DESIGNATOR
2765 000001 .SPLNA==:1 ;NAME STRING
2766 000001 .SPLDR==:1 ;DIRECTORY NUMBER
2767 000002 .SPLGN==:2 ;GENERATION NUMBER
2768
2769
2770 ;SSAVE
2771
2772 777777 000000 SS%NNP==777777B17 ;NEGATIVE NUMBER OF PAGES
2773 400000 SS%CPY==:1B18 ;ALLOW COPY-ON-WRITE
2774 200000 SS%UCA==:1B19 ;USE CURRENT ACCESS
2775 100000 SS%RD==:1B20 ;ALLOW READ ACCESS
2776 040000 SS%WR==:1B21 ;ALLOW WRITE ACCESS
2777 020000 SS%EXE==:1B22 ;ALLOW EXECUTE ACCESS
2778 000777 SS%FPN==:777B35 ;FIRST PAGE NUMBER
2779
2780
2781 ;STCMP
2782
2783 400000 000000 SC%LSS==:1B0 ;T1 LESS THAN T2
2784 200000 000000 SC%SUB==:1B1 ;T1 SUBSTRING OF T2
2785 100000 000000 SC%GTR==:1B2 ;T1 GREATER THAN T2
2786
2787
2788
2789 ;STDIR
2790
2791 400000 000000 ST%DIR==:1B0 ;FILES ONLY DIRECTORY
2792 200000 000000 ST%ANA==:1B1 ;ALPHANUMERIC ACCOUNTS
2793 100000 000000 ST%RLM==:1B2 ;REPEAT LOGIN MESSAGE
2794
2795
2797
2798 400000 000000 ST%DIM==:1B0 ;SET DEFERRED INTERRUPT MASK
2799 777777 ST%PRH==:777777B35 ;PROCESS HANDLE
2800
2801 ;SWTRP DEFINITIONS
2802
2803 000000 .SWART==:0 ;SET ARITHMETIC TRAP
2804 000001 .SWRAT==:1 ;READ ARITHMETIC TRAP
2805 000002 .SWLUT==:2 ;SET LUUO ADDRESS
2806 000003 .SWRLT==:3 ;READ LUUO ADDRESS
2807 000000 .ARPFL==:0 ;OFFSET IN TRAP BLOCK FOR PC FLAGS
2808 000001 .AROPC==:1 ;OFFSET FOR OLD PC VALUE
2809 000002 .AREFA==:2 ;OFFSET FOR E
2810 000003 .ARNPC==:3 ;OFFSET FOR NEW PC WORD
2811
2812 ;TBLUK
2813
2814 400000 000000 TL%NOM==:1B0 ;NO MATCH
2815 200000 000000 TL%AMB==:1B1 ;AMBIGUOUS
2816 100000 000000 TL%ABR==:1B2 ;LEGAL ABBREVIATION
2817 040000 000000 TL%EXM==:1B3 ;EXACT MATCH
2818
2819
2820 ;TFORK
2821
2822 ;FUNCTION CODES IN LH AC1
2823
2824 000000 .TFSET==:0 ;SET TRAPS AS SPEC'D BY BIT TABLE
2825 000001 .TFRAL==:1 ;REMOVE ALL TRAPS SET BY THIS FORK
2826 000002 .TFRTP==:2 ;REMOVE TRAPS SET BY THIS FORK
2827 000003 .TFSPS==:3 ;SET JSYS TRAP PSI CHAN IN LH(2)
2828 000004 .TFRPS==:4 ;READ JSYS TRAP PSI CHAN INTO LH(2)
2829 000005 .TFTST==:5 ;TEST IF SELF MONITORED
2830 000006 .TFRES==:6 ;REMOVE TRAPS FROM ALL INFERIORS, CLR PSI
2831 000007 .TFUUO==:7 ;SET UUO TRAPS FOR FORK
2832 000010 .TFSJU==:8 ;SET BOTH UUO AND JSYS TRAPS
2833 000011 .TFRUU==:9 ;REMOVE UUO TRAPS
2834
2835 ;TIMER DEFINITIONS
2836
2837 000000 .TIMRT==:0 ;SET TIME LIMIT
2838 000001 .TIMEL==:1 ;SET ELAPSED TIME CLOCK
2839 000002 .TIMDT==:2 ;SET DATE TIME CLOCK
2840 000003 .TIMDD==:3 ;DELETE AN EXPLICT DATE TIME CLOCK
2841 000004 .TIMBF==:4 ;DELETE ALL ENTIRES BEFORE DT
2842 000005 .TIMAL==:5 ;DELETE ALL (INCLUDES TIME LIMIT)
2843
2844
2845
2846 ;TLINK
2847
2848 400000 000000 TL%CRO==:1B0 ;CLEAR REMOTE TO OBJECT LINK
2849 200000 000000 TL%COR==:1B1 ;CLEAR OBJECT TO REMOTE LINK
2851 040000 000000 TL%ERO==:1B3 ;ESTABLISH REMOTE TO OBJECT LINK
2852 020000 000000 TL%SAB==:1B4 ;SET ACCEPT BIT FOR OBJECT
2853 010000 000000 TL%ABS==:1B5 ;ACCEPT BIT STATE
2854 004000 000000 TL%STA==:1B6 ;SET OR CLEAR ADVICE
2855 002000 000000 TL%AAD==1B7 ;ACCEPT ADVICE
2856 777777 TL%OBJ==:777777B35 ;OBJECT DESIGNATOR
2857
2858
2859
2860 ;UFPGS
2861
2862 400000 000000 UF%NOW==:1B0 ;NO WAIT ON UPDATE
2863
2864 ;UTEST FUNCTION CODES
2865
2866 000000 .UTSET==:0 ;START TESTING
2867 000001 .UTCLR==:1 ;STOP TESTING AND RETURN RESULTS
2868
2869 ;UTEST ARGUMENT BLOCK
2870
2871 000000 .UTADR==:0 ;STARTING ADDRESS OF CODE
2872 000001 .UTLEN==:1 ;LENGTH OF CODE
2873 000002 .UTMAP==:2 ;START OF BIT MAP
2874
2875 ;USAGE
2876
2877 000000 .USENT==:0 ;WRITE ENTRY
2878 000001 .USCLS==:1 ;CLOSE OUT CURRENT FILE
2879 000002 .USCKP==:2 ;PERFORM CHECKPOINT
2880 000003 .USLGI==:3 ;LOGIN
2881 000004 .USLGO==:4 ;LOGOUT
2882 000005 .USSEN==:5 ;SESSION END
2883 000006 .USCKI==:6 ;SET CHECKPOINT INTERVAL
2884 000007 .USENA==:7 ;ENABLE ACCOUNT VALIDATION
2885 000010 .USCAS==:10 ;CHANGE ACCOUNTING SHIFT NOW
2886 000011 .USSAS==:11 ;SET AUTOMATIC ACCOUNTING SHIFT CHANGE TIMES
2887 000012 .USRAS==:12 ;READ AUTOMATIC ACCOUNTING SHIFT CHANGE TIMES
2888 ;TABLE ENTRY FORMAT FOR .USSAS/.USRAS:
2889 774000 000000 US%DOW==:177B6 ;DAY-OF-WEEK BITS
2890 777777 US%SSM==:777777 ;TIME IN SECONDS SINCE MIDNIGHT
2891
2892 ;UTFRK
2893
2894 400000 000000 UT%TRP==:1B0 ;ITRAP (OR DO ERJMP/ERCAL) TRAPPED JSYS
2895
2896
2897 ;WILD FUNCTIONS
2898
2899 000000 .WLSTR==:0 ;COMPARE TWO STRINGS
2900 000001 .WLJFN==:1 ;COMPARE TWO JFNS
2901
2902 ;WILD FLAGS AND BITS
2903
2905 400000 000000 WL%NOM==:1B0 ;STRINGS DID NOT MATCH
2906 200000 000000 WL%ABR==:1B1 ;NON-WILD STRING IS ABBREVIATION OF WILD STRING
2907 200000 000000 WL%DEV==:1B1 ;DEVICE FIELD DID NOT MATCH
2908 100000 000000 WL%DIR==:1B2 ;DIRECTORY FIELD DID NOT MATCH
2909 040000 000000 WL%NAM==:1B3 ;NAME FIELD DID NOT MATCH
2910 020000 000000 WL%EXT==:1B4 ;FILE TYPE DID NOT MATCH
2911 010000 000000 WL%GEN==:1B5 ;GENERATION NUMBER DID NOT MATCH
2912
2913
2914
2915 ;SCHEDULER CONTROL FLAGS (JSYS NOT YET DEFINED)
2916
2917 400000 SK%CYT==:1B18 ;CYCLE TIME
2918 200000 SK%IOC==:1B19 ;IO QUANTUM CHARGE
2919 140000 SK%HTF==:3B21 ;BALSET HOLD TIME
2920 020000 SK%HQR==:1B22 ;HIGH QUEUE RESERVE
2921 010000 SK%LQR==:1B23 ;LOW QUEUE RESERVE
2922 004000 SK%BQE==:1B24 ;BALSET QUEUE ON ENTRY
2923 002000 SK%BQR==:1B25 ;BALSET QUEUE ON REQUEUE
2924 001000 SK%RQ1==:1B26 ;REQUEUE TO QUEUE 1
2925 000400 SK%TTP==:1B27 ;TTY PREFERENCE
2926 000200 SK%WCF==:1B28 ;WAIT CREDIT PROPORTIONAL TO LOAD AV
2927
2928 ;***********************************************
2929 ;GENERAL FIELD AND VALUE DEFINITIONS
2930 ;USED BY MANY JSYSES
2931 ;***********************************************
2932
2933
2934 ;GENERAL FORK HANDLES
2935
2936 400000 .FHSLF==:400000 ;SELF
2937 777777 .FHSUP==:<Z -1 ;SUPERIOR
2938 777776 .FHTOP==:<Z -2 ;TOP IN JOB
2939 777775 .FHSAI==:<Z -3 ;SELF AND INFERIORS
2940 777774 .FHINF==:<Z -4 ;INFERIORS
2941 777773 .FHJOB==:<Z -5 ;ALL IN JOB
2942
2943
2944 ;FIELDS OF JFN MODE WORD
2945
2946 400000 000000 TT%OSP==:1B0 ;OUTPUT SUPPRESS
2947 200000 000000 TT%MFF==:1B1 ;MECHANICAL FORMFEED PRESENT
2948 100000 000000 TT%TAB==:1B2 ;MECHANICAL TAB PRESENT
2949 040000 000000 TT%LCA==:1B3 ;LOWER CASE CAPABILITIES PRESENT
2950 037600 000000 TT%LEN==:177B10 ;PAGE LENGTH
2951 000177 000000 TT%WID==:177B17 ;PAGE WIDTH
2952 170000 TT%WAK==:17B23 ;WAKEUP FIELD
2953 400000 TT%WK0==:1B18 ;WAKEUP CLASS 0 (UNUSED)
2954 200000 TT%IGN==:1B19 ;IGNORE TT%WAK ON SFMOD
2955 100000 TT%WKF==:1B20 ;WAKEUP ON FORMATING CONTROL CHARS
2956 040000 TT%WKN==:1B21 ;WAKEUP ON NON-FORMATTING CONTROLS
2957 020000 TT%WKP==:1B22 ;WAKEUP ON PUNCTUATION
2959 004000 TT%ECO==:1B24 ;ECHOS ON
2960 002000 TT%ECM==:1B25 ;ECHO MODE
2961 001000 TT%ALK==:1B26 ;ALLOW LINKS
2962 000400 TT%AAD==:1B27 ;ALLOW ADVICE (NOT IMPLEMENTED)
2963 000300 TT%DAM==:3B29 ;DATA MODE
2964 000000 .TTBIN==:0 ;BINARY
2965 000001 .TTASC==:1 ;ASCII
2966 000002 .TTATO==:2 ;ASCII AND TRANSLATE OUTPUT ONLY
2967 000003 .TTATE==:3 ;ASCII AND TRANSLATE ECHOS ONLY
2968 000040 TT%UOC==:1B30 ;UPPER CASE OUTPUT CONTROL
2969 000020 TT%LIC==:1B31 ;LOWER CASE INPUT CONTROL
2970 000014 TT%DUM==:3B33 ;DUPLEX MODE
2971 000000 .TTFDX==:0 ;FULL DUPLEX
2972 000001 .TT0DX==:1 ;NOT USED, RESERVED
2973 000002 .TTHDX==:2 ;HALF DUPLEX (CHARACTER)
2974 000003 .TTLDX==:3 ;LINE HALF DUPLEX
2975 000002 TT%PGM==:1B34 ;PAGE MODE
2976 000001 TT%CAR==:1B35 ;CARRIER STATE
2977
2978
2979
2980 ;DIRECTORY PROTECTION DEFINITIONS (3 6-BIT FIELDS: OWNER, GROUP, WORLD)
2981
2982 000040 DP%RD==:40 ;READING DIRECTORY IS ALLOWED
2983 000010 DP%CN==:10 ;CONNECT TO DIR, OR CHANGE PROT/ACCOUNT
2984 000004 DP%CF==:4 ;CREATING FILES IN DIR IS ALLOWED
2985
2986 ;FILE PROTECTION DEFINITIONS (3 6-BIT FIELDS: OWNER, GROUP, WORLD)
2987
2988 000002 FP%DIR==:2 ;DIRECTORY LISTING
2989 000004 FP%APP==:4 ;APPEND
2990 000010 FP%EX==:10 ;EXECUTE
2991 000020 FP%WR==:20 ;WRITE
2992 000040 FP%RD==:40 ;READ
2993
2994
2995 ;INPUT AND OUTPUT IDENTIFIERS
2996
2997 000100 .PRIIN==:100 ;PRIMARY INPUT
2998 000101 .PRIOU==:101 ;PRIMARY OUTPUT
2999 377777 .NULIO==:377777 ;NULL DESIGNATOR
3000 777777 .CTTRM==:777777 ;JOB'S CONTROLLING TERMINAL
3001 600000 .DVDES==:600000 ;UNIVERSAL DEVICE CODE
3002 400000 .TTDES==:400000 ;UNIVERSAL TERMINAL CODE
3003
3004
3005 ;MAGTAPE DEVICE STATUS BITS
3006
3007 400000 MT%ILW==:1B18 ;ILLEGAL WRITE
3008 200000 MT%DVE==:1B19 ;DEVICE ERROR
3009 100000 MT%DAE==:1B20 ;DATA ERROR
3010 040000 MT%SER==:1B21 ;SUPPRESS ERROR RECOVERY PROCEDURES
3011 020000 MT%EOF==:1B22 ;EOF (FILE MARK)
3013 004000 MT%BOT==:1B24 ;BEGINNING OF TAPE
3014 002000 MT%EOT==:1B25 ;END OF TAPE
3015 001000 MT%EVP==:1B26 ;EVEN PARITY
3016 000600 MT%DEN==:3B28 ;DENSITY (0 IS 'NORMAL')
3017 000001 .MTLOD==:1 ;LOW DENSITY (200 BPI)
3018 000002 .MTMED==:2 ;MEDIUM DENSITY (556 BPI)
3019 000003 .MTHID==:3 ;HIGH DENSITY (800 BPI)
3020 000160 MT%CCT==:7B31 ;CHARACTER COUNTER
3021
3022
3023 ;DEVICE DATA MODES
3024
3025 000001 .DMASC==:1 ;ASCII
3026 000010 .DMIMG==:10 ;IMAGE
3027 000013 .DMIMB==:13 ;IMAGE BINARY
3028 000014 .DMBIN==:14 ;BINARY
3029
3030
3031
3032 ;DEFINED PSI CHANNELS
3033
3034 RADIX 5+5
3035
3036 000006 .ICAOV==:6 ;ARITHMETIC OVERFLOW
3037 000007 .ICFOV==:7 ;FLOATING OVERFLOW
3038 000011 .ICPOV==:9 ;PDL OVERFLOW
3039 000012 .ICEOF==:10 ;END OF FILE
3040 000013 .ICDAE==:11 ;DATA ERROR
3041 000014 .ICQTA==:12 ;QUOTA/DISK EXCEEDED
3042 000016 .ICTOD==:14 ;TIME OF DAY (NOT IMPLEMENTED)
3043 000017 .ICILI==:15 ;ILLEG INSTRUCTION
3044 000020 .ICIRD==:16 ;ILLEGAL READ
3045 000021 .ICIWR==:17 ;ILLEGAL WRITE
3046 000022 .ICIEX==:18 ;ILLEGAL EXECUTE (NOT IMPLEMENTED)
3047 000023 .ICIFT==:19 ;INFERIOR FORK TERMINATION
3048 000024 .ICMSE==:20 ;MACHINE SIZE EXCEEDED
3049 000025 .ICTRU==:21 ;TRAP TO USER (NOT IMPLEMENTED)
3050 000026 .ICNXP==:22 ;NONEXISTENT PAGE REFERENCED
3051
3052
3053
3054 ;TERMINAL TYPE NUMBERS
3055
3056 000000 .TT33==:0 ;MODEL 33
3057 000001 .TT35==:1 ;MODEL 35
3058 000002 .TT37==:2 ;MODEL 37
3059 000003 .TTEXE==:3 ;EXECUPORT
3060 000010 .TTDEF==:D8 ;DEFAULT
3061 000011 .TTIDL==:D9 ;IDEAL
3062 000012 .TTV05==:D10 ;VT05
3063 000013 .TTV50==:D11 ;VT50
3064 000014 .TTL30==:D12 ;LA30
3065 000015 .TTG40==:D13 ;GT40
3067 000017 .TTV52==:D15 ;VT52
3068 000020 .TT100==:D16 ;VT100
3069 000021 .TTL38==:D17 ;LA38
3070 000022 .TT120==:D18 ;LA120
3071
3072 ;DEFINED TERMINAL CODES
3073
3074 000000 .TICBK==:0 ;BREAK
3075 000001 .TICCA==:1 ;A
3076 000002 .TICCB==:2 ;B
3077 000003 .TICCC==:3 ;C
3078 000004 .TICCD==:4 ;D
3079 000005 .TICCE==:5 ;E
3080 000006 .TICCF==:6 ;F
3081 000007 .TICCG==:7 ;G
3082 000010 .TICCH==:8 ;H
3083 000011 .TICCI==:9 ;I
3084 000012 .TICCJ==:10 ;J
3085 000013 .TICCK==:11 ;K
3086 000014 .TICCL==:12 ;L
3087 000015 .TICCM==:13 ;M
3088 000016 .TICCN==:14 ;N
3089 000017 .TICCO==:15 ;O
3090 000020 .TICCP==:16 ;P
3091 000021 .TICCQ==:17 ;Q
3092 000022 .TICCR==:18 ;R
3093 000023 .TICCS==:19 ;S
3094 000024 .TICCT==:20 ;T
3095 000025 .TICCU==:21 ;U
3096 000026 .TICCV==:22 ;V
3097 000027 .TICCW==:23 ;W
3098 000030 .TICCX==:24 ;X
3099 000031 .TICCY==:25 ;Y
3100 000032 .TICCZ==:26 ;Z
3101 000033 .TICES==:27 ;ESC
3102 000034 .TICRB==:28 ;RUBOUT
3103 000035 .TICSP==:29 ;SPACE
3104 000036 .TICRF==:30 ;CARRIER OFF
3105 000037 .TICTI==:31 ;TYPEIN
3106 000040 .TICTO==:32 ;TYPEOUT
3107
3108
3109
3110 RADIX 8
3111
3112 ;CAPABILITIES
3113
3114 400000 000000 SC%CTC==:1B0 ;CONTROL-C
3115 200000 000000 SC%GTB==:1B1 ;GETAB
3116 100000 000000 SC%MMN==:1B2 ;MAP MONITOR
3117 040000 000000 SC%LOG==:1B3 ;LOGGING FUNCTIONS
3118 020000 000000 SC%MPP==:1B4 ;MAP PRIVILEGED PAGES
3119 010000 000000 SC%SDV==:1B5 ;SPECIAL DEVICES
3121
3122 000400 000000 SC%SUP==:1B9 ;SUPERIOR ACCESS
3123
3124 000001 000000 SC%FRZ==:1B17 ;FREEZE ON TERMINATING CONDITIONS
3125
3126 400000 SC%WHL==:1B18 ;WHEEL
3127 200000 SC%OPR==:1B19 ;OPERATOR
3128 100000 SC%CNF==:1B20 ;CONFIDENTIAL INFORMATION ACCESS
3129 040000 SC%MNT==:1B21 ;MAINTENANCE
3130 020000 SC%IPC==:1B22 ;IPCF PRIVILEGES
3131 010000 SC%ENQ==:1B23 ;ENQ/DEQ PRIVILEGES
3132 004000 SC%NWZ==:1B24 ;TOPS20AN ;NET WIZARD PRIVILEGES (ASNSQ, ETC.)
3133 002000 SC%NAS==:1B25 ;TOPS20AN ;NETWORK ABSOLUTE SOCKET PRIVILEGE
3134
3135
3136 ;OUTMODED NAMES FOR BITS IN DIRECTORY MODE WORD - USE CD%XXX
3137 ;EQUIVALENTS
3138
3139 400000 000000 MD%FO==:CD%DIR ;FILES ONLY DIRECTORY
3140 200000 000000 MD%SA==:CD%ANA ;STRING ACCOUNT ALLOWED
3141 100000 000000 MD%RLM==:CD%RLM ;REPEAT LOGIN MESSAGE
3142
3143
3144
3145 ;FDB DEFINITIONS
3146
3147
3148 000000 .FBHDR==:0 ;HEADER WORD
3149 000177 FB%LEN==:177B35 ;LENGTH OF THIS FDB
3150 000001 .FBCTL==:1 ;FLAGS
3151 400000 000000 FB%TMP==:1B0 ;FILE IS TEMPORARY
3152 200000 000000 FB%PRM==:1B1 ;FILE IS PERMANENT
3153 100000 000000 FB%NEX==:1B2 ;FILE DOES NOT HAVE AN EXTENSION YET
3154 040000 000000 FB%DEL==:1B3 ;FILE IS DELETED
3155 020000 000000 FB%NXF==:1B4 ;FILE IS NONEXISTENT
3156 010000 000000 FB%LNG==:1B5 ;FILE IS A LONG FILE
3157 004000 000000 FB%SHT==:1B6 ;FILE HAS COMPRESSED PAGE TABLE
3158 002000 000000 FB%DIR==:1B7 ;FILE IS A DIRECTORY FILE
3159 001000 000000 FB%NOD==:1B8 ;FILE IS NOT TO BE DUMPED BY BACKUP SYSTEM
3160 000400 000000 FB%BAT==:1B9 ;FILE HAS AT LEAST ONE BAD PAGE IN IT
3161 000200 000000 FB%SDR==:1B10 ;THIS DIRECTORY HAS SUBDIRECTORIES
3162 000100 000000 FB%ARC==:1B11 ; File has archive status
3163 000040 000000 FB%INV==:1B12 ; File is invisible
3164 000020 000000 FB%OFF==:1B13 ; File is offline
3165 000017 000000 FB%FCF==:17B17 ;FILE CLASS FIELD
3166 000000 .FBNRM==:0 ;NON-RMS
3167 000001 .FBRMS==:1 ;RMS FILES
3168 000002 .FBEXL==:2 ;LINK TO FDB OF NEXT EXTENSION
3169 000003 .FBADR==:3 ;DISK ADDRESS OF INDEX BLOCK
3170 000004 .FBPRT==:4 ;PROTECTION OF THE FILE
3171 000005 .FBCRE==:5 ;TIME AND DATE OF LAST WRITE
3172 000006 .FBUSE==:6 ;LAST WRITER ,, AUTHOR (OBS)
3173 000006 .FBAUT==:6 ;POINTER TO AUTHOR STRING
3175 777777 000000 FB%GEN==:777777B17 ;GENERATION NUMBER
3176 000007 .FBDRN==:7 ;GENERATION ,, DIR #
3177 777777 FB%DRN==:777777 ;DIR NUMBER
3178 000010 .FBACT==:10 ;ACCOUNT
3179 000011 .FBBYV==:11 ;RETENTION+BYTE SIZE+MODE ,, # OF PAGES
3180 770000 000000 FB%RET==:77B5 ;RETENTION COUNT
3181 007700 000000 FB%BSZ==:77B11 ;BYTE SIZE
3182 000017 000000 FB%MOD==:17B17 ;LAST OPENF MODE
3183 777777 FB%PGC==:777777 ;PAGE COUNT
3184 000012 .FBSIZ==:12 ;EOF POINTER
3185 000013 .FBCRV==:13 ;TIME AND DATE OF CREATION OF FILE
3186 000014 .FBWRT==:14 ;TIME AND DATE OF LAST USER WRITE
3187 000015 .FBREF==:15 ;TIME AND DATE OF LAST NON-WRITE ACCESS
3188 000016 .FBCNT==:16 ;# OF WRITES ,, # OF REFERENCES
3189 000017 .FBBK0==:17 ;BACKUP WORDS (5)
3190 000020 .FBBK1==:20
3191 000021 .FBBK2==:21
3192 000022 .FBBBT==:22 ; Bits,,#pages in offline file
3193 200000 000000 AR%RAR==:1B1 ; Request archive by user
3194 100000 000000 AR%RIV==:1B2 ; Request invol migration by system
3195 040000 000000 AR%NDL==:1B3 ; Do not delete contents of file when archived
3196 020000 000000 AR%NAR==:1B4 ; Please don't migrate this file
3197 010000 000000 AR%EXM==:1B5 ; File exempt from migration
3198 004000 000000 AR%1ST==:1B6 ; 1st pass of archive/collection run complete
3199 002000 000000 AR%RFL==:1B7 ; Retrieve failed
3200 001000 000000 AR%WRN==:1B8 ; USER WARNED OF APPROACHING EXPIRATION
3201 000007 000000 AR%RSN==:7B17 ; Reason pushed offline
3202 000001 .AREXP==:1 ; File expired
3203 000002 .ARARR==:2 ; Archive was requested
3204 000003 .ARRIR==:3 ; Migration was requested
3205 777777 AR%PSZ==:777777 ; RH is pg count when file went offline
3206 000023 .FBNET==:23 ; On-line expiration date/interval
3207 000024 .FBUSW==:24 ;USER SETTABLE WORD
3208 000025 .FBGNL==:25 ;LINK TO NEXT GENERATION FILE
3209 000026 .FBNAM==:26 ;POINTER TO NAME BLOCK
3210 000027 .FBEXT==:27 ;POINTER TO EXTENSION BLOCK
3211 000030 .FBLWR==:30 ;POINTER TO LAST WRITER STRING
3212 000031 .FBTDT==:31 ; Archive or collection date time
3213 000032 .FBFET==:32 ; Offline expiration date/interval
3214 000033 .FBTP1==:33 ; Tape ID for run 1 tape
3215 000034 .FBSS1==:34 ; Saveset #,,Tape file # for run 1 tape
3216 000035 .FBTP2==:35 ; Tape ID for run 2 tape
3217 000036 .FBSS2==:36 ; Saveset #,,Tape file # for run 2 tape
3218
3219 000030 .FBLN0==:30 ;LENGTH OF VERSION 0 FDB
3220 000037 .FBLN1==:37 ;LENGTH OF VERSION 1 FDB
3221 000037 .FBLXT==:37 ; Minimum length for archive/virtual dsk sys
3222 000037 .FBLEN==:37 ;LENGTH OF THE FDB
3223
3224 ;CARD READER DEFINITIONS
3225
3226 000134 .CRILC==:"" ;ILLEGAL CHARACTER CODE
3227
3229 ;USE THESE DEFINITIONS TO TEST FOR A NUMBER AS FOLLOWS:
3230 ; LOAD AC,NMFLG,LOC
3231 ; CAIE AC,NUMVAL
3232
3233 700000 000000 NMFLG==:7B2
3234 000005 NUMVAL==:5
3235
3236
3237 ;MAGTAPE LABEL TYPES
3238
3239 000001 .LTUNL==:1 ;UNLABELED
3240 000002 .LTANS==:2 ;ANSI STANDARD
3241 000003 .LTEBC==:3 ;EBCDIC
3242 000004 .LTT20==:4 ;TOPS-20
3243 000004 .LTMAX==:4 ;MAXIMUM LABEL TYPE
3244
3245 ; MAGTAPE DRIVE TYPES
3246
3247 000001 .TMDR9==:1 ;9-TRACK
3248 000002 .TMDR7==:2 ;7-TRACK
3249 000002 .TMDMX==:2 ;MAXIMUM DRIVE-TYPE VALUE
3250
3251
3252
3253 ;DEFINITIONS FOR COMMUNICATIONS PROTOCOLS
3254
3255 ;DEFINE THE SUPPORTED PROTOCOL TYPES
3256
3257 000000 .VN20F==:0 ;RSX20F PROTOCOL
3258 000001 .VNMCB==:1 ;MCB DECNET PROTOCOL
3259 000002 .VNDDC==:2 ;DDCMP PROTOCOL
3260 000003 .VNMOP==:3 ;MOP (DDCMP MAINTENANCE) MODE
3261 000004 .VNCNL==:4 ;CONTROLLER LOOPBACK
3262 000005 .VNCBL==:5 ;CABLE LOOPBACK
3263
3264 ;DEFINE BITS USED WHEN RELOADING AN -11
3265
3266 400000 000000 RM%ROM==:1B0 ;IF SET, ACTIVATE ROM
3267
3268 ;***********************************************
3269 ;GENERAL FIELD AND VALUE DEFINITIONS
3270 ;USED BY TOPS20AN JSYS'S
3271 ;***********************************************
3272
3273 ;STATES OF A CONNECTION IN ARPANET NCP
3274 ; RETURNED IN B0-B3 OF GDSTS ON A NET CONNECTION
3275 ; ALSO AVAILABLE IN A GETAB, BUT THAT'S NOT THE PREFERRED WAY
3276 ; TO READ THEM, IF YOU HAVE A JFN FOR THE CONNECTION.
3277
3278 000001 .NSCZD==:01 ;CLOSED
3279 000002 .NSPND==:02 ;PENDING
3280 000003 .NSLSN==:03 ;LISTENING
3281 000004 .NSRCR==:04 ;REQUEST FOR CONNECTION RECEIVED
3283 000006 .NSRCS==:06 ;REQUEST FOR CONNECTION SENT
3284 000007 .NSOPN==:07 ;OPENED
3285 000010 .NSCSW==:10 ;CLOSE WAIT (NCP CLOSE)
3286 000011 .NSDTW==:11 ;FINAL DATA WAIT
3287 000012 .NSRF1==:12 ;RFNM WAIT SUB ONE (NORMAL NCP CLOSE)
3288 000013 .NSCZW==:13 ;CLOSE WAIT (PROGRAM CLOSE)
3289 000014 .NSRF2==:14 ;RFNM WAIT SUB TWO (UNEXPECTED NCP CLOSE)
3290 000016 .NSFRE==:16 ;FREE
3291
3292 ;HOST STATUS BITS
3293
3294 400000 000000 HS%UP==1B0 ;HOST IS UP
3295 200000 000000 HS%VAL==1B1 ;VALID STATUS
3296 160000 000000 HS%DAY==7B4 ;DAY WHEN UP IF DOWN
3297 017400 000000 HS%HR==37B9 ;HOUR
3298 000360 000000 HS%MIN==17B13 ;5 MIN INTERVAL
3299 000017 000000 HS%RSN==17B17 ;REASON
3300 400000 HS%SRV==1B18 ;HOST IS SERVER
3301 200000 HS%USR==1B19 ;HOST IS USER
3302 100000 HS%NCK==1B20 ;HOST NAME STRING WAS NICKNAME
3303 077000 HS%STY==77B26 ;SYSTEM TYPE MASK
3304 000400 HS%NEW==1B27 ;HOST DOES NEW PROTOCOL
3305 000200 HS%NAM==1B28 ;HOST HAS NAME
3306
3307 001000 .HS10X==1B26 ;TENEX
3308 002000 .HSITS==2B26 ;ITS
3309 003000 .HSDEC==3B26 ;TOPS-10
3310 004000 .HSTIP==4B26 ;TIP
3311 005000 .HSMTP==5B26 ;MTIP
3312 006000 .HSELF==6B26 ;ELF
3313 007000 .HSANT==7B26 ;ANTS
3314 010000 .HSMLT==10B26 ;MULTICS
3315 011000 .HST20==11B26 ;TOPS-20
3316 012000 .HSUNX==12B26 ;UNIX
3317
3318 ;ERROR CODE DEFINITIONS
3319
3320 600000 .ERBAS==:600000 ;BASE VALUE FOR ALL ERROR CODES
3321
3322 DEFINE .ERCOD <
3323
3324 .ERR (10,LGINX1,<Invalid account identifier)
3325 .ERR (11,LGINX2,<Directory is "files-only" and cannot be logged in to)
3326 .ERR (12,LGINX3,<Internal format of directory is incorrect)
3327 .ERR (13,LGINX4,<Invalid password)
3328 .ERR (14,LGINX5,<Job is already logged in)
3329 .ERR (20,CRJBX1,<Invalid parameter or function bit combination)
3330 .ERR (21,CRJBX2,<Illegal for created job to enter MINI-EXEC)
3331 .ERR (22,CRJBX3,<Reserved)
3332 .ERR (23,CRJBX4,<Terminal is not available)
3333 .ERR (24,CRJBX5,<Unknown name for LOGIN)
3334 .ERR (25,CRJBX6,<Insufficient system resources)
3335 .ERR (26,CRJBX7,<Reserved)
3337 .ERR (36,LOUTX2,<Invalid job number)
3338 .ERR (45,CACTX1,<Invalid account identifier)
3339 .ERR (46,CACTX2,<Job is not logged in)
3340 .ERR (50,EFCTX1,<WHEEL or OPERATOR capability required)
3341 .ERR (51,EFCTX2,<Entry cannot be longer than 64 words)
3342 .ERR (52,EFCTX3,<Fatal error when accessing FACT file)
3343 .ERR (55,GJFX1,<Desired JFN invalid)
3344 .ERR (56,GJFX2,<Desired JFN not available)
3345 .ERR (57,GJFX3,<No JFN available)
3346 .ERR (60,GJFX4,<Invalid character in filename)
3347 .ERR (61,GJFX5,<Field cannot be longer than 39 characters)
3348 .ERR (62,GJFX6,<Device field not in a valid position)
3349 .ERR (63,GJFX7,<Directory field not in a valid position)
3350 .ERR (64,GJFX8,<Directory terminating delimiter is not preceded by a valid beginning delimi
3351 ter)
3352 .ERR (65,GJFX9,<More than one name field is not allowed)
3353 .ERR (66,GJFX10,<Generation number is not numeric)
3354 .ERR (67,GJFX11,<More than one generation number field is not allowed)
3355 .ERR (70,GJFX12,<More than one account field is not allowed)
3356 .ERR (71,GJFX13,<More than one protection field is not allowed)
3357 .ERR (72,GJFX14,<Invalid protection)
3358 .ERR (73,GJFX15,<Invalid confirmation character)
3359 .ERR (74,GJFX16,<No such device)
3360 .ERR (75,GJFX17,<No such directory name)
3361 .ERR (76,GJFX18,<No such filename)
3362 .ERR (77,GJFX19,<No such file type)
3363 .ERR (100,GJFX20,<No such generation number)
3364 .ERR (101,GJFX21,<File was expunged)
3365 .ERR (102,GJFX22,<Insufficient system resources (Job Storage Block full))
3366 .ERR (103,GJFX23,<Exceeded maximum number of files per directory)
3367 .ERR (104,GJFX24,<File not found)
3368 .ERR (107,GJFX27,<File already exists (new file required))
3369 .ERR (110,GJFX28,<Device is not on line)
3370 .ERR (111,GJFX29,<Device is not available to this job)
3371 .ERR (112,GJFX30,<Account is not numeric)
3372 .ERR (113,GJFX31,<Invalid wildcard designator)
3373 .ERR (114,GJFX32,<No files match this specification)
3374 .ERR (115,GJFX33,<Filename was not specified)
3375 .ERR (116,GJFX34,<Invalid character "?" in file specification)
3376 .ERR (117,GJFX35,<Directory access privileges required)
3377 .ERR (120,OPNX1,<File is already open)
3378 .ERR (121,OPNX2,<File does not exist)
3379 .ERR (122,OPNX3,<Read access required)
3380 .ERR (123,OPNX4,<Write access required)
3381 .ERR (124,OPNX5,<Execute access required)
3382 .ERR (125,OPNX6,<Append access required)
3383 .ERR (126,OPNX7,<Device already assigned to another job)
3384 .ERR (127,OPNX8,<Device is not on line)
3385 .ERR (130,OPNX9,<Invalid simultaneous access)
3386 .ERR (131,OPNX10,<Entire file structure full)
3387 .ERR (133,OPNX12,<List access required)
3388 .ERR (134,OPNX13,<Invalid access requested)
3389 .ERR (135,OPNX14,<Invalid mode requested)
3391 .ERR (137,OPNX16,<File has bad index block)
3392 .ERR (140,OPNX17,<No room in job for long file page table)
3393 .ERR (141,OPNX18,<Unit Record Devices are not available)
3394 .ERR (142,OPNX19,<IMP is not up) ;TOPS20AN
3395 .ERR (143,OPNX20,<Host is not up) ;TOPS20AN
3396 .ERR (144,OPNX21,<Connection refused) ;TOPS20AN
3397 .ERR (145,OPNX22,<Connection byte size does not match) ;TOPS20AN
3398 .ERR (150,DESX1,<Invalid source/destination designator)
3399 .ERR (151,DESX2,<Terminal is not available to this job)
3400 .ERR (152,DESX3,<JFN is not assigned)
3401 .ERR (153,DESX4,<Invalid use of terminal designator or string pointer)
3402 .ERR (154,DESX5,<File is not open)
3403 .ERR (155,DESX6,<Device is not a terminal)
3404 .ERR (156,DESX7,<JFN cannot refer to output wildcard designators)
3405 .ERR (157,DESX8,<File is not on disk)
3406 .ERR (160,CLSX1,<File is not open)
3407 .ERR (161,CLSX2,<File cannot be closed by this process)
3408 .ERR (165,RJFNX1,<File is not closed)
3409 .ERR (166,RJFNX2,<JFN is being used to accumulate filename)
3410 .ERR (167,RJFNX3,<JFN is not accessible by this process)
3411 .ERR (170,DELFX1,<Delete access required)
3412 .ERR (175,SFPTX1,<File is not open)
3413 .ERR (176,SFPTX2,<Illegal to reset pointer for this file)
3414 .ERR (177,SFPTX3,<Invalid byte number)
3415 .ERR (200,CNDIX1,<Invalid password)
3416 .ERR (202,CNDIX3,<Invalid directory number)
3417 .ERR (204,CNDIX5,<Job is not logged in)
3418 .ERR (210,SFBSX1,<Illegal to change byte size for this opening of file)
3419 .ERR (211,SFBSX2,<Invalid byte size)
3420 .ERR (215,IOX1,<File is not opened for reading)
3421 .ERR (216,IOX2,<File is not opened for writing)
3422 .ERR (217,IOX3,<File is not open for random access)
3423 .ERR (220,IOX4,<End of file reached)
3424 .ERR (221,IOX5,<Device or data error)
3425 .ERR (222,IOX6,<Illegal to write beyond absolute end of file)
3426 .ERR (240,PMAPX1,<Invalid access requested)
3427 .ERR (241,PMAPX2,<Invalid use of PMAP)
3428 .ERR (245,SPACX1,<Invalid access requested)
3429 .ERR (250,FRKHX1,<Invalid process handle)
3430 .ERR (251,FRKHX2,<Illegal to manipulate a superior process)
3431 .ERR (252,FRKHX3,<Invalid use of multiple process handle)
3432 .ERR (253,FRKHX4,<Process is running)
3433 .ERR (255,FRKHX6,<All relative process handles in use)
3434 .ERR (260,SPLFX1,<Process is not inferior or equal to self)
3435 .ERR (261,SPLFX2,<Process is not inferior to self)
3436 .ERR (262,SPLFX3,<New superior process is inferior to intended inferior)
3437 .ERR (267,GTABX1,<Invalid table number)
3438 .ERR (270,GTABX2,<Invalid table index)
3439 .ERR (271,GTABX3,<GETAB capability required)
3440 .ERR (273,RUNTX1,<Invalid process handle -3 or -4)
3441 .ERR (275,STADX1,<WHEEL or OPERATOR capability required)
3442 .ERR (276,STADX2,<Invalid date or time)
3443 .ERR (300,ASNDX1,<Device is not assignable)
3445 .ERR (302,ASNDX3,<No such device)
3446 .ERR (320,ATACX1,<Invalid job number)
3447 .ERR (321,ATACX2,<Job already attached)
3448 .ERR (322,ATACX3,<Incorrect user number)
3449 .ERR (323,ATACX4,<Invalid password)
3450 .ERR (324,ATACX5,<This job has no controlling terminal)
3451 .ERR (332,STDVX1,<No such device)
3452 .ERR (335,DEVX1,<Invalid device designator)
3453 .ERR (336,DEVX2,<Device already assigned to another job)
3454 .ERR (337,DEVX3,<Device is not on line)
3455 .ERR (345,MNTX1,<Internal format of directory is incorrect)
3456 .ERR (346,MNTX2,<Device is not on line)
3457 .ERR (347,MNTX3,<Device is not mountable)
3458 .ERR (350,TERMX1,<Invalid terminal code)
3459 .ERR (351,TLNKX1,<Illegal to set remote to object before object to remote)
3460 .ERR (352,ATIX1,<Invalid software interrupt channel number)
3461 .ERR (353,ATIX2,<Control-C capability required)
3462 .ERR (356,TLNKX2,<Link was not received within 15 seconds)
3463 .ERR (357,TLNKX3,<Links full)
3464 .ERR (360,TTYX1,<Device is not a terminal)
3465 .ERR (361,RSCNX1,<Overflowed rescan buffer, input string truncated)
3466 .ERR (362,RSCNX2,<Invalid function code)
3467 .ERR (363,CFRKX3,<Insufficient system resources)
3468 .ERR (365,KFRKX1,<Illegal to kill top level process)
3469 .ERR (366,KFRKX2,<Illegal to kill self)
3470 .ERR (367,RFRKX1,<Processes are not frozen)
3471 .ERR (370,HFRKX1,<Illegal to halt self with HFORK)
3472 .ERR (371,GFRKX1,<Invalid process handle)
3473 .ERR (373,GETX1,<Invalid save file format)
3474 .ERR (374,GETX2,<System Special Pages Table full)
3475 .ERR (375,TFRKX1,<Undefined function code)
3476 .ERR (376,TFRKX2,<Unassigned fork handle or not immediate inferior)
3477 .ERR (377,SFRVX1,<Invalid position in entry vector)
3478 .ERR (407,NOUTX1,<Radix is not in range 2 to 36 )
3479 .ERR (410,NOUTX2,<Column overflow)
3480 .ERR (411,TFRKX3,<Fork(s) not frozen)
3481 .ERR (414,IFIXX1,<Radix is not in range 2 to 10)
3482 .ERR (415,IFIXX2,<First nonspace character is not a digit)
3483 .ERR (416,IFIXX3,<Overflow (number is greater than 2**35 ))
3484 .ERR (424,GFDBX1,<Invalid displacement)
3485 .ERR (425,GFDBX2,<Invalid number of words)
3486 .ERR (426,GFDBX3,<List access required)
3487 .ERR (430,CFDBX1,<Invalid displacement)
3488 .ERR (431,CFDBX2,<Illegal to change specified bits)
3489 .ERR (432,CFDBX3,<Write or owner access required)
3490 .ERR (433,CFDBX4,<Invalid value for specified bits)
3491 .ERR (440,DUMPX1,<Command list error)
3492 .ERR (441,DUMPX2,<JFN is not open in dump mode)
3493 .ERR (442,DUMPX3,<Address error (too big or crosses end of memory))
3494 .ERR (443,DUMPX4,<Access error (cannot read or write data in memory))
3495 .ERR (450,RNAMX1,<Files are not on same device)
3496 .ERR (451,RNAMX2,<Destination file expunged)
3497 .ERR (452,RNAMX3,<Write or owner access to destination file required)
3499 .ERR (454,BKJFX1,<Illegal to back up terminal pointer twice)
3500 .ERR (460,TIMEX1,<Time cannot be greater than 24 hours)
3501 .ERR (461,ZONEX1,<Time zone out of range)
3502 .ERR (462,ODTNX1,<Time zone must be USA or Greenwich)
3503 .ERR (464,DILFX1,<Invalid date format)
3504 .ERR (465,TILFX1,<Invalid time format)
3505 .ERR (466,DATEX1,<Year out of range)
3506 .ERR (467,DATEX2,<Month is not less than 12)
3507 .ERR (470,DATEX3,<Day of month too large)
3508 .ERR (471,DATEX4,<Day of week is not less than 7)
3509 .ERR (472,DATEX5,<Date out of range)
3510 .ERR (473,DATEX6,<System date and time are not set)
3511 .ERR (516,SMONX1,<WHEEL or OPERATOR capability required)
3512 .ERR (530,SACTX1,<File is not on multiple-directory device)
3513 .ERR (531,SACTX2,<Insufficient system resources (Job Storage Block full))
3514 .ERR (532,SACTX3,<Directory requires numeric account)
3515 .ERR (533,SACTX4,<Write or owner access required)
3516 .ERR (540,GACTX1,<File is not on multiple-directory device)
3517 .ERR (541,GACTX2,<File expunged)
3518 .ERR (544,FFUFX1,<File is not open)
3519 .ERR (545,FFUFX2,<File is not on multiple-directory device)
3520 .ERR (546,FFUFX3,<No used page found)
3521 .ERR (555,DSMX1,<File(s) not closed)
3522 .ERR (560,RDDIX1,<Illegal to read directory for this device)
3523 .ERR (570,SIRX1,<Table address is not greater than 20)
3524 .ERR (600,SSAVX1,<Illegal to save files on this device)
3525 .ERR (601,SSAVX2,<Page count is not less than or equal to 1000)
3526 .ERR (610,SEVEX1,<Entry vector is not less than 1000)
3527 .ERR (614,WHELX1,<WHEEL or OPERATOR capability required)
3528 .ERR (615,CAPX1,<WHEEL or OPERATOR capability required)
3529 .ERR (617,PEEKX2,<Read access failure on monitor page)
3530 .ERR (620,CRDIX1,<WHEEL or OPERATOR capability required)
3531 .ERR (621,CRDIX2,<Illegal to change number of old directory)
3532 .ERR (622,CRDIX3,<Insufficient system resources (Job Storage Block full))
3533 .ERR (623,CRDIX4,<Superior directory full)
3534 .ERR (624,CRDIX5,<Directory name not given)
3535 .ERR (626,CRDIX7,<File(s) open in directory)
3536 .ERR (640,GTDIX1,<WHEEL or OPERATOR capability required)
3537 .ERR (641,GTDIX2,<Invalid directory number)
3538 .ERR (650,FLINX1,<First character is not blank or numeric)
3539 .ERR (651,FLINX2,<Number too small)
3540 .ERR (652,FLINX3,<Number too large)
3541 .ERR (653,FLINX4,<Invalid format)
3542 .ERR (660,FLOTX1,<Column overflow in field 1 or 2)
3543 .ERR (661,FLOTX2,<Column overflow in field 3)
3544 .ERR (662,FLOTX3,<Invalid format specified)
3545 .ERR (670,HPTX1,<Undefined clock number)
3546 .ERR (700,FDFRX1,<Not a multiple-directory device)
3547 .ERR (701,FDFRX2,<Invalid directory number)
3548 .ERR (704,GTHSX1,<Unknown host number) ;TOPS20AN
3549 .ERR (705,GTHSX2,<No number for that host name) ;TOPS20AN
3550 .ERR (707,GTHSX3,<No string for that Host number) ;TOPS20AN
3551 .ERR (710,ATNX1,<Invalid receive JFN) ;TOPS20AN
3553 .ERR (712,ATNX3,<Receive JFN not open) ;TOPS20AN
3554 .ERR (713,ATNX4,<Receive JFN is not a NET connection) ;TOPS20AN
3555 .ERR (714,ATNX5,<Receive JFN has been used) ;TOPS20AN
3556 .ERR (715,ATNX6,<Receive connection refused) ;TOPS20AN
3557 .ERR (716,ATNX7,<Invalid send JFN) ;TOPS20AN
3558 .ERR (717,ATNX8,<Send JFN not opened for write) ;TOPS20AN
3559 .ERR (720,ATNX9,<Send JFN not open) ;TOPS20AN
3560 .ERR (721,ATNX10,<Send JFN is not a NET connection) ;TOPS20AN
3561 .ERR (722,ATNX11,<Send JFN has been used) ;TOPS20AN
3562 .ERR (723,ATNX12,<Send connection refused) ;TOPS20AN
3563 .ERR (724,ATNX13,<Insufficient system resources (No NVT's)) ;TOPS20AN
3564 .ERR (727,CVHST1,<No string for that Host number) ;TOPS20AN
3565 .ERR (730,CVSKX1,<Invalid network JFN) ;TOPS20AN
3566 .ERR (731,CVSKX2,<Local socket invalid in this context) ;TOPS20AN
3567 .ERR (732,SNDIX1,<Invalid message size) ;TOPS20AN
3568 .ERR (733,SNDIX2,<Insufficient system resources (No buffers available)) ;TOPS20AN
3569 .ERR (734,SNDIX3,<Illegal to specify NCP links 0 - 72) ;TOPS20AN
3570 .ERR (735,SNDIX4,<Invalid header value for this queue) ;TOPS20AN
3571 .ERR (736,SNDIX5,<IMP down) ;TOPS20AN
3572 .ERR (737,NTWZX1,<NET WIZARD capability required) ;TOPS20AN
3573 .ERR (740,ASNSX1,<Insufficient system resources (All special queues in use)) ;TOPS20AN
3574 .ERR (741,ASNSX2,<Link(s) assigned to another special queue) ;TOPS20AN
3575 .ERR (742,SQX1,<Special network queue handle out of range) ;TOPS20AN
3576 .ERR (743,SQX2,<Special network queue not assigned) ;TOPS20AN
3577 .ERR (746,GTNCX1,<Invalid network JFN) ;TOPS20AN
3578 .ERR (747,GTNCX2,<Invalid or inactive NVT) ;TOPS20AN
3579 .ERR (750,RNAMX5,<Destination file is not closed)
3580 .ERR (751,RNAMX6,<Destination file has bad page table)
3581 .ERR (752,RNAMX7,<Source file expunged)
3582 .ERR (753,RNAMX8,<Write or owner access to source file required)
3583 .ERR (754,RNAMX9,<Source file is nonexistent)
3584 .ERR (755,RNMX10,<Source file is not closed)
3585 .ERR (756,RNMX11,<Source file has bad page table)
3586 .ERR (757,RNMX12,<Illegal to rename to self)
3587 .ERR (760,GJFX36,<Internal format of directory is incorrect)
3588 .ERR (770,ILINS1,<Undefined operation code)
3589 .ERR (771,ILINS2,<Undefined JSYS)
3590 .ERR (772,ILINS3,<UUO simulation facility not available)
3591 .ERR (1000,CRLNX1,<Logical name is not defined)
3592 .ERR (1001,INLNX1,<Index is beyond end of logical name table)
3593 .ERR (1002,LNSTX1,<No such logical name)
3594 .ERR (1003,MLKBX1,<Lock facility already in use)
3595 .ERR (1004,MLKBX2,<Too many pages to be locked)
3596 .ERR (1005,MLKBX3,<Page is not available)
3597 .ERR (1006,MLKBX4,<Illegal to remove previous contents of user map)
3598 .ERR (1007,VBCX1,<Display data area not locked in core)
3599 .ERR (1010,RDTX1,<Invalid string pointer)
3600 .ERR (1011,GFKSX1,<Area too small to hold process structure)
3601 .ERR (1013,GTJIX1,<Invalid index)
3602 .ERR (1014,GTJIX2,<Invalid terminal line number)
3603 .ERR (1015,GTJIX3,<Invalid job number)
3604 .ERR (1016,IPCFX1,<Length of packet descriptor block cannot be less than 4)
3605 .ERR (1017,IPCFX2,<No message for this PID)
3607 .ERR (1021,IPCFX4,<Receiver's PID invalid)
3608 .ERR (1022,IPCFX5,<Receiver's PID disabled)
3609 .ERR (1023,IPCFX6,<Send quota exceeded)
3610 .ERR (1024,IPCFX7,<Receiver quota exceeded)
3611 .ERR (1025,IPCFX8,<IPCF free space exhausted)
3612 .ERR (1026,IPCFX9,<Sender's PID invalid)
3613 .ERR (1027,IPCF10,<WHEEL capability required)
3614 .ERR (1030,IPCF11,<WHEEL or IPCF capability required)
3615 .ERR (1031,IPCF12,<No free PID's available)
3616 .ERR (1032,IPCF13,<PID quota exceeded)
3617 .ERR (1033,IPCF14,<No PID's available to this job)
3618 .ERR (1034,IPCF15,<No PID's available to this process)
3619 .ERR (1035,IPCF16,<Receive and message data modes do not match)
3620 .ERR (1036,IPCF17,<Argument block too small)
3621 .ERR (1037,IPCF18,<Invalid MUTIL JSYS function)
3622 .ERR (1040,IPCF19,<No PID for [SYSTEM] INFO)
3623 .ERR (1041,IPCF20,<Invalid process handle)
3624 .ERR (1042,IPCF21,<Invalid job number)
3625 .ERR (1043,IPCF22,<Invalid software interrupt channel number)
3626 .ERR (1044,IPCF23,<[SYSTEM] INFO already exists)
3627 .ERR (1045,IPCF24,<Invalid message size)
3628 .ERR (1046,IPCF25,<PID does not belong to this job)
3629 .ERR (1047,IPCF26,<PID does not belong to this process)
3630 .ERR (1050,IPCF27,<PID is not defined)
3631 .ERR (1051,IPCF28,<PID not accessible by this process)
3632 .ERR (1052,IPCF29,<PID already being used by another process)
3633 .ERR (1053,IPCF30,<Job is not logged in)
3634 .ERR (1054,GNJFX1,<No more files in this specification)
3635 .ERR (1055,ENQX1,<Invalid function)
3636 .ERR (1056,ENQX2,<Level number too small)
3637 .ERR (1057,ENQX3,<Request and lock level numbers do not match)
3638 .ERR (1060,ENQX4,<Number of pool and lock resources do not match)
3639 .ERR (1061,ENQX5,<Lock already requested)
3640 .ERR (1062,ENQX6,<Requested locks are not all locked)
3641 .ERR (1063,ENQX7,<No ENQ on this lock)
3642 .ERR (1064,ENQX8,<Invalid access change requested)
3643 .ERR (1065,ENQX9,<Invalid number of blocks specified)
3644 .ERR (1066,ENQX10,<Invalid argument block length)
3645 .ERR (1067,ENQX11,<Invalid software interrupt channel number)
3646 .ERR (1070,ENQX12,<Invalid number of resources requested)
3647 .ERR (1071,ENQX13,<Indirect or indexed byte pointer not allowed)
3648 .ERR (1072,ENQX14,<Invalid byte size)
3649 .ERR (1073,ENQX15,<ENQ/DEQ capability required)
3650 .ERR (1074,ENQX16,<WHEEL or OPERATOR capability required)
3651 .ERR (1075,ENQX17,<Invalid JFN)
3652 .ERR (1076,ENQX18,<Quota exceeded)
3653 .ERR (1077,ENQX19,<String too long)
3654 .ERR (1100,ENQX20,<Locked JFN cannot be closed)
3655 .ERR (1101,ENQX21,<Job is not logged in)
3656 .ERR (1102,IPCF31,<Invalid page number)
3657 .ERR (1103,IPCF32,<Page is not private)
3658 .ERR (1104,PMAPX3,<Illegal to move shared page into file)
3659 .ERR (1105,PMAPX4,<Illegal to move file page into process)
3661 .ERR (1107,PMAPX6,<Disk quota exceeded)
3662 .ERR (1110,SNOPX1,<WHEEL or OPERATOR capability required)
3663 .ERR (1111,SNOPX2,<Invalid function)
3664 .ERR (1112,SNOPX3,<.SNPLC function must be first)
3665 .ERR (1113,SNOPX4,<Only one .SNPLC function allowed)
3666 .ERR (1114,SNOPX5,<Invalid page number)
3667 .ERR (1115,SNOPX6,<Invalid number of pages to lock)
3668 .ERR (1116,SNOPX7,<Illegal to define breakpoints after inserting them)
3669 .ERR (1117,SNOPX8,<Breakpoint is not set on instruction)
3670 .ERR (1120,SNOPX9,<No more breakpoints allowed)
3671 .ERR (1121,SNOP10,<Breakpoints already inserted)
3672 .ERR (1122,SNOP11,<Breakpoints not inserted)
3673 .ERR (1123,SNOP12,<Invalid format for program name symbol)
3674 .ERR (1124,SNOP13,<No such program name symbol)
3675 .ERR (1125,SNOP14,<No such symbol)
3676 .ERR (1126,SNOP15,<Not enough free pages for snooping)
3677 .ERR (1127,SNOP16,<Multiply defined symbol)
3678 .ERR (1130,IPCF33,<Invalid index into system PID table)
3679 .ERR (1131,SNOP17,<Breakpoint already defined)
3680 .ERR (1132,OPNX23,<Disk quota exceeded)
3681 .ERR (1133,GJFX37,<Input deleted)
3682 .ERR (1134,CRLNX2,<WHEEL or OPERATOR capability required)
3683 .ERR (1135,INLNX2,<Invalid function)
3684 .ERR (1136,LNSTX2,<Invalid function)
3685 .ERR (1137,ALCX1,<Invalid function)
3686 .ERR (1140,ALCX2,<WHEEL or OPERATOR capability required)
3687 .ERR (1141,ALCX3,<Device is not assignable)
3688 .ERR (1142,ALCX4,<Invalid job number)
3689 .ERR (1143,ALCX5,<Device already assigned to another job)
3690 .ERR (1144,SPLX1,<Invalid function)
3691 .ERR (1145,SPLX2,<Argument block too small)
3692 .ERR (1146,SPLX3,<Invalid device designator)
3693 .ERR (1147,SPLX4,<WHEEL or OPERATOR capability required)
3694 .ERR (1150,SPLX5,<Illegal to specify 0 as generation number for first file)
3695 .ERR (1151,CLSX3,<File still mapped)
3696 .ERR (1152,CRLNX3,<Invalid function)
3697 .ERR (1153,ALCX6,<Device assigned to user job, but will be given to allocator when released
3698 )
3699 .ERR (1154,CKAX1,<Argument block too small)
3700 .ERR (1155,CKAX2,<Invalid directory number)
3701 .ERR (1156,CKAX3,<Invalid access code)
3702 .ERR (1157,TIMX1,<Invalid function)
3703 .ERR (1160,TIMX2,<Invalid process handle)
3704 .ERR (1161,TIMX3,<Time limit already set)
3705 .ERR (1162,TIMX4,<Illegal to clear time limit)
3706 .ERR (1163,SNOP18,<Data page is not private or copy-on-write)
3707 .ERR (1164,GJFX38,<File not found because output-only device was specified)
3708 .ERR (1165,GJFX39,<Logical name loop detected)
3709 .ERR (1166,CRDIX8,<Invalid directory number)
3710 .ERR (1167,CRDIX9,<Internal format of directory is incorrect)
3711 .ERR (1170,CRDI10,<Maximum directory number exceeded; index table needs expanding)
3712 .ERR (1171,DELDX1,<WHEEL or OPERATOR capability required)
3713 .ERR (1172,DELDX2,<Invalid directory number)
3715 .ERR (1174,DIAGX1,<Invalid function)
3716 .ERR (1175,DIAGX2,<Device is not assigned)
3717 .ERR (1176,DIAGX3,<Argument block too small)
3718 .ERR (1177,DIAGX4,<Invalid device type)
3719 .ERR (1200,DIAGX5,<WHEEL, OPERATOR, or MAINTENANCE capability required)
3720 .ERR (1201,DIAGX6,<Invalid channel command list)
3721 .ERR (1202,DIAGX7,<Illegal to do I/O across page boundary)
3722 .ERR (1203,DIAGX8,<No such device)
3723 .ERR (1204,DIAGX9,<Unit does not exist)
3724 .ERR (1205,DIAG10,<Subunit does not exist)
3725 .ERR (1206,SYEX1,<Unreasonable SYSERR block size)
3726 .ERR (1207,SYEX2,<No buffer space available for SYSERR)
3727 .ERR (1210,MTOX1,<Invalid function)
3728 .ERR (1211,IOX7,<Insufficient system resources (Job Storage Block full))
3729 .ERR (1212,IOX8,<Monitor internal error)
3730 .ERR (1213,MTOX5,<Invalid hardware data mode for magnetic tape)
3731 .ERR (1214,DUMPX5,<No-wait dump mode not supported for this device)
3732 .ERR (1215,DUMPX6,<Dump mode not supported for this device)
3733 .ERR (1216,IOX9,<Function legal for sequential write only)
3734 .ERR (1217,CLSX4,<Device still active)
3735 .ERR (1220,MTOX2,<Record size was not set before I/O was done)
3736 .ERR (1221,MTOX3,<Function not legal in dump mode)
3737 .ERR (1222,MTOX4,<Invalid record size)
3738 .ERR (1223,MTOX6,<Invalid magnetic tape density)
3739 .ERR (1224,OPNX25,<Device is write locked)
3740 .ERR (1225,GJFX40,<Undefined attribute in file specification)
3741 .ERR (1226,MTOX7,<WHEEL or OPERATOR capability required)
3742 .ERR (1227,LOUTX3,<WHEEL or OPERATOR capability required)
3743 .ERR (1230,LOUTX4,<LOG capability required)
3744 .ERR (1231,CAPX2,<WHEEL, OPERATOR, or MAINTENANCE capability required)
3745 .ERR (1232,SSAVX3,<Insufficient system resources (Job Storage Block full))
3746 .ERR (1233,SSAVX4,<Directory area of EXE file is more than one page)
3747 .ERR (1234,TDELX1,<Table is empty)
3748 .ERR (1235,TADDX1,<Table is full)
3749 .ERR (1236,TADDX2,<Entry is already in table)
3750 .ERR (1237,TLUKX1,<Internal format of table is incorrect)
3751 .ERR (1240,IOX10,<Record is longer than user requested)
3752 .ERR (1241,CNDIX2,<WHEEL or OPERATOR capability required)
3753 .ERR (1242,CNDIX4,<Invalid job number)
3754 .ERR (1243,CNDIX6,<Job is not logged in)
3755 .ERR (1244,SJBX1,<Invalid function)
3756 .ERR (1245,SJBX2,<Invalid magnetic tape density)
3757 .ERR (1246,SJBX3,<Invalid magnetic tape data mode)
3758 .ERR (1247,TMONX1,<Invalid TMON function)
3759 .ERR (1250,SMONX2,<Invalid SMON function)
3760 .ERR (1251,SJBX4,<Invalid job number)
3761 .ERR (1252,SJBX5,<Job is not logged in)
3762 .ERR (1253,SJBX6,<WHEEL or OPERATOR capability required)
3763 .ERR (1254,GTJIX4,<No such job)
3764 .ERR (1255,ILINS4,<UUO simulation is disabled)
3765 .ERR (1256,ILINS5,<RMS facility is not available)
3766 .ERR (1257,COMNX1,<Invalid COMND function code)
3767 .ERR (1260,COMNX2,<Field too long for internal buffer)
3769 .ERR (1262,COMNX4,<Invalid character in input)
3770 .ERR (1263,PRAX1,<Invalid PRARG function code)
3771 .ERR (1264,PRAX2,<No room in monitor data base for argument block)
3772 .ERR (1265,COMNX5,<Invalid string pointer argument)
3773 .ERR (1266,COMNX6,<Problem in indirect file)
3774 .ERR (1267,COMNX7,<Error in command)
3775 .ERR (1270,PRAX3,<PRARG argument block too large)
3776 .ERR (1271,CKAX4,<File is not on disk)
3777 .ERR (1272,GACCX1,<Invalid job number)
3778 .ERR (1273,GACCX2,<No such job)
3779 .ERR (1274,MTOX8,<Argument block too long)
3780 .ERR (1275,DBRKX1,<No interrupts in progress)
3781 .ERR (1276,SJPRX1,<Job is not logged in)
3782 .ERR (1277,GJFX41,<File name must not exceed 6 characters)
3783 .ERR (1300,GJFX42,<File type must not exceed 3 characters)
3784 .ERR (1301,GACCX3,<Confidential Information Access capability required)
3785 .ERR (1302,TIMEX2,<Downtime cannot be more than 7 days in the future)
3786 .ERR (1303,DELFX2,<File cannot be expunged because it is currently open)
3787 .ERR (1304,DELFX3,<System scratch area depleted; file not deleted)
3788 .ERR (1305,DELFX4,<Directory symbol table could not be rebuilt)
3789 .ERR (1306,DELFX5,<Directory symbol table needs rebuilding)
3790 .ERR (1307,DELFX6,<Internal format of directory is incorrect)
3791 .ERR (1310,DELFX7,<FDB formatted incorrectly; file not deleted)
3792 .ERR (1311,DELFX8,<FDB not found; file not deleted)
3793 .ERR (1312,FRKHX7,<Process page cannot exceed 777)
3794 .ERR (1313,DIRX1,<Invalid directory number)
3795 .ERR (1314,DIRX2,<Insufficient system resources)
3796 .ERR (1315,DIRX3,<Internal format of directory is incorrect)
3797 .ERR (1316,UFPGX1,<File is not open for write)
3798 .ERR (1317,LNGFX1,<Page table does not exist and file not open for write)
3799 .ERR (1320,IPCF34,<Cannot receive into an existing page)
3800 .ERR (1321,COMNX8,<Number base out of range 2-10)
3801 .ERR (1322,MTOX9,<Output still pending)
3802 .ERR (1323,MTOX10,<VFU or RAM file cannot be OPENed)
3803 .ERR (1324,MTOX11,<Data too large for buffers)
3804 .ERR (1325,MTOX12,<Input error or not all data read)
3805 .ERR (1326,MTOX13,<Argument block too small)
3806 .ERR (1327,MTOX14,<Invalid software interrupt channel number)
3807 .ERR (1330,SAVX1,<Illegal to save files on this device)
3808 .ERR (1331,MTOX15,<Device does not have Direct Access (programmable) VFU)
3809 .ERR (1332,MTOX16,<VFU or Translation Ram file must be on disk)
3810 .ERR (1333,LPINX1,<Invalid unit number)
3811 .ERR (1334,LPINX2,<WHEEL or OPERATOR capability required)
3812 .ERR (1335,LPINX3,<Illegal to load RAM or VFU while device is OPEN)
3813 .ERR (1336,MTOX17,<Device is not on line)
3814 .ERR (1337,LGINX6,<No more job slots available for logging-in)
3815 .ERR (1340,DESX9,<Invalid operation for this device)
3816 .ERR (1341,ACESX1,<Argument block too small)
3817 .ERR (1342,ACESX2,<Insufficient system resources)
3818 .ERR (1343,DSKOX1,<Channel number too large)
3819 .ERR (1344,DSKOX2,<Unit number too large)
3820 .ERR (1345,MSTRX1,<Invalid function)
3821 .ERR (1346,MSTRX2,<WHEEL or OPERATOR capability required)
3823 .ERR (1350,MSTRX4,<Insufficient system resources)
3824 .ERR (1351,MSTRX5,<Drive is not on-line)
3825 .ERR (1352,MSTRX6,<Home blocks are bad)
3826 .ERR (1353,MSTRX7,<Invalid structure name)
3827 .ERR (1354,MSTRX8,<Could not get OFN for ROOT-DIRECTORY)
3828 .ERR (1355,MSTRX9,<Could not MAP ROOT-DIRECTORY)
3829 .ERR (1356,MSTX10,<ROOT-DIRECTORY bad)
3830 .ERR (1357,MSTX11,<Could not initialize Index Table)
3831 .ERR (1360,MSTX12,<Could not OPEN Bit Table File)
3832 .ERR (1361,MSTX13,<Backup copy of ROOT-DIRECTORY is bad)
3833 .ERR (1362,MSTX14,<Invalid channel number)
3834 .ERR (1363,MSTX15,<Invalid unit number)
3835 .ERR (1364,MSTX16,<Invalid controller number)
3836 .ERR (1365,DSKX01,<Invalid structure number)
3837 .ERR (1366,DSKX02,<Bit table is being initialized)
3838 .ERR (1367,DSKX03,<Bit table has not been initialized)
3839 .ERR (1370,DSKX04,<Bit table being initialized by another job)
3840 .ERR (1371,GFUSX1,<Invalid function)
3841 .ERR (1372,GFUSX2,<Insufficient system resources)
3842 .ERR (1373,SFUSX1,<Invalid function)
3843 .ERR (1374,SFUSX2,<Insufficient system resources)
3844 .ERR (1375,SFUSX3,<No such user name)
3845 .ERR (1376,RCDIX1,<Insufficient system resources)
3846 .ERR (1377,RCDIX2,<Invalid directory specification)
3847 .ERR (1400,RCDIX3,<Invalid structure name)
3848 .ERR (1401,RCDIX4,<Monitor internal error)
3849 .ERR (1402,RCUSX1,<Insufficient system resources)
3850 .ERR (1403,TDELX2,<Invalid table entry location)
3851 .ERR (1404,TIMX5,<Invalid software interrupt channel number)
3852 .ERR (1405,LSTRX1,<Process has not encountered any errors)
3853 .ERR (1406,SWJFX1,<Illegal to swap same JFN)
3854 .ERR (1407,MTOX18,<Invalid software interrupt channel number)
3855 .ERR (1410,OPNX26,<Illegal to open a string pointer)
3856 .ERR (1411,DELFX9,<File is not a directory file)
3857 .ERR (1412,CRDIX6,<Directory file is mapped)
3858 .ERR (1413,COMNX9,<End of input file reached)
3859 .ERR (1414,STYPX1,<Invalid terminal type)
3860 .ERR (1415,PMAPX7,<Illegal to map file on dismounted structure)
3861 .ERR (1416,DSKOX3,<Invalid structure number)
3862 .ERR (1417,DESX10,<Structure is dismounted)
3863 .ERR (1420,DSKOX4,<Invalid address type specified)
3864 .ERR (1421,MSTX17,<All units in a structure must be of the same type)
3865 .ERR (1422,MSTX18,<No more units in system)
3866 .ERR (1423,MSTX19,<Unit is already part of a mounted structure)
3867 .ERR (1424,MSTX20,<Data error reading HOME blocks)
3868 .ERR (1425,MSTX21,<Structure is not mounted)
3869 .ERR (1426,MSTX22,<Illegal to change specified bits)
3870 .ERR (1427,CRDI11,<Invalid terminating bracket on directory)
3871 .ERR (1430,MSTX23,<Could not write HOME blocks)
3872 .ERR (1431,ACESX3,<Password is required)
3873 .ERR (1432,ACESX4,<Function not allowed for another job)
3874 .ERR (1433,ACESX5,<No function specified for ACCES)
3875 .ERR (1434,STRX05,<No such user name)
3877 .ERR (1436,STRX01,<Structure is not mounted)
3878 .ERR (1437,STRX02,<Insufficient system resources)
3879 .ERR (1440,IOX11,<Quota exceeded or disk full)
3880 .ERR (1441,IOX12,<Insufficient system resources (Swapping space full))
3881 .ERR (1442,STRX03,<No such directory name)
3882 .ERR (1443,STRX04,<Ambiguous directory specification)
3883 .ERR (1444,PPNX1,<Invalid PPN)
3884 .ERR (1445,PPNX2,<Structure is not mounted)
3885 .ERR (1446,PPNX3,<Insufficient system resources)
3886 .ERR (1447,PPNX4,<Invalid directory number)
3887 .ERR (1450,SPLX6,<No directory to write spooled files into)
3888 .ERR (1451,CRDI12,<Structure is not mounted)
3889 .ERR (1452,GFUSX3,<File expunged)
3890 .ERR (1453,GFUSX4,<Internal format of directory is incorrect)
3891 .ERR (1454,RNMX13,<Insufficient system resources)
3892 .ERR (1455,SJBX8,<Illegal to perform this function)
3893 .ERR (1456,DECRSV,<DEC reserved bits not zero)
3894 .ERR (1457,FFFFX1,<No free pages in file)
3895 .ERR (1460,WILDX1,<Second JFN cannot be wild)
3896
3897 ; ERROR CODES 1461-1534 ARE AVAILABLE******
3898
3899 .ERR (1535,TIMX6,<Time has already passed)
3900 .ERR (1536,TIMX7,<No space available for a clock)
3901 .ERR (1537,TIMX8,<User clock allocation exceeded)
3902 .ERR (1540,TIMX9,<No such clock entry found)
3903 .ERR (1541,TIMX10,<No system date and time)
3904
3905 .ERR (1550,SCTX1,<Invalid function code)
3906 .ERR (1551,SCTX2,<Terminal already in use as controlling terminal)
3907 .ERR (1552,SCTX3,<Illegal to redefine the job's controlling terminal)
3908 .ERR (1553,SCTX4,<SC%SCT capability required)
3909
3910 ; Error codes 1554-1677 are available ******
3911
3912 .ERR (1700,SFUSX4,<File expunged)
3913 .ERR (1701,SFUSX5,<Write or owner access required)
3914 .ERR (1702,SFUSX6,<No such user name)
3915 .ERR (1703,GETX3,<Illegal to overlay existing pages)
3916 .ERR (1704,FILX01,<File is not open)
3917 .ERR (1705,ARGX01,<Invalid password)
3918 .ERR (1706,CAPX3,<WHEEL capability required)
3919 .ERR (1707,CAPX4,<WHEEL or IPCF capability required)
3920 .ERR (1711,CAPX6,<ENQ/DEQ capability required)
3921 .ERR (1712,CAPX7,<Confidential Information Access Capability required)
3922 .ERR (1713,ARGX02,<Invalid function)
3923 .ERR (1714,ARGX03,<Illegal to change specified bits)
3924 .ERR (1715,ARGX04,<Argument block too small)
3925 .ERR (1716,ARGX05,<Argument block too long)
3926 .ERR (1717,ARGX06,<Invalid page number)
3927 .ERR (1720,ARGX07,<Invalid job number)
3928 .ERR (1721,ARGX08,<No such job)
3929 .ERR (1722,ARGX09,<Invalid byte size)
3931 .ERR (1724,ARGX11,<Invalid directory number)
3932 .ERR (1725,ARGX12,<Invalid process handle)
3933 .ERR (1726,ARGX13,<Invalid software interrupt channel number)
3934 .ERR (1727,MONX01,<Insufficient system resources)
3935 .ERR (1730,MONX02,<Insufficient system resources (JSB full))
3936 .ERR (1731,MONX03,<Monitor internal error)
3937 .ERR (1732,MONX04,<Insufficient system resources (Swapping space full))
3938 .ERR (1733,ARGX14,<Invalid account identifier)
3939 .ERR (1734,ARGX15,<Job is not logged in)
3940 .ERR (1735,FILX02,<Write or owner access required)
3941 .ERR (1736,FILX03,<List access required)
3942 .ERR (1737,DEVX4,<Device is not assignable)
3943 .ERR (1740,FILX04,<File is not on multiple-directory device)
3944 .ERR (1741,ARGX16,<Password is required)
3945 .ERR (1742,ARGX17,<Invalid argument block length)
3946 .ERR (1743,ARGX18,<Invalid structure name)
3947 .ERR (1744,DEVX5,<No such device)
3948 .ERR (1745,DIRX4,<Invalid directory specification)
3949 .ERR (1746,FILX05,<File expunged)
3950 .ERR (1747,STRX06,<No such user number)
3951 .ERR (1750,MSTX24,<Illegal to dismount the Public Structure)
3952 .ERR (1751,MSTX25,<Invalid number of swapping pages)
3953 .ERR (1752,MSTX26,<Invalid number of Front-End-Filesystem pages)
3954 .ERR (1753,LOUTX5,<Illegal to log out job 0)
3955 .ERR (1754,GJFX43,<More than one ;T specification is not allowed)
3956 .ERR (1755,MTOX19,<Invalid terminal page width)
3957 .ERR (1756,MTOX20,<Invalid terminal page length)
3958 .ERR (1757,MSTX27,<Specified unit is not a disk)
3959 .ERR (1760,MSTX28,<Could not initialize bit table for structure)
3960 .ERR (1761,MSTX29,<Could not reconstruct ROOT-DIRECTORY)
3961 .ERR (1763,DSKX05,<Disk assignments and deassignments are currently prohibited)
3962 .ERR (1764,DSKX06,<Invalid disk address)
3963 .ERR (1765,DSKX07,<Address cannot be deassigned because it is not assigned)
3964 .ERR (1766,DSKX08,<Address cannot be assigned because it is already assigned)
3965 .ERR (1767,COMX10,<Invalid default string)
3966 .ERR (1770,MSTX30,<Incorrect Bit Table counts on structure)
3967 .ERR (1771,LOCKX1,<Illegal to lock other than a private page)
3968 .ERR (1772,LOCKX2,<Requested page unavailable)
3969 .ERR (1773,LOCKX3,<Attempt to lock too much memory)
3970 .ERR (1774,ILLX01,<Illegal memory read)
3971 .ERR (1775,ILLX02,<Illegal memory write)
3972 .ERR (1776,ILLX03,<Memory data parity error )
3973 .ERR (1777,ILLX04,<Reference to non-existent page)
3974 .ERR (2000,MSTX31,<Structure already mounted)
3975 .ERR (2001,MSTX32,<Structure was not mounted)
3976 .ERR (2002,MSTX33,<Structure is unavailable for mounting)
3977 .ERR (2003,STDIX1,<The STDIR JSYS has been replaced by RCDIR and RCUSR)
3978 .ERR (2004,CNDIX7,<The CNDIR JSYS has been replaced by ACCES)
3979 .ERR (2005,PMCLX1,<Illegal page state or state transition)
3980 .ERR (2006,PMCLX2,<Requested physical page is unavailable)
3981 .ERR (2007,PMCLX3,<Requested physical page contains errors)
3982 .ERR (2010,DLFX10,<Cannot delete directory; file still mapped)
3983 .ERR (2011,DLFX11,<Cannot delete directory file in this manner)
3985 .ERR (2013,UTSTX1,<Invalid function code)
3986 .ERR (2014,UTSTX2,<Area of code too large to test)
3987 .ERR (2015,UTSTX3,<UTEST facility in use by another process)
3988 .ERR (2016,BOTX01,<Invalid DTE-20 number)
3989 .ERR (2017,BOTX02,<Invalid byte size)
3990 .ERR (2020,DCNX1,<Invalid network file name)
3991 .ERR (2021,DCNX5,<No more logical links available)
3992 .ERR (2022,DCNX3,<Invalid object)
3993 .ERR (2023,DCNX4,<Invalid task name)
3994 .ERR (2024,DCNX9,<Object is already defined)
3995 .ERR (2025,DCNX8,<Invalid network operation)
3996 .ERR (2026,DCNX11,<Link aborted)
3997 .ERR (2027,DCNX12,<String exceeds 16 bytes)
3998 .ERR (2030,TTYX01,<Line is not active)
3999 .ERR (2031,BOTX03,<Invalid protocol version number)
4000 .ERR (2032,MONX05,<Insufficient system resources (no resident free space))
4001 .ERR (2033,ARGX19,<Invalid unit number)
4002 .ERR (2034,IOX69,<General temporary TAPE error code)
4003 .ERR (2035,COMX11,<Invalid CMRTY pointer)
4004 .ERR (2036,COMX12,<Invalid CMBFP pointer)
4005 .ERR (2037,COMX13,<Invalid CMPTR pointer)
4006 .ERR (2040,COMX14,<Invalid CMABP pointer)
4007 .ERR (2041,COMX15,<Invalid default string pointer)
4008 .ERR (2042,COMX16,<Invalid help message pointer)
4009 .ERR (2043,COMX17,<Invalid byte pointer in function block)
4010 .ERR (2044,NPXAMB,<Ambiguous)
4011 .ERR (2045,NPXNSW,<Not a switch - does not begin with slash)
4012 .ERR (2046,NPXNOM,<Does not match switch or keyword)
4013 .ERR (2047,NPXNUL,<Null switch or keyword given)
4014 .ERR (2050,NPXINW,<Invalid guide word)
4015 .ERR (2051,NPXNC,<Not confirmed)
4016 .ERR (2052,NPXICN,<Invalid character in number)
4017 .ERR (2053,NPXIDT,<Invalid device terminator)
4018 .ERR (2054,NPXNQS,<Not a quoted string - does not begin with double quote)
4019 .ERR (2055,NPXNMT,<Does not match token)
4020 .ERR (2056,NPXNMD,<Does not match directory or user name)
4021 .ERR (2057,NPXCMA,<Comma not given)
4022 .ERR (2060,GJFX45,<Illegal to request multiple specifications for the same attribute)
4023 .ERR (2061,GJFX46,<Attribute value is required)
4024 .ERR (2062,GJFX47,<Attribute does not take a value)
4025 .ERR (2063,MSTX34,<Unit is write-locked)
4026 .ERR (2064,GJFX48,<GTJFN input buffer is empty)
4027 .ERR (2065,GJFX49,<Invalid attribute for this device)
4028 .ERR (2077,SJBX7,<Remark exceeds 39 characters)
4029 .ERR (2100,DELF10,<Directory still contains subdirectory)
4030 .ERR (2101,CRDI13,<Request exceeds superior directory working quota)
4031 .ERR (2102,CRDI14,<Request exceeds superior directory permanent quota)
4032 .ERR (2103,CRDI15,<Request exceeds superior directory subdirectory quota)
4033 .ERR (2104,CRDI16,<Invalid user group)
4034 .ERR (2105,ENACX1,<Account validation data base file not completely closed)
4035 .ERR (2106,ENACX2,<Cannot get a JFN for <SYSTEMACCOUNTS-TABLE.BIN)
4036 .ERR (2107,ENACX3,<Account validation data base file too long)
4037 .ERR (2110,ENACX4,<Cannot get an OFN for <SYSTEMACCOUNTS-TABLE.BIN)
4039 .ERR (2112,VACCX1,<Account string exceeds 39 characters)
4040 .ERR (2113,USGX01,<Invalid USAGE entry type code)
4041 .ERR (2114,BOTX04,<Byte count is not positive)
4042 .ERR (2115,NODX01,<Node name exceeds 6 characters)
4043 .ERR (2116,USGX02,<Item not found in argument list)
4044 .ERR (2117,CRDI17,<Illegal to create non-files-only subdirectory under files-only directory
4045 )
4046 .ERR (2120,ENQX23,<Mismatched mask block lengths)
4047 .ERR (2121,ENQX22,<Invalid mask block length)
4048 .ERR (2122,DCNX2,<Interrupt message must be read first)
4049 .ERR (2123,ABRKX1,<Address break not available on this system)
4050 .ERR (2124,USGX03,<Default item not allowed)
4051 .ERR (2125,IPCF35,<Invalid IPCF quota)
4052 .ERR (2126,VACCX2,<Account has expired)
4053 .ERR (2127,CRDI18,<Illegal to delete logged-in directory)
4054 .ERR (2130,CRDI19,<Illegal to delete connected directory)
4055 .ERR (2132,BOTX05,<Protocol initialization failed)
4056 .ERR (2133,CRDI20,<WHEEL, OPERATOR, or requested capability required)
4057 .ERR (2134,COMX18,<Invalid character in node name)
4058 .ERR (2135,COMX19,<Too many characters in node name)
4059 .ERR (2136,CRDI21,<Working space insufficient for current allocation)
4060 .ERR (2137,ACESX7,<Directory is "files-only" and cannot be accessed)
4061 .ERR (2140,CRDI22,<Subdirectory quota insufficient for existing subdirectories)
4062 .ERR (2141,CRDI23,<Superior directory does not exist)
4063 .ERR (2142,STRX07,<Invalid user number)
4064 .ERR (2143,STRX08,<Invalid user name)
4065 .ERR (2144,CRDI24,<Invalid subdirectory quota)
4066 .ERR (2146,ATSX01,<Invalid mode)
4067 .ERR (2147,ATSX02,<Illegal to declare mode twice)
4068 .ERR (2150,ATSX03,<Illegal to declare mode after acquiring terminal)
4069 .ERR (2151,ATSX04,<Invalid event code)
4070 .ERR (2152,ATSX05,<Invalid function code for channel assignment)
4071 .ERR (2153,ATSX06,<JFN is not an ATS JFN)
4072 .ERR (2154,ATSX07,<Table length too small)
4073 .ERR (2155,ATSX08,<Table lengths must be the same)
4074 .ERR (2156,ATSX09,<Table length too large)
4075 .ERR (2157,ATSX10,<Maximum applications terminals for system already assigned)
4076 .ERR (2160,ATSX11,<Byte count is too large)
4077 .ERR (2161,ATSX12,<Terminal not assigned to this JFN)
4078 .ERR (2162,ATSX13,<Terminal is XOFF'd)
4079 .err (2163,ATSX14,<Terminal has been released)
4080 .ERR (2164,ATSX15,<Terminal identifier is not assigned)
4081 .ERR (2165,PMCLX4,<No more error information)
4082 .ERR (2166,ATSX16,<Invalid Host Terminal Number)
4083 .ERR (2167,ATSX17,<Output failed -- monitor internal error)
4084 .ERR (2170,FRKHX8,<Illegal to manipulate an execute-only process)
4085 .ERR (2171,ARGX20,<Invalid arithmetic trap argument)
4086 .ERR (2172,ARGX21,<Invalid LUUO trap argument)
4087 .ERR (2173,ARGX22,<Invalid flags)
4088 .ERR (2174,ATSX18,<ATS input message too long for internal buffers)
4089 .ERR (2175,ATSX19,<Monitor internal error - ATS input message truncated)
4090 .ERR (2176,ATSX20,<Illegal to close JFN with terminal assigned)
4091 .ERR (2177,ARGX23,<Invalid section number)
4093 .ERR (2201,MSTX35,<Too many units in structure)
4094 .ERR (2202,DCNX13,<Node not accessible)
4095 .ERR (2203,DCNX14,<Previous interrupt message outstanding)
4096 .ERR (2204,DCNX15,<No interrupt message available)
4097 .ERR (2205,GJFX50,<Invalid argrument for attribute)
4098 .ERR (2206,KDPX01,<KMC11 not running)
4099 .ERR (2207,NODX02,<Line not turned off)
4100 .ERR (2210,NODX03,<Another line already looped)
4101 .ERR (2211,GJFX51,<Byte count too small)
4102 .ERR (2212,COMX20,<Invalid node name)
4103 .ERR (2213,ATSX21,<Maximum applications terminals for job already assigned)
4104 .ERR (2214,ATSX22,<Failed to acquire applications terminal)
4105 .ERR (2215,ATSX23,<Invalid device name)
4106 .ERR (2216,ATSX24,<Invalid server name)
4107 .ERR (2217,ATSX25,<Terminal is already released)
4108 .ERR (2220,GOKER1,<Illegal function)
4109 .ERR (2221,GOKER2,<Request denied by Access Control Facility)
4110 .ERR (2222,STRX09,<Prior structure mount required)
4111 .ERR (2223,MSTX36,<Illegal while JFNs assigned)
4112 .ERR (2224,MSTX37,<Illegal while accessing or connected to structure)
4113 .ERR (2225,MSTX40,<Invalid PSI channel number given)
4114 .ERR (2226,ATSX26,<Invalid host name)
4115 .ERR (2227,IOX13,<Invalid segment type)
4116 .ERR (2230,IOX14,<Invalid segment size)
4117 .ERR (2231,IOX15,<Illegal tape format for dump mode)
4118 .ERR (2232,IOX16,<Density specified does not match tape density)
4119 .ERR (2233,IOX17,<Invalid tape label)
4120 .ERR (2234,IOX20,<Illegal tape record size)
4121 .ERR (2235,IOX21,<Tape HDR1 missing)
4122 .ERR (2236,IOX22,<Invalid tape HDR1 sequence number)
4123 .ERR (2237,IOX23,<Tape label read error)
4124 .ERR (2240,IOX24,<Tape HDR1 missing)
4125 .ERR (2241,IOX25,<Invalid tape format)
4126 .ERR (2242,SWJFX2,<Illegal to swap ATS JFN)
4127 .ERR (2243,IOX26,<Tape write date has not expired)
4128 .ERR (2244,IOX27,<Tape is domestic and HDR2 is missing)
4129 .ERR (2245,IOX30,<Tape has invalid access character)
4130 .ERR (2246,ARGX25,<Invalid class)
4131 .ERR (2247,SKDX1,<Cannot change class)
4132 .ERR (2250,MREQX1,<Request canceled by user)
4133 .ERR (2251,MREQX2,<Labeled tapes not permitted on 7-track drives)
4134 .ERR (2252,MREQX3,<Unknown density specified)
4135 .ERR (2253,MREQX4,<Unknown drive type specified)
4136 .ERR (2254,MREQX5,<Unknown label type specified)
4137 .ERR (2255,MREQX6,<Set name illegal or not specified)
4138 .ERR (2256,MREQX7,<Illegal starting-volume specification)
4139 .ERR (2257,MREQX8,<Attempt to switch to volume outside set)
4140 .ERR (2260,MREQX9,<Illegal volume identifier specified)
4141 .ERR (2261,MREQ10,<Density mismatch between request and volume)
4142 .ERR (2262,MREQ11,<Drive type mismatch between request and volume)
4143 .ERR (2263,MREQ12,<Label type mismatch between request and volume)
4144 .ERR (2264,MREQ13,<Structural error in mount message)
4145 .ERR (2265,MREQ14,<Setname mismatch between request and volume)
4147 .ERR (2267,MREQ16,<Volume identifiers not supplied by operator)
4148 .ERR (2270,MREQ17,<Volume-identifier list missing)
4149 .ERR (2271,MREQ18,<End of volume-identifier list reached while reading)
4150 .ERR (2272,MREQ19,<Requested tape drive type not available to system)
4151 .ERR (2273,MREQ20,<Structural error in mount entry)
4152 .ERR (2274,MREQ21,<Mount requested for unknown device type)
4153 .ERR (2275,DEVX6,<Job has open JFN on device)
4154 .ERR (2276,ATSX27,<Terminal is not open)
4155 .ERR (2277,ATSX28,<Unknown error received)
4156 .ERR (2300,ATSX29,<Receive error threshold exceeded)
4157 .ERR (2301,ATSX30,<Reply threshold exceeded)
4158 .ERR (2302,ATSX31,<NAK threshold exceeded)
4159 .ERR (2303,ATSX32,<Terminal protocol error)
4160 .ERR (2304,ATSX33,<Intervention required at terminal)
4161 .ERR (2305,ATSX34,<Powerfail)
4162 .ERR (2306,ATSX35,<Data pipe was disconnected)
4163 .ERR (2307,ATSX36,<Dialup terminal was attached)
4164 .ERR (2310,DATEX7,<Julian day is out of range)
4165 .ERR (2311,MREQ22,<Structure name not specified)
4166 .ERR (2312,ARCFX2,<File already has archive status)
4167 .ERR (2313,ARCFX3,<Cannot perform ARCF functions on non-multiple directory devices)
4168 .ERR (2314,ARCFX4,<File is not on-line)
4169 .ERR (2315,ARCFX5,<Files not on the same device or structure)
4170 .ERR (2316,ARCFX6,<File does not have archive status)
4171 .ERR (2317,ARCFX7,<Invalid parameter)
4172 .ERR (2320,ARCFX8,<Archive not complete)
4173 .ERR (2321,ARCFX9,<File not off-line)
4174 .ERR (2322,ARCX10,<Archive prohibited)
4175 .ERR (2323,ARCX11,<Archive requested, modification prohibited)
4176 .ERR (2324,ARCX12,<Archive requested, delete prohibited)
4177 .ERR (2325,ARCX13,<Archive system request not completed)
4178 .ERR (2326,OPNX30,<File has archive status, modification is prohibited)
4179 .ERR (2327,OPNX31,<File is off-line)
4180 .ERR (2330,DELX11,<File has archive status, delete is not permitted)
4181 .ERR (2331,DELX12,<File has no pointer to offline storage)
4182 .ERR (2332,ARCX14,<File restore failed)
4183 .ERR (2333,ARCX15,<Migration prohibited)
4184 .ERR (2334,ARCX16,<Cannot exempt offline file)
4185 .ERR (2335,ARCX17,<FDB incorrect format for ARCF JSYS)
4186 .ERR (2336,ARCX18,<Retrieval request cannot be fulfilled for waiting process)
4187 .ERR (2337,ARCX19,<Migration already pending)
4188 .ERR (2340,ARGX26,<File is offline)
4189 .ERR (2341,ARGX27,<Offline expiration time cannot exceed system maximum)
4190 .ERR (2342,DIRX5,<Directory too large)
4191 .ERR (2343,IOX31,<Invalid record descriptor in labeled tape)
4192 .ERR (2344,MREQ23,<Dismount refused by operator)
4193 .ERR (2345,MREQ24,<Illegal to dismount connected structure)
4194 .ERR (2346,MREQ25,<Structure not found)
4195 .ERR (2347,LTLBLX,<Too many user labels)
4196 .ERR (2350,LTLBX1,<Undefined record format on non-TOPS20 tape)
4197 .ERR (2351,MREQ26,<Tape mounting function disabled by installation)
4198 .ERR (2352,METRX1,<METER not supported on this processor)
4199 .ERR (2353,NSPX00,<Connection not accepted)
4201 .ERR (2355,NSPX02,<Destination node does not exist)
4202 .ERR (2356,NSPX03,<Node shutting down)
4203 .ERR (2357,NSPX04,<Destination process does not exist)
4204 .ERR (2360,NSPX05,<Invalid process name)
4205 .ERR (2361,NSPX06,<Destination process queue overflow)
4206 .ERR (2362,NSPX07,<Unspecified error)
4207 .ERR (2363,NSPX08,<Connection aborted by third party)
4208 .ERR (2364,NSPX09,<Link aborted by process)
4209 .ERR (2365,NSPX10,<NSP Failure - Flow control violation)
4210 .ERR (2366,NSPX11,<Too many connections to node)
4211 .ERR (2367,NSPX12,<Too many connections to destination process)
4212 .ERR (2370,NSPX13,<Access denied due to unacceptable user name or password)
4213 .ERR (2371,NSPX14,<NSP failure - invalid SERVICES field)
4214 .ERR (2372,NSPX15,<Invalid account)
4215 .ERR (2373,NSPX16,<NSP failure - invalid SEGSIZ field)
4216 .ERR (2374,NSPX17,<Process aborted, timed out, or cancelled request)
4217 .ERR (2375,NSPX18,<No path to destination node)
4218 .ERR (2376,NSPX19,<NSP failure - flow control failure)
4219 .ERR (2377,NSPX20,<NSP failure - invalid DSTADDR)
4220 .ERR (2400,NSPX21,<Disconnect confirmation)
4221 .ERR (2401,NSPX22,<NSP failure - image data field too long)
4222 .ERR (2402,MREQ27,<Structure is set IGNORED)
4223 .ERR (2403,MREQ28,<Cannot overwrite volume - first file is not expired)
4224 .ERR (2404,MREQ29,<Cannot overwrite volume - write access required)
4225 .ERR (2405,MREQ30,<Tape label format error)
4226 .ERR (2406,DIAG11,<Unit already online)
4227 .ERR (2407,DIAG12,<Unit not online)
4228 .ERR (2410,DESX11,<Invalid operation for this label type)
4229 .ERR (2411,NSPX23,<Invalid NSP reason code)
4230 .ERR (2412,ARGX28,<not available on this system)
4231 .ERR (2413,NPX2CL,<Two colons required on node name)
4232 .ERR (2414,ARGX29,<Invalid class share)
4233 .ERR (2415,ARGX30,<Invalid KNOB value)
4234 .ERR (2416,ARGX31,<Class Scheduler already enabled)
4235 .ERR (2417,DEVX7,<Null device name given)
4236 .ERR (2420,GJFX52,<End of tape encountered while searching for file)
4237 .ERR (2420,GOKER3,<Access control job already running)
4238 ;END OF .ERCOD DEFINITION
4239
4240
4241 ;DEFINE THE ERROR CODE VALUES
4242
4243 DEFINE .ERR (N,E,S) <
4244 E=:.ERBAS+N
4245 IFG <N-.ERMAX,.ERMAX==:N
4246
4247 000000 .ERMAX==:0
4248
4249 .ERCOD
4250
4251
4252
4253 ;THIS SECTION CONSISTS OF SPECIAL CODE TO WRITE THE ERRMES.BIN FILE
4255 ; DEFINED TO BE NON-ZERO.
4256
4257 IFNDEF .ERBLD,<.ERBLD==0
4258
4259 IFN .ERBLD,<
4260
4261 .ERGO: MOVSI 1,(GJ%FOU!GJ%SHT) ;GET A JFN ON ERROR FILE
4262 HRROI 2,[ASCIZ/ERRMES.BIN/]
4263 GTJFN
4264 JRST .ERER
4265 MOVE 2,[440000,,OF%WR]
4266 OPENF ;OPEN THE FILE FOR WRITE
4267 JRST .ERER
4268 MOVNI 3,.ERSTE-.ERTAB ;GET LENGTH OF FILE
4269 MOVE 2,[POINT 36,.ERTAB]
4270 SOUT ;OUTPUT THE ERROR FILE DATA
4271 CLOSF ;CLOSE THE FILE
4272 JRST .ERER
4273 HALTF ;DONE
4274
4275 .ERER: MOVEI 1,101 ;TYPE OUT ERROR CODE
4276 HRLOI 2,400000
4277 SETZ 3,
4278 ERSTR
4279 JFCL
4280 JFCL
4281 HALTF
4282
4283 LIT
4284
4285 DEFINE .ERR (N,E,S) <
4286 .ERQQ==<.-.ERTAB*5
4287 .ERQQ2==N37777
4288 .ERRM1 .ERQQ2,N,.ERQQ
4289 ASCII s'@
4290
4291
4292 DEFINE .ERRM1 (NN,N,.ERQQ)<
4293 IF1,<IFDEF EZ'NN,<
4294 PRINTX ERROR N=NN HAS ALREADY BEEN USED
4295
4296 EZ'NN==1
4297 RELOC .ERTAB+NN
4298 .ERQQ
4299 RELOC
4300
4301
4302 .ERTAB: .ERMAX ;FIRST WORD OF TABLE IS THE LENGTH
4303 ; OF THE TABLE FOR ERSTR TO USE AS
4304 ; A BOUNDS CHECK.
4305 BLOCK .ERMAX ;LEAVE ROOM FOR POINTERS
4306
4307 .ERST: .ERCOD ;BUILD STRINGS AND .ERTAB
4309
4310 END .ERGO
4311
4312 ;END OF IFN .ERBLD CONDITIONAL
4313
4314 PURGE .ERR,REL
4315
4316 END
1 ;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED
2 ; OR COPIED IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE.
3 ;
4 ;COPYRIGHT (C) 1976,1977,1978,1979 BY DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
5
6 ;VERSION 1
7
8 IFNDEF REL,<REL==0 ;UNIVERSAL UNLESS OTHERWISE DECLARED
9 IFE REL,<
11
12 IFN REL,<
13 TITLE MACREL SUPPORT CODE FOR MACSYM
14 SEARCH MONSYM
15 SALL
16 IFNDEF .PSECT,<
17 .DIRECT .XTABM
18
19
20 ;THE STANDARD VERSION WORD CONSTRUCTION
21 ; VERS - PROGRAM VERSION NUMBER
22 ; VUPDAT - PROGRAM UPDATE NUMBER (1=A, 2=B ...)
23 ; VEDIT - PROGRAM EDIT NUMBER
24 ; VCUST - CUSTOMER EDIT CODE (0=DEC DEVELOPMENT, 1=DEC SWS, 2-7 CUST)
25
26 DEFINE PGVER. (VERS,VUPDAT,VEDIT,VCUST)<
27 ..PGV0==. ;;SAVE CURRECT LOCATION AND MODE
28 .JBVER=:137 ;;WHERE TO PUT VERSION
29 LOC .JBVER ;;PUT VERSION IN STANDARD PLACE
30 BYTE (3)VCUST(9)VERS(6)VUPDAT(18)VEDIT
31 .ORG ..PGV0 ;;RESTORE LOCATION AND MODE
32
33
34 ;MASKS FOR THE ABOVE
35
36 700000 000000 VI%WHO==:7B2 ;Customer edit code
37 077700 000000 VI%MAJ==:777B11 ;Major version number
38 000077 000000 VI%MIN==:77B17 ;Minor version/update
39 777777 VI%EDN==:777777B35 ;Edit number
40 ;ADDED VI%XXX
41 SUBTTL MISC CONSTANTS
43 ;MISC CONSTANTS
44
45 377777 777777 .INFIN==:377777,,777777 ;PLUS INFINITY
46 400000 000000 .MINFI==:1B0 ;MINUS INFINITY
47 777777 000000 .LHALF==:777777B17 ;LEFT HALF
48 777777 .RHALF==:777777 ;RIGHT HALF
49 777777 777777 .FWORD==:-1 ;FULL WORD
50
51 SUBTTL SYMBOLS FOR THE CONTROL CHARACTERS
52
53 000000 .CHNUL==:000 ;NULL
54 000001 .CHCNA==:001
55 000002 .CHCNB==:002
56 000003 .CHCNC==:003
57 000004 .CHCND==:004
58 000005 .CHCNE==:005
59 000006 .CHCNF==:006
60 000007 .CHBEL==:007 ;BELL
61 000010 .CHBSP==:010 ;BACKSPACE
62 000011 .CHTAB==:011 ;TAB
63 000012 .CHLFD==:012 ;LINE-FEED
64 000013 .CHVTB==:013 ;VERTICAL TAB
65 000014 .CHFFD==:014 ;FORM FEED
66 000015 .CHCRT==:015 ;CARRIAGE RETURN
67 000016 .CHCNN==:016
68 000017 .CHCNO==:017
69 000020 .CHCNP==:020
70 000021 .CHCNQ==:021
71 000022 .CHCNR==:022
72 000023 .CHCNS==:023
73 000024 .CHCNT==:024
74 000025 .CHCNU==:025
75 000026 .CHCNV==:026
76 000027 .CHCNW==:027
77 000030 .CHCNX==:030
78 000031 .CHCNY==:031
79 000032 .CHCNZ==:032
80 000033 .CHESC==:033 ;ESCAPE
81 000034 .CHCBS==:034 ;CONTROL BACK SLASH
82 000035 .CHCRB==:035 ;CONTROL RIGHT BRACKET
83 000036 .CHCCF==:036 ;CONTROL CIRCONFLEX
84 000037 .CHCUN==:037 ;CONTROL UNDERLINE
85
86 000175 .CHALT==:175 ;OLD ALTMODE
87 000176 .CHAL2==:176 ;ALTERNATE OLD ALTMODE
88 000177 .CHDEL==:177 ;DELETE
89
90 SUBTTL HARDWARE BITS OF INTEREST TO USERS
91
92 ;PC FLAGS
93
94 400000 000000 PC%OVF==:1B0 ;OVERFLOW
95 200000 000000 PC%CY0==:1B1 ;CARRY 0
97 040000 000000 PC%FOV==:1B3 ;FLOATING OVERFLOW
98 020000 000000 PC%BIS==:1B4 ;BYTE INCREMENT SUPPRESSION
99 010000 000000 PC%USR==:1B5 ;USER MODE
100 004000 000000 PC%UIO==:1B6 ;USER IOT MODE
101 002000 000000 PC%LIP==:1B7 ;LAST INSTRUCTION PUBLIC
102 001000 000000 PC%AFI==:1B8 ;ADDRESS FAILURE INHIBIT
103 000600 000000 PC%ATN==:3B10 ;APR TRAP NUMBER
104 000100 000000 PC%FUF==:1B11 ;FLOATING UNDERFLOW
105 000040 000000 PC%NDV==:1B12 ;NO DIVIDE
106
107 SUBTTL MACROS FOR FIELD MASKS
108
109 ;STANDARD MACROS
110
111 ;MACROS TO HANDLE FIELD MASKS
112
113 ;COMPUTE LENGTH OF MASK, I.E. LENGTH OF LEFTMOST STRING OF ONES
114 ;REMEMBER THAT L DOES 'JFFO', I.E. HAS VALUE OF FIRST ONE BIT IN WORD
115
116 ;COMPUTE WIDTH OF MASK, I.E. LENGTH OF LEFTMOST STRING OF ONES
117
118 DEFINE WID(MASK)<<L<-<<MASK<LMASK-1
119
120 ;COMPUTE POSITION OF MASK, I.E. BIT POSITION OF RIGHTMOST ONE IN MASK
121
122 DEFINE POS(MASK)<<L<<MASK-<MASK
123
124 ;CONSTRUCT BYTE POINTER TO MASK
125
126 DEFINE POINTR(LOC,MASK)<<POINT WID(MASK),LOC,POS(MASK)
127
128 ;PUT RIGHT-JUSTIFIED VALUE INTO FIELD SPECIFIED BY MASK
129
130 DEFINE FLD(VAL,MSK)<<<<VALBPOS(MSK)MSK
131
132 ;MAKE VALUE BE RIGHT JUSTIFIED IN WORD.
133
134 DEFINE .RTJST(VAL,MSK)<<<<VALMSKBD70-POS(MSK)
135
136 ;CONSTRUCT MASK FROM BIT AA TO BIT BB. I.E. MASKB 0,8 = 777B8
137
138 DEFINE MASKB(AA,BB)<<1B<<AA-1-1BBB
139
140 ;MODULE - GIVES REMAINDER OF DEND DIVIDED BY DSOR
141
142 DEFINE MOD.(DEND,DSOR)<<<DEND-<DEND/DSOR*DSOR
143
144 SUBTTL MOVX
145
146 ;MOVX - LOAD AC WITH CONSTANT
147
148 DEFINE MOVX (AC,MSK)<
149 ..MX1==MSK ;;EVAL EXPRESSION IF ANY
151 .IFN ..MX1,ABSOLUTE,<
152 MOVE AC,[MSK]
153 .IF ..MX1,ABSOLUTE,<
154 ..MX2==0 ;;FLAG SAYS HAVEN'T DONE IT YET
155 IFE <..MX1B53,
156 ..MX2==1
157 MOVEI AC,..MX1 ;;LH 0, DO AS RH
158 IFE ..MX2,< ;;IF HAVEN'T DONE IT YET,
159 IFE <..MX1B17,
160 ..MX2==1
161 MOVSI AC,(..MX1) ;;RH 0, DO AS LH
162 IFE ..MX2,< ;;IF HAVEN'T DONE IT YET,
163 IFE <<..MX1B53-O777777,
164 ..MX2==1
165 HRROI AC,<..MX1 ;;LH -1
166 IFE ..MX2,< ;;IF HAVEN'T DONE IT YET,
167 IFE <<..MX1B17-O777777B17,
168 ..MX2==1
169 HRLOI AC,(..MX1-O777777) ;;RH -1
170 IFE ..MX2,< ;;IF STILL HAVEN'T DONE IT,
171 MOVE AC,[..MX1] ;;GIVE UP AND USE LITERAL
172
173
174 IFNDEF .PSECT,<
175 ..MX2==0 ;;FLAG SAYS HAVEN'T DONE IT YET
176 IFE <..MX1B53,
177 ..MX2==1
178 MOVEI AC,..MX1 ;;LH 0, DO AS RH
179 IFE ..MX2,< ;;IF HAVEN'T DONE IT YET,
180 IFE <..MX1B17,
181 ..MX2==1
182 MOVSI AC,(..MX1) ;;RH 0, DO AS LH
183 IFE ..MX2,< ;;IF HAVEN'T DONE IT YET,
184 IFE <<..MX1B53-O777777,
185 ..MX2==1
186 HRROI AC,<..MX1 ;;LH -1
187 IFE ..MX2,< ;;IF HAVEN'T DONE IT YET,
188 IFE <<..MX1B17-O777777B17,
189 ..MX2==1
190 HRLOI AC,(..MX1-O777777) ;;RH -1
191 IFE ..MX2,< ;;IF STILL HAVEN'T DONE IT,
192 MOVE AC,[..MX1] ;;GIVE UP AND USE LITERAL
193
194 PURGE ..MX1,..MX2
195 ;VARIENT MNEMONICS FOR TX DEFINITIONS
196
197 DEFINE IORX (AC,MSK)<
198 TXO AC,<MSK
199
200 DEFINE ANDX (AC,MSK)<
201 TXZ AC,<-<MSK
202
203 DEFINE XORX (AC,MSK)<
205
206 SUBTTL TX -- TEST MASK
207
208 ;CREATE THE TX MACRO DEFINITIONS
209
210 ;THIS DOUBLE IRP CAUSES ALL COMBINATIONS OF MODIFICATION AND TESTING
211 ;TO BE DEFINED
212
213 DEFINE ..DOTX (M,T)<
214 IRP M,<
215 IRP T,<
216 DEFINE TX'M'T (AC,MSK)<
217 ..TX(M'T,AC,<MSK)
218
219 ..DOTX (<N,O,Z,C,,E,N,A) ;DO ALL DEFINITIONS
220 PURGE ..DOTX
221
222 ;..TX
223 ;ALL TX MACROS JUST CALL ..TX WHICH DOES ALL THE WORK
224
225 DEFINE ..TX(MT,AC,MSK)<
226 ..TX1==MSK ;;EVAL EXPRESSION IF ANY
227 IFDEF .PSECT,<
228 .IFN ..TX1,ABSOLUTE,<
229 TD'MT AC,[MSK]
230 .IF ..TX1,ABSOLUTE,< ;;MASK MUST BE TESTABLE
231 ..TX2==0 ;;FLAG SAYS HAVEN'T DONE IT YET
232 IFE <..TX1O777777B17,
233 ..TX2==1 ;;LH 0, DO AS RH
234 TR'MT AC,..TX1
235 IFE ..TX2,< ;;IF HAVEN'T DONE IT YET,
236 IFE <..TX1O777777,
237 ..TX2==1 ;;RH 0, DO AS LH
238 TL'MT AC,(..TX1)
239 IFE ..TX2,< ;;IF HAVEN'T DONE IT YET,
240 IFE <<..TX1B53-O777777, ;;IF LH ALL ONES,
241 ..TX3 (MT,AC) ;;TRY Z,O,C SPECIAL CASES
242 IFE ..TX2,< ;;IF STILL HAVEN'T DONE IT,
243 TD'MT AC,[..TX1] ;;MUST GIVE UP AND USE LITERAL
244 PURGE ..TX1,..TX2
245 IFNDEF .PSECT,<
246 ..TX2==0 ;;FLAG SAYS HAVEN'T DONE IT YET
247 IFE <..TX1O777777B17,
248 ..TX2==1 ;;LH 0, DO AS RH
249 TR'MT AC,..TX1
250 IFE ..TX2,< ;;IF HAVEN'T DONE IT YET,
251 IFE <..TX1O777777,
252 ..TX2==1 ;;RH 0, DO AS LH
253 TL'MT AC,(..TX1)
254 IFE ..TX2,< ;;IF HAVEN'T DONE IT YET,
255 IFE <<..TX1B53-O777777, ;;IF LH ALL ONES,
256 ..TX3 (MT,AC) ;;TRY Z,O,C SPECIAL CASES
257 IFE ..TX2,< ;;IF STILL HAVEN'T DONE IT,
259 PURGE ..TX1,..TX2
260 ;SPECIAL CASE FOR LH ALL ONES
261
262 DEFINE ..TX3 (MT,AC)<
263 IFIDN <MTZ, ;;IF ZEROING WANTED
264 ..TX2==1
265 ANDI AC,-..TX1 ;;CAN DO IT WITH ANDI
266 IFIDN <MTO, ;;IF SET TO ONES WANTED
267 ..TX2==1
268 ORCMI AC,-..TX1 ;;CAN DO IT WITH IORCM
269 IFIDN <MTC, ;;IF COMPLEMENT WANTED
270 ..TX2==1
271 EQVI AC,-..TX1 ;;CAN DO IT WITH EQV
272
273 SUBTTL JX -- JUMP ON MASK
274
275 ;JXE -- JUMP IF MASKED BITS ARE EQUAL TO 0
276 ;JXN -- JUMP IF MASKED BITS ARE NOT EQUAL TO 0
277 ;JXO -- JUMP IF MASKED BITS ARE ALL ONES
278 ;JXF -- JUMP IF MASKED BITS ARE NOT ALL ONES (FALSE)
279
280 DEFINE JXE (AC,MSK,BA)<
281 ..JX1==MSK ;;EVAL EXPRESSION IF ANY
282 IFDEF .PSECT,<
283 .IFN ..JX1,ABSOLUTE,<PRINTX MSK NOT ABSOLUTE
284 ..JX1==0
285 .IF ..JX1,ABSOLUTE,<
286 .IF0 <<..JX1-1B0, ;;IF MASK IS JUST B0,
287 JUMPGE AC,BA,
288 .IF0 <<..JX1+1, ;;IF MASK IF FULL WORD,
289 JUMPE AC,BA, ;;USE GIVEN CONDITION
290 TXNN (AC,..JX1)
291 JRST BA
292 PURGE ..JX1
293 IFNDEF .PSECT,<
294 .IF0 <<..JX1-1B0, ;;IF MASK IS JUST B0,
295 JUMPGE AC,BA,
296 .IF0 <<..JX1+1, ;;IF MASK IF FULL WORD,
297 JUMPE AC,BA, ;;USE GIVEN CONDITION
298 TXNN (AC,..JX1)
299 JRST BA
300 PURGE ..JX1
301
302 DEFINE JXN (AC,MSK,BA)<
303 ..JX1==MSK ;;EVAL EXPRESSION IF ANY
304 IFDEF .PSECT,<
305 .IFN ..JX1,ABSOLUTE,<PRINTX MSK NOT ABSOLUTE
306 ..JX1==0
307 .IF ..JX1,ABSOLUTE,<
308 .IF0 <<..JX1-1B0, ;;IF MASK IS JUST B0,
309 JUMPL AC,BA,
310 .IF0 <<..JX1+1, ;;IF MASK IF FULL WORD,
311 JUMPN AC,BA, ;;USE GIVEN CONDITION
313 JRST BA
314 PURGE ..JX1
315 IFNDEF .PSECT,<
316 .IF0 <<..JX1-1B0, ;;IF MASK IS JUST B0,
317 JUMPL AC,BA,
318 .IF0 <<..JX1+1, ;;IF MASK IF FULL WORD,
319 JUMPN AC,BA, ;;USE GIVEN CONDITION
320 TXNE (AC,..JX1)
321 JRST BA
322 PURGE ..JX1
323
324 DEFINE JXO (AC,MSK,BA)<
325 ..JX1==MSK ;;EVAL EXPRESSION
326 IFDEF .PSECT,<
327 .IFN ..JX1,ABSOLUTE,<PRINTX MSK NOT ABSOLUTE
328 ..JX1==0
329 .IF ..JX1,ABSOLUTE,<
330 .IF0 <<..JX1-1B0,
331 JUMPL AC,BA,
332 ..ONEB (..BT,MSK) ;;TEST MASK FOR ONLY ONE BIT ON
333 .IF0 ..BT,<
334 SETCM .SAC,AC ;;GENERAL CASE, GET COMPLEMENTS OF BITS
335 JXE (.SAC,..JX1,BA), ;;JUMP IF BITS WERE ORIGINALLY ONES
336 TXNE AC,..JX1 ;;TEST AND JUMP
337 JRST BA
338 PURGE ..JX1
339 IFNDEF .PSECT,<
340 .IF0 <<..JX1-1B0,
341 JUMPL AC,BA,
342 ..ONEB (..BT,MSK) ;;TEST MASK FOR ONLY ONE BIT ON
343 .IF0 ..BT,<
344 SETCM .SAC,AC ;;GENERAL CASE, GET COMPLEMENTS OF BITS
345 JXE (.SAC,..JX1,BA), ;;JUMP IF BITS WERE ORIGINALLY ONES
346 TXNE AC,..JX1 ;;TEST AND JUMP
347 JRST BA
348 PURGE ..JX1
349
350 DEFINE JXF (AC,MSK,BA)<
351 ..JX1==MSK ;;EVAL EXPRESSION
352 IFDEF .PSECT,<
353 .IFN ..JX1,ABSOLUTE,<PRINTX MSK NOT ABSOLUTE
354 ..JX1==0
355 .IF ..JX1,ABSOLUTE,<
356 .IF0 <<..JX1-1B0,
357 JUMPGE AC,BA,
358 ..ONEB (..BT,MSK) ;;TEST MASK FOR ONLY ONE BIT ON
359 .IF0 ..BT,<
360 SETCM .SAC,AC ;;GENERAL CASE, GET COMPLEMENT OF BITS
361 JXN (.SAC,..JX1,BA), ;;JUMP IF SOME ZEROS ORIGINALLY
362 TXNN AC,..JX1 ;;TEST AND JUMP
363 JRST BA
364 PURGE ..JX1
365 IFNDEF .PSECT,<
367 JUMPGE AC,BA,
368 ..ONEB (..BT,MSK) ;;TEST MASK FOR ONLY ONE BIT ON
369 .IF0 ..BT,<
370 SETCM .SAC,AC ;;GENERAL CASE, GET COMPLEMENT OF BITS
371 JXN (.SAC,..JX1,BA), ;;JUMP IF SOME ZEROS ORIGINALLY
372 TXNN AC,..JX1 ;;TEST AND JUMP
373 JRST BA
374 PURGE ..JX1
375
376 SUBTTL SUBFUNCTION MACROS
377
378 ;.IF0 CONDITION, ACTION IF CONDITION 0, ACTION OTHERWISE
379
380 DEFINE .IF0 (COND,THEN,ELSE)<
381 ..IFT==COND ;;GET LOCAL VALUE FOR CONDITION
382 IFE ..IFT,<
383 THEN
384 ..IFT==0 ;;RESTORE IN CASE CHANGED BY NESTED .IF0
385 IFN ..IFT,<
386 ELSE
387
388 ;CASE (NUMBER,<FIRST,SECOND,...,NTH)
389
390 DEFINE .CASE (NUM,LIST)<
391 ..CSN==NUM
392 ..CSC==0
393 IRP LIST,<
394 IFE ..CSN-..CSC,<
395 STOPI
396 ..CAS1 (LIST)
397 ..CSC==..CSC+1
398
399 DEFINE ..CAS1 (LIST)<
400 LIST
401
402 ;TEST FOR FULL WORD, RH, LH, OR ARBITRARY BYTE
403
404 DEFINE ..TSIZ (SYM,MSK)<
405 SYM==3 ;;ASSUME BYTE UNLESS...
406 IFE <MSK+1,SYM=0 ;;FULL WORD IF MASK IS -1
407 IFE <MSK-O777777,SYM==1 ;;RH IF MASK IS 777777
408 IFE <MSK-O777777B17,SYM==2 ;;LH IF MAST IS 777777,,0
409
410 ;TEST FOR LOC BEING AN AC -- SET SYM TO 1 IF AC, 0 IF NOT AC
411
412 DEFINE ..TSAC (SYM,LOC)<
413 IFNDEF .PSECT,<
414 SYM==0 ;;ASSUME NOT AC UNLESS...
415 ..TSA1==<Z LOC ;;LOOK AT LOC
416 IFE ..TSA1O777777777760,<SYM==1 ;;AC IF VALUE IS 0-17 MORE THAN ONE, DO GENERAL CASE
477 ..ICNS ;;INIT REMOTE MACRO
478 ..CNS (<CLL (OP,<AC,,) ;;CONS ON CALL AND FIRST ARGS
479 IRP STR,< ;;DO ALL NAMES IN LIST
480 IFNDEF STR,<PRINTX STR NOT DEFINED
481 IFDEF STR,<
482 IFNDEF %'STR,<
483 ..CNS (<,STR,Y) ;;ASSUME NO OTHER LOCN
484 IFDEF %'STR,<
485 %'STR (..STR2,,Y,STR) ;;STR MACRO WILL GIVE LOCN TO ..STR2
486 ..CNS (<)) ;;CLOSE ARG LIST
487 ..GCNS ;;DO THIS AND PREVIOUS NAME
488 ..ICNS ;;REINIT CONS
489 ..CNS (<CLL (OP,<AC) ;;PUT ON FIRST ARGS
490 IFNDEF %'STR,<
491 ..CNS (<,STR,Y) ;;ASSUME NO OTHER LOCN
492 IFDEF %'STR,<
493 %'STR (..STR2,,Y,STR) ;;PUT ON THIS ARG, END IRP
494 ..CNS (<,,)) ;;CLOSE ARG LIST
495 ..GCNS ;;DO LAST CALL
496
497 ;..STR2 -- CALLED BY ABOVE TO APPEND STRUCTURE NAME AND LOC TO ARG LIST
498
499 DEFINE ..STR2 (AA,LOC,STR)<
500 ..CNS (<,STR,LOC) ;;CONS ON NEXT ARG PAIR
501
502 ;..STR3 -- CHECK FOR ALL STRUCTURES IN SAME REGISTER
503
504 DEFINE ..STR3 (OP,AC,S1,L1,S2,L2)<
505 IFDIF <L1L2,
506 IFNB <L1,
507 OP (<AC,L1,..MSK) ;;DO ACCUMULATED STUFF
508 IFNB <L2,PRINTX S1 AND S2 ARE IN DIFFERENT WORDS
509 ..MSK==0 ;;INIT MASK
510 IFNB <L2,
511 ..MSK=..MSK!<S2
512
513 ;..STR4 -- COMPARE SUCCESSIVE ITEMS, DO SEPARATE OPERATION IF
514 ;DIFFERENT WORDS ENCOUNTERED
515
516 DEFINE ..STR4 (OP,AC,S1,L1,S2,L2)<
517 IFDIF <L1L2, ;;IF THIS DIFFERENT FROM PREVIOUS
518 IFNB <L1,
519 OP (<AC,L1,..MSK) ;;DO PREVIOUS
520 ..MSK==0 ;;REINIT MASK
521 IFNB <L2,
522 ..MSK=..MSK!<S2 ;;ACCUMULATE MASK
523
524 ;..STR5 - SAME AS ..STR4 EXCEPT GIVES EXTRA ARG IF MORE STUFF TO
525 ;FOLLOW.
526
527 DEFINE ..STR5 (OP,AC,S1,L1,S2,L2)<
529 IFNB <L1,
530 IFNB <L2, ;;IF MORE TO COME,
531 OP'1 (AC,L1,..MSK) ;;DO VERSION 1
532 IFB <L2, ;;IF NO MORE,
533 OP'2 (AC,L1,..MSK) ;;DO VERSION 2
534 ..MSK==0 ;;REINIT MASK
535 IFNB <L2,
536 ..MSK=..MSK!<S2 ;;ACCUMULATE MASK
537
538 ;'REMOTE' MACROS USED TO BUILD UP ARG LIST
539
540 ;INITIALIZE CONS -- DEFINES CONS
541
542 DEFINE ..ICNS <
543 DEFINE ..CNS (ARG)<
544 ..CNS2 <ARG,
545
546 DEFINE ..CNS2 (NEW,OLD)<
547 DEFINE ..CNS (ARG)<
548 ..CNS2 <ARG,OLD'NEW
549
550
551 ;GET CONS -- EXECUTE STRING ACCUMULATED
552
553 DEFINE ..GCNS <
554 DEFINE ..CNS2 (NEW,OLD)<
555 OLD ;;MAKE ..CNS2 DO THE STUFF
556 ..CNS () ;;GET ..CNS2 CALLED WITH THE STUFF
557
558 ;SPECIFIC CASES
559
560 ;LOAD, STORE
561 ; AC - AC OPERAND
562 ; STR - STRUCTURE NAME
563 ; Y - (OPTIONAL) ADDITIONAL SPECIFICATION OF DATA LOCATION
564
565 DEFINE LOAD (AC,STR,Y)<
566 ..STR0 (..LDB,AC,STR,Y)
567
568 DEFINE ..LDB (AC,LOC,MSK)<
569 ..TSIZ (..PST,MSK)
570 .CASE ..PST,<<
571 MOVE AC,LOC,
572 HRRZ AC,LOC,
573 HLRZ AC,LOC,
574 LDB AC,[POINTR (LOC,MSK)]
575
576 DEFINE STOR (AC,STR,Y)<
577 ..STR0 (..DPB,AC,STR,Y)
578
579 DEFINE ..DPB (AC,LOC,MSK)<
580 ..TSIZ (..PST,MSK)
581 .CASE ..PST,<<
583 HRRM AC,LOC,
584 HRLM AC,LOC,
585 DPB AC,[POINTR (LOC,MSK)]
586
587 ;SET TO ZERO
588
589 DEFINE SETZRO (STR,Y)<
590 ..STR1 (..TQZ,,<STR,Y,..STR4)
591
592 DEFINE ..TQZ (AC,LOC,MSK)<
593 ..TSIZ (..PST,MSK) ;;SET ..PST TO CASE NUMBER
594 .CASE ..PST,<<
595 SETZM LOC, ;;FULL WORD
596 HLLZS LOC, ;;RH
597 HRRZS LOC, ;;LH
598 ..TSAC (..ACT,LOC) ;;SEE IF LOC IS AC
599 .IF0 ..ACT,<
600 MOVX .SAC,MSK ;;NOT AC
601 ANDCAM .SAC,LOC,
602 ..TX (Z,LOC,MSK)
603
604 ;SET TO ONE
605
606 DEFINE SETONE (STR,Y)<
607 ..STR1 (..TQO,,<STR,Y,..STR4)
608
609 DEFINE ..TQO (AC,LOC,MSK)<
610 ..TSIZ (..PST,MSK)
611 .CASE ..PST,<<
612 SETOM LOC,
613 HLLOS LOC,
614 HRROS LOC,
615 ..TSAC (..ACT,LOC)
616 .IF0 ..ACT,<
617 MOVX .SAC,MSK
618 IORM .SAC,LOC,
619 ..TX (O,LOC,MSK)
620
621 ;SET TO COMPLEMENT
622
623 DEFINE SETCMP (STR,Y)<
624 ..STR1 (..TQC,,<STR,Y,..STR4)
625
626 DEFINE ..TQC (AC,LOC,MSK)<
627 ..TSIZ (..PST,MSK)
628 .IF0 ..PST,< ;;IF FULL WORD,
629 SETCMM LOC, ;;CAN USE SETCMM
630 ..TSAC (..ACT,LOC) ;;OTHERWISE, CHECK FOR AC
631 .IF0 ..ACT,<
632 MOVX .SAC,MSK
633 XORM .SAC,LOC,
634 ..TX(C,LOC,MSK)
635
637
638 DEFINE INCR (STR,Y)<
639 ..STR0 (.INCR0,,<STR,Y)
640
641 DEFINE .INCR0 (AC,LOC,MSK)<
642 ..PST==MSK<-MSK ;;GET LOWEST BIT
643 .IF0 ..PST-1,<
644 AOS LOC, ;;BIT 35, CAN USE AOS
645 MOVX .SAC,..PST ;;LOAD A ONE IN THE APPROPRIATE POSITION
646 ADDM .SAC,LOC
647
648 DEFINE DECR (STR,Y)<
649 ..STR0 (.DECR0,,<STR,Y)
650
651 DEFINE .DECR0 (AC,LOC,MSK)<
652 ..PST==MSK<-MSK
653 .IF0 ..PST-1,<
654 SOS LOC, ;;BIT 35, CAN USE SOS
655 MOVX .SAC,-..PST ;;LOAD -1 IN APPROPRIATE POSITION
656 ADDM .SAC,LOC
657
658 ;GENERAL DEFAULT, TAKES OPCODE
659
660 DEFINE OPSTR (OP,STR,Y)<
661 ..STR0 (.OPST1,<OP,STR,Y)
662
663 DEFINE .OPST1 (OP,LOC,MSK)<
664 ..TSIZ (..PST,MSK)
665 .IF0 ..PST,<
666 OP LOC, ;;FULL WORD, USE GIVEN OP DIRECTLY
667 ..LDB .SAC,LOC,MSK ;;OTHERWISE, GET SPECIFIED BYTE
668 OP .SAC
669
670 DEFINE OPSTRM (OP,STR,Y)<
671 ..STR0 (.OPST2,<OP,STR,Y)
672
673 DEFINE .OPST2 (OP,LOC,MSK)<
674 ..TSIZ (..PST,MSK)
675 .IF0 ..PST,<
676 OP LOC, ;;FULL WORD, USE OP DIRECTLY
677 ..LDB .SAC,LOC,MSK
678 OP .SAC
679 ..DPB .SAC,LOC,MSK
680
681 ;JUMP IF ALL FIELDS ARE 0 (ONE REGISTER AT MOST)
682
683 DEFINE JE (STR,Y,BA)<
684 ..STR1 (..JE,<BA,STR,Y,..STR3)
685
686 DEFINE ..JE (BA,LOC,MSK)<
687 ..TSAC (..ACT,LOC) ;;SEE IF AC
688 .IF0 ..ACT,<
689 ..TSIZ (..PST,MSK) ;;SEE WHICH CASE
691 SKIPN LOC ;;FULL WORD, TEST IN MEMORY
692 JRST BA,
693 HRRZ .SAC,LOC ;;RIGHT HALF, GET IT
694 JUMPE .SAC,BA,
695 HLRZ .SAC,LOC ;;LEFT HALF, GET IT
696 JUMPE .SAC,BA,
697 MOVE .SAC,LOC ;;NOTA, GET WORD
698 JXE (.SAC,MSK,<BA),
699 JXE (LOC,MSK,<BA)
700
701 ;JUMP IF NOT ALL FIELDS ARE 0 (ONE REGISTER AT MOST)
702
703 DEFINE JN (STR,Y,BA)<
704 ..STR1 (..JN,<BA,STR,Y,..STR3)
705
706 DEFINE ..JN (BA,LOC,MSK)<
707 ..TSAC (..ACT,LOC) ;;SEE IF AC
708 .IF0 ..ACT,<
709 ..TSIZ (..PST,MSK)
710 .CASE ..PST,<<
711 SKIPE LOC ;;FULL WORD, TEST IN MEMORY
712 JRST BA,
713 HRRZ .SAC,LOC ;;RIGHT HALF, GET IT
714 JUMPN .SAC,BA,
715 HLRZ .SAC,LOC ;;LEFT HALF, GET IT
716 JUMPN .SAC,BA,
717 MOVE .SAC,LOC ;;NOTA, GET WORD
718 JXN (.SAC,MSK,<BA),
719 JXN (LOC,MSK,<BA)
720
721 ;JOR - JUMP ON 'OR' OF ALL FIELDS
722
723 DEFINE JOR (STR,Y,BA)<
724 ..STR1 (..JN,<BA,STR,Y,..STR4)
725
726 ;JNAND - JUMP ON NOT 'AND' OF ALL FIELDS
727
728 DEFINE JNAND (STR,Y,BA)<
729 ..STR1 (..JNA3,<BA,STR,Y,..STR4)
730
731 DEFINE ..JNA3 (BA,LOC,MSK)<
732 ..TSAC (..ACT,LOC)
733 .IF0 ..ACT,<
734 SETCM .SAC,LOC ;;NOT AC, GET COMPLEMENT OF WORD
735 JXN (.SAC,MSK,<BA), ;;JUMP IF ANY BITS ORIGINALLY OFF
736 JXF (LOC,MSK,<BA) ;;DO AC CASE
737
738 ;JAND - JUMP ON 'AND' OF ALL FIELDS
739
740 DEFINE JAND (STR,Y,BA,%TG)<
741 ..STR1 (..JAN,<%TG,<BA,STR,Y,..STR5)
742 %TG:
743
745 ..JNA3 (BA1,LOC,MSK) ;;DO JUMP NAND TO LOCAL TAG
746
747 DEFINE ..JAN2 (BA1,BA2,LOC,MSK)<
748 ..TSAC (..ACT,LOC)
749 .IF0 ..ACT,<
750 SETCM .SAC,LOC ;;NOT AC, GET COMPLEMENT OF WORD
751 JXE (.SAC,MSK,<BA2), ;;JUMP IF ALL BITS ORIGINALLY ONES
752 JXO (LOC,MSK,<BA2) ;;DO AC CASE
753
754 ;JNOR - JUMP ON NOT 'OR' OF ALL FIELDS
755
756 DEFINE JNOR (STR,Y,BA,%TG)<
757 ..STR1 (..JNO,<%TG,<BA,STR,Y,..STR5)
758 %TG:
759
760 DEFINE ..JNO1 (BA1,BA2,LOC,MSK)<
761 ..JN (BA1,LOC,MSK) ;;DO JUMP OR TO LOCAL TAG
762
763 DEFINE ..JNO2 (BA1,BA2,LOC,MSK)<
764 ..JE (<BA2,LOC,MSK) ;;DO JUMP NOR TO GIVEN TAG
765
766 ;TEST AND MODIFY GROUP USING DEFINED STRUCTURES. TEST-ONLY AND
767 ;MODIFY-ONLY PROVIDED FOR COMPLETENESS.
768
769 DEFINE ..DOTY (M,T)< ;;MACRO TO DEFINE ALL CASES
770 IRP M,<
771 IRP T,<
772 DEFINE TQ'M'T (STR,Y)<
773 ..STR1 (..TY,M'T,<STR,Y,..STR3)
774
775 ..DOTY (<N,O,Z,C,,E,N,A) ;DO 16 DEFINES
776 PURGE ..DOTY
777
778 ;ALL TY MACROS CALL ..TY AFTER INITIAL STRUCTURE PROCESSING
779
780 DEFINE ..TY (MT,LOC,MSK)<
781 ..TSAC (..ACT,LOC) ;;SEE IF LOC IS AC
782 .IF0 ..ACT,<
783 PRINTX ?TQ'MT - LOC NOT IN AC,
784 TX'MT LOC,MSK
785
786 SUBTTL CALL, RET, JSERR
787
788 IFE REL,<
789 EXTERN JSERR0,JSHLT0,R,RSKP
790
791 ;CALL AND RETURN
792
793 000001 .AC1==1 ;ACS FOR JSYS ARGS
794 000002 .AC2==2
795 000003 .AC3==3
796 000016 .A16==16 ;TEMP FOR STKVAR AND TRVAR
797 000017 P=17 ;STACK POINTER
799 260740 000000 OPDEF CALL [PUSHJ P,0]
800 263740 000000 OPDEF RET [POPJ P,0]
801
802 ;ABBREVIATION FOR CALL, RET, RETSKP
803
804 254000 000000 OPDEF CALLRET [JRST]
805 .NODDT CALLRET
806
807 DEFINE RETSKP <
808 JRST RSKP
809
810 ;MACRO TO PRINT MESSAGE ON TERMINAL
811
812 DEFINE TMSG ($MSG)<
813 HRROI .AC1,[ASCIZ $MSG]
814 PSOUT
815
816 ;MACRO TO OUTPUT MESSAGE TO FILE
817 ; ASSUMES JFN ALREADY IN .AC1
818
819 DEFINE FMSG ($MSG)<
820 HRROI .AC2,[ASCIZ $MSG]
821 MOVEI .AC3,0
822 SOUT
823
824 ;MACRO TO PRINT MESSAGE FOR LAST ERROR, RETURNS +1
825
826 DEFINE PERSTR ($MSG)<
827 IFNB <$MSG,
828 TMSG <$MSG
829 CALL JSMSG0
830
831 ;MACRO TO PRINT JSYS ERROR MESSAGE, RETURNS +1 ALWAYS
832
833 DEFINE JSERR<
834 CALL JSERR0
835
836 ;MACRO FOR FATAL JSYS ERROR, PRINTS MSG THEN HALTS
837
838 DEFINE JSHLT<
839 CALL JSHLT0
840
841 ;PRINT ERROR MESSAGE IF JSYS FAILS
842
843 DEFINE ERMSG(TEXT),<
844 ERJMP [TMSG <? TEXT
845 JSHLT]
846
847
848 ;MAKE SYMBOLS EXTERN IF NOT ALREADY DEFINED
849
850 DEFINE EXT (SYM)<
851 IF2,<
853 IFNDEF SYM,<EXTERN SYM
854 SUPPRE SYM
855
856 ;MACRO TO ADD BREAK CHARACTER TO FOUR WORD BREAK MASK (W0., W1., W2., W3.)
857
858 DEFINE BRKCH. (%%V,V2)
859 < BRK1 (%%V,V2,0)
860
861
862 ;MACRO TO REMOVE CHARACTER
863
864 DEFINE UNBRK. (%%V,V2)
865 < BRK1 (%%V,V2,1)
866
867
868 DEFINE BRK1 (%%V,V2,FLAVOR)
869 < V22==%%V
870 V1==%%V
871 IFNB <V2,V22==V2
872 REPEAT V22-<%%V+1, ;;BRACKETS AROUND %%V IN CASE ITS AN EXPRESSION
873 %%W==V1/D32 ;;DECIDE WHICH WORD CHARACTER GOES IN
874 %%X==V1-%%W*D32 ;;CALCULATE BIT POSITION WITHIN WORD
875 IFE FLAVOR,BRKC1 "<%%W+"0" ;;MODIFY CORRECT MASK WORD
876 IFN FLAVOR,BRKC2 "<%%W+"0"
877 V1==V1+1
878
879
880
881 DEFINE BRKC1 (ARG1)
882 < W'ARG1'.==W'ARG1'.!<1B<%%X
883
884
885 DEFINE BRKC2 (ARG1)
886 < W'ARG1'.==W'ARG1'.<-1-1B<%%X
887
888
889 ;MACRO TO INITIALIZE 4-WORD 12-BIT CHARACTER BREAK MASK
890
891 DEFINE BRINI.(A0<0,A10,A20,A30)
892 <
893 W0.==A0
894 W1.==A1 ;INITIALIZE BREAK MASK
895 W2.==A2
896 W3.==A3
897
898
899 ;MACRO TO DEFINE A BREAK SET
900
901 DEFINE BRMSK. (INI0,INI1,INI2,INI3,ALLOW,DISALW)
902 < BRINI. INI0,INI1,INI2,INI3 ;;SET UP INITIAL MASK
903 IRPC ALLOW,< UNBRK. "ALLOW" ;;DON'T BREAK ON CHARS TO BE ALLOWED IN FIELD
904 IRPC DISALW,< BRKCH. "DISALW" ;;BREAK ON CHARACTERS NOT ALLOWED
905 EXP W0.,W1.,W2.,W3. ;;STORE RESULTANT MASK IN MEMORY
907
908 ;COMND - MACRO FOR BUILDING FUNCTION DESCRIPTOR BLOCK
909 ;THIS IS THE OLD ONE, BEFORE .CMBRK EXISTED. USE FLDBK. FOR SPECIFYING
910 ;BREAK SETS
911
912 DEFINE FLDDB. (TYP,FLGS,DATA,HLPM,DEFM,LST)<
913 ..XX==<FLD(TYP,CM%FNC)+FLGS+Z LST
914 IFNB <HLPM,..XX=CM%HPP!..XX
915 IFNB <DEFM,..XX=CM%DPP!..XX
916 ..XX
917 IFNB <DATA,DATA
918 IFB <DATA,0
919 IFNB <HLPM,POINT 7,[ASCIZ hLPM]
920 IFB <HLPM,IFNB <DEFM,0
921 IFNB <DEFM,POINT 7,[ASCIZ dEFM]
922
923 ;COMND - MACRO FOR BUILDING FUNCTION DESCRIPTOR BLOCK
924
925 DEFINE FLDBK. (TYP,FLGS,DATA,HLPM,DEFM,BRKADR,LST)<
926 ..XX==<FLD(TYP,CM%FNC)+FLGS+Z LST
927 IFNB <HLPM,..XX=CM%HPP!..XX
928 IFNB <DEFM,..XX=CM%DPP!..XX
929 IFNB <BRKADR,..XX=CM%BRK!..XX
930 ..XX
931 IFNB <DATA,DATA
932 IFB <DATA,0
933 IFNB <HLPM,POINT 7,[ASCIZ hLPM]
934 IFB <HLPM,IFNB <DEFM'BRKADR,0
935 IFB <DEFM,IFNB <BRKADR,0
936 IFNB <DEFM,POINT 7,[ASCIZ dEFM]
937 IFNB <BRKADR,BRKADR
938
939
940 ;USEFUL EXTENDED ADDRESSING DEFINITIONS
941
942 415000 000000 OPDEF XMOVEI [SETMI] ;EXTENDED MOVE IMMEDIATE
943 501000 000000 OPDEF XHLLI [HLLI] ;NOT YET IN MACRO
944
945 DEFINE XBLT. (A)<
946 EXTEND A,[XBLT]
947
948 SUBTTL SUPPORT CODE FOR JSERR
949
950 IFN REL,<
951
952 A=1
953 B=2
954 C=3
955 D=4
956
957 ;JSYS ERROR HANDLER
958 ; CALL JSERR0
959 ; RETURNS +1: ALWAYS, CAN BE USED IN +1 RETURN OF JSYS'S
961 JSERR0::MOVEI A,.PRIIN
962 CFIBF ;CLEAR TYPAHEAD
963 MOVEI A,.PRIOU
964 DOBE ;WAIT FOR PREVIOUS OUTPUT TO FINISH
965 TMSG <
966 ? JSYS ERROR:
967 JSMSG0::MOVEI A,.PRIOU
968 HRLOI B,.FHSLF ;SAY THIS FORK ,, LAST ERROR
969 SETZ C,
970 ERSTR
971 JFCL
972 JFCL
973 TMSG <
974
975 RET
976
977 ;FATAL JSYS ERROR - PRINT MESSAGE AND HALT
978 ; CALL JSHLT0
979 ; RETURNS: NEVER
980
981 JSHLT0::CALL JSERR0 ;PRINT THE MSG
982 JSHLT1: HALTF
983 TMSG <PROGRAM CANNOT CONTINUE
984
985 JRST JSHLT1 ;HALT AGAIN IF CONTINUED
986 ;END OF IFN REL,
987
988 SUBTTL STKVAR - STACK VARIABLE FACILITY
989
990 ;MACRO FOR ALLOCATING VARIABLES ON THE STACK. ITS ARGUMENT IS
991 ;A LIST OF ITEMS. EACH ITEM MAY BE:
992 ; 1. A SINGLE VARIABLE WHICH WILL BE ALLOCATED ONE WORD
993 ; 2. A VARIABLE AND SIZE PARAMETER WRITTEN AS <VAR,SIZ. THE
994 ; VARIABLE WILL BE ALLOCATED THE SPECIFIED NUMBER OF WORDS.
995 ;RETURN FROM A SUBROUTINE USING THIS FACILITY MUST BE VIA
996 ;RET OR RETSKP. A DUMMY RETURN WHICH FIXES UP THE STACK IS PUT ON
997 ;THE STACK AT THE POINT THE STKVAR IS ENCOUNTERED.
998 ;WITHIN THE RANGE OF A STKVAR, PUSH/POP CANNOT BE USED AS THEY WILL
999 ;CAUSE THE VARIABLES (WHICH ARE DEFINED AS RELATIVE STACK LOCATIONS)
1000 ;TO REFERENCE THE WRONG PLACE.
1001 ;TYPICAL USE: STKVAR <AA,BB,<QQ,5,ZZ
1002
1003 IFE REL,<
1004 EXTERN .STKST,.ST
1005
1006 DEFINE STKVAR (ARGS)<
1007 ..STKR==10 ;;REMEMBER RADIX
1008 RADIX 8
1009 ..STKN==0
1010 IRP ARGS,<
1011 .STKV1 (ARGS)
1012 JSP .A16,.STKST
1013 ..STKN,,..STKN
1015 PURGE ..STKN,..STKR,..STKQ
1016
1017
1018 ;INTERMEDIATE MACRO TO PEAL OFF ANGLEBRACKETS IF ANY
1019
1020 DEFINE .STKV1 (ARG)<
1021 .STKV2 (ARG)
1022
1023 ;INTERMEDIATE MACRO TO CALCULATE OFFSET AND COUNT VARIABLES
1024
1025 DEFINE .STKV2 (VAR,SIZ)<
1026 IFB <SIZ,..STKN==..STKN+1
1027 IFNB <SIZ,..STKN==..STKN+SIZ
1028 ..STKQ==..STKN+1
1029 .STKV3 (VAR,..STKQ)
1030
1031 ;INNERMOST MACRO TO DEFINE VARIABLE
1032
1033 DEFINE .STKV3 (VAR,LOC)<
1034 IFDEF VAR,<.IF VAR,SYMBOL,<PRINTX STKVAR VAR ALREADY DEFINED
1035 DEFINE VAR<-O'LOC(P)
1036 $'VAR==<Z VAR ;SYMBOL FOR DDT
1037
1038 IFN REL,<
1039
1040 ;COMMON ENTRY AND EXIT ROUTINE FOR STACK VARIABLE
1041
1042 ENTRY .STKST
1043
1044 .STKST::ADD P,0(.A16) ;BUMP STACK FOR VARIABLES USED
1045 JUMPGE P,STKSOV ;TEST FOR STACK OVERFLOW
1046 STKSE1: PUSH P,0(.A16) ;SAVE BLOCK SIZE FOR RETURN
1047 PUSHJ P,1(.A16) ;CONTINUE ROUTINE, EXIT TO .+1
1048 .STKRT::JRST STKRT0 ;NON-SKIP RETURN COMES HERE
1049 POP P,.A16 ;SKIP RETURN COMES HERE-RECOVER COUNT
1050 SUB P,.A16 ;ADJUST STACK TO REMOVE BLOCK
1051 AOS 0(P) ;NOW DO SKIP RETURN
1052 RET
1053
1054 STKRT0: POP P,.A16 ;RECOVER COUNT
1055 SUB P,.A16 ;ADJUST STACK TO REMOVE BLOCK
1056 RET ;DO NON-SKIP RETURN
1057
1058 STKSOV: SUB P,0(.A16) ;STACK OVERFLOW- UNDO ADD
1059 HLL .A16,0(.A16) ;SETUP TO DO MULTIPLE PUSH, GET COUNT
1060 STKSO1: PUSH P,[0] ;DO ONE PUSH AT A TIME, GET REGULAR
1061 SUB .A16,[1,,0] ; ACTION ON OVERFLOW
1062 TLNE .A16,777777 ;COUNT DOWN TO 0?
1063 JRST STKSO1 ;NO, KEEP PUSHING
1064 JRST STKSE1
1065 ;END OF IFN REL,
1066
1067 SUBTTL TRVAR - TRANSIENT VARIABLE FACILITY
1069 ;TRANSIENT (STACK) VARIABLE FACILITY - EQUIVALENT TO STKVAR
1070 ;EXCEPT ALLOWS VARIABLES TO BE USED WITHIN LOWER LEVEL ROUTINES
1071 ;AND AFTER OTHER THINGS HAVE BEEN PUSHED ON STACK.
1072 ;N.B. USES .FP AS FRAME POINTER - MUST NOT BE CHANGED WHILE
1073 ;VARIABLES IN USE.
1074
1075 000015 .FP==15 ;DEFAULT FRAME POINTER
1076
1077 IFE REL,<
1078 EXTERN .TRSET,.TRRET,.ASSET,.ASRET
1079
1080 DEFINE TRVAR (VARS)<
1081 ..TRR==10 ;;REMEMBER CURRENT RADIX
1082 RADIX 8
1083 ..NV==1 ;;INIT COUNT OF STACK WORDS
1084 IRP VARS,<
1085 .TRV1 (VARS) ;;PROCESS LIST
1086 JSP .A16,.TRSET ;;ALLOCATE STACK SPACE, SETUP .FP
1087 ..NV-1,,..NV-1
1088 RADIX ..TRR ;;RESTORE RADIX
1089 PURGE ..TRR,..NV ;;CLEAN UP
1090
1091 DEFINE .TRV1 (VAR)<
1092 .TRV2 (VAR) ;;PEEL OFF ANGLEBRACKETS IF ANY
1093
1094 DEFINE .TRV2 (NAM,SIZ)<
1095 .TRV3 (NAM,..NV) ;;DEFINE VARIABLE
1096 IFB <SIZ,..NV=..NV+1
1097 IFNB <SIZ,..NV=..NV+SIZ
1098
1099 DEFINE .TRV3 (NAM,LOC)<
1100 IFDEF NAM,<.IF NAM,SYMBOL,<PRINTX TRVAR NAM ALREADY DEFINED
1101 DEFINE NAM<O'LOC(.FP)
1102 $'NAM==<Z NAM ;;SYMBOL FOR DDT
1103
1104 ;AC SUBROUTINE - ENTRY FOR SUBROUTINE CALLED WITH 1-4 ARGS IN ACS T1-T4.
1105 ;USES .FP AS FRAME PTR LIKE TRVAR
1106
1107 DEFINE ASUBR (ARGS)<
1108 ..TRR==10 ;;SAVE RADIX
1109 RADIX 8
1110 ..NV==1 ;;INIT ARG COUNT
1111 IRP ARGS,<
1112 .TRV1 (ARGS) ;;DEFINE ARG SYMBOL
1113 IFG ..NV-5,<PRINTX ?TOO MANY ARGUMENTS: ARGS
1114 JSP .A16,.ASSET ;;SETUP STACK
1115 RADIX ..TRR ;;RESTORE RADIX
1116 PURGE ..TRR,..NV
1117
1118 IFN REL,<
1119 ;SUPPORT ROUTINE FOR TRVAR
1120
1121 .TRSET::PUSH P,.FP ;PRESERVE OLD .FP
1123 ADD P,0(.A16) ;ALLOCATE SPACE
1124 JUMPGE P,TRSOV
1125 TRSET1: PUSHJ P,1(.A16) ;CONTINUE ROUTINE, EXIT VIA .+1
1126 .TRRET::JRST [ MOVEM .FP,P ;CLEAR STACK
1127 POP P,.FP ;RESTORE OLD .FP
1128 POPJ P,]
1129 MOVEM .FP,P ;HERE IF SKIP RETURN
1130 POP P,.FP
1131 AOS 0(P) ;PASS SKIP RETURN
1132 POPJ P,
1133
1134 TRSOV: SUB P,0(.A16) ;STACK OVERFLOW - UNDO ADD
1135 HLL .A16,0(.A16) ;GET COUNT
1136 TRSOV1: PUSH P,[0] ;DO ONE PUSH AT A TIME, GET REGULAR
1137 SUB .A16,[1,,0] ; ACTION ON OVERFLOW
1138 TLNE .A16,777777 ;COUNT TO 0?
1139 JRST TRSOV1 ;NO, KEEP PUSHING
1140 JRST TRSET1 ;CONTINUE SETUP
1141
1142 ;SUPPORT ROUTINE FOR ASUBR
1143
1144 .ASSET::PUSH P,.FP ;SAVE .FP
1145 MOVE .FP,P ;SETUP FRAME POINTER
1146 ADD P,[4,,4] ;ADJUST STACK
1147 JUMPGE P,[SUB P,[4,,4] ;PROBABLE OVERFLOW
1148 PUSH P,A ;DO WITH PUSH, GET INTERRUPT...
1149 PUSH P,B
1150 PUSH P,C
1151 PUSH P,D
1152 JRST ASSET1]
1153 DMOVEM A,1(.FP) ;SAVE ARGS
1154 DMOVEM C,3(.FP)
1155 ASSET1: PUSHJ P,0(.A16) ;CONTINUE ROUTINE
1156 .ASRET:: JRST [ MOVEM .FP,P ;NO-SKIP RETURN, CLEAR STACK
1157 POP P,.FP
1158 POPJ P,]
1159 MOVEM .FP,P ;SKIP RETURN, CLEAR STZCK
1160 POP P,.FP
1161 AOS 0(P)
1162 POPJ P,
1163 ;END OF IFN REL,
1164
1165 ;AC VARIABLE FACILITY
1166
1167 IFE REL,<
1168 EXTERN .SAV1,.SAV2,.SAV3,.SAV4,.SAV8
1169
1170 000005 .FPAC==5 ;FIRST PRESERVED AC
1171 000010 .NPAC==10 ;NUMBER OF PRESERVED ACS
1172
1173 DEFINE ACVAR (LIST)<
1174 ..NAC==0 ;;INIT NUMBER OF ACS USED
1175 IRP LIST,<
1177 .ACV3 (..NAC) ;;SAVE ACS USED
1178
1179 DEFINE .ACV1 (ITEM)<
1180 .ACV2 (ITEM) ;;PEEL OFF ANGLEBRACKETS IF ANY
1181
1182 DEFINE .ACV2 (NAM,SIZ)<
1183 NAM=.FPAC+..NAC ;;DEFINE VARIABLE
1184 IFB <SIZ,..NAC=..NAC+1
1185 IFNB <SIZ,..NAC=..NAC+SIZ
1186
1187 DEFINE .ACV3 (N)<
1188 IFG N-.NPAC,<PRINTX ?TOO MANY ACS USED
1189 IFLE N-4,<
1190 JSP .A16,.SAV'N ;;SAVE ACTUAL NUMBER USED
1191 IFG N-4,<
1192 JSP .A16,.SAV8 ;;SAVE ALL
1193
1194 IFN REL,<
1195 ;SUPPORT ROUTINES FOR AC VARIABLE FACILITY
1196
1197 .SAV1:: PUSH P,.FPAC
1198 PUSHJ P,0(.A16) ;CONTINUE PROGRAM
1199 SKIPA
1200 AOS -1(P)
1201 POP P,.FPAC
1202 POPJ P,
1203
1204 .SAV2:: PUSH P,.FPAC
1205 PUSH P,.FPAC+1
1206 PUSHJ P,0(.A16)
1207 SKIPA
1208 AOS -2(P)
1209 POP P,.FPAC+1
1210 POP P,.FPAC
1211 POPJ P,
1212
1213 .SAV3::
1214 .SAV4:: PUSH P,.FPAC
1215 PUSH P,.FPAC+1
1216 PUSH P,.FPAC+2
1217 PUSH P,.FPAC+3
1218 PUSHJ P,0(.A16)
1219 SKIPA
1220 AOS -4(P)
1221 POP P,.FPAC+3
1222 POP P,.FPAC+2
1223 POP P,.FPAC+1
1224 POP P,.FPAC
1225 POPJ P,
1226
1227 .SAV8:: ADD P,[10,,10]
1228 JUMPGE P,[HALT .]
1229 DMOVEM .FPAC,-7(P)
1231 DMOVEM .FPAC+4,-3(P)
1232 DMOVEM .FPAC+6,-1(P)
1233 PUSHJ P,0(.A16)
1234 SKIPA
1235 AOS -10(P)
1236 DMOVE .FPAC+6,-1(P)
1237 DMOVE .FPAC+4,-3(P)
1238 DMOVE .FPAC+2,-5(P)
1239 DMOVE .FPAC,-7(P)
1240 SUB P,[10,,10]
1241 POPJ P,
1242
1243
1244 ;AC SAVE FACILITY - COMPILES OPEN PUSH'S
1245 ; SAVEAC <LIST-OF-ACS
1246 ;DUMMY ROUTINE PUT ON STACK TO CAUSE AUTOMATIC RESTORE. SUPPORTS
1247 ; +1 OR +2 RETURNS.
1248
1249 DEFINE SAVEAC (ACS)<
1250 .NAC==0
1251 IRP ACS,<
1252 PUSH P,ACS ;;SAVE AN AC
1253 .NAC=.NAC+1 ;;COUNT THEM
1254 .N1==.NAC
1255 SETMI .A16,[CAIA ;;STACK DUMMY RETURN
1256 AOS -.N1(P) ;;HANDLE SKIP RETURN
1257 IRP ACS,<
1258 .N1=.N1-1
1259 MOVE ACS,-.N1(P) ;;RESTORE AN AC
1260 SUB P,[.NAC,,.NAC] ;;CLEAR STACK
1261 POPJ P,] ;;FINAL RETURN
1262 PUSH P,.A16
1263
1264 IFN REL,<
1265 ;STANDARD RETURNS
1266
1267 RSKP:: AOS 0(P)
1268 R:: RET
1269 ;END OF IFN REL,
1270
1271 000000' LIT ;MAKE SURE LITERALS COME BEFORE END MARK
1272 IFN REL,<
1273 .RLEND==:.-1 ;MARK END OF CODE IN MACREL
1274
1275 IF2,<PURGE REL ;FLUSH REL FROM UNIV FILE
1276 END
1 ;<4.UTILITIESACTSYM.MAC.9, 6-Apr-79 09:44:47, Edit by KONEN
2
3 UNIVERSAL ACTSYM - SYMBOL FILE FOR ACCOUNTING
4 SUBTTL B.A. HUIZENGA/BAH/TAH - 6-JUN-77
5
6
7 ;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED
8 ; OR COPIED IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE.
9 ;
10 ;COPYRIGHT (C) 1976,1977,1978,1979 BY DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
11
12
13
14 ;PARAMETERS FOR USAGE ITEM DESCRIPTORS
15
16 ;FIELDS IN DATA ITEM DESCRIPTOR
17
18 770000 000000 US%FLG==:77B5 ;FLAGS
19 400000 000000 US%IMM==:1B0 ; 1 - IMMEDIATE DATA ITEM
20 ; 0 - ADDRESS OF DATA ITEM
21 007700 000000 US%TYP==:77B11 ;TYPE CODE
22 000000 .USASC==:0 ;ASCII
23 000001 .USSIX==:1 ;SIXBIT
24 000002 .USOCT==:2 ;OCTAL
25 000003 .USDEC==:3 ;DECIMAL
26 000004 .USDAT==:4 ;DATE-TIME
27 000005 .USTAB==:5 ;TABLE (SPECIAL FORM)
28 000006 .USVER==:6 ;VERSION NUMBER
29 000007 .USSPC==:7 ;SPACE FILL
30
31 000077 700000 US%LEN==:777B20 ;LENGTH
32 077777 US%COD==:77777B35 ;ITEM CODE
33
34 ;RECORD TYPE CODES
35
36 RADIX 10 ;**** NOTE RADIX 10 ****
37
38 000001 .UTRST==:1 ;SYSTEM RESTART ENTRY
39 000002 .UTSEN==:2 ;SESSION ENTRY
40 000003 .UTCKP==:3 ;CHECKPOINT ENTRY (SYSTEM RESTART)
42 000005 .UTTAD==:5 ;DATE-TIME CHANGE
43 000006 .UTBAT==:6 ;BATCH PROCESSOR
44 000007 .UTINP==:7 ;INPUT SPOOLER ENTRY
45 000010 .UTOUT==:8 ;OUTPUT SPOOLER ENTRY
46 000011 .UTFLU==:9 ;FILE USAGE DIRECTORY ENTRY
47 000012 .UTDSU==:10 ;DISK SPINDLE USAGE ENTRY
48 000013 .UTMNT==:11 ;STRUCTURE MOUNT ENTRY
49 000014 .UTMMT==:12 ;TAPE MOUNT ENTRY
50 000015 .UTDMT==:13 ;DECtape MOUNT ENTRY
51 000016 .UTFCM==:14 ;FILE COMMAND ENTRY
52 000017 .UTRET==:15 ; File retrieved
53 000020 .UTARC==:16 ; File archived
54 000021 .UTMIG==:17 ; File migrated
55 000022 .UTCOL==:18 ; File collected
56
57 011610 .UTUSR==:5000 ;USER-DEFINED ENTRY TYPES ARE 5000-9999
58
59 RADIX 8 ;**** END OF RADIX 10 ****
60
61 COMMENT
62
63 The format of the data to be passed to the accounting system
64 will consist of a list of items describing the entries in a single
65 record.
66
67 The record descriptor list will have a header containing the record
68 type code and the record version information.
69
70 Format of a record descriptor:
71
72 !=======================================================!
73 ! DEC ver. ! CUST ver. ! Entry Type !
74 !-------------------------------------------------------!
75 ! Flags ! Type ! Length ! Item Code !
76 !-------------------------------------------------------!
77 ! Data or Address (-1 for default) !
78 !-------------------------------------------------------!
79 .
80 .
81 .
82 !-------------------------------------------------------!
83 ! 0 (Marks end of list) !
84 !=======================================================!
85
86
87 The generation of these tables will be controlled by the
88 UITEM. macro. All known data items will have a name generated by
89 the use of this macro. If any application dependent items are needed
90 the UITEM. macro may be used to generate the new item. The USENT.
91 macro may be used to generate the first word of the entry descriptor
92 table.
93
94 All USAGE entry headers and the system-defined USAGE entry types use the
96
97 Installation-defined USAGE entries (with entry types above .UTUSR - 5000 to
98 9999) use the arbitrary data items (USUAS., USUSX., USUDC., USUOC., USUVR.,
99 USUDT., and USUSP.) in the order in which they are to be written into the
100 USAGE entry record. Each arbitrary data record must be preceded by a
101 USUAR. item.
102
103 Example of installation-defined USAGE entry:
104
105 ;The following code writes a USAGE entry for a fictitious "file access count"
106 ; in a user program. This program must be running as an enabled OPERATOR or
107 ; WHEEL.
108
109 ;Here to write USAGE entry for file access count
110
111 MOVEI T1,.USENT ;USAGE function to write entry
112 MOVEI T2,FILRDB ;Address of Record Descriptor Block
113 USAGE ;Write the entry
114 ERJMP USGERR ;Failed to write entry-- do something else
115 JRST USGOK ;Entry written-- go on
116
117 ;Record descriptor block for file access count accounting
118
119 FILRDB:
120 USENT. (.UTUSR+12,1,1) ;Entry type 5012= file access count.
121 USPVR. (<BYTE(3)VWHO(9)VMAJOR(6)VMINOR(18)VEDIT,US%IMM) ;Version
122 ; of this program (for header record).
123
124 USUAR. ;Start of first arbitrary record.
125 USUAS. ([ASCII this appears in every entry],,27) ;Text.
126 USUSP. (,,5) ;Space fill, 5 characters.
127 USUDC. (FILCNT,,6) ;Count of file accesses, 000000-999999.
128
129 USUAR. ;Start of second arbitrary record.
130 USUSX. (<SIXBIT fILE: ,US%IMM,6) ;SIXBIT text for filename.
131 USUAS. (FILNAM,,200) ;File name, 200 characters.
132
133 EXP 0 ;End of entry.
134
135 ;Storage
136
137 FILCNT: BLOCK 1 ;File access count
138 FILNAM: BLOCK D<200/5 ;File name text
139
140 ;;; End of comment
141
142 SUBTTL UITEM. / USENT. / USAGE. DEFINITIONS
143
144 SALL
145
146 DEFINE UITEM. (NAME,TYPE,LEN) <
147 DEFINE US'NAME'. (DATA<-1,IMMED0,ULENLEN) <
148 USAGE. (.US'NAME,ULEN,TYPE,IMMED,<DATA)
150
151
152 DEFINE USENT. (ETYPE,DVER,CVER) <
153 BYTE (9) D<DVER,DCVER (18) D<ETYPE
154
155
156 DEFINE USAGE. (CODE,LENGTH,TYPE,FLAGS,DATUM) <
157 FLAGS+<TYPEB11+D<LENGTHB20+CODE
158 IFB <DATUM,-1
159 IFNB <DATUM,DATUM
160
161
162 DEFINE USDSK. (TABLE) <
163 USAGE. (.USDST,0,.USTAB,US%IMM,<TABLE)
164
165 SUBTTL USAGE. ITEM-CODE DEFINITIONS
166
167 DEFINE USLIST <
168
169 DEFUS (JNO,0,.USDEC,4) ;JOB NUMBER
170 DEFUS (TAD,1,.USDAT,14) ;CURRENT DATE/TIME
171 DEFUS (TRM,2,.USASC,1) ;TERMINAL DESIGNATOR
172 DEFUS (LNO,3,.USOCT,4) ;LINE NUMBER
173 DEFUS (PNM,4,.USSIX,6) ;PROGRAM NAME (CALLER)
174 DEFUS (PVR,5,.USVER,15) ;PROGRAM VERSION
175 DEFUS (AMV,6,.USVER,15) ;ACCOUNTING MODULE VERSION
176 DEFUS (NOD,7,.USSIX,6) ;CALLER'S LOCATION
177 DEFUS (PPN,10,.USOCT,12) ;PROJECT / PROGRAMMER NUMBER (TOPS10 ONLY)
178 DEFUS (NM1,11,.USASC,12) ;NAME OF USER (TOPS10)
179 DEFUS (SNM,12,.USASC,39) ;SYSTEM NAME
180 DEFUS (MVR,13,.USVER,15) ;MONITOR VERSION NUMBER
181 DEFUS (MBD,14,.USDAT,14) ;MONITOR BUILD DATE
182 DEFUS (MUP,15,.USDEC,18) ;MONITOR UPTIME (IN SECONDS)
183 DEFUS (ACT,16,.USASC,39) ;ACCOUNT STRING
184 DEFUS (LCK,17,.USDAT,14) ;TIME OF LAST CHECKPOINT
185 DEFUS (RTM,20,.USDEC,9) ;RUNTIME IN MS
186 DEFUS (CTI,21,.USDEC,11) ;CORE-TIME INTEGRAL (TOPS10 ONLY)
187 DEFUS (SST,22,.USDAT,14) ;SESSION START TIME
188 DEFUS (JTY,23,.USDEC,1) ;JOB TYPE (BATCH / TIMESHARING)
189 DEFUS (BJN,24,.USSIX,6) ;BATCH JOB NAME
190 DEFUS (BSN,25,.USDEC,6) ;BATCH SEQUENCE NUMBER
191 DEFUS (COM,26,.USASC,39) ;USER COMMENT
192 DEFUS (DKR,27,.USDEC,8) ;DISK READS
193 DEFUS (DKW,30,.USDEC,8) ;DISK WRITES
194 DEFUS (VTI,31,.USDEC,11) ;VIRTUAL CORE-TIME INTEGRAL
195 DEFUS (EBX,32,.USDEC,9) ;EBOX MEGACOUNTS (CYCLES * 106)
196 DEFUS (MBX,33,.USDEC,9) ;MBOX MEGACOUNTS (CYCLES * 106)
197 DEFUS (MCL,34,.USDEC,6) ;MONITOR CALLS
198 DEFUS (MCM,35,.USDEC,6) ;MONITOR COMMANDS
199 DEFUS (SCL,36,.USDEC,3) ;SCHEDULING CLASS
200 DEFUS (TYI,37,.USDEC,6) ;TTY INPUT CHARACTERS
201 DEFUS (TYO,40,.USDEC,6) ;TTY OUTPUT CHARACTERS
202 DEFUS (TYW,41,.USDEC,6) ;TTY WAKEUPS
204 DEFUS (CP0,43,.USDEC,4) ;SERIAL NUMBER OF CPU0
205 DEFUS (CP1,44,.USDEC,4) ;SERIAL NUMBER OF CPU1
206 DEFUS (CP2,45,.USDEC,4) ;SERIAL NUMBER OF CPU2
207 DEFUS (CP3,46,.USDEC,4) ;SERIAL NUMBER OF CPU3
208 DEFUS (CP4,47,.USDEC,4) ;SERIAL NUMBER OF CPU4
209 DEFUS (CP5,50,.USDEC,4) ;SERIAL NUMBER OF CPU5
210 DEFUS (RQQ,51,.USDEC,11) ;RUN QUEUE QUOTIENT (TOPS10 ONLY)
211 DEFUS (NM2,52,.USASC,39) ;NAME OF USER (TOPS20)
212 DEFUS (CCT,53,.USDEC,7) ;CONSOLE CONNECT TIME (SECONDS)
213 DEFUS (DTL,54,.USDAT,14) ;DATE/TIME BEFORE CHANGE (STAD)
214
215 ;DISK UTILIZATION RECORD ENTRIES
216
217 DEFUS (NRF,55,.USDEC,3) ;NUMBER OF RECORDS FOLLOWING
218 DEFUS (TAL,56,.USDEC,10) ;TOTAL ALLOCATED STORAGE
219 DEFUS (TUS,57,.USDEC,10) ;TOTAL STORAGE USED
220 DEFUS (TNF,60,.USDEC,5) ;TOTAL NUMBER OF FILES
221 DEFUS (STR,61,.USASC,6) ;STRUCTURE NAME
222 DEFUS (STP,62,.USDEC,1) ;STRUCTURE TYPE CODE
223 DEFUS (KTP,63,.USDEC,3) ;CONTROLLER TYPE
224 DEFUS (DTP,64,.USDEC,3) ;DEVICE TYPE
225 DEFUS (LIQ,65,.USDEC,6) ;LOGGED IN QUOTA
226 DEFUS (LOQ,66,.USDEC,6) ;LOGGED OUT QUOTA
227 DEFUS (LLI,67,.USDAT,14) ;LAST LOGGED IN DATE/TIME
228 DEFUS (LAT,70,.USDAT,14) ;LAST DISK ACCOUNTING DATE/TIME
229 DEFUS (EXP,71,.USASC,1) ;EXPIRED DIRECTORY (Y/N)
230 DEFUS (DIR,72,.USASC,39) ;DIRECTORY NAME
231 DEFUS (ALC,73,.USDEC,10) ;ALLOCATED STORAGE
232 DEFUS (USG,74,.USDEC,10) ;STORAGE USED
233 DEFUS (FIL,75,.USDEC,5) ;NUMBER OF FILES
234 DEFUS (FON,76,.USASC,1) ;FILES ONLY INDICATOR (Y/N)
235
236 ;SPOOLER INFORMATION RECORD ENTRIES
237
238 DEFUS (SRT,77,.USDEC,9) ;SPOOLER RUNTIME
239 DEFUS (SCI,100,.USDEC,11) ;CORE-TIME INTEGRAL
240 DEFUS (SDR,101,.USDEC,8) ;SPOOLER DISK READS
241 DEFUS (SDW,102,.USDEC,8) ;SPOOLER DISK WRITES
242 DEFUS (JNM,103,.USSIX,6) ;JOB NAME
243 DEFUS (QNM,104,.USSIX,3) ;QUEUE NAME
244 DEFUS (SDV,105,.USSIX,6) ;PROCESSING DEVICE
245 DEFUS (SSN,106,.USDEC,6) ;SEQUENCE NUMBER
246 DEFUS (SUN,107,.USDEC,6) ;SPOOLER UNITS PROCESSED
247 DEFUS (CRT,110,.USDAT,14) ;CREATION DATE/TIME OF REQUEST
248 DEFUS (DSP,111,.USSIX,6) ;DISPOSITION
249 DEFUS (TXT,112,.USASC,39) ;OPR OR SYSTEM TEXT
250 DEFUS (PRI,113,.USDEC,2) ;PRIORITY
251 DEFUS (SNF,114,.USDEC,5) ;NUMBER OF FILES PROCESSED
252 DEFUS (SCD,115,.USDAT,14) ;SCHEDULED DATE/TIME
253 DEFUS (FRM,116,.USSIX,6) ;FORMS TYPE
254
255 ;DATE/TIME CHANGE RECORD ENTIRES
256
258 DEFUS (OFS,120,.USDEC,7) ;OFFSET IN SECONDS
259 DEFUS (ODT,121,.USDAT,14) ;OLD DATE/TIME
260
261 ;ARBITRARY RECORD ITEM TYPES
262
263 DEFUS (UAR,122,.USSPC,0) ;USER-DEFINED ARBITRARY RECORD DELIMITER
264 DEFUS (UAS,123,.USASC,0) ;USER-DEFINED ASCII STRING
265 DEFUS (USX,124,.USSIX,0) ;USER-DEFINED SIXBIT STRING
266 DEFUS (UOC,125,.USOCT,0) ;USER-DEFINED OCTAL NUMBER
267 DEFUS (UDC,126,.USDEC,0) ;USER-DEFINED DECIMAL NUMBER
268 DEFUS (UDT,127,.USDAT,14) ;USER-DEFINED DATE AND TIME
269 DEFUS (UVR,130,.USVER,15) ;USER-DEFINED VERSION (STANDARD FORMAT)
270 DEFUS (USP,131,.USSPC,0) ;USER-DEFINED SPACE FILL
271
272 ;STRUCTURE MOUNT RECORD ENTRIES
273
274 DEFUS (SSI,132,.USSIX,6) ;SIXBIT STRUCTURE ID
275 DEFUS (TNP,133,.USDEC,2) ;TOTAL NUMBER OF PACKS
276 DEFUS (SRV,134,.USDAT,14) ;SERVICED DATE/TIME OF REQUEST
277 DEFUS (MCT,135,.USDEC,3) ;MOUNT COUNT BEFORE MOUNT
278 DEFUS (DCT,136,.USDEC,3) ;MOUNT COUNT AFTER DISMOUNT
279 DEFUS (ATP,137,.USDEC,1) ;ACCESS TYPE
280
281 ;TAPE MOUNT RECORD ENTRIES
282
283 DEFUS (VID,140,.USSIX,6) ;MAGTAPE VOLUME LABEL IN VOL1 LABEL
284 DEFUS (VSN,141,.USSIX,6) ;VISUAL SERIAL NUMBER
285 DEFUS (MRF,142,.USDEC,10) ;THOUSANDS OF FRAMES READ
286 DEFUS (MWF,143,.USDEC,10) ;THOUSANDS OF FRAMES WRITTEN
287 DEFUS (MLT,144,.USDEC,10) ;LABEL TYPE
288 DEFUS (MLS,145,.USDEC,10) ;VOLUME LABEL STATE
289 DEFUS (MRD,146,.USDEC,10) ;NUMBER OF PHYSICAL RECORDS READ
290 DEFUS (MWR,147,.USDEC,10) ;NUMBER OF PHYSICAL RECORDS WRITTEN
291 DEFUS (FSI,150,.USSIX,6) ;FILE SET IDENTIFIER
292 DEFUS (SRE,151,.USDEC,10) ;NUMBER OF SOFT READ ERRORS
293 DEFUS (SWE,152,.USDEC,10) ;NUMBER OF SOFT WRITE ERRORS
294 DEFUS (HRE,153,.USDEC,10) ;NUMBER OF HARD READ ERRORS
295 DEFUS (HWE,154,.USDEC,10) ;NUMBER OF HARD WRITE ERRORS
296
297 ; Retrieve/archive/migration/collection entries
298
299 DEFUS (TP1,155,.USSIX,6) ; Tape ID 1
300 DEFUS (TS1,156,.USDEC,4) ; Tape saveset #
301 DEFUS (TF1,157,.USDEC,6) ; Tape file #
302 DEFUS (TP2,160,.USSIX,6) ; Tape 2 ID
303 DEFUS (TS2,161,.USDEC,4) ; Tape saveset #
304 DEFUS (TF2,162,.USDEC,6) ; Tape file #
305 DEFUS (RSN,163,.USOCT,1) ; Reason offline code
306
307 DEFUS (EUT,164,.USDEC,7) ; ELAPSED USE TIME (STRUCTURE AND TAPE)
308 ;;; END OF USLIST
309
310 ;MACRO TO DEFINE ALL USAGE. ITEM CODES
312 DEFINE DEFUS (NAM,VAL,TYP,LEN) <
313 IF1,<IFDEF .US'NAM,<
314 PRINTX .US'NAM ALREADY DEFINED
315
316 .US'NAM==:VAL
317 UITEM. (NAM,TYP,LEN)
318
319
320 ;EXPAND ALL DEFINITIONS
321
322 USLIST
323
324 ;SPECIAL ITEM TYPE CODE DEFINITIONS
325
326 007776 .USDSX==:7776 ;STRUCTURE/DIRECTORY INFO WORD (SPECIAL)
327 007777 .USDST==:7777 ;DISK STATISTICS TABLE POINTER
328
329
330
331 END
Finding, 3-111 (Cont.)
1'st used file page, Returning disk, 3-134
Finding, 3-112 An IPCF message,
Retrieving, 3-173
sending, 3-175
Analysis,
AC'S, System performance, 3-330
setting, 3-305 ARCF JSYS, 3-8
ACCES JSYS, 3-1 Archive/virtual disk system,
Access, 2-70
Directory, 2-8, 3-1 ARPANET, 3-269, 3-330
File, 2-7 ARPANET host,
page, 3-286 Flushing an, 3-112
Access control, 2-58 Arpanet host information,
Access-control, 3-120 Returning, 3-136
Access-control program, ARPANET queue,
3-131, 3-329 Assigning, 3-12
Accessibility, ASND JSYS, 3-11
setting page, 3-339 ASNSQ JSYS, 3-12
Account, Assigning a device, 3-11
Changing, 3-27 Assigning ARPANET queue,
Returning file's, 3-115 3-12
Returning job's, 3-114 Assigning devices, 3-273
Accounting, Assigning disk addresses,
system, 3-375 3-89
Accounting functions, 2-1 Assigning terminal
Accounts, interrupt, 3-14
verifying, 3-381 Association,
Acquiring physical memory, physical/logical
3-253 tape-drive, 3-198
Activation, ATI JSYS, 3-14
Interrupt channel, 3-6 ATNVT JSYS, 3-15
ADBRK JSYS, 3-3 ATTACH JSYS, 3-12
Adding a table entry, 3-357 Attaching a job, 3-12
Address breaks, 3-3 Author,
Addresses, Returning file, 3-130
Assigning disk, 3-89 setting file, 3-313
setting interrupt table,
3-319
AIC JSYS, 3-6
ALLOC JSYS, 3-7
Allocation,
Device, 3-7
Index-1
INDEX
CFBIF JSYS, 3-28
Backing up pointer, 3-17 CFBOF JSYS, 3-28
BIN JSYS, 3-16 CFORK JSYS, 3-29
BKJFN JSYS, 3-17 Changing account, 3-27
Block-mode input, 3-317 Channel,
Block-mode output, 3-337 Reserving a, 3-81
Block, Software interrupt, 2-51
File descriptor, 2-9 Channel activation,
Job storage, 3-290 Interrupt, 3-6
Returning file descriptor, Channels,
3-135 Deactivating interrupt,
Blocking, 3-86
elapsed time process, Panic, 2-53
3-367 Characteristics,
BLPT:, 2-30 Returning device, 3-96
BOOT JSYS, 3-17 CHFDB JSYS, 3-30
BOUT JSYS, 3-26 CHKAC JSYS, 3-34
Breaks, CIS JSYS, 3-35
Address, 3-3 Clearing file input buffer,
Buffer, 3-28
Clearing file input, 3-28 Clearing file output buffer,
Clearing file output, 3-28
3-28 Clearing software interrupt
Rescan, 3-290 system, 3-35
testing file input, 3-314 Clock,
testing file output, Returning high-precision,
3-334, 3-335 3-159
Byte input, 3-16, 3-251 CLOSF JSYS, 3-35
Byte input, Closing a file, 3-35
random, 3-283 Closing process files, 3-36
Byte output, 3-26, 3-252 CLZFF JSYS, 3-36
Byte pointer, 1-5 Codes,
Byte size, Deassigning terminal,
resetting file, 3-306 3-92
Command parsing, 3-37
COMND JSYS, 3-37
Comparing strings, 3-346
CACCT JSYS, 3-27 Comparison,
Capabilities, 2-57 wild string, 3-383
Enabling, 3-109 Compatibility package,
Process, 2-56 3-299
CCOC words, 3-276, 3-307 Compatibility package entry
CDP:, 2-30 vector, 3-298
CDR:, 2-29
Index-2
INDEX
Connection, Deassigning terminal codes,
Creating NVT, 3-15 3-92
Control, DEBRK JSYS, 3-73
Access, 2-58 DELDF JSYS, 3-73
scheduler, 3-322 Deleting a table entry,
Control word, 3-357
scheduler priority, 3-322 Deleting files, 3-75, 3-76
Controlling terminal, DELF JSYS, 3-75
Redefining, 3-296 DELNF JSYS, 3-76
Converting host number, DEQ JSYS, 3-77
3-72 Descriptor block,
Converting internal File, 2-9
date/time, 3-243 Returning file, 3-135
Converting socket number, Designator,
3-73 Device, 1-4
Converting to internal File, 1-4
date/time, 3-160 Primary input, 3-271
CRDIR JSYS, 3-59 Primary output, 3-271
Creating a logical name, Source/destination, 1-3
3-71 Special, 1-5
Creating a new job, 3-65 Detaching a job, 3-92
Creating an inferior Device,
process, 3-29 Assigning a, 3-11
Creating NVT connection, Manipulating a spooled,
3-15 3-342
CRJOB JSYS, 3-65 Device allocation, 3-7
CRLNM JSYS, 3-71 Device characteristics,
CVHST JSYS, 3-72 Returning, 3-96
CVSKT JSYS, 3-73 Device designator, 1-4
Device functions,
MT, 3-228
Device mode,
Data modes, setting, 3-351
Software, 2-47 Device name string,
Date, translating, 3-347
setting system, 3-346 Device status,
Date and time, Returning, 3-116
file, 3-282 Device string,
offline expiration, 3-282 Translating, 3-79
online expiration, 3-282 Device-control functions,
setting file, 3-311 3-199
Date/time, Devices, 2-27
Converting internal, Assigning, 3-273
3-243 Releasing, 3-273
Converting to internal, DEVST JSYS, 3-79
3-160 DFIN JSYS, 3-80
Inputting, 3-161, 3-163 DFOUT JSYS, 3-80
Outputting, 3-244, 3-246 DIAG JSYS, 3-81
Date/time format, 2-69 DIBE JSYS, 3-86
Date/time standard, 1-6 DIC JSYS, 3-86
Deactivating interrupt DIR JSYS, 3-87
channels, 3-86 Directory access, 2-8, 3-1
Index-3
INDEX
Directory information, ENQC JSYS, 3-104
Returning, 3-134 Entering MDDT, 3-171
Directory name string, Entries,
translating, 3-352 Making FACT file, 3-97
Directory number, Entry,
Translating, 3-88 adding a table, 3-357
DIRST JSYS, 3-88 deleting a table, 3-357
Disabling interrupt system, Entry vector, 2-65, 3-305
3-87 Entry vector,
Disk addresses, compatibility package,
Assigning, 3-89 3-298
Disk allocation, Returning PA1050, 3-115
Returning, 3-134 Returning process, 3-127
Disk system, Returning RMS, 3-117
Archive/virtual, 2-70 RMS, 3-300
Disk usage, EPCAP JSYS, 3-109
Returning, 3-116 Error,
Dismissing a process, 3-86, Returning most recent,
3-88, 3-89 3-125
Dismissing interrupt, 3-73 Error condition, 3-301
DISMS JSYS, 3-88 Error file,
DOBE JSYS, 3-89 system, 3-356
Double-precision input, Error strings,
3-80 Outputting, 3-110
Double-precision output, Translating, 3-109
3-80 ERSTR JSYS, 3-109
DSKAS JSYS, 3-89 ESOUT JSYS, 3-110
DSKOP JSYS, 3-90 Execution,
DTACH JSYS, 3-92 resuming process, 3-380
DTI JSYS, 3-92 Expiration date and time,
Dump input, 3-93 offline, 3-282
Dump output, 3-94 online, 3-282
DUMPI JSYS, 3-93 Expunging files, 3-73
DUMPO JSYS, 3-94
DVCHR JSYS, 3-96
FACT file entries,
Making, 3-97
EBOX/MBOX meter values, FDB, 2-9
Returning, 3-172 FFFFP JSYS, 3-111
EFACT JSYS, 3-97 FFORK JSYS, 3-111
EIR JSYS, 3-98 FFUFP JSYS, 3-112
Elapsed system restart time, File,
returning, 3-368 Closing a, 3-35
Elapsed time process Getting a save, 3-118
blocking, 3-367 Opening a, 3-247
Enabling capabilities, Renaming a, 3-286
3-109 system error, 3-356
Enabling software interrupt File access, 2-7
system, 3-98 File author,
End-of-file, 3-283 Returning, 3-130
ENQ JSYS, 3-99 setting, 3-313
Index-4
INDEX
File byte size, Form JFN,
resetting, 3-306 long, 3-147
File date and time, 3-282 Short, 3-139
setting, 3-311 Format,
File descriptor block, 2-9 Date/time, 2-69
Returning, 3-135 Free file page,
File designator, 1-4 Finding 1'st, 3-111
File entries, Freezing a process, 3-111
Making FACT, 3-97 Functions,
File handle, 2-3 Accounting, 2-1
File input buffer, device-control, 3-199
Clearing, 3-28 IPCF, 3-229
testing, 3-314 mountable-structure,
File output buffer, 3-181
Clearing, 3-28 MT device, 3-228
testing, 3-334, 3-335 Network, 3-236
File page,
Finding 1'st free, 3-111
Finding 1'st used, 3-112
File pages, GACCT JSYS, 3-114
updating, 3-374 GACTF JSYS, 3-115
File pointer, GCVEC JSYS, 3-115
setting, 3-309 GDSKC JSYS, 3-116
File specification, 2-1 GDSTS JSYS, 3-116
Returning, 3-165 GDVEC JSYS, 3-117
File status, GET JSYS, 3-118
Returning, 3-156 GETAB JSYS, 3-124
setting, 3-353 GETER JSYS, 3-125
File's account, GETJI JSYS, 3-125
Returning, 3-115 GETNM JSYS, 3-127
Files, GETOK JSYS, 3-329
Closing process, 3-36 GETOK% JSYS, 3-120
Deleting, 3-75, 3-76 Getting a fork handle,
Expunging, 3-73 3-127
SAVE, 2-63 Getting a save file, 3-118
Finding 1'st free file page, GEVEC JSYS, 3-127
3-111 GFRKH JSYS, 3-127
Finding 1'st used file page, GFRKS JSYS, 3-128
3-112 GFUST JSYS, 3-130
Flags, GIVOK% JSYS, 3-131
setting monitor, 3-328 GNJFN JSYS, 3-132
testing monitor, 3-372 GPJFN JSYS, 3-133
FLHST JSYS, 3-112 GTDAL JSYS, 3-134
FLIN JSYS, 3-113 GTDIR JSYS, 3-134
Floating-point input, 3-113 GTFDB JSYS, 3-135
Floating-point output, GTHST% JSYS, 3-136
3-113 GTJFN JSYS, 3-139, 3-147
FLOUT JSYS, 3-113 GTNCP JSYS, 3-154
Flushing an ARPANET host, GTRPI JSYS, 3-153
3-112 GTRPW JSYS, 3-156
Fork handle, GTSTS JSYS, 3-156
Getting a, 3-127 GTTYP JSYS, 3-157
Index-5
INDEX
Input,
(Cont.)
Byte, 3-16, 3-251
HALTF JSYS, 3-158 Double-precision, 3-80
Halting a process, 3-158 Dump, 3-93
Halting system, 3-159 Floating-point, 3-113
Handle, random byte, 3-283
File, 2-3 simulating terminal,
Getting a fork, 3-127 3-348
Process, 1-6 string, 3-315
Process/file, 1-6 Input buffer,
HFORK JSYS, 3-158 Clearing file, 3-28
High-precision clock, testing file, 3-314
Returning, 3-159 Input designator,
Histogram, Primary, 3-271
Pc, 3-330 Inputting a number, 3-235
Host, Inputting date/time, 3-161,
Flushing an ARPANET, 3-163
3-112 Internal date/time,
Host information, Converting, 3-243
Returning arpanet, 3-136 Converting to, 3-160
Host number, Interrupt,
Converting, 3-72 Assigning terminal, 3-14
HPTIM JSYS, 3-159 Dismissing, 3-73
HSYS JSYS, 3-159 Interrupt channel,
Software, 2-51
Interrupt channel
activation, 3-6
I/O, Interrupt channels,
TTY, 3-271, 3-276, 3-360 Deactivating, 3-86
I/O mode, Interrupt mask,
User, 3-378 Returning, 3-284, 3-294
IDCNV JSYS, 3-160 setting, 3-320
IDTIM JSYS, 3-161 Interrupt priority,
IDTNC JSYS, 3-163 Software, 2-52
IIC JSYS, 3-164 Interrupt system,
Inferior process, Clearing software, 3-35
Creating an, 3-29 disabling, 3-87
Information, Enabling software, 3-98
Returning arpanet host, Software, 2-51
3-136 Interrupt table,
Returning directory, Returning, 3-284
3-134 Software, 2-52
Returning job, 3-125 Interrupt table addresses,
Returning NCP, 3-154 setting, 3-319
Returning page trap, Interrupt word,
3-153 setting terminal, 3-349
Initiating software Terminal, 3-293
interrupts, 3-164 Interrupts,
INLNM JSYS, 3-165 Initiating software,
Input, 3-164
block-mode, 3-317 Terminal, 2-53
Index-6
INDEX
IPCF functions, 3-229 JSYS,
IPCF message, (Cont.)
Retrieving an, 3-173 CHKAC, 3-34
sending an, 3-175 CIS, 3-35
CLOSF, 3-35
CLZFF, 3-36
COMND, 3-37
JFN, 3-132, 3-133, 3-139, CRDIR, 3-59
3-147, 3-156, 3-165 CRJOB, 3-65
JFN, CRLNM, 3-71
long form, 3-147 CVHST, 3-72
Releasing a, 3-285 CVSKT, 3-73
setting primary, 3-340 DEBRK, 3-73
Short form, 3-139 DELDF, 3-73
JFN mode word, 3-276 DELF, 3-75
JFN'S, DELNF, 3-76
swapping, 3-354 DEQ, 3-77
JFNS JSYS, 3-165 DEVST, 3-79
Job, DFIN, 3-80
Attaching a, 3-12 DFOUT, 3-80
Creating a new, 3-65 DIAG, 3-81
Detaching a, 3-92 DIBE, 3-86
Killing a, 3-168 DIC, 3-86
Logging in a, 3-170 DIR, 3-87
Job information, DIRST, 3-88
Returning, 3-125 DISMS, 3-88
Job parameters, 3-302 DOBE, 3-89
Job priority, DSKAS, 3-89
setting, 3-322 DSKOP, 3-90
Job storage block, 3-290 DTACH, 3-92
Job's account, DTI, 3-92
Returning, 3-114 DUMPI, 3-93
JSYS, DUMPO, 3-94
ACCES, 3-1 DVCHR, 3-96
ADBRK, 3-3 EFACT, 3-97
AIC, 3-6 EIR, 3-98
ALLOC, 3-7 ENQ, 3-99
ARCF, 3-8 ENQC, 3-104
ASND, 3-11 EPCAP, 3-109
ASNSQ, 3-12 ERSTR, 3-109
ATI, 3-14 ESOUT, 3-110
ATNVT, 3-15 FFFFP, 3-111
ATTACH, 3-12 FFORK, 3-111
BIN, 3-16 FFUFP, 3-112
BKJFN, 3-17 FLHST, 3-112
BOOT, 3-17 FLIN, 3-113
BOUT, 3-26 FLOUT, 3-113
CACCT, 3-27 GACCT, 3-114
CFBIF, 3-28 GACTF, 3-115
CFBOF, 3-28 GCVEC, 3-115
CFORK, 3-29 GDSKC, 3-116
CHFDB, 3-30 GDSTS, 3-116
Index-7
INDEX
JSYS, JSYS,
(Cont.) (Cont.)
GDVEC, 3-117 NIN, 3-235
GET, 3-118 NODE, 3-236
GETAB, 3-124 NOUT, 3-241
GETER, 3-125 ODCNV, 3-243
GETJI, 3-125 ODTIM, 3-244
GETNM, 3-127 ODTNC, 3-246
GETOK, 3-329 OPENF, 3-247
GETOK%, 3-120 PBIN, 3-251
GEVEC, 3-127 PBOUT, 3-252
GFRKH, 3-127 PEEK, 3-252
GFRKS, 3-128 PLOCK, 3-253
GFUST, 3-130 PMAP, 3-254
GIVOK%, 3-131 PMCTL, 3-258
GNJFN, 3-132 PPNST, 3-261
GPJFN, 3-133 PRARG, 3-262
GTDAL, 3-134 PSOUT, 3-263
GTDIR, 3-134 RCDIR, 3-263
GTFDB, 3-135 RCM, 3-267
GTHST%, 3-136 RCUSR, 3-267
GTJFN, 3-139, 3-147 RCVIM, 3-269
GTNCP, 3-154 RCVOK%, 3-270
GTRPI, 3-153 RDTTY, 3-271
GTRPW, 3-156 RELD, 3-273
GTSTS, 3-156 RELSQ, 3-274
GTTYP, 3-157 RESET, 3-274
HALTF, 3-158 RFACS, 3-275
HFORK, 3-158 RFBSZ, 3-275
HPTIM, 3-159 RFCOC, 3-276
HSYS, 3-159 RFMOD, 3-276
IDCNV, 3-160 RFORK, 3-277
IDTIM, 3-161 RFPOS, 3-278
IDTNC, 3-163 RFPTR, 3-278
IIC, 3-164 RFRKH, 3-279
INLNM, 3-165 RFSTS, 3-279
JFNS, 3-165 RFTAD, 3-282
KFORK, 3-168 RIN, 3-283
LGOUT, 3-168 RIR, 3-284
LNMST, 3-169 RIRCM, 3-284
LOGIN, 3-170 RLJFN, 3-285
LPINI, 3-171 RMAP, 3-286
MDDT%, 3-171 RNAMF, 3-286
METER%, 3-172 ROUT, 3-288
MRECV, 3-173 RPACS, 3-289
MSEND, 3-175 RPCAP, 3-290
MSFRK, 3-180 RSCAN, 3-290
MSTR, 3-181 RTFRK, 3-292
MTALN, 3-198 RTIW, 3-293
MTOPR, 3-199 RUNTM, 3-293
MTU%, 3-228 RWM, 3-294
MUTIL, 3-229 RWSET, 3-294
Index-8
INDEX
JSYS, JSYS,
(Cont.) (Cont.)
SACTF, 3-295 STO, 3-350
SAVE, 3-295 STPAR, 3-351
SCTTY, 3-296 STPPN, 3-352
SCVEC, 3-298 STSTS, 3-353
SDSTS, 3-300 STTYP, 3-353
SDVEC, 3-300 SWJFN, 3-354
SETER, 3-301 SWTRP%, 3-354
SETJB, 3-302 SYERR, 3-356
SETNM, 3-304 SYSGT, 3-356
SETSN, 3-304 TBADD, 3-357
SEVEC, 3-305 TBDEL, 3-357
SFACS, 3-305 TBLUK, 3-357
SFBSZ, 3-306 TEXTI, 3-360
SFCOC, 3-307 TFORK, 3-364
SFMOD, 3-307 THIBR, 3-367
SFORK, 3-308 TIME, 3-368
SFPOS, 3-309 TIMER, 3-368
SFPTR, 3-309 TLINK, 3-370
SFRKV, 3-310 TMON, 3-372
SFTAD, 3-311 TTMSG, 3-373
SFUST, 3-313 TWAKE, 3-374
SIBE, 3-314 UFPGS, 3-374
SIN, 3-315 USAGE, 3-375
SINM, 3-317 USRIO, 3-378
SINR, 3-318 UTEST, 3-379
SIR, 3-319 UTFRK, 3-380
SIRCM, 3-320 VACCT, 3-381
SIZEF, 3-321 WAIT, 3-382
SJPRI, 3-322 WFORK, 3-382
SKED%, 3-322 WILD%, 3-383
SKPIR, 3-327
SMON, 3-328
SNDIM, 3-330
SNOOP, 3-330 KFORK JSYS, 3-168
SOBE, 3-334 Killing a job, 3-168
SOBF, 3-335 Killing a process, 3-168
SOUT, 3-335
SOUTM, 3-337
SOUTR, 3-338
SPACS, 3-339 LGOUT JSYS, 3-168
SPJFN, 3-340 Linking,
SPLFK, 3-341 terminal, 3-370
SPOOL, 3-342 LNMST JSYS, 3-169
SPRIW, 3-344 Loading VFU, 3-171
SSAVE, 3-344 Logging in a job, 3-170
STAD, 3-346 Logical name,
STCMP, 3-346 Creating a, 3-71
STDEV, 3-347 Returning a, 3-165
STI, 3-348 Translating a, 3-169
STIW, 3-349 Logical names, 2-3
Index-9
INDEX
LOGIN JSYS, 3-170 MT:, 2-38
Long form JFN, 3-147 MTA:, 2-33
LPINI JSYS, 3-171 MTALN JSYS, 3-198
LPT:, 2-33 MTOPR JSYS, 3-199
MTU% JSYS, 3-228
MUTIL JSYS, 3-229
Making FACT file entries,
3-97
Manipulating a spooled Name,
device, 3-342 Creating a logical, 3-71
Manipulation, Private, 3-304
Process, 3-308 Returning a logical,
Mapping, 3-165
Page, 3-254, 3-255, 3-256, Returning program, 3-127
3-257 System, 3-304
Mask, Translating a logical,
Returning interrupt, 3-169
3-284, 3-294 Name string,
setting interrupt, 3-320 translating device, 3-347
MDDT, translating directory,
entering, 3-171 3-352
MDDT% JSYS, 3-171 Names,
Memory, Logical, 2-3
Acquiring physical, 3-253 NCP information,
Message, Returning, 3-154
Retrieving an IPCF, 3-173 Network functions, 3-236
sending an IPCF, 3-175 New job,
Meter values, Creating a, 3-65
Returning EBOX/MBOX, NIN JSYS, 3-235
3-172 NODE JSYS, 3-236
METER% JSYS, 3-172 Nonshareable save, 3-295
Mode, NOUT JSYS, 3-241
setting device, 3-351 Number,
User I/O, 3-378 Converting host, 3-72
Mode word, Converting socket, 3-73
JFN, 3-276 Inputting a, 3-235
Modes, Outputting a, 3-241
setting terminal, 3-307 Project-programmer, 3-261,
Software data, 2-47 3-352
Monitor flags, setting terminal, 3-353
setting, 3-328 Translating directory,
testing, 3-372 3-88
Most recent error, NVT connection,
Returning, 3-125 Creating, 3-15
Mountable-structure
functions, 3-181
MRECV JSYS, 3-173
MSEND JSYS, 3-175 ODCNV JSYS, 3-243
MSFRK JSYS, 3-180 ODTIM JSYS, 3-244
MSTR JSYS, 3-181 ODTNC JSYS, 3-246
MT device functions, 3-228
Index-10
INDEX
Offline expiration date and Pages,
time, 3-282 updating file, 3-374
Online expiration date and Panic channels, 2-53
time, 3-282 Parameters,
OPENF JSYS, 3-247 job, 3-302
Opening a file, 3-247 Parsing,
Operations, Command, 3-37
Process, 2-59, 3-128, PBIN JSYS, 3-251
3-133, 3-153, 3-158, PBOUT JSYS, 3-252
3-168, 3-173, 3-175, PCDP:, 2-29
3-180, 3-277, 3-341, PCDR:, 2-28
3-364, 3-374, 3-380, PEEK JSYS, 3-252
3-382 Performance analysis,
Output, System, 3-330
block-mode, 3-337 Physical memory,
Byte, 3-26, 3-252 Acquiring, 3-253
Double-precision, 3-80 Physical/logical tape-drive
Dump, 3-94 association, 3-198
Floating-point, 3-113 PLOCK JSYS, 3-253
simulating terminal, PMAP JSYS, 3-254
3-350 PMCTL JSYS, 3-258
string, 3-335 Pointer,
Output buffer, Backing up, 3-17
Clearing file, 3-28 Byte, 1-5
testing file, 3-334, setting file, 3-309
3-335 setting terminal, 3-309
Output designator, PPNST JSYS, 3-261
Primary, 3-271 PRARG JSYS, 3-262
Outputting a number, 3-241 Primary input designator,
Outputting date/time, 3-244, 3-271
3-246 Primary JFN,
Outputting error strings, setting, 3-340
3-110 Primary output designator,
Overflow trapping, 3-354 3-271
Priority,
setting job, 3-322
setting process, 3-344
PA1050 entry vector, Software interrupt, 2-52
Returning, 3-115 Priority control word,
Page, scheduler, 3-322
Finding 1'st free file, Private name, 3-304
3-111 Process,
Finding 1'st used file, Creating an inferior,
3-112 3-29
Page access, 3-286 Dismissing a, 3-86, 3-88,
Page accessibility, 3-89
setting, 3-339 Freezing a, 3-111
Page mapping, 3-254, 3-255, halting a, 3-158
3-256, 3-257 killing a, 3-168
Page trap information, splicing a, 3-341
Returning, 3-153 starting a, 3-180
Index-11
INDEX
Process, Recent error,
(Cont.) Returning most, 3-125
waking a, 3-374 Redefining controlling
Process blocking, terminal, 3-296
elapsed time, 3-367 RELD JSYS, 3-273
Process capabilities, 2-56 Releasing a JFN, 3-285
Process entry vector, Releasing devices, 3-273
Returning, 3-127 Releasing working set,
Process execution, 3-294
resuming, 3-380 RELSQ JSYS, 3-274
Process files, Renaming a file, 3-286
Closing, 3-36 Rescan buffer, 3-290
Process handle, 1-6 Reserving a channel, 3-81
Process manipulation, 3-308 RESET JSYS, 3-274
Process operations, 2-59, Resetting file byte size,
3-128, 3-133, 3-153, 3-306
3-158, 3-168, 3-173, Restart time,
3-175, 3-180, 3-277, returning elapsed system,
3-341, 3-364, 3-374, 3-368
3-380, 3-382 Resuming process execution,
Process priority, 3-380
setting, 3-344 Retrieving an IPCF message,
Process status, 3-279, 3-173
3-281 Returning a logical name,
Process termination, 3-165
waiting for, 3-382 Returning arpanet host
Process timing, 3-368 information, 3-136
Process/file handle, 1-6 Returning device
Program, characteristics, 3-96
Access-control, 3-131 Returning device status,
access-control, 3-329 3-116
Sample, 2-5 Returning directory
Program name, information, 3-134
Returning, 3-127 Returning disk allocation,
Project-programmer number, 3-134
3-261, 3-352 Returning disk usage, 3-116
PSOUT JSYS, 3-263 Returning EBOX/MBOX meter
values, 3-172
Returning elapsed system
restart time, 3-368
Queue, Returning file author,
Assigning ARPANET, 3-12 3-130
Returning file descriptor
block, 3-135
Returning file
Random byte input, 3-283 specification, 3-165
RCDIR JSYS, 3-263 Returning file status,
RCM JSYS, 3-267 3-156
RCUSR JSYS, 3-267 Returning file's account,
RCVIM JSYS, 3-269 3-115
RCVOK% JSYS, 3-270 Returning high-precision
RDTTY JSYS, 3-271 clock, 3-159
Index-12
INDEX
Returning interrupt mask, RUNTM JSYS, 3-293
3-284, 3-294 RWM JSYS, 3-294
Returning interrupt table, RWSET JSYS, 3-294
3-284
Returning job information,
3-125
Returning job's account, SACTF JSYS, 3-295
3-114 Sample program, 2-5
Returning most recent error, Save,
3-125 nonshareable, 3-295
Returning NCP information, sharable, 3-344
3-154 Save file,
Returning PA1050 entry Getting a, 3-118
vector, 3-115 SAVE files, 2-63
Returning page trap SAVE JSYS, 3-295
information, 3-153 Scheduler control, 3-322
Returning process entry Scheduler priority control
vector, 3-127 word, 3-322
Returning program name, SCTTY JSYS, 3-296
3-127 SCVEC JSYS, 3-298
Returning RMS entry vector, SDSTS JSYS, 3-300
3-117 SDVEC JSYS, 3-300
Returning system table, Searching,
3-124, 3-356 table, 3-357
Returning terminal type, Sending an IPCF message,
3-157 3-175
Returning trap words, 3-156 Set,
RFACS JSYS, 3-275 Releasing working, 3-294
RFBSZ JSYS, 3-275 SETER JSYS, 3-301
RFCOC JSYS, 3-276 SETJB JSYS, 3-302
RFMOD JSYS, 3-276 SETNM JSYS, 3-304
RFORK JSYS, 3-277 SETSN JSYS, 3-304
RFPOS JSYS, 3-278 Setting AC'S, 3-305
RFPTR JSYS, 3-278 Setting device mode, 3-351
RFRKH JSYS, 3-279 Setting file author, 3-313
RFSTS JSYS, 3-279 Setting file date and time,
RFTAD JSYS, 3-282 3-311
RIN JSYS, 3-283 Setting file pointer, 3-309
RIR JSYS, 3-284 Setting file status, 3-353
RIRCM JSYS, 3-284 Setting interrupt mask,
RLJFN JSYS, 3-285 3-320
RMAP JSYS, 3-286 Setting interrupt table
RMS entry vector, 3-300 addresses, 3-319
Returning, 3-117 Setting job priority, 3-322
RNAMF JSYS, 3-286 Setting monitor flags,
ROUT JSYS, 3-288 3-328
RPACS JSYS, 3-289 Setting page accessibility,
RPCAP JSYS, 3-290 3-339
RSCAN JSYS, 3-290 Setting primary JFN, 3-340
RTFRK JSYS, 3-292 Setting process priority,
RTIW JSYS, 3-293 3-344
Runtime, 3-293 Setting system date, 3-346
Index-13
INDEX
Setting terminal interrupt Software interrupt system,
word, 3-349 (Cont.)
Setting terminal modes, Clearing, 3-35
3-307 Enabling, 3-98
Setting terminal number, Software interrupt table,
3-353 2-52
Setting terminal pointer, Software interrupts,
3-309 Initiating, 3-164
SEVEC JSYS, 3-305 Source/destination
SFACS JSYS, 3-305 designator, 1-3
SFBSZ JSYS, 3-306 SOUT JSYS, 3-335
SFCOC JSYS, 3-307 SOUTM JSYS, 3-337
SFMOD JSYS, 3-307 SOUTR JSYS, 3-338
SFORK JSYS, 3-308 SPACS JSYS, 3-339
SFPOS JSYS, 3-309 Special designator, 1-5
SFPTR JSYS, 3-309 Specification,
SFRKV JSYS, 3-310 File, 2-1
SFTAD JSYS, 3-311 Returning file, 3-165
SFUST JSYS, 3-313 SPJFN JSYS, 3-340
Sharable save, 3-344 SPLFK JSYS, 3-341
Short form JFN, 3-139 Splicing a process, 3-341
SIBE JSYS, 3-314 SPOOL JSYS, 3-342
Simulating terminal input, Spooled device,
3-348 Manipulating a, 3-342
Simulating terminal output, SPRIW JSYS, 3-344
3-350 SSAVE JSYS, 3-344
SIN JSYS, 3-315 STAD JSYS, 3-346
SINM JSYS, 3-317 Standard,
SINR JSYS, 3-318 Date/time, 1-6
SIR JSYS, 3-319 Starting a process, 3-180
SIRCM JSYS, 3-320 Status,
Size, Process, 3-279, 3-281
resetting file byte, Returning device, 3-116
3-306 Returning file, 3-156
SIZEF JSYS, 3-321 setting file, 3-353
SJPRI JSYS, 3-322 STCMP JSYS, 3-346
SKED% JSYS, 3-322 STDEV JSYS, 3-347
SKPIR JSYS, 3-327 STI JSYS, 3-348
SMON JSYS, 3-328 STIW JSYS, 3-349
SNDIM JSYS, 3-330 STO JSYS, 3-350
SNOOP JSYS, 3-330 Storage block,
SOBE JSYS, 3-334 Job, 3-290
SOBF JSYS, 3-335 STPAR JSYS, 3-351
Socket number, STPPN JSYS, 3-352
Converting, 3-73 String,
Software data modes, 2-47 Translating device, 3-79
Software interrupt channel, translating device name,
2-51 3-347
Software interrupt priority, translating directory
2-52 name, 3-352
Software interrupt system, String comparison,
2-51 wild, 3-383
Index-14
INDEX
String input, 3-315 Tables,
String output, 3-335 System, 2-20
Strings, Tape-drive association,
comparing, 3-346 physical/logical, 3-198
Outputting error, 3-110 TBADD JSYS, 3-357
Translating error, 3-109 TBDEL JSYS, 3-357
STSTS JSYS, 3-353 TBLUK JSYS, 3-357
STTYP JSYS, 3-353 Terminal,
Swapping JFN'S, 3-354 Redefining controlling,
SWJFN JSYS, 3-354 3-296
SWTRP% JSYS, 3-354 Terminal codes,
SYERR JSYS, 3-356 Deassigning, 3-92
Syserr, 3-356 Terminal input,
SYSGT JSYS, 3-356 simulating, 3-348
System, Terminal interrupt,
Archive/virtual disk, Assigning, 3-14
2-70 Terminal interrupt word,
Clearing software 3-293
interrupt, 3-35 setting, 3-349
disabling interrupt, 3-87 Terminal interrupts, 2-53
Enabling software Terminal linking, 3-370
interrupt, 3-98 Terminal modes,
halting, 3-159 setting, 3-307
Software interrupt, 2-51 Terminal number,
System accounting, 3-375 setting, 3-353
System date, Terminal output,
setting, 3-346 simulating, 3-350
System error file, 3-356 Terminal pointer,
System name, 3-304 setting, 3-309
System performance analysis, Terminal type,
3-330 returning, 3-157
System restart time, Termination,
returning elapsed, 3-368 waiting for process,
System table, 3-382
Returning, 3-124 Testing file input buffer,
returning, 3-356 3-314
System tables, 2-20 Testing file output buffer,
3-334, 3-335
Testing monitor flags,
3-372
Table, TEXTI JSYS, 3-360
Returning interrupt, TFORK JSYS, 3-364
3-284 THIBR JSYS, 3-367
Returning system, 3-124 Time,
returning system, 3-356 file date and, 3-282
Software interrupt, 2-52 offline expiration date
Table addresses, and, 3-282
setting interrupt, 3-319 online expiration date
Table entry, and, 3-282
adding a, 3-357 returning elapsed system
deleting a, 3-357 restart, 3-368
Table searching, 3-357 setting file date and,
Index-15
INDEX
Time, Used file page,
(Cont.) Finding 1'st, 3-112
3-311 User I/O mode, 3-378
TIME JSYS, 3-368 USRIO JSYS, 3-378
Time process blocking, UTEST JSYS, 3-379
elapsed, 3-367 UTFRK JSYS, 3-380
TIMER JSYS, 3-368
Timing,
Process, 3-368
TLINK JSYS, 3-370 VACCT JSYS, 3-381
TMON JSYS, 3-372 Values,
To internal date/time, Returning EBOX/MBOX meter,
Converting, 3-160 3-172
Translating a logical name, Vector,
3-169 compatibility package
Translating device name entry, 3-298
string, 3-347 Entry, 2-65, 3-305
Translating device string, Returning PA1050 entry,
3-79 3-115
Translating directory name Returning process entry,
string, 3-352 3-127
Translating directory Returning RMS entry,
number, 3-88 3-117
Translating error strings, RMS entry, 3-300
3-109 Verifying accounts, 3-381
Trap information, VFU,
Returning page, 3-153 Loading, 3-171
Trap words,
Returning, 3-156
Trapping,
overflow, 3-354 WAIT JSYS, 3-382
underflow, 3-354 Waiting for process
TTMSG JSYS, 3-373 termination, 3-382
TTY I/O, 3-271, 3-276, Waking a process, 3-374
3-360 WFORK JSYS, 3-382
TTY:, 2-39 Wild string comparison,
TWAKE JSYS, 3-374 3-383
Type, WILD% JSYS, 3-383
returning terminal, 3-157 Word,
JFN mode, 3-276
scheduler priority
control, 3-322
UFPGS JSYS, 3-374 setting terminal
Underflow trapping, 3-354 interrupt, 3-349
Up pointer, Terminal interrupt, 3-293
Backing, 3-17 Words,
Updating file pages, 3-374 CCOC, 3-276, 3-307
Usage, Returning trap, 3-156
Returning disk, 3-116 Working set,
USAGE JSYS, 3-375 Releasing, 3-294
Index- d Tag Table