Trailing-Edge
-
PDP-10 Archives
-
bb-bt99h-bb
-
swil.x14
There are 3 other files named swil.x14 in the archive. Click here to see a list.
UNIVER SWIDEF SWIL universal definitions (internal usage only)
SUBTTL Robert D. Houk/RDH
SEARCH JOBDAT, MACTEN, UUOSYM ;STANDARD DEFINITIONS
SALL ;PRETTY LISTINGS
.DIRECT FLBLST ;PRETTIER LISTINGS
COMMENT \
COPYRIGHT (c) DIGITAL EQUIPMENT CORPORATION 1984,1986. ALL RIGHTS RESERVED.
THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE
INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER
COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY
OTHER PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY
TRANSFERRED.
THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE
AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
CORPORATION.
DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.
\
SUBTTL Version and Revision History
MAJVER==13 ;MAJOR VERSION LEVEL
MINVER==0 ;MINOR (MAINTENANCE RELEASE) LEVEL
CSTVER==0 ;CUSTOMER VERSION (WHO LAST . . .)
EDTVER==1045 ;EDIT LEVEL
%%SWIL==:<BYTE (3)CSTVER(9)MAJVER(6)MINVER(18)EDTVER>
IF2,< PURGE CSTVER,MAJVER,MINVER,EDTVER>
;Initial creation as the Scan Wild I/O Library package for shipping with
;NFT-10 with the 7.02 monitor.
;
;The version number starts at 12, thus "preserving" the pre-SWIL version
;numbers as applied to SCAN, WILD, etc. (Don't ask what happened to ver-
;sion 10 and 11!)
;
;The edit numbers start at 1000, thus "preserving" the pre-SWIL edit
;numbers as applied to SCAN, WILD, etc.
;1000 RDH 01-Jan-84
; Incorporate into SWIL %12(1000), sync edit level at 1000.
; Modules: SWIL, SWIFIL, SWIWLD, SWILIO, SWINET, SWISCN, SWIHLP,
; SWIQUE, SWIERM, SWITOU, SWIMEM, SWIMSC
;1001 RDH 31-Mar-84
; Problems with RT-11 systems.
; Modules: SWIFIL
;1002 RDH 31-Mar-84
; RSX/VAX/RT/etc file lengths not calculated correctly.
; Modules: SWIFIL
;1003 RDH 20-Jun-84
; .ASUID/USERID doesn't accept quoted strings for passwords.
; Modules: SWISCN
;1004 RDH 16-Jul-84
; Only request 3-part name messages from remote FAL if control of
; the name messages is supported. Seen with VAX/VMS field test of
; version 4 (first VAX implementation of DAP version 7).
; Modules: SWIFIL
;1005 RDH 12-Oct-84 SPR 10-34696
; Implement support for VAX/VMS "Stream-CR" and "Stream-LF" ASCII
; files.
; Modules: SWILIO
;1006 RDH
; First pass at running in extended addressing (for DTECO %26).
;1007 RDH 28-Nov-84 SPR 10-35004
; FX.APP (/APPEND switch) is defined in the .FXCTL word, but was
; being referenced as if it were in the .FXMOD word, zapping the
; FX.PRT (/OKPROT switch) flag.
; Modules: SWISCN, SWIFIL
;1010 RDH 29-Nov-84
; File attributes passed in the .IO??? words (e.g., .IOPRT)
; were lost on a file create. For example, FAL would lose the
; remote-specified file protection.
; Modules: SWIFIL
;1011 DRB 24-Jan-85
; Make .POPJ and .POPJ1 separately loadable (i.e. in their own PRGENDed
; module) in order to avoid LNKMDS when .POPJ/.POPJ1 has already been
; loaded elsewhere.
; Modules: SWIMSC
;1012 DRB 25-Jan-85
; Add scheduler calls to the ANF-10 non-blocking I/O. Don't block
; on NSP. enter passive if non-blocking or scheduler desired.
; Modules: SWINET
;1013 DRB 25-Jan-85
; IO.ENM is getting cleared on the first pass through XDBUF3 to do
; DECnet output. If the scheduler is called (due to non-blocking
; I/O), we don't set end of message on subsequent attempts. Rearrange
; the code so that IO.ENM isn't cleared until the output is complete.
; Modules: SWINET
;1014 DRB 25-jan-84
; Change user/account validation to accept password strings longer
; than six characters. This is done by chaging the argument to
; be a password string pointer, rather than a single SIXBIT word.
; The block containing the string is assumed to be 7 words long
; (big enough to fit 39 characters), and trailing zero filled.
; Modules: SWIQUE
;1015 DRB 29-Jan-85
; SWILIO improperly tests for a passive connection at ORNIX5. It
; assumes that .IOCCF has been loaded to M0, which it hasn't.
; Modules: SWILIO
;1016 DRB 16-Apr-85
; ACTDAE's error prefix for bad password changed from "ACTIPW" to
; "ACTBPW". Reflect the change in the QUEUE. interface.
; Modules: SWIQUE
;1017 RDH 8-Aug-85
; A wildcarded directory spec of the form [,,X*] would match files
; from the spec [,,*]. A wildcarded directory spec of the form
; [,,*,X*] would match files from the spec [,] (but not [,,*]).
; Modules: SWIWLD
;1020 RDH 12-Aug-85
; "Managed Memory" is lost when using ANF network I/O.
; Modules: SWINET
;1021 RDH 14-Aug-85
; ASSIGNed pathological name with logical name doesn't expand
; correctly (e.g., .PATH X:=[1,2],[3,4], .ASSIGN X Y, .DIRECT Y:)
; Modules: SWIWLD
;1022 LEO 09-Sep-85
; Do Copyrights.
; Modules: ALL
;1023 DRB 21-Nov-85
; ACTDAE's interface changed a little. Change SWIQUE to use 8 bit
; ASCIZ password strings instead of SIXBIT, change some error codes
; returned from ACTDAE.
; Modules: SWIQUE
;1024 DRB 21-Nov-85
; Change the DAP error suffix for device not found to "NSD", so that it
; won't conflict with "directory not found".
; Modules: SWIL
;1025 DRB 22-Nov-85
; Close all of WILD's directory channels on an IOABO call.
; Modules: SWIFIL, SWIWLD
;1026 RDH 25-Dec-85
; Create new SWIFIL routine .IOZAP to "blow away" all I/O/etc.
; associated with a CDB and return the CDB to initial state. Move
; [1025]'s .LKABO from .IOABO to .IOZAP.
; Modules: SWIFIL, SWIWLD
;1027 RDH 25-Dec-85
; Enhance WILD's typeout of .UFD-like file specs (e.g., [1,2].UFD)
; on (e.g.,) NSF errors.
; Modules: SWIWLD
;1030 RDH 25-Dec-85
; Don't type "No such nodes" error on non-network operations (e.g.,
; search list empty).
; Modules: SWIWLD
;1031 RDH 26-Dec-85
; Constructs like "ABC'OR'DEF" lost last character of "ABC"
; Modules: SWISCN
;1032 RDH 26-Dec-85
; MCO 12262 Broke DIRECT/WILD and DECtapes. Be much more conservative
; OPENing DECtapes (and hope DIRECT cooperates too).
; Modules: SWIWLD
;1033 RDH 27-Dec-85
; "+" (Concatenation) construction types out wrong in .TOFSB, should
; be treated like "," construction. Note: "+" is not the same as the
; "'OR'" operator.
; Modules: SWITOU
;1034 RDH 28-Dec-85
; /OPTION:"A B" put SCAN into a loop in .TI???.
; Modules: SWISCN
;1035 RDH 28-Dec-85
; "Directory is empty" message types out last str/dir searched, which
; can be misleading - type back user spec instead.
; Modules: SWIWLD
;1036 RDH 31-Dec-85
; Spurious "WLDTMC" errors - if explicit non-wild output field is
; specified and NO matching input field, don't cause a secondary
; wildcarding error, just accept the specified output field.
; Modules: SWIWLD
;1037 RDH 3-Jan-86
; Bad date/time values (e.g., /AFTER:1-JAN-60) not detected and
; reported properly.
; Modules: SWISCN
;1040 RDH 3-Jan-86 SPR 10-35423
; FAL not given an aborting ACCOMP message (i.e., an incoming DAP
; message that occurs before FAL is through reading and sending
; an input file). Edit 1040 supersedes edit 1015.
; Modules: SWILIO
;1041 RDH 4-Jan-86 SPR 10-35424
; No support for network Line Sequence Numbers.
; Modules: SWIFIL, SWILIO
;1042 RDH 23-Jan-86
; Add /IOMODE:A8CII to select 8-bit-ASCII I/O mode.
; Modules: SWISCN, SWIFIL, SWILIO
;1043 BSC 24-Apr-86
; Add two Macros to SWIL.MAC to support type-out of DAP messages from
; SWINET and add code to SWINET to do the trace of DAP messages.
;
; FVMSG builds a table of ASCIZ messages which describe Flag and
; Value fields. These are the messages defined in the DAP Macro.
;
; FVIDX builds a table, parallel to the DAPXCT table, which provides
; an index into the messages table built by FVMSG.
;
; Many flag field messages have been added to the DAP macro to make
; the text descriptions available for tracing. Also the flag bits in
; the DAP macro must be monotonically increasing for the .TFLAG routine
; in SWINET to correctly match a flag with the description, hence the
; (originally missing) reserved flags have been added with the text
; description 'Reserved'.
;
; To trace DAP messages received set FT$RCV==1 and
; to trace DAP messages transmitted set FT$XMT==1 in SWIL.MAC (this file).
; Then re-compile SWIL and SWINET and re-build SWIL.REL. This new SWIL.REL
; can then be linked with either NFT or FAL depending on which is to be
; traced. The trace feature should not be included in production versions
; because, even with tracing disabled, the program is larger and slower.
; It is permissible to have both FT$RCV==1 and FT$XMT==1 together, but
; see documentation of the TRCRCV routine in SWINET regarding a minor
; deficiency in the format of trace output when simultaneously tracing
; messages received and transmitted.
;
; Deposit 0 in .JBOPC (loc 130) to disable tracing (this is the default).
; Deposit 1 in .JBOPC to trace to TTY: (best to set terminal width 132).
; Deposit 2 in .JBOPC to trace to DSK:DAPTRC.LST. This file does not get
; closed automatically. When finished tracing ^C and close via the .CLOSE
; operating system command.
; Modules: SWIL, SWINET
;1044 BSC 16-Jun-86
; When a VAX file with the record attribute of FORTRAN carriage control
; is transferred to the DEC-10 the user receives the message
; ? UNKNOWN ISF FLAGS IN IRAS90 when the file includes records beginning
; with "0" or "-" which require conversion to multiple line-feeds.
; AC T1 was incorrectly used as both a count of line-feeds and a byte
; pointer. Fix is to use T2 as the count and T1 as the byte pointer.
; Modules: SWILIO
;1045 BSC 18-Jun-86
; When a file is transferred to another system which runs out of disk
; quota the transfer hangs in EW. The problem arose because the
; DECsystem-10 never sent a CONTINUE(ABORT) interrupt message so the
; remote never sent the ACCOMP(RESPONSE) for which the DECsystem-10 was
; waiting in EW state. The code to send CONTINUE interrupt messages was
; never included in SWIL. This has now been added.
; Modules: SWIL, SWIFIL, SWINET
SUBTTL Feature test definitions
;"SCAN" Feature tests
ND DEBUG$,1 ;1=INCLUDE DEBUGGING FEATURES
ND ECHO$C,0 ;1=ECHO COMMAND STRING AS CHARACTER PROCESSED
ND ECHO$P,0 ;1=ECHO COMMAND STRING AS PHRASE PROCESSED
ND ECHO$W,0 ;1=ECHO COMMAND STRING AS WORD PROCESSED
ND FT$ALT,0 ;1=CONVERT 175,176 TO 033
ND FT$SFD,-1 ;SUB-FILE DIRECTORIES
ND FT$TNX,0 ;TENEX
ND FT$RCV,0 ;[1043] 1=TRACE DAP MESSAGES RECEIVED
ND FT$XMT,0 ;[1043] 1=TRACE DAP MESSAGES TRANSMITTED
IFN FT$RCV!FT$XMT,<FT$TRC==1> ;NEED COMMON CODE IF EITHER RCV OR XMT TRACE
ND FT$TRC,0 ;[1043] OTHERWISE LEAVE OUT ALL TRACE CODE
DEFINE RCV,<IFN FT$RCV> ;SHORT FEATURE TEST SWITCHES FOR NEATER LISTING
DEFINE NORCV,<IFE FT$RCV>
DEFINE XMT,<IFN FT$XMT>
DEFINE NOXMT,<IFE FT$XMT>
DEFINE TRC,<IFN FT$TRC>
DEFINE NOTRC,<IFE FT$TRC>
SUBTTL Register definitions
M0=0 ;ULTRA-SCRATCH AC, PASS RETURN CODES
T1=1 ;GENERAL SCRATCH/TEMP AC
T2=2 ; ANOTHER
T3=3 ; AND ANOTHER
T4=4 ; AND ANOTHER
P1=5 ;PRESERVED REGISTER
P2=6 ; ANOTHER
P3=7 ; AND ANOTHER
P4=10 ; AND ANOTHER
IO=11 ;I/O CDB ADDRESS
; ID=12 ;DAP BLOCK ADDRESS (FROM I/O CDB)
;15 - 16 RESERVED FOR AP/PF/CF/AD NAUSEUM USAGE (BLISS/FORTRAN/PASCAL/ETC.)
P=17 ;PROGRAM STACK POINTER
;SPECIAL AC USAGE (UGLY, BUT THAT IS SCAN'S CONVENTION)
NM==P3 ;NAME/VALUE REGISTER FOR INPUT ROUTINES
CH==P4 ;CHARACTER REGISTER FOR INPUT ROUTINES
;NOW SAVE SOME TREES
.XCREF M0, T1, T2, T3, T4, P1, P2, P3, P4, IO, P
.XCREF CH, NM
SUBTTL Instruction definitions (OPDEFs, et al)
;THE "EXTENDED" ADDRESSING INSTRUCTIONS THAT HAVEN'T MADE MACRO YET
OPDEF XMOVEI [SETMI]
OPDEF XHLLI [HLLI]
;GENERATE INSTRUCTION-FORMAT-INDIRECT-WORD
OPDEF IFIW [1B0]
.NODDT IFIW ;PRESERVE SETZ
SUBTTL General definitions - Assembly parameters
;SCAN-level parameters
ND LN$ABF,200 ;LENGTH OF INDIRECT BUFFER
ND M$INDP,^D10 ;MAX. INDIRECT DEPTH (-1=INF., 0=NONE)
VRBADX==10 ;/MESSAGE:ADDRESS (*KROCK*)
;Network-level parameters
ND $NTNBL,^D04 ;NAME BLOCK LENGTH (WORDS)
ND $NTSBL,^D12 ;STRING BLOCK LENGTH (WORDS)
ND $NTODL,^D08 ;OPTIONAL DATA BLOCK LENGTH (WORDS)
ND $NABFS,^D432 ;DEFAULT ANF TSK CHANNEL BUFFER SIZE (BYTES)
; (PRE-7.02 DN8X DEFAULT MSGMAX WAS ^D450)
ND $NAIBF,4 ;NUMBER OF ANF TSK CHANNEL INPUT BUFFERS
; (TRANSLATED TO DATA REQUEST COUNT BY MONITOR)
ND $NAIBX,100 ;"EXTRA" ALLOCATION FOR ANF INPUT BUFFERS (WORDS)
; ALLOWS FOR POSSIBLE "SEGMENT SIZE SKEW" WITH NFT'S
; RUNNING UNDER (E.G.,) 7.01 WITH DIFFERENT SEGMENT SIZE
; (TECHNICALLY ILLEGAL, BUT HAPPENS NONETHELESS,
; AND THIS ENABLES IT TO WORK) - AVOIDS IO.BKT ERRORS
;*** RESET TO 0 AFTER FIRST RELEASE
;Assorted values
ND $ASCMX,^D8 ;MAXIMUM ASCII SIZE (/PASSWORD, ETC.)
SUBTTL Macro definitions - COPYRIGHT nonsense
;The COPYRIGHT macro as used by the SWIL package is defined to ***NOT***
;assemble the copyright statement into actual code, but it will appear in
;the .REL files.
;
;As with the UUOSYM version of the macro of the same name, the format for
;the copyright statement is:
;
;COPYRIGHT (c) DIGITAL EQUIPMENT CORPORATION 1984,1986. ALL RIGHTS RESERVED.
;
;Where the year(s) is(are) specified as needed. Note that the trailing dot
;(or period) character is absolutely mandatory!!! It is the only period
;allowed in the copyright statement, and no text is allowed to follow the
;period!
DEFINE COPYRIGHT,<.TEXT .;Copyright >
SUBTTL Macro definitions - CRC table generation macro(s)
DEFINE BLDCRC(POLY),<
.XCREF ;;CLEANER LISTINGS
..ZZ==-1 ;;INITIALIZE FOR "BYTE" LOOP
REPEAT ^D256,<.CRC (POLY,\<..ZZ==..ZZ+1>)> ;;GENERATE CRC TABLE
IF2,<PURGE ..ZZ, ..CRC, ...CRC> ;;PITCH GARBAGE SYMBOLS
.CREF ;;BACK TO NORMAL CODE
> ;END BLDCRC MACRO
;HELPER TO BLDCRC MACRO
DEFINE .CRC(POLY,BYTE),<
..CRC=BYTE
REPEAT ^D08,<
...CRC=..CRC&1
..CRC=..CRC_-1
IFN ...CRC,<..CRC=..CRC^!POLY>>
EXP ..CRC
> ;END .CRC MACRO
SUBTTL Macro definitions - SCAN errors
Repeat 0,<
;M.FAIL <FOO> SENDS FOO AS A FATAL ERROR
DEFINE M.FAIL (A),<
EXT .FMSG
PJSP T1,.FMSG
XLIST
ASCIZ \A\
LIST
>
;M.FAIN <FOO> SENDS FOO AS A FATAL ERROR WITH N IN SIXBIT
DEFINE M.FAIN (A),<
EXT .FMSGN
PJSP T1,.FMSGN
XLIST
ASCIZ \A\
LIST
>
;M.FAID <FOO> SENDS FOO AS A FATAL ERROR WITH N IN DECIMAL
DEFINE M.FAID (A) <
EXT .FMSGD
PJSP T1,.FMSGD
XLIST
ASCIZ \A\
LIST
>
;M.FAIO <FOO> SENDS FOO AS A FATAL ERROR WITH N IN OCTAL
DEFINE M.FAIO (A),<
EXT .FMSGO
PJSP T1,.FMSGO
XLIST
ASCIZ \A\
LIST
>
;M.MAIF <FOO> SENDS FOO AS A FATAL ERROR WITH N=ADDR OF FILE DESCRIPTOR
DEFINE M.FAIF(A)<
EXT .FMSGF
PJSP T1,.FMSGF
XLIST
ASCIZ \A\
LIST
>
> ;end repeat 0
SUBTTL Macro definitions - STOPCD and WARNCD
;TEMP MACRO(S)
DEFINE STOPCD(TXT,RTN,ADR,DIE),<
IF2, <IFNDEF .SPOPJ,<EXTERN .SPOPJ>>
IFB <TXT>,<
IFB <DIE>,< HALT .SPOPJ>
IFNB <DIE>,< POP P,.JBBLT
HALT DIE>
>
IFNB <TXT>,<
PUSHJ P,[OUTSTR [ASCIZ\? TXT
\]
IFB <DIE>,< JRST .SPOPJ>
IFNB <DIE>,< POP P,.JBBLT
JRST DIE>]
>
> ;END STOPCD MACRO DEFINITION
DEFINE WARNCD(TXT,RTN,ADR,DIE),<
PUSHJ P,[SKIPLE S.MOAN## ;;WANT WARNINGS?
OUTSTR [ASCIZ\% TXT
\]
IFB <DIE>,<POPJ P,]> ;;RETURN TO INLINE CODE
IFNB <DIE>,<
POP P,.JBBLT ;;ADJUST STACK (REMEMBER DISPATCH)
JRST DIE]> ;;CONTINUE ELSEWHERE
> ;END WARNCD MACRO DEFINITION
PRGEND ;END OF INTERNAL DEFINITIONS MODULE
UNIVER SWIL SWIL universal definitions
SUBTTL Robert D. Houk/RDH
SEARCH SWIDEF ;INTERNAL-TO-SWIL DEFINITIONS
SEARCH JOBDAT, MACTEN, UUOSYM ;STANDARD DEFINITIONS
SALL ;PRETTY LISTINGS
.DIRECT FLBLST ;PRETTIER LISTINGS
COMMENT \
SWIL -- Definitions module for users of the SWIL package.
COPYRIGHT (c) DIGITAL EQUIPMENT CORPORATION 1984,1986. ALL RIGHTS RESERVED.
THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE
INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER
COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY
OTHER PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY
TRANSFERRED.
THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE
AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
CORPORATION.
DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.
\
%%SWIL==:%%SWIL ;MAKE VERSION AVAILABLE TO ALL
SUBTTL SCAN/WILD interface flags
;FLAGS FOR .ISCAN CALL
FS.ICK==1B0 ;KROCK-MODE COMMAND SCANNING
FS.IFI==1B16 ;INDIRECT FILE ILLEGAL IN COMMAND [106]
FS.ICL==1B17 ;IGNORE SPECIAL COMMAND-LINE HANDLING
;FLAGS FOR .TSCAN CALL
FS.MOT==1B18 ;MULTIPLE OUTPUT SPECS POSSIBLE
FS.MIO==1B19 ;MIXED INPUT AND OUTPUT SPECS
;FLAGS FOR .LKWLD CALL
FW.ADO==1B0 ;ANY DEVICE OK (ELSE JUST DISK)
FW.DBS==1B1 ;DO DIRECTORY BEFORE SUBDIRECTORY
FW.IFX==1B4 ;IMMEDIATE FILE EXIT
FW.FBD==1B5 ;RETURN DIRECTORY AS FILE BEFORE EXPANDING AS DIRECTORY
FW.FAD==1B6 ;RETURN DIRECTORY AS FILE AFTER EXPANDING AS DIRECTORY
;FLAGS FOR .TDIRB CALL
TS.DRW==0 ;SINGLE WORD
TS.DRP==1 ;PATH POINTER
TS.DRB==2 ;BIWORD (IE, SCAN SPEC FORMAT)
;VALUES FROM .VERBO
JWW.CN==1B33 ;/VERBOS:CONTINUATION
JWW.FL==1B34 ;/VERBOS:FIRST
JWW.PR==1B35 ;/VERBOS:PREFIX
SUBTTL File Specification Block definitions
;FILE SPEC BLOCK VERSION
;
;THIS MUST APPEAR IN THE VARIOUS PROTOCOL BLOCKS WITH WHICH THE USER
;COMMUNICATES WITH "SCAN". THE FIRST WORD OF EACH PROTOCOL BLOCK IS THE
;VERSION WORD, OF THE FORMAT:
;
; <MAJOR>,,<MINOR>
;
;WHERE <MAJOR> IS THE MAJOR PROTOCOL FORMAT USED, AND MINOR IS THE MINOR
;VARIATION WITHIN THE MAJOR FORMAT. <MAJOR> IS NOT AVAILABLE AS A SYMBOL,
;IT *** MUST *** BE HARDCODED INTO THE CALLING PROGRAM IN ORDER TO ENSURE
;THAT THE CALLER REALLY KNOWS WHAT VERSION IS BEING USED, AND HASN'T JUST
;RECOMPILED IN ORDER TO PULL THE SYMBOL OUT OF THIS FILE WITHOUT UPDATING
;THE CALLING PROGRAM. <MINOR> IS AVAILABLE AS SYMBOL "%%FXVE" SINCE ANY
;"MINOR" CHANGES CAN BE "FIXED" BY MERELY RECOMPILING THE PROGRAM.
;"MAJOR" CHANGES WOULD INCLUDE SUCH THINGS AS DELETING .FX--- WORDS OR
;CHANGING THE MEANING OF THE CONTENTS OF THE WORDS (ASCII RATHER THAN
;SIXBIT, ETC.); "MINOR" CHANGES WOULD INCLUDE SUCH THINGS AS SIMPLY ADDING
;NEW FIELDS OR RE-ARRANGING CURRENT FIELDS (BUT CHANGING THE ORDER OF THE
;NAME/MASK WORD PAIRS INTO MASK/NAME WORD PAIRS WOULD BE A "MAJOR" CHANGE).
; 12 ;MAJOR PROTOCOL VERSION
;*** MACRO BUG: .FXLND MUST NOT BE FORWARD-REFERENCED IN PRGENDED UNIVER FILE
.FXLND==<.PTMAX-.PTPPN-1> ;LENGTH OF DIRECTORY (UFD+SFD'S)
;*** END OF BUG
%%FXVE==<.FXLND_^D12>+106 ;MINOR PROTOCOL VERSION
;WORDS IN FILE SPEC AREA
.FXLND==<.PTMAX-.PTPPN-1> ;LENGTH OF DIRECTORY (UFD+SFD'S)
.FSLXX==40 ;LENGTH (WORDS) OF STRING BLOCKS
PHASE 0
.FXBZM:! ;START OF INITIALLY SETZM'ED REGION
.FXCTL:!BLOCK 1 ;CONTROL FLAGS
.FXCTM:!BLOCK 1 ;CONTROL MASK
.FXMOD:!BLOCK 1 ;MODIFIER WORD
.FXMOM:!BLOCK 1 ;MODIFIER MASK
.FXUSW:!BLOCK 2 ;USER-RESERVED FLAGS WORD & MASK
.FXFLD:!BLOCK 1 ;FIELD MASK (WHICH FIELDS PRESENT)
.FXNOD:!BLOCK 1 ;NODE NAME (NON-ZERO IF NODE SPECIFIED)
.FXNOM:!BLOCK 1 ;NODE NAME MASK
.FXDEV:!BLOCK 1 ;DEVICE (NON-ZERO IF ANY PART OF SPEC)
.FXDEM:!BLOCK 1 ;DEVICE MASK
.FXDIR:!BLOCK 1 ;DIRECTORY WORD (NON-ZERO IF DIRECTORY SPECIFIED)
.FXDIM:!BLOCK 1 ;DIRECTORY MASK
BLOCK 2*<.FXLND-1> ;REST OF DIRECTORY (SFDS; 0 AT END OF PATH)
.FXNAM:!BLOCK 1 ;NAME (NON-ZERO IF NAME PRESENT)
.FXNMM:!BLOCK 1 ;NAME MASK
.FXEXT:!BLOCK 1 ;EXTENSION,,EXTENSION MASK (NON-ZERO DOT PRESENT)
.FXGEN:!BLOCK 1 ;FILE GENERATION
;THE KROCK STRING-BLOCK STUFF
.FSNOD:!BLOCK 1 ;ADDRESS OF NODE NAME STRING
.FSDEV:!BLOCK 1 ;ADDRESS OF DEVICE NAME STRING
.FSDIR:!BLOCK 1 ;ADDRESS OF DIRECTORY NAME STRING
.FSNAM:!BLOCK 1 ;ADDRESS OF FILE NAME STRING
.FSEXT:!BLOCK 1 ;ADDRESS OF FILE TYPE NAME STRING
.FSGEN:!BLOCK 1 ;ADDRESS OF FILE GENERATION STRING
.FSXXX:!BLOCK .FSLXX ;THE ACTUAL STRING STORAGE AREA
.FXEZM:! ;END (+1) OF INITIALLY SETZM'ED REGION
;MORE WORDS IN THE FILE SPEC AREA
.FXBOM:! ;START OF INITIALLY SETOM'ED REGION
.FXBOA:! ;START OF ONE'ED SWITCH ATTRIBUTES
.FXBSZ:!BLOCK 1 ;/BYTESIZE
.FXFSZ:!BLOCK 1 ;/FRAMESIZE
.FXRSZ:!BLOCK 1 ;/RECORDSIZE
.FXBLS:!BLOCK 1 ;/BLOCKSIZE
.FXBFN:!BLOCK 1 ;/BUFFERS
.FXEST:!BLOCK 1 ;/ESTIMATE (SEE ALSO /CONTIGUOUS)
.FXVER:!BLOCK 1 ;/VERSION
.FXEOA:! ;END (+1) OF ONE'ED SWITCH ATTRIBUTES
.FXBOC:! ;START OF ONE'ED SWITCH CONSTRAINTS
.FXBFR:!BLOCK 1 ;/BEFORE
.FXSNC:!BLOCK 1 ;/SINCE
.FXABF:!BLOCK 1 ;/ABEFORE
.FXASN:!BLOCK 1 ;/ASINCE
.FXPBF:!BLOCK 1 ;/PBEFORE
.FXPSN:!BLOCK 1 ;/PSINCE
.FXFLI:!BLOCK 1 ;FILE MIN SIZE (WORDS)
.FXFLM:!BLOCK 1 ;FILE MAX SIZE (WORDS)
.FXEOC:! ;END (+1) OF ONE'ED SWITCH CONSTRAINTS
.FXEOM:! ;END (+1) OF INITIALLY SETOM'ED REGION
.FXLEN:! ;LENGTH (+1) OF ONE FILE SPECIFICATION BLOCK
DEPHASE ;KEEP MACRO FROM ILL MEM REFING LINK!
;SUB-FIELDS IN .FXCTL CONTROL FIELD
FX.RFM==17B3 ;/RECFORMAT:(NONE, FIXED, VARIABLE, VFC, 36PACK)
FX.MCY==1B4 ;/MACY11
FX.MEY==1B5 ;/MECY11 (PRETTIER-PACKING MACY11)
FX.ALC==1B6 ;/ALLOCATE (/ESTIMATE IS STILL SIZE)
FX.CTG==1B7 ;/CONTIGUOUS (/ESTIMATE IS STILL SIZE)
FX.APP==1B12 ;/APPEND
FX.DEL==1B13 ;/DELETE (ON CLOSE)
FX.PRI==1B14 ;/PRINT (ON CLOSE)
FX.SUB==1B15 ;/SUBMIT (ON CLOSE)
FX.QRY==7B20 ;/QUERY:(NEVER, TELL, ASK)
FX.QRA==1B18 ;/QUERY:ASK
FX.QRT==1B19 ;/QUERY:TELL
FX.QRN==1B20 ;/QUERY:NEVER
FX.QNY==1B21 ;/QUERY:ASK DEFAULT TO "NO" ([Y/N] VS [N/Y])
FX.SCE==7B24 ;/SCERROR:(NEVER, INSUFFICIENT, DIFFERENT)
FX.SCW==7B27 ;/SCWILD:(ANY, FIELD, DFIELD, SAME, DSAME)
FX.SCD==1B27 ;/SCWILD:(DFIELD ! DSAME)
FX.DAM==17B31 ;/DATAMODE:(ASCII, IMAGE) (VALUE PARALLELS /IOMODE VALUES)
FX.IOM==17B35 ;/IOMODE:(ASCII, BYTE, PIM, ETC...)
;FLAGS IN .FXFLD FIELDS-PRESENT MASK (ALSO USED BY .TOFSB)
FX.UND==1B0 ;USER-SPECIFIED NODE NAME
FX.UDV==1B1 ;USER-SPECIFIED DEVICE NAME
FX.UDR==1B2 ;USER-SPECIFIED DIRECTORY NAME
FX.UNM==1B3 ;USER-SPECIFIED FILE NAME
FX.UEX==1B4 ;USER-SPECIFIED EXTENSION
FX.UGN==1B5 ;USER-SPECIFIED GENERATION NUMBER
FX.UFS==1B6 ;USER-SPECIFIED FILE-SPECIFIC SWITCH(ES)
FX.UGS==1B7 ;USER-SPECIFIED GLOBAL SWITCH(ES)
FX.UXX==FX.UND!FX.UDV!FX.UDR!FX.UNM!FX.UEX!FX.UGN!FX.UFS ;FILE SPEC TYPED
FX.SND==1B9 ;"STICKY DEFAULT" NODE NAME
FX.SDV==1B10 ;"STICKY DEFAULT" DEVICE NAME
FX.SDR==1B11 ;"STICKY DEFAULT" DIRECTORY NAME
FX.SNM==1B12 ;"STICKY DEFAULT" FILE NAME
FX.SEX==1B13 ;"STICKY DEFAULT" EXTENSION
FX.SGN==1B14 ;"STICKY DEFAULT" GENERATION NUMBER
FX.SFS==1B15 ;"STICKY DEFAULT" FILE-SPECIFIC SWITCH(ES)
FX.SGS==1B16 ;"STICKY DEFAULT" GLOBAL SWITCH(ES)
FX.WND==1B18 ;WILDCARD(S) PRESENT IN NODE NAME
FX.WDV==1B19 ;WILDCARD(S) PRESENT IN DEVICE NAME
FX.WDR==1B20 ;WILDCARD(S) PRESENT IN DIRECTORY NAME
FX.WNM==1B21 ;WILDCARD(S) PRESENT IN FILE NAME
FX.WEX==1B22 ;WILDCARD(S) PRESENT IN EXTENSION
FX.WGN==1B23 ;WILDCARD(S) PRESENT IN GENERATION
FX.WXX==FX.WND!FX.WDV!FX.WDR!FX.WNM!FX.WEX!FX.WGN ;"WILDCARDS" TYPED
;NOTE THAT THE WILDCARD-PRESENT FLAGS MUST BE ON IF ANY WILDCARDS ARE
;PRESENT IN THE CORRESPONDING FIELD; HOWEVER THE WILDCARD-PRESENT FLAGS
;DO NOT GUARANTEE THAT TRUE WILDCARDS ARE PRESENT - THEY MERELY INDICATE
;THAT IT MUST BE ASSUMED THAT WILDCARDS ARE PRESENT . . .
FX.DPJ==1B27 ;PROJECT FIELD WAS DEFAULTED ("[,PN]")
FX.DPG==1B28 ;PROGRAMMER FIELD WAS DEFAULTED ("[P,]")
FX.DPN==1B29 ;PATH FIELD WAS DEFAULTED ("[]")
FX.DPT==1B30 ;PATH FIELD WAS DEFAULTED ("[-]")
FX.DNP==1B31 ;NAME FIELD DEFAULTED FROM PPN ("[P,PN].UFD")
FX.DNJ==1B32 ;FX.DNP'ED PROJECT FIELD DEFAULTED ("[,PN].UFD"])
FX.DNG==1B33 ;FX.DNP'ED PROGRAMMER FIELD DEFAULTED ("[P,].UFD")
FX.DNT==1B35 ;FX.DNP'ED PPN FIELD DEFAULTED ("[-].UFD" - WELL, IT'S POSSIBLE)
;BYTES IN SCAN MOD WORD
FX.NDV==1B0 ;(OBSOLETE) NULL DEVICE
FX.NUL==1B1 ;(OBSOLETE) NULL EXTENSION
FX.DIR==1B2 ;(OBSOLETE) DIRECTORY SPECIFIED (MOD=0 IF [-])
FX.PHY==1B3 ;/PHYSICAL
; 1B4 ;FREE
FX.TRM==37B9 ;CODE FOR SPEC'S TERMINATION (PARALLEL .CHGWD)
.FXTRZ==00 ;, (FILE EXPRESSION SEPARATOR)
.FXTRA==01 ;'AND'
.FXTRO==02 ;'OR'
.FXTRN==03 ;'NOT'
.FXTRC==04 ;+ (CONCATENATE)
.FXTRB==06 ;'BEGIN'
.FXTRE==07 ;'END'
.FXTIA==11 ;'IFAND'
.FXTIN==13 ;'IFNOT'
.FXTIS==20 ;'IFSAME'
.FXTID==21 ;'IFDIFFERENT'
.FXTIO==22 ;'IFOLDER'
.FXTIY==23 ;'IFNEWER'
.FXTIL==24 ;'IFSMALLER'
.FXTIB==25 ;'IFBIGGER'
FX.STR==1B10 ;/STRS (DO WILD STRUCTURE STUFF)
FX.NOM==1B11 ;/OKNONE
FX.PRT==1B12 ;/OKPROT
FX.SUP==1B13 ;/ERSUPERSEDE
FX.UID==1B14 ;/OKUID
FX.ADO==1B15 ;/ANYDEVICEOK (0 = /DSKONLY)
FX.SCN==1B18 ;/SCAN (SFD TREE)
FX.LIB==1B19 ;/LIB (DO/DON'T SEARCH LIB:)
FX.SYS==1B20 ;/SYS (DO/DON'T SEARCH SYS:)
FX.NEW==1B21 ;/NEW (DO/DON'T SEARCH NEW: ON SYS:)
FX.DEN==7B23 ;/DENSITY [105]
FX.PAR==1B24 ;/PARITY
FX.PRO==777B35 ;/PROTECTION
;NOT DEFAULTED IN .OSDFS (FROM SWITCH.INI)
FXNOTD==FX.NDV!FX.NUL!FX.DIR!FX.TRM
;ILLEGAL ON INPUT FILE
FXNOTI==FX.SUP
;ILLEGAL ON OUTPUT FILE
FXNOTO==FX.STR!FX.SCN!FX.LIB!FX.SYS!FX.NEW
SUBTTL File Spec Block definitions, addenda
;This shouldn't be here, but for the moment (geologically speaking) it is
;left here as a quick expedient way of getting everything (read "NFT") to
;work.
; -RDH
DEFINE SCNWRD(WRD,SIZ),
<IFB <SIZ>,<WRD==<<..Z==..Z+1>-1>> IFNB <SIZ>,<WRD==<<..Z==..Z+<SIZ>>-<SIZ>>>>
.XCREF
..Z==.FXLEN
.XCREF ..Z
.CREF
;NOW DEFINE OUR OWN PRIVATE CUSTOM FILE-SPECIFIC BLOCKS
.FX$B==..Z ;START OF "FILE ANSWERS"
;THE "ZERO'ED" BLOCKS FIRST, STRINGS AND THE LIKE
.FX$BZ==..Z ;START OF ZERO'ED FILE ANSWERS
SCNWRD .FXPNM,2 ;/DIAL (TELEPHONE NUMBER)
SCNWRD .FXPSW,$ASCMX ;/PASSWORD
SCNWRD .FXUID,$ASCMX ;/USERID
SCNWRD .FXUAC,$ASCMX ;/UACCOUNT (TO MATCH /USERID)
SCNWRD .FXUPW,$ASCMX ;/UPASSWORD (TO MATCH /USERID)
;THE "ONE'D" BLOCKS LAST, NORMAL "WORD" VALUES
.FX$BO==..Z ;START OF ONE'D FILE ANSWERS
SCNWRD $FXUO0 ;ONE'ED #0
SCNWRD $FXUO1 ;ONE'ED #1
SCNWRD $FXUO2 ;ONE'ED #2
SCNWRD $FXUO3 ;ONE'ED #3
SCNWRD $FXUO4 ;ONE'ED #4
SCNWRD $FXUO5 ;ONE'ED #5
SCNWRD $FXUO6 ;ONE'ED #6
SCNWRD $FXUO7 ;ONE'ED #7
SCNWRD $FXUO8 ;ONE'ED #8
SCNWRD $FXUO9 ;ONE'ED #9
.FX$E==..Z ;END OF "FILE ANSWERS"
.FXMAX==:..Z ;SIZE OF FILE SPEC "SCAN" BLOCK
SUBTTL Macro definitions - DM, KEYS, KEYSG
; DM ABBREVIATION,MAX,ADEFAULT,PDEFAULT
; DEFINES SYMBOLS MX.ABBREVIATION,AD.ABBREVIATION, AND PD.ABBREVIATION
; TO BE THE MAXIMUM ALLOWED VALUE, THE DEFAULT IF THE KEYWORD
; IS ABSENT, AND THE DEFAULT IF THE KEYWORD IS PRESENT RESPECTIVELY
; UNLESS THE CORRESPONDING SYMBOL IS ALREADY DEFINED.
DEFINE DM(ABBR,MAX,ADEF,PDEF),<
ND MX.'ABBR,MAX
ND AD.'ABBR,ADEF
ND PD.'ABBR,PDEF>
; KEYS (NAME,LIST) WILL DEFINE A LIST OF KEYS BY NAME NAME
; NAME CAN BE UP TO 4 CHARS. (DEFINES NAME.T AND NAME.L)
; LIST IS SIXBIT NAMES SEPARATED BY COMMAS.
; DEFINES NAME CONCATENATED WITH START OF ITEM IN LIST
; AS INDEX IN LIST UNLESS THE ITEM BEGINS WITH "*"
; KEYSG (NAME,LIST) WILL DEFINE A LIST OF KEYS BY NAME NAME
; NAME CAN BE UP TO 4 CHARS. (DEFINES NAME.T AND NAME.L)
; LIST IS SIXBIT NAMES SEPARATED BY COMMAS.
; DEFINES GLOBAL NAME CONCATENATED WITH START OF ITEM IN LIST
; AS INDEX IN LIST UNLESS THE ITEM BEGINS WITH "*"
DEFINE KEYS(NAME,LST),<
NAME'.L==0
NAME'.T: IRP (LST)<EXP SIXBIT /LST/
NAME'.L==NAME'.L+1
..TEMP==0
IRPC (LST)<IFIDN <LST><*>,<..TEMP==1>
STOPI>
IFE ..TEMP,<NAME'LST==NAME'.L>
>
PURGE ..TEMP
>
DEFINE KEYSG(NAME,LST),<
NAME'.L==0
NAME'.T: IRP (LST)<EXP SIXBIT /LST/
NAME'.L==NAME'.L+1
..TEMP==0
IRPC (LST)<IFIDN <LST><*>,<..TEMP==1>
STOPI>
IFE ..TEMP,<NAME'LST==:NAME'.L>
>
PURGE ..TEMP
>
SUBTTL Macro definitions - SWTCHS and friends
;SWITCH SCANNING MACROS AND TABLES
;SWTCHS IS THE MACRO LISTING ALL KNOWN SWITCHES
;IT INCLUDES THE NAME AND STORAGE LOCATION
;FOR VALUE TYPES, IT ALSO HAS THE MAX AND DEFAULT AND PROCESSOR
;FOR KEY-VALUE TYPES, IT POINTS TO THE KEYS AND HAS THE DEFAULT IF ANY
;FOR STAND-ALONE TYPES, IT HAS THE VALUE.
;WHEN THE SWITCH SCANNING TABLES ARE TO BE BUILT, INVOKE
;THE MACRO DOSCAN WITH 5-CHAR ARGUMENT TO USE AS SYMBOL PREFIX
;IT WILL DEFINE XXXXXN,L,P,M,D
; SL NAME,STORAGE,TABLE-NAME,DEFAULT,FLAGS
; DEFINES A LIST OF KEY-VALUES (SEE KEYS MACRO)
; DEFAULT IS THE ORDINAL OR 0 IF NO DEFAULT
; IF LH(STORAGE)=7777B11, STORAGE = ROUTINE TO PROCESS
;
; SP NAME,STORAGE,PROCESSOR,ABBREVIATION,FLAGS
; DEFINES A VALUE PARAMETER WHOSE DEFAULTS
; ARE DEFINED AT THE BEGINNING OF THE PROGRAM
; BY "DM" USING THE SAME ABBREVIATION
; PROCESSOR IS THE JUMP ADDRESS IN SWITCH PROCESSING
; IT WILL BE CALLED WITH P1=SWITCH OFFSET IN TABLE
; AND P2=POINTER TO 4-WORD BLOCK OF INTERNAL OR EXTERNAL STUFF
; IF MAX=0 AND FS.LRG, THEN ANY VALUE CAN BE STORED
; ELSE, 0.LE.VALUE.LE.MAX
;
; 0.LE.MAX,DEFAULT.LT.2**17 UNLESS FS.LRG
;
; IF MAX=0 AND NOT FS.LRG, THEN PROCESSOR IS AN IMMEDIATE ACTION
; WHICH WILL ALWAYS BE CALLED
; ELSE, PROCESSOR WILL BE CALLED ONLY IF ":"
;
; SS NAME,STORAGE,VALUE,FLAGS
; DEFINES A STAND-ALONE PARAMETER
;
; IN ALL CASES, STORAGE IS A BYTE POINTER.
; IF A FULL WORD, ONLY THE ADDRESS IS NEEDED
; IF A MULTIPLE WORD, THE BYTE SIZE IS 65-#WORDS (UP TO 28)
; IF A FILE SPECIFICATION, THE LENGTH IS HELD IN MX.ABBREVIATION
; IF POINTER IS 7777??,,?????? THEN RH(POINTER) IS DISPATCH
; ADDRESS OF PROCESSOR WHICH TAKES KEYWORD SWITCH VALUES
;
; SN NAME,STORAGE,FLAGS
; DEFINES A STAND-ALONE PARAMETER WHICH TAKES VALUE
; 1 IF /NAME, AND VALUE 0 IF /NONAME
DEFINE SL($NAME,$RESULT,$TABLE,$DEFAULT,$FLAGS),<
X $NAME,$TABLE'.T-1,<$RESULT>,$DEFAULT,-$TABLE'.L,$FLAGS
>
DEFINE SP($NAME,$RESULT,$PROCESSOR,$ABBR,$FLAGS),<
X $NAME,$PROCESSOR,<$RESULT>,PD.'$ABBR,MX.'$ABBR,$FLAGS
>
DEFINE SS($NAME,$RESULT,$VALUE,$FLAGS),<
X $NAME,0,<$RESULT>,$VALUE,0,$FLAGS
>
DEFINE SN($NAME,$RESULT,$FLAGS),<
X $NAME,0,<$RESULT>,0,0,FS.NOS!$FLAGS
>
;FLAGS WHICH CAN BE DEFINED IN SWITCH TABLE
FS.NFS==1B0 ;THIS SWITCH IS NEVER PART OF A FILE SPECIFICATION
; THIS SHOULD BE SET ON GLOBAL SWITCHES
; ** VERY IMPORTANT TO GET RIGHT **
FS.LRG==1B1 ;THE MAX AND DEFAULT VALUES ARE 0 OR .GT. 2**17
FS.NUE==1B2 ;NO USER EXIT ON THIS SWITCH
FS.VRQ==1B3 ;VALUE REQUIRED
FS.OBV==1B4 ;OR BIT VALUES TO RIGHT HALF
FS.NOS==1B5 ;SWITCH TAKES "NO" PREFIX (INTERNAL FOR SN MACRO ONLY)
FS.NCM==1B6 ;SWITCH DOES NOT CONSTITUTE A COMMAND [102]
; (FOR /RUN, /OPTION, /EXIT)
FS.SKP==1B7 ;SUCCESSFUL SWITCH PROCESSOR WILL SKIP RETURN
;DON'T USE FS.R??, WHICH ARE DEFINED IN C.MAC
;MACRO TO BUILD THE TABLES FROM THE SWTCHS MACRO
DEFINE DOSCAN(PFX),<
XALL
;;TABLE OF SIXBIT SWITCH NAMES
DEFINE X($NAME,$PROC,$POINT,$DEFLT,$MAX,$FLAGS),<
EXP SIXBIT /$NAME/
>
PFX'N: SWTCHS
PFX'L==.-PFX'N
;;TABLE OF BYTE POINTERS TO STORE RESULT
IF2,<
DEFINE X($NAME,$PROC,$POINT,$DEFLT,$MAX,$FLAGS),<
..TEMP==0
IRP $POINT,<
IFE ..TEMP-1,<
$POINT ;$NAME
>
IFE ..TEMP-2,<
POINT 36,$POINT,35 ;$NAME
>
IFIDN <$POINT><*P>,<..TEMP==1> ;;PARTIAL WORD
IFIDN <$POINT><*F>,<..TEMP==2> ;;FULL WORD
>
IFB <$POINT>,<
Z ;$NAME
..TEMP==1>
IFE ..TEMP,<
IFN <$POINT>_-^D24,< ;;THIS EVEN ALLOWS "POINT 1,2,FOO##"
..TEMP==1
$POINT ;$NAME
>
IFE ..TEMP,<
POINT 36,$POINT,35 ;$NAME
>
>>>
PFX'P: SWTCHS
;;TABLE OF IF LT 0, IOWD KEY TABLE
;; OR IF GE 0, XWD MAX,PROCESSOR
MX.==0
DEFINE X($NAME,$PROC,$POINT,$DEFLT,$MAX,$FLAGS),<
IF2,<
IFE <$FLAGS>&FS.LRG,<IFG <$MAX>-377777,<PRINTX ?MAXIMUM OF /$NAME CANNOT BE GT 377777>>
>
..TEMP==1
IFN <$FLAGS>&FS.LRG,<IFN <$MAX>,<..TEMP==0>>
IFN ..TEMP,<
XWD $MAX,$PROC ;$NAME
>
IFE ..TEMP,<
XWD [$MAX],$PROC ;$NAME
>
>
PFX'M: SWTCHS
;;FLAGS,,DEFAULT VALUE
PD.==0
DEFINE X($NAME,$PROC,$POINT,$DEFLT,$MAX,$FLAGS),<
IF2,<
IFL <$DEFLT>,<IFN <$DEFLT>+1,<PRINTX ?DEFAULT OF /$NAME CANNOT BE NEGATIVE>>
IFE <$FLAGS>&FS.LRG,<IFG <$DEFLT>-777777,<PRINTX ?DEFAULT OF /$NAME CANNOT BE GT 777777>>
>
IFB <$FLAGS>,<..TEMR==0>
IFNB <$FLAGS>,<..TEMR==($FLAGS)>
..TEMP==1
IFN <$FLAGS>&FS.LRG,<IFN <$DEFLT>,<..TEMP==0>>
IFN ..TEMP,<
XWD ..TEMR,$DEFLT ;$NAME
>
IFE ..TEMP,<
XWD ..TEMR,[$DEFLT] ;$NAME
>
>
PFX'D: SWTCHS
PURGE ..TEMP,..TEMR
SALL
>
SUBTTL Meta-Character definitions
;FUNNY CHARACTERS (NOT IN MACTEN)
.CHDLE==20 ;DATA LINK ESCAPE
.CHDC1==21 ;DEVICE CONTROL (1)
.CHDC2==22 ;DEVICE CONTROL (2)
.CHDC3==23 ;DEVICE CONTROL (3)
.CHDC4==24 ;DEVICE CONTROL (4)
;SPECIAL CHARACTERS FOR SCAN
.CHALX==0 ;ALTMODE
.CHEOL==-1 ;END OF LINE
.CHEOF==-2 ;END OF FILE
;GUIDE WORDS (TURNED INTO PSEUDO CHARACTERS)
;MUST PARALLEL .FXT?? DEFINTIONS
.CHGWD==4000 ;BASE OFFSET
.CHAND==4001 ;'AND'
.CHOR==04002 ;'OR'
.CHNOT==4003 ;'NOT'
.CHBEG==4006 ;'BEGIN'
.CHEND==4007 ;'END'
.CHIFA==4011 ;'IFAND'
.CHIFN==4013 ;'IFNOT'
.CHISA==4020 ;'IFSAME'
.CHIDF==4021 ;'IFDIFFERENT'
.CHIOL==4022 ;'IFOLDER'
.CHINE==4023 ;'IFNEWER'
.CHISM==4024 ;'IFSMALLER'
.CHIBG==4025 ;'IFBIGGER'
SUBTTL DAP protocol definition
COMMENT \
The DAP (Data Access Protocol) messages are defined via the following
macros.
XM Defines a DAP message type
XD Defines a field within a DAP message
Field types are:
A 1 ASCII characters
B 2 Binary (integer)
C 3 Binary, 5 DAP bytes compressed into 1 -10 word
F 4 Flags
I 5 Image (8-bit bytes)
M 6 Menu
T 7 Time (1 word internally)
Field type modifiers are:
V Variable field length
X Extensible field
XF Defines a flag within a DAP field
XV Defines a value within a DAP field
DAP message types are of the form $DHnam where "nam" is the name of the
DAP message type (e.g., $DHCFG is a DAP configuration message).
DAP fields are known by three letter names, from which the following
symbols come about:
$DAnam Global index into the DAP execution table
$DBnam Length of field in DAP bytes
$DLnam Length of the field in PDP-10 words
$DTnam Type of field (ASCII, flags, etc.)
DAP flags are known by three letter names, from which the following
symbols are derived:
DB$flg DAP flag bit number
DF$flg Internal (PDP-10) bit number
D1$flg First-word bit mask a la DF$flg
D2$flg Second-word bit mask
DAP field values are known by three letter names of the form $DVnam.
The DAP "execution" table is built from the DAP definition which follows.
The execution table has an entry for each DAP message type. Following each
DAP message type entry is a series of entries, one for each field within
the DAP message type.
There are two major macros used which generate the usable DAP information:
the DAP macro; and the DODAP macro.
The DAP macro defines the actual DAP protocol, symbols, and so on, but
is not of itself any use to the program. It is the DAP macro that is visable
to the user (and which hopefully looks nice and is understandable).
The DODAP macro actually generates useful symbols, tables, and so forth.
The DODAP macro takes a single argument which controls how DODAP will expand
the DAP macro into program-usable symbols/tables/whatever. The arguments are:
DEF Define all of the program symbols associated with the DAP
protocol as well as the DAP storage offsets within the DAP
block within the I/O CDB. No binary code is generated.
XCT Generates the DAP "execution" table - the program table which
defines the DAP protocol message-field by message-field.
IDX Generates the index table for the execution table - the
program table which is used for finding the start of a
particular message template within the execution table.
XTX Generates the text table which parallels the execution table
and which is used for DAP protocol errors.
STS Generates the status code table for all DAP I/O-related
status codes and associated text meaning.
CLN Clean up the listing by .XCREFfing junk symbols (so they do
not clutter up the CREF listing) and PURGEing those
symbols no longer needed.
\
SUBTTL DAP message field definitions
;Following is a complete (5.3) DAP specification. The following definition
;is used to later build the DAP "execution" table used in both the recep-
;tion and transmission of DAP messages to remote systems. Although there
;is no message type 0 within DAP itself, that position is effectively oc-
;cupied by the template for the generic DAP message header.
;
;Entries marked "(**)" are "local" facilities not available in other
;strict implementations of DAP.
DEFINE DAP,<
;(xxx) DAP MESSAGE HEADER
XM DAP,0,<DAP message type>
XD MHF,5FX,,<Message header flags>
XF SID,0,<Stream ID field present>
XF HLN,1,<LENGTH field present>
XF HL2,2,<LEN256 field present>
XF BCT,3,<BITCNT field present>
XF XX1,4,<Reserved>
XF SHX,5,<SYSPEC field present>
XF MOR,6,<More data coming>
XD SID,1B,,<Stream identification>
XD HLN,1B,,<Message data length (LSB)>
XD HL2,1B,,<Message data length (MSB)>
XD BCT,1B,,<Trailing (unused) bit count>
XD SHX,4IV,,<SYSPEC system-specific data>
;(001) CONFIGURATION
XM CFG,1,<Configuration>
XD MSZ,2B,,<Maximum DAP protocol message size>
XD OST,1B,,<Operating system type>
XV ORT,1,<RT-11>
XV ORE,2,<RSTS/E>
XV ORS,3,<RSX-11S>
XV ORM,4,<RSX-11M>
XV ORD,5,<RSX-11D>
XV OIA,6,<IAS>
XV OVX,7,<VAX/VMS>
XV OT2,8,<TOPS-20>
XV OT1,9,<TOPS-10>
XV OR8,10,<RTS-8>
XV OS8,11,<OS-8>
XV ORP,12,<RSX-11M+>
XV OCP,13,<COPOS/11>
XV OPS,14,<P/OS>
XV OEL,15,<ELAN>
XV OCM,16,<CP/M>
XV OMS,17,<MS-DOS>
$DVOMX==$DVOMS ;Maximum known operating system type
XD FST,1B,,<File system type>
XV F11,1,<RMS-11>
XV F20,2,<RMS-20>
XV F32,3,<RMS-32>
XV FF1,4,<FCS-11>
XV FRT,5,<RT-11>
XV FNS,6,<No file system supported>
XV FT2,7,<TOPS-20>
XV FT1,8,<TOPS-10>
XV FO8,9,<OS-8>
XV F3S,10,<RMS-32S>
XV FCM,11,<CP/M>
XV FMS,12,<MS-DOS>
$DVFMX==$DVFMS ;Maximum known file system type
XD DVR,1B,,<DAP protocol version>
XD DVE,1B,,<DAP ECO level>
XD DVU,1B,,<DAP user (customer) mod level>
XD DVS,1B,,<DAP software (release) version>
XD DVT,1B,,<DAP user software version>
XD CNF,10FX,,<Generic configuration flags>
XF FPA,0,<File preallocation>
XF SFO,1,<Sequential file organization>
XF RFO,2,<Relative file organization>
XF DFO,3,<Direct file organization>
XF FXC,4,<File extension via CONTROL(EXTEND)>
XF SFT,5,<Sequential file transfer>
XF RAR,6,<Random access by relative record number>
XF RAB,7,<Random access by virtual block number>
XF RAK,8,<Random access by key>
XF RAH,9,<Random access by hash code>
XF RAA,10,<Random access by record file address>
XF MFO,11,<Multi-keyed indexed file organization>
XF SWA,12,<Switching record access mode>
XF APN,13,<Append file access>
XF CMF,14,<Command file submission/execution>
XF CCP,15,<Data compression>
XF MDS,16,<Multiple data streams>
XF DFC,17,<Return file attributes via CONTROL(DISPLAY)>
XF BLR,18,<Blocking of messages up to response>
XF BLU,19,<Unlimited blocking of DAP messages>
XF C25,20,<Extended length field in header>
XF FCK,21,<File data checksuming>
XF KEA,22,<Key definition attributes message>
XF AEA,23,<Allocation attributes message>
XF SEA,24,<Summary attributes message>
XF DIR,25,<Directory listing capability>
XF TEA,26,<Date/time attributes message>
XF PEA,27,<Protection attributes message>
XF LEA,28,<Access control list message>
XF SPO,29,<Spooling via FOP field>
XF CMS,30,<Command file via FOP field>
XF FDE,31,<File deletion via FOP field>
XF DFS,32,<Default file specification>
XF SRA,33,<Sequential record access>
XF FTR,34,<File transfer recovery>
XF BTC,35,<BITCNT field of data message>
XF WST,36,<Warning STATUS mesage>
XF REN,37,<File rename via ACCESS message>
XF WLD,38,<File wildcarding>
XF CGN,39,<GO/NOGO via ACCOPT field>
XF NAM,40,<Name message>
XF DSG,41,<DAP message segmentation>
XF CFA,42,<Change of main attributes via ACCOMP(CHANGE)>
XF CFD,43,<Change of date/time via ACCOMP(CHANGE)>
XF CFP,44,<Change of protection via ACCOMP(CHANGE)>
XF CFN,45,<Change of file name via ACCOMP(CHANGE)>
XF MAR,46,<Return of modified attributes on create>
XF N3D,47,<3-part NAME messages via DISPLAY field>
XF CRA,48,<Change of main attributes via ACCESS(RENAME)>
XF CRD,49,<Change of date/time via ACCESS(RENAME)>
XF CRP,50,<Change of protection via ACCESS(RENAME)>
XF BLC,51,<BLKCNT field in CONTROL message>
XF OVO,52,<Octal file version only>
;(002) ATTRIBUTES
XM ATR,2,<Main attributes>
XD M02,6MX,,<Attributes message menu>
XD DTY,2FX,,<Data type>
XF ASC,0,<7-bit ASCII characters>
XF IMG,1,<Image 8-bit bytes>
XF EBC,2,<EBCDIC characters>
XF CPR,3,<Compressed format>
XF EXE,4,<Executable code>
XF PRV,5,<Privileged code>
XF XX2,6,<Reserved>
XF ZOD,7,<Zero on delete>
XD ORG,1B,,<File organization>
XV OSQ,0,<Sequential>
XV ORL,16,<Relative>
XV OID,32,<Indexed>
XV OHS,48,<Hashed>
XD RFM,1B,,<Record format>
XV FNR,0,<No (undefined) record format>
XV FFX,1,<Fixed length records>
XV FVR,2,<Variable length records>
XV FVF,3,<Variable with fixed control>
XV FST,4,<[ASCII] Stream format>
XV FSL,5,<[ASCII] Stream-LF format>
XV FSC,6,<[ASCII] Stream-CR format>
XD RAT,3FX,,<Record attributes>
XF FCC,0,<FORTRAN carriage control>
XF ILC,1,<Implied <LF><CR> envelope>
XF PRN,2,<VAX Print-file carriage control>
XF NSB,3,<Records do not span physical blocks>
XF EFC,4,<Embedded format control>
XF CCC,5,<COBOL carriage control>
XF LSA,6,<Line-sequence-numbered ASCII>
XF MCY,7,<MACY11 format>
XD BLS,2B,,<Physical block size (bytes) for device>
XD MRS,2B,,<[Maximum] record size (bytes)>
XD ALQ,5CV,,<Allocation quantity (blocks)>
XDE BKS,1B,,<Bucket size (blocks)>
XD FSZ,1B,,<Fixed header size of variable length record>
XDE MRN,5CV,,<Maximum record number>
XD RTS,40AV,,<Run-time system name>
XD DEQ,2B,,<Default extension (growth) quantity (blocks)>
XD FOP,6FX,,<File access options>
XF RWO,0,<Rewind on OPEN>
XF RWC,1,<Rewind on CLOSE>
XF XX3,2,<Reserved>
XF EOT,3,<Skip to EOT>
XF DLC,4,<Don't lock file if not properly CLOSEd>
XF DRF,5,<Directory file>
XF FLK,6,<File locked>
XF CTG,7,<Contiguous allocation required>
XF SUP,8,<Supersede extant file on CREATE>
XF NEF,9,<Do not skip to EOF on OPEN for PUT>
XF TMP,10,<Temporary file>
XF TMD,11,<Temporary file, mark for DELETE on CLOSE>
XF XX4,12,<Reserved>
XF DMO,13,<Rewind and dismount on CLOSE>
XF WCK,14,<Enable write checking>
XF RCK,15,<Enable read checking>
XF CIF,16,<CREATE new file if one doesn't exist>
XF OLF,17,<Override lock on file on OPEN>
XF SQO,18,<Sequential access only>
XF MXV,19,<Maximize version number>
XF SPC,20,<Spool file to line printer on CLOSE>
XF SCF,21,<Submit as command file on CLOSE>
XF DLT,22,<Delete file on CLOSE>
XF CBT,23,<Try for contiguous file, ok if fails>
XF WLF,24,<Wait for locked file>
XF DFW,25,<Deferred write>
XF TEF,26,<Truncate to EOF on CLOSE>
XF OFP,27,<Output file parse>
XD BSZ,1B,,<Byte size (bits per logical data byte)>
XD DEV,6FX,,<Device characteristics>
XF REC,0,<Record-oriented>
XF CCL,1,<Carriage-control>
XF TRM,2,<Device is a terminal>
XF MDI,3,<Directory-structured>
XF SDI,4,<Single-directory only>
XF SQD,5,<Sequential block oriented (e.g., MTA)>
XF NUL,6,<Device is NUL:>
XF FOD,7,<File-oriented (e.g., disk or tape)>
XF DSH,8,<Device is sharable>
XF SPL,9,<Device is being spooled>
XF MNT,10,<Device is currently mounted>
XF DMT,11,<Device is marked for dismount>
XF ALL,12,<Device is allocated>
XF IDV,13,<Can do input>
XF ODV,14,<Can do output>
XF SWL,15,<Software write-locked>
XF AVL,16,<Available for use>
XF ELG,17,<Error logging enabled>
XF MBX,18,<Device is a mailbox>
XF RTM,19,<Real time in nature>
XF RAD,20,<Random access>
XF DRC,21,<Read-checking enabled>
XF DWC,22,<Write-checking enabled>
XF FRN,23,<Foreign in nature>
XF NDV,24,<Network device>
XF GDV,25,<Generic device>
XD SDC,6FX,,<Spooling device characteristics>
TRC < XF RCO,0,<Record-oriented>
XF CRG,1,<Carriage-control>
XF TTY,2,<Device is a terminal>
XF DRS,3,<Directory-structured>
XF SDO,4,<Single-directory only>
XF SQB,5,<Sequential block oriented (e.g., MTA)>
XF DNL,6,<Device is NUL:>
XF FOR,7,<File-oriented (e.g., disk or tape)>
XF SHD,8,<Device is sharable>
XF SPD,9,<Device is being spooled>
XF CMN,10,<Device is currently mounted>
XF MKD,11,<Device is marked for dismount>
XF ALD,12,<Device is allocated>
XF CDI,13,<Can do input>
XF CDO,14,<Can do output>
XF WLK,15,<Software write-locked>
XF AVU,16,<Available for use>
XF ELE,17,<Error logging enabled>
XF MAI,18,<Device is a mailbox>
XF RLT,19,<Real time in nature>
XF RAC,20,<Random access>
XF RCE,21,<Read-checking enabled>
XF WCE,22,<Write-checking enabled>
XF FGN,23,<Foreign in nature>
XF NET,24,<Network device>
XF GEN,25,<Generic device> > ;;END TRC
XD LRL,2B,,<Longest record length within file>
XD HBK,5CV,,<Highest virtual file block allocated>
XD EBK,5CV,,<End of file virtual block number>
XD FFB,2B,,<First free byte in EBK>
XD SBN,5CV,,<Starting block number of file on media>
;(003) ACCESS
XM ACS,3,<File access>
XD AFC,1B,,<Access function>
XV ARD,1,<Open file (for read)>
XV AWR,2,<Open file (for write)>
XV ARN,3,<Rename>
XV ADL,4,<Delete>
XV ADR,6,<Directory list>
XV ASB,7,<Submit as command file>
XV AEC,8,<Execute command file>
XD AOP,5FX,,<Access options>
XF OKE,0,<I/O errors are not fatal>
XF MAC,1,<Modify attributes as needed for create>
XF ACK,3,<Checksum the file data>
XF GNG,4,<Go/Nogo (wait for confirmation)>
XD FIL,255AV,,<File specification>
XD FAC,3FX,,<File access operations>
XF PUT,0,<Put access>
XF GET,1,<Get access>
XF DEL,2,<Delete access>
XF UPD,3,<Update access>
XF TRN,4,<Truncate access>
XF BIO,5,<Block-mode I/O>
XF BRO,6,<Switching between block and record I/O>
XF APP,7,<Append Access>
XD SHR,3FX,,<Shared file access operations>
XF PUT,0,<Put access>
XF GET,1,<Get access>
XF DEL,2,<Delete access>
XF UPD,3,<Update access>
XF MSA,4,<Multiple-stream access>
XF UPI,5,<User-provided interlocking>
XF NIL,6,<No access by other users>
XD ADS,4FX,,<Access display requested>
XF DMA,0,<Main attributes>
XF DKD,1,<Key definition attributes>
XF DAA,2,<Allocation attributes>
XF DSA,3,<Summary attributes>
XF DDT,4,<Date and time attributes>
XF DFP,5,<File protection attributes>
XF XX5,6,<Reserved>
XF DAC,7,<Access control list attributes>
XF DNM,8,<Name message with resultant file>
XF DN3,9,<3-part name messages (vol, dir, fil)>
XD PSW,40AV,,<File password>
;(004) CONTROL
XM CTL,4,<Control>
XD CFC,1B,,<Control function>
XV CGT,1,<Get (read) record or block>
XV CON,2,<Connect (initialize) data stream>
XV CUP,3,<Update current record>
XV CPT,4,<Put (write) record or block>
XV CDL,5,<Delete current record>
XV CRW,6,<Rewind file>
XV CTN,7,<Truncate file>
XV CMD,8,<Modify file attributes>
XV CRR,9,<Release (unlock) record>
XV CFR,10,<Free (unlock) all records>
XV CXB,11,<EXTEND-BEGIN via following allocation>
XV CFL,12,<Flush out I/O data>
XV CNV,13,<Next volume processing>
XV CFI,14,<Find record>
XV CXE,15,<EXTEND-END>
XV CDS,16,<Display (retrieve) file attributes>
XV CFS,17,<Forward space the file (blocks)>
XV CBS,18,<Backspace the file (blocks)>
XV CCP,19,<Checkpoint the file>
XV CRG,20,<Get (read) recovery>
XV CPG,21,<Put (write) recovery>
XD M04,4MX,,<Control message menu>
XD RAC,1B,,<Record access mode>
XV CSR,0,<Sequential record access>
XV CKY,1,<Keyed access>
XV CRF,2,<Random access by record file address>
XV CSF,3,<Sequential file access>
XV CBM,4,<Block-mode access>
XV CBF,5,<Block-mode file transfer>
XDE KEY,255IV,,<Access key>
XDE KRF,1B,,<Key of reference>
XD ROP,6FX,,<Record level operations>
XF EOF,0,<Position to EOF>
XF FDL,1,<Fast record delete>
XF UIF,2,<Update existing records>
XF CSH,3,<Use hash code>
XF LOA,4,<Follow fill quantities>
XF ULK,5,<Manual locking/unlocking>
XF TPT,6,<Truncate put>
XF RHD,7,<Read ahead>
XF WBH,8,<Write behind>
XF KGE,9,<Key is greater than or equal>
XF KGT,10,<Key is greater than>
XF NLR,11,<Do not lock record>
XF RLR,12,<Read locked record>
XF BLI,13,<Block I/O>
XF CKL,14,<Compare for key limit reached>
XF NXR,15,<Non-existant record processing>
XF WLR,16,<Wait for locked record>
XF RRL,17,<Read record regardless of lock>
XF LRR,18,<Lock record for read only>
XDE HSH,5IV,,<Hash code>
XD CDS,4FX,,<Control display requested>
XD BLK,1B,,<Block count ("blocking factor") per I/O operation>
;(005) CONTINUE
XM CNT,5,<Continue transfer>
XDS M05,4MX,,<Internal CONTINUE message menu>
XD C2F,1B,,<Continue function code>
XV CTA,1,<Try again>
XV CSK,2,<Skip and continue>
XV CAB,3,<Abort current file operation>
XV CRS,4,<Resume processing>
XV CTR,5,<Terminate ACCESS operation>
;(006) ACKNOWLEDGE
XM ACK,6,<Acknowledge>
;(007) ACCESS COMPLETE
XM ACM,7,<Access complete>
XDS M07,4MX,,<Internal ACCOMP message menu>
XD A2F,1B,,<Access completion function>
XV ACL,1,<Close current file>
XV ARS,2,<Response (to access complete)>
XV AKL,3,<Kill/reset/abort current file>
XV AES,4,<End of data stream>
XV ASK,5,<Skip (this wildcarded file)>
XV ACB,6,<CHANGE-BEGIN start up RENAME operation>
XV ACE,7,<CHANGE-END>
XV ATR,8,<Terminate ACCESS operation>
XD AFO,6FX,,<File access options>
TRC < XF RDO,0,<Rewind on OPEN>
XF RDC,1,<Rewind on CLOSE>
XF XX6,2,<Reserved>
XF SKE,3,<Skip to EOT>
XF NPC,4,<Don't lock file if not properly CLOSEd>
XF DFL,5,<Directory file>
XF LOK,6,<File locked>
XF CTA,7,<Contiguous allocation required>
XF SEX,8,<Supersede extant file on CREATE>
XF NSK,9,<Do not skip to EOF on OPEN for PUT>
XF TPF,10,<Temporary file>
XF TPD,11,<Temporary file, mark for DELETE on CLOSE>
XF XX7,12,<Reserved>
XF RDM,13,<Rewind and dismount on CLOSE>
XF EWC,14,<Enable write checking>
XF ERC,15,<Enable read checking>
XF CRN,16,<CREATE new file if one doesn't exist>
XF OLK,17,<Override lock on file on OPEN>
XF SQA,18,<Sequential access only>
XF MVN,19,<Maximize version number>
XF SFL,20,<Spool file to line printer on CLOSE>
XF SBF,21,<Submit as command file on CLOSE>
XF DEC,22,<Delete file on CLOSE>
XF CTO,23,<Try for contiguous file, ok if fails>
XF WTL,24,<Wait for locked file>
XF DWR,25,<Deferred write>
XF TEN,26,<Truncate to EOF on CLOSE>
XF POF,27,<Output file parse> > ;;END TRC
XD CKS,2B,,<File data checksum>
;(008) DATA
XM DAT,8,<Data>
XD RCN,8BV,,<Record number>
;(009) STATUS
XM STS,9,<Status>
XDS M09,4MX,,<Internal STATUS message menu>
XD STC,2B,,<Status code>
XD SRA,8BV,,<Record address for status>
XD SRN,8BV,,<Record number for status>
XD STV,8BV,,<Secondary status value>
XD STX,255AV,,<Status textual description>
;(010) KEY DEFINITION ATTRIBUTES EXTENSION
XM KYX,10,<Key definition attributes extension>
XD M10,6MX,,<Key definition message menu>
XDE KOP,3FX,,<Key options>
XF DUP,0,<Duplicates allowed>
XF CHG,1,<Key changes allowed>
XF NKC,2,<Null key character defined>
XDE DFL,2B,,<Data bucket fill>
XDE IFL,2B,,<Index bucket fill>
XDE NSG,1B,,<Number of segment pairs following>
XDE POS,2B,,<Byte position of key within record>
XDE SIZ,1B,,<Byte count of key within record>
XDE REF,1B,,<Key of reference indicator>
XDE KNM,40AV,,<Key name a la REF>
XDE NUL,1B,,<Value of null key character>
XDE IAN,1B,,<Index area number>
XDE LAN,1B,,<Lowest level index area number>
XDE DAN,1B,,<Data level area number>
XDE DTP,1B,,<Data type>
XDE RVB,8BV,,<Root VBN for key>
XDE HAL,5BV,,<Hash algorithm value>
XDE DVB,8BV,,<VBN of start of first data bucket>
XDE DBS,1B,,<Data bucket size field>
XDE IBS,1B,,<Index bucket size field>
XDE LVL,1B,,<Level of root bucket>
XDE TKS,1B,,<Total key size>
XDE MRL,2B,,<Minimum record length>
;(011) ALLOCATION ATTRIBUTES EXTENSION
XM ALC,11,<Allocation attributes extension>
XD M11,6MX,,<Allocation extension message menu>
XD VOL,2B,,<Relative volume number>
XD ALN,4FX,,<Alignment options>
XF ANY,0,<No specified allocation placement>
XF CYL,1,<Align on cylinder boundary>
XF ALB,2,<Align to specified logical block>
XF AVB,3,<Allocate near to virtual block>
XF ARF,4,<Allocate near specified related file>
XD ALP,4FX,,<Allocation options>
XF HRD,0,<Error if can't align as requested>
XF ACT,1,<Contiguous allocation required>
XF ACB,2,<Contiguous best try>
XF ONC,3,<Align on any cylinder boundry>
XD LOC,8BV,,<Location for allocation>
XDE RFI,16BV,,<Related file ID>
XD AAL,5CV,,<File allocation (blocks)>
XD AID,1B,,<Area ID>
XDE BKZ,1B,,<Bucket size for this area>
XD AEQ,2B,,<Default extension quantity>
;(012) SUMMARY ATTRIBUTES EXTENSION
XM SUM,12,<Summary attributes extension>
XD M12,6MX,,<Summary attributes extension message menu>
XDE NOK,1B,,<Number of keys defined in file>
XDE NOA,1B,,<Number of areas defined in file>
XDE NOR,1B,,<Number of record descriptors in file>
XDE PVN,2B,,<Prologue version number>
;(013) DATE AND TIME ATTRIBUTES EXTENSION
XM TIM,13,<Date and time attributes extension>
XD M13,6MX,,<Date and time extension message menu>
XD CDT,18T,,<Creation date and time>
XD UDT,18T,,<Update date and time>
XD EDT,18T,,<Delete date and time>
XD RVN,2B,,<Revision number>
XD BDT,18T,,<BACKUP date and time>
XD PDT,18T,,<Physical (media) creation date and time>
XD ADT,18T,,<Access date and time>
;(014) PROTECTION ATTRIBUTES EXTENSION
XM PRT,14,<Protection attributes extension>
XD M14,6MX,,<Protection extension message menu>
XD PNM,40AV,,<Owner name>
XD PSY,3FX,,<System access protection field>
XF PRD,0,<Deny read access>
XF PWR,1,<Deny write access>
XF PEX,2,<Deny execute access>
XF PDE,3,<Deny delete access>
XF PAP,4,<Deny append access>
XF PDI,5,<Deny directory list access>
XF PUP,6,<Deny update access>
XF PCP,7,<Deny change protection access>
XF PXT,8,<Deny extend access>
XD POW,3FX,,<Owner access protection field>
TRC < XF RD1,0,<Deny read access>
XF WR1,1,<Deny write access>
XF EX1,2,<Deny execute access>
XF DE1,3,<Deny delete access>
XF AP1,4,<Deny append access>
XF DI1,5,<Deny directory list access>
XF UP1,6,<Deny update access>
XF CP1,7,<Deny change protection access>
XF XT1,8,<Deny extend access> > ;;END TRC
XD PGR,3FX,,<Group access protection field>
TRC < XF RD2,0,<Deny read access>
XF WR2,1,<Deny write access>
XF EX2,2,<Deny execute access>
XF DE2,3,<Deny delete access>
XF AP2,4,<Deny append access>
XF DI2,5,<Deny directory list access>
XF UP2,6,<Deny update access>
XF CP2,7,<Deny change protection access>
XF XT2,8,<Deny extend access> > ;;END TRC
XD PWL,3FX,,<World access protection field>
TRC < XF RD3,0,<Deny read access>
XF WR3,1,<Deny write access>
XF EX3,2,<Deny execute access>
XF DE3,3,<Deny delete access>
XF AP3,4,<Deny append access>
XF DI3,5,<Deny directory list access>
XF UP3,6,<Deny update access>
XF CP3,7,<Deny change protection access>
XF XT3,8,<Deny extend access> > ;;END TRC
;(015) NAME
XM NAM,15,<Name>
XD NTY,3FX,,<Name string type>
XF NFS,0,<Full file specification>
XF NFN,1,<File name>
XF NDN,2,<Directory name>
XF NVN,3,<Volume (/device/structure) name>
XF NDF,4,<Default file specification>
XF FRF,5,<Related file specification>
XD NMS,255AV,,<Name specification>
;(016) ACCESS CONTROL LIST ATTRIBUTES EXTENSION
XM ACL,16,<Access control list attributes extension>
XDE ACT,1B,,<Repeatition count of ACL fields (following)>
XDE ACE,80AV,,<Access control list entry>
;(128) USER IDENTIFICATION
XM USR,128,<User identification>
XD M77,6MX,,<User ID message menu>
XD UID,40AV,,<User identification>
XD UAC,40AV,,<Accounting information>
XD UOP,132AV,,<Other accounting information/options>
;The DAP I/O status codes
XS ABO,1,<Operation Aborted>
XS ACC,2,<Could not access file>
XS ACT,3,<"FILE" activity precludes operation>
XS AID,4,<Bad area ID>
XS ALN,5,<Alignment options error>
XS ALQ,6,<Allocation quantity too large>
XS ANI,7,<Not ANSI "D" format>
XS AOP,10,<Allocation options error>
XS AST,11,<Invalid operation at AST level>
XS ATR,12,<Attribute read error>
XS ATW,13,<Attribute write error>
XS BKS,14,<Bucket size too small>
XS BKZ,15,<Bucket size too large>
XS BLN,16,<"BLN" length error>
XS BOF,17,<Beginning of file detected>
XS BPA,20,<Private pool address not multiple of 4>
XS BPS,21,<Private pool size not multiple of 4>
XS BUG,22,<Internal RMS error condition detected>
XS CCR,23,<Cannot connect RAM>
XS CHG,24,<$UPDATE changed key without XB$CHG>
XS CHK,25,<Bucket format check byte error>
XS CLS,26,<RSTS/E Close function failed>
XS COD,27,<Invalid or unsupported "COD" field>
XS CRE,30,<Could not create file>
XS CUR,31,<No current record>
XS DAC,32,<Deaccess error during close>
XS DAN,33,<Data AREA number invalid>
XS DEL,34,<RFA-accessed record was deleted>
XS DEV,35,<Bad Device, or inappropriate device type>
XS DIR,36,<Error in Directory name>
XS DME,37,<Dynamic memory exhausted>
XS DNF,40,<Directory not found>
XS DNR,41,<Device not ready>
XS DPE,42,<Device positioning error>
XS DTP,43,<"DTP" field invalid>
XS DUP,44,<Duplicate key detected without XB$DUP>
XS ENT,45,<Enter function failed>
XS ENV,46,<Operation not selected in "ORG">
XS EOF,47,<End-of-file detected>
XS ESS,50,<Expanded string area too short>
XS EXP,51,<Expiration date not reached>
XS EXT,52,<File extend failure>
XS FAB,53,<Not a valid FAB>
XS FAC,54,<Illegal FAC>
XS FEX,55,<File already exists>
XS FID,56,<Invalid File ID>
XS FLG,57,<Invalid flag bit combination>
XS FLK,60,<File locked by another user>
XS FND,61,<"FIND" Function failed>
XS FNF,62,<File not found>
XS FNM,63,<Error in file name>
XS FOP,64,<Invalid file options>
XS FUL,65,<Device/file is full>
XS IAN,66,<Index AREA number invalid>
XS IFI,67,<Invalid IFI value or unopened file>
XS IMX,70,<Max areas/key exceeded>
XS INI,71,<INIT never issued>
XS IOP,72,<Operation illegal or invalid for file organization>
XS IRC,73,<Illegal record encountered>
XS ISI,74,<Invalid ISI value>
XS KBF,75,<Bad KEY buffer address>
XS KEY,76,<Invalid KEY field>
XS KRF,77,<Invalid key-of-reference>
XS KSZ,100,<KEY size too large>
XS LAN,101,<Lowest-level-index AREA number invalid>
XS LBL,102,<Not ANSI labelled tape>
XS LBY,103,<Logical channel busy>
XS LCH,104,<Logical channel number too large>
XS LEX,105,<Logical extend error>
XS LOC,106,<"LOC" Field invalid>
XS MAP,107,<Buffer mapping error>
XS MKD,110,<Could not mark file for deletion>
XS MRN,111,<MRN neg or less than KEY>
XS MRS,112,<MRS==0 for fixed records>
XS NAM,113,<"NAM" block address invalid>
XS NEF,114,<Not positioned to EOF>
XS NID,115,<Cannot allocate index descriptor>
XS NPK,116,<No primary key defined>
XS OPN,117,<RSTS/E open function failed>
XS ORD,120,<XAB'S not in correct order>
XS ORG,121,<Invalid file organization value>
XS PLG,122,<File prolog error>
XS POS,123,<"POS" field invalid>
XS PRM,124,<Bad file date field>
XS PRV,125,<File protection violation>
XS RAB,126,<Not a valid RAB>
XS RAC,127,<Illegal RAC value>
XS RAT,130,<Illegal record attributes>
XS RBF,131,<Invalid record buffer address>
XS RER,132,<File read error>
XS REX,133,<Record already exists>
XS RFA,134,<Bad RFA value>
XS RFM,135,<Invalid record format>
XS RLK,136,<Target bucket locked>
XS RMV,137,<RSX-F11ACP remove function failed>
XS RNF,140,<Record not found>
XS RNL,141,<Record not locked>
XS ROP,142,<Invalid record options>
XS RPL,143,<Error reading prolog>
XS RRV,144,<Invalid RRV record encountered>
XS RSA,145,<RAB stream currently active>
XS RSZ,146,<Bad record size>
XS RTB,147,<Record too big for user's buffer>
XS SEQ,150,<Primary key out of sequence>
XS SHR,151,<SHR field invalid>
XS SIZ,152,<SIZ field invalid>
XS STK,153,<Stack too big for save area>
XS SYS,154,<System directive error>
XS TRE,155,<Index tree error>
XS TPE,156,<Error in file extension>
XS UBF,157,<Invalid user buffer address>
XS USZ,160,<Invalid user buffer size>
XS VER,161,<Error in version number>
XS VOL,162,<Invalid volume number>
XS WER,163,<File write error>
XS WLK,164,<Device is write-locked>
XS WPL,165,<Error writing prolog>
XS XAB,166,<Not valid XAB>
XS DDI,167,<Default directory invalid>
XS CAA,170,<Cannot access argument list>
XS CCF,171,<Cannot close file>
XS CDA,172,<Cannot deliver AST>
XS CHN,173,<Channel assignment failure>
XS TTO,174,<Terminal output ignored due to ^O>
XS TTY,175,<Terminal input ignored due to ^Y>
XS DNA,176,<Default filename string address error>
XS DVI,177,<Device ID field invalid>
XS ESA,200,<Expanded string address error>
XS FNA,201,<Filename string address error>
XS FSZ,202,<FSZ field invalid>
XS IAL,203,<Invalid argument list>
XS KFF,204,<Known file found>
XS LNE,205,<Logical name error>
XS NOD,206,<Node name error>
XS AOK,207,<Operation successful>
XS DUP,210,<Record inserted had duplicate key>
XS IDX,211,<Index update error but record inserted>
XS RLK,212,<Record locked but read anyway>
XS RRV,213,<Record inserted in primary but . . .>
XS CNO,214,<File was created but not OPENed>
XS PBF,215,<Bad prompt buffer address>
XS PND,216,<Asynchronous operation pending>
XS QUO,217,<Quoted string error>
XS RHB,220,<Record header buffer invalid>
XS RLF,221,<Related file invalid>
XS RSS,222,<Resultant string size invalid>
XS RST,223,<Resultant string address invalid>
XS SQO,224,<Operation not sequential>
XS SUC,225,<Operation successful>
XS CFS,226,<Created file superseded extant version>
XS SYN,227,<File specification syntax error>
XS TMO,230,<Time-out period expired>
XS BLK,231,<FB$BLK record attribute not supported>
XS BSZ,232,<Byte size illegal>
XS CDR,233,<Cannot disconnect RAB>
XS CGJ,234,<Cannot get JFN for file>
XS COF,235,<Cannot OPEN file>
XS JFN,236,<Bad JFN>
XS PEF,237,<Cannot position to EOF>
XS TRU,240,<Cannot truncate file>
XS UDF,241,<File is in undefined state and cannot be accessed>
XS XCL,242,<File must be OPENed for exclusive access>
XS DIF,243,<Directory full>
XS HNS,244,<Handler not in system>
XS HDE,245,<Fatal hardware error>
XS WBE,246,<Attempt to write beyond EOF>
XS ONP,247,<Option not present>
XS DNA,250,<Device is not attached>
XS DAA,251,<Device is already attached>
XS DVA,252,<Device is not attachable>
XS SRU,253,<Sharable resource in use>
XS IOR,254,<Illegal overlay request>
XS CRC,255,<Block check or CRC error>
XS CNE,256,<Caller's nodes exhausted>
XS IFF,257,<Index file full>
XS FHF,260,<File header full>
XS AFW,261,<Accessed for write>
XS FHC,262,<File header checksum failure>
XS ATE,263,<Attribute control list error>
XS FLU,264,<File already accessed on LUN>
XS BTF,265,<Bad tape format>
XS IOD,266,<Illegal operation on file descriptor block>
XS RDD,267,<Rename to different device illegal>
XS RFE,270,<Rename to already extant file illegal>
XS ROF,271,<Cannot rename old file system>
XS FAO,272,<File already OPEN>
XS PAR,273,<Device parity error>
XS EOV,274,<End of volume detected>
XS DOV,275,<Data overrun>
XS BDB,276,<Bad block on device>
XS EOT,277,<End of tape detected>
XS NBS,300,<No buffer space for file>
XS FEA,301,<File exceeds allocated space>
XS TNI,302,<Task not installed>
XS ULE,303,<Unlock error>
XS NFL,304,<No file accessed on LUN>
XS SRF,305,<Send or Receive error>
XS SPL,306,<Spool or submit command file failure>
XS NMF,307,<No more files>
XS CKE,310,<DAP file transfer checksum error>
XS QTA,311,<Quota exceeded>
XS BUG,312,<Internal network error detected>
XS TTC,313,<Terminal input aborted due to ^C>
XS DFL,314,<Data bucket fill size too big>
XS ESL,315,<Expanded string length invalid>
XS IBF,316,<Illegal bucket format>
XS IBK,317,<Bucket size of LAN different from IAN in XAB>
XS IDX,320,<Index not initialized>
XS IFA,321,<Illegal file attributes or corrupt file header>
XS IFL,322,<Index bucket fill size too big>
XS KNM,323,<Keyname buffer not readable or writable in XAB>
XS KSI,324,<Index bucket will not hold two keys>
XS MBC,325,<Multi-buffer count illegal>
XS NET,326,<Network operation failed at remote node>
XS ALK,327,<Record is already locked>
XS DEL,330,<Deleted record successfully accessed>
XS LIM,331,<Retrieved record exceeds key value>
XS NOP,332,<Key XAB not filled in>
XS RNF,333,<Nonexistent record successfully accessed>
XS PLV,334,<Unsupported prologue version>
XS REF,335,<Illegal key-of-reference in XAB>
XS RSL,336,<Resultant string length invalid>
XS RVU,337,<Error updating rrv's, paths to data may be lost>
XS SEG,340,<Too many segments>
XS SUP,342,<Operation not supported over network>
XS WBE,343,<Error on write-behind>
XS WLD,344,<Invalid wildcard operation>
XS WSF,345,<Working set full>
XS DLN,346,<Directory listing - error reading name>
XS DLA,347,<Directory listing - error reading file attributes>
XS DPN,350,<Directory listing - name protection failure>
XS DPA,351,<Directory listing - attributes protection failure>
XS DLE,352,<Directory listing - file attributes do not exist>
XS DLR,353,<Directory listing - cannot recover>
XS SNE,354,<Sharing not enabled>
XS SPE,355,<Sharing page count exceeded>
XS UPI,356,<UPI not set when sharing with BRO set>
XS ACS,357,<Error in access control string>
XS TNS,360,<Terminator not seen>
XS BES,361,<Bad escape sequence>
XS PES,362,<Partial escape sequence>
XS WCC,363,<Invalid wildcard context value>
XS IDR,364,<Invalid directory rename operation>
XS STR,365,<User structure went invalid during operation>
XS FTM,366,<Network file transfer mode precludes operation>
XS CRS,367,<File was created in stream format>
XS GBC,370,<Invalid global buffer count>
XS ENQ,371,<ENQ system service request failed>
XS NTF,372,<Network operation failed at remote node>
XS NTS,373,<Network operation not supported>
XS CRM,374,<CRMPSC failed to map global buffers>
XS DLK,375,<Deadlock detected>
XS XEQ,376,<Exceeded ENQ quota>
XS JNF,377,<Journal name not found>
XS JOP,400,<Journal options illegal for device>
XS RUM,401,<Recovery unit mis-call>
XS NOJ,402,<Journal needed for inaccessible file>
XS RLK,403,<Record relocked in recovery unit>
XS ODQ,404,<Disk usage exceeds disk quota>
XS ICS,405,<Incompatible file sharing>
XS LWC,406,<Lock wait cancelled>
XS XNF,407,<XAB not found>
XS RUP,410,<Recovery unit in progress, CLOSE disallowed>
XS JNS,411,<Operation not supported under RMS journaling>
XS NRU,412,<Operation prohibited outside of recovery unit>
XS REE,413,<RENAME failed, recovery failed, file is lost>
XS CJF,414,<CJF system service request failed>
XS TMR,415,<SETIMR system service request failed>
XS FBM,416,<File being modified (another writer)>
XS DNA,417,<Device not available>
XS NSD,420,<No such device>
XS POA,421,<Partial allocation only>
XS BNF,422,<Specified block not free>
XS CSD,423,<Can't supersede directory file>
XS DNE,424,<Can't delete non-empty directory file>
XS SNF,425,<Sub-file-directory not found>
XS SLE,426,<Search list empty (no devices found)>
XS LVL,427,<Sub-file-directories nested too deeply>
XS NCE,430,<NOCREATE on entire search list>
XS FCU,431,<Can't update file>
XS ENC,432,<Exceeded network capacity>
XS TNA,433,<TSK network device not available>
XS NSN,434,<No such network node>
XS SIU,435,<Sub-file-directory in use on RENAME>
XS NDR,436,<Can't delete file with NO-DELETE lock>
XS JCH,437,<Too many simultaneous file accesses>
XS SSL,440,<Can't RENAME sub-file-directory to lower level>
XS DDU,441,<Device is "down" and unuseable>
XS DRS,442,<Device is restricted>
XS DCM,443,<Device controlled by MDA, not ASSIGNable>
XS DAJ,444,<Device already ASSIGNed to another job>
XS IDM,445,<Illegal I/O data mode>
XS LLE,446,<Lineprinter page limit exceeded>
XS VFE,447,<Lineprinter VFU format error>
XS LUC,450,<Lineprinter "undefined character" error>
XS VRP,451,<Lineprinter VFU RAM parity error>
XS FSE,452,<File specification "parse" error>
XS NNO,453,<No such nodes>
XS ANO,454,<All nodes inaccessible>
XS SNO,455,<Some nodes inaccessible>
XS NDV,456,<No such devices>
XS ADV,457,<All devices inaccessible>
XS SDV,460,<Some devices inaccessible>
XS NDI,461,<No such directories>
XS ADI,462,<All directories inaccessible>
XS SDI,463,<Some directories inaccessible>
XS NFI,464,<No such files>
XS AFI,465,<All files inaccessible>
XS SFI,466,<Some files inaccessible>
XS ARJ,467,<All files rejected by file constraints>
XS SRJ,470,<Some files rejected by file constraints>
> ;END DAP MACRO DEFINITION
DEFINE DODAP(GEN),<
IFIDN <GEN><DEF>,<
;;Generate DAP symbols, offsets, etc.
;;XM -- DEFINE DAP MESSAGE TYPE
;;Call is:
;;
;; XM <nam>,<cod>,<txt>
;;
;;Where <nam> is the four letter name of the DAP message type;; <cod>
;;is the binary value of the message type;; and <txt> is the textual
;;description of the message type (for error printout).
DEFINE XM(NAM,COD,TXT),<
IFE ^D<COD>,<
..XDI==-1 ;;INITIALIZE GLOBAL INDEX
..XDC==0 ;;INITIALIZE OFFSET INTO .IODAP IN I/O CDB
> ;;END IFE COD
..XDI==..XDI+1 ;;BUMP GLOBAL INDEX
..XDO==0 ;;RESET LOCAL INDEX
..XDM==-1000 ;;RESET MENU FIELD COUNTER
..XDB==0 ;;DUMMY SYMBOL
..XDT==0 ;;DUMMY SYMBOL
..XDE==0 ;;DUMMY SYMBOL
..XDS==0 ;;DUMMY SYMBOL
..XDV==0 ;;DUMMY SYMBOL
..XDX==0 ;;DUMMY SYMBOL
IFDEF $DA'NAM,<IFN <$DA'NAM-..XDI>,<
XMERR NAM,Multiply defined DAP message type>>
$DH'NAM==^D<COD> ;;DEFINE THE MESSAGE TYPE
$DA'NAM==..XDI ;;DEFINE EXECUTION TABLE INDEX
$DB'NAM==..XDB ;;BYTE LENGTH (MEANINGLESS)
$DL'NAM==..XDL ;;WORD LENGTH (MEANINGLESS)
$DT'NAM==..XDT ;;FIELD TYPE (MESSAGE TYPE)
..XCT(NAM,\..XDE,\..XDS,\..XDV,\..XDX,\..XDT,\..XDC,\..XDB,\..XDO)
> ;;END OF XM MACRO DEFINITION
;;STILL IN DODAP DEFINITION
;;STILL IN IFIDN <GEN><DEF>
;;XD -- DEFINE DAP FIELD
;;Call is:
;;
;; XD <nam>,<nnt>,<dfl>,<txt>
;;
;;Where <nam> is the unique three-letter name for the DAP field;; <nnt>
;;is a character description of the field - "nn" is the field length in
;;DAP bytes and "t" is the field type;; <dfl> is the default field value;;
;;and <txt> is the field description text suitable for error typeout.
DEFINE XD(NAM,NNT,DFL,TXT),<..XD(NAM,NNT,0,0,DFL,TXT)>
DEFINE XDE(NAM,NNT,DFL,TXT),<..XD(NAM,NNT,1,0,DFL,TXT)>
DEFINE XDS(NAM,NNT,DFL,TXT),<..XD(NAM,NNT,0,1,DFL,TXT)>
;;STILL IN DODAP DEFINITION
;;STILL IN IFIDN <GEN><DEF>
;;..XD -- MAIN "GUTS" OF XD? MACROS
DEFINE ..XD(NAM,NNT,ILM,SKP,DFL,TXT),<
IFIDN <NAM><DAP>,<XDERR NAM,"DAP" is a reserved field name>
..XDI==..XDI+1 ;;BUMP GLOBAL INDEX
..XDO==..XDO+1 ;;BUMP LOCAL INDEX
..XDM==..XDM+1 ;;ADVANCE MENU FIELD COUNTER
..XDB==-1 ;;INITIALIZE FIELD SIZE
..XDT==-1 ;;INITIALIZE FIELD TYPE (NONE)
..XDE==ILM ;;FLAG FIELD LEGALITY
..XDS==SKP ;;NOTE FIELD WORTH (SKIP OR NOT)
..XDV==0 ;;INITIALIZE VARIABLE-LENGTH FLAG
..XDX==0 ;;INITIALIZE EXTENSIBLE-FIELD FLAG
;;LOOP OVER THE FIELD TYPE TO DECODE AND BUILD LENGTH AND TYPE SYMBOLS
IRPC NNT,<
..XDA==0 ;;INITIALIZE ACTIVITY COUNTER
IFGE <"NNT"-"0">,<IFLE <"NNT"-"9">,<
IFL ..XDB,<..XDB==0>
..XDB==<..XDB*^D10>+^D<NNT>
..XDA==1>>
IFE <"NNT"-"A">,<
IFG ..XDT,<XDERR NAM,Multiple field type "A" specified>
..XDA==<..XDT==^O1>> ;;FIELD TYPE ASCII
IFE <"NNT"-"B">,<
IFG ..XDT,<XDERR NAM,Multiple field type "B" specified>
..XDA==<..XDT==^O2>> ;;FIELD TYPE IS BINARY
IFE <"NNT"-"C">,<
IFG ..XDT,<XDERR NAM,Multiple field type "C" specified>
..XDA==<..XDT==^O3>> ;;FIELD TYPE IS COMPRESSED "B"
IFE <"NNT"-"F">,<
IFG ..XDT,<XDERR NAM,Multiple field type "F" specified>
..XDA==<..XDT==^O4>> ;;FIELD TYPE IS FLAGS
IFE <"NNT"-"I">,<
IFG ..XDT,<XDERR NAM,Multiple field type "I" specified>
..XDA==<..XDT==^O5>> ;;FIELD TYPE IS IMAGE BYTES
IFE <"NNT"-"M">,<
IFG ..XDT,<XDERR NAM,Multiple field type "M" specified>
..XDM==-1 ;;ALL FURTHER FIELDS ARE MENUED
..XDA==<..XDT==^O6>>
IFE <"NNT"-"T">,<
IFG ..XDT,<XDERR NAM,Multiple field type "T" specified>
..XDA==<..XDT==^O7>> ;;FIELD TYPE IS DATE/TIME
IFE <"NNT"-"V">,<
IFN ..XDV,<XDERR NAM,"V" flag multiply specified>
IFN ..XDX,<XDERR NAM,Both "V" and "X" flags specified>
..XDA==<..XDV==1>> ;;FIELD LENGTH IS VARIABLE
IFE <"NNT"-"X">,<
IFN ..XDV,<XDERR NAM,Both "V" and "X" flags specified>
IFN ..XDX,<XDERR NAM,"X" flag multiply specified>
..XDA==<..XDX==1>> ;;FIELD IS EXTENSIBLE DATA
IFE ..XDA,<XDERR NAM,Illegal field descriptor "NNT">
> ;;END OF IRPC
IFL ..XDB,<XDERR NAM,No field length specified>
IFL ..XDT,<XDERR NAM,No field type specified>
IFE ..XDT-$DXTAS,<..XDL==<<..XDB+^D4>/^D5>>
IFE ..XDT-$DXTBN,<..XDL==<<<..XDB*^D8>+^D35>/^D36>>
IFE ..XDT-$DXTCN,<..XDL==1>
IFE ..XDT-$DXTFL,<..XDL==<<<..XDB*^D7>+^D35>/^D36>>
IFE ..XDT-$DXT8I,<..XDL==<<..XDB+^D3>/^D4>>
IFE ..XDT-$DXTMN,<..XDL==<<<..XDB*^D7>+^D35>/^D36>>
IFE ..XDT-$DXTDT,<..XDL==1>
IFDEF $DA'NAM,<IFN <$DA'NAM-..XDI>,<
XDERR NAM,Multiply defined field name>>
$DA'NAM==..XDI ;;DAP GLOBAL INDEX
$DT'NAM==..XDT ;;FIELD DATA TYPE
$DB'NAM==..XDB ;;DAP FIELD LENGTH IN BYTES
$DL'NAM==..XDL ;;DAP FIELD LENGTH IN -10 WORDS
;;IF A MENU FIELD, DEFINE FIELD BIT NAME FOR TM?? MACROS
IFGE ..XDM,<DM$'NAM==<<<..XDM/^D7>*^D7> + <^D6-<..XDM-<<..XDM/^D7>*^D7>>>>>
;;DEFINE THE FIELD EXECUTION TABLE ENTRY FOR LATER "XCT"ION
..XCT(NAM,\..XDE,\..XDS,\..XDV,\..XDX,\..XDT,\..XDC,\..XDB,\..XDO)
IFE ..XDE,<
IF1,<.ID'NAM==000000+..XDC> ;;DAP ENTRY NAME IN THE I/O CDB
IF2,<.ID'NAM==.IODAP+..XDC> ;;DAP ENTRY NAME IN THE I/O CDB
$DLDAP==<..XDC==..XDC+..XDL>>;;ACCUMLATE TOTAL ALLOCATION
IFG $DLDAP-^O777,<XDERR NAM,DAP area within I/O CDB too large>
> ;;END OF ..XD MACRO DEFINITION
;;..XCT -- HELPER FOR XM AND XD?
DEFINE ..XCT(NAM,XDE,XDS,XDV,XDX,XDT,XDC,XDB,XDO),<DEFINE $DX'NAM,<
BYTE (8)<<<<<<<<XDE_1>!XDS>_1>!XDV>_1>!XDX>_1>_3>
(4)XDT (9)XDC (9)XDB (6)XDO > ;;END $DX'NAM MACRO
> ;;END ..XCT MACRO DEFINITION
;;STILL IN DODAP DEFINITION
;;STILL IN IFIDN <GEN><DEF>
;;XF -- DEFINE DAP FLAG
;;Call is:
;;
;; XF <flg>,<dit>,<txt>
;;
;;Where <flg> is the three letter name of the DAP flag;; <dit> is the DAP
;;bit number of the flag within the DAP field;; and <txt> is the textual
;;description of the flag, suitable for error printout.
DEFINE XF(FLG,DIT,TXT),<
IFL ^D<DIT>,<XFERR FLG,Negative flag bit illegal>
IFGE <^D<DIT>-^D70>,<XFERR FLG,Flag bit greater than second word!!!>
DB$'FLG==^D<DIT> ;;DAP FLAG BIT VALUE
;;NOW TRANSLATE THE DAP BIT INTO THE CORRESPONDING -10 BIT
..XDF==<<<^D<DIT>/^D7>*^D7> + <^D6-<^D<DIT>-<<^D<DIT>/^D7>*^D7>>>>
D1$'FLG==0 ;;INITIALIZE FIRST WORD MASK
D2$'FLG==0 ;;INITIALIZE SECOND WORD MASK
IFLE <..XDF-^D34>,<D1$'FLG==1B<..XDF>>
IFGE <..XDF-^D35>,<IFL <..XDF-^D70>,<D2$'FLG==1B<..XDF-^D35>>>
IFDEF DF$'FLG,<IFN <DF$'FLG-..XDF>,<
XFERR FLG,Multiply defined DAP flag bit>>
DF$'FLG==..XDF ;;DEFINE INTERNAL DAP BIT
> ;;END OF XF MACRO DEFINITION
;;STILL IN DODAP DEFINITION
;;STILL IN IFIDN <GEN><DEF>
;;XV -- DEFINE DAP FIELD VALUE
;;Call is:
;;
;; XV <nam>,<val>,<txt>
;;
;;Where <nam> is the name of the particular <val> which the field may
;;take;; and <txt> is a textual description of the field value, suitable
;;for error printout.
DEFINE XV(NAM,VAL,TXT),<
IFDEF $DV'NAM,<IFN <$DV'NAM-^D<VAL>>,<
XVERR NAM,Multiply defined DAP field value>>
$DV'NAM==^D<VAL> ;;DEFINE FIELD VALUE
> ;;END OF XV MACRO DEFINITION
DEFINE XS(NAM,STS,TXT),<
$DS'NAM==^O<STS> ;;DEFINE STATUS CODE
> ;;END XS MACRO DEFINITION
;;STILL IN DODAP DEFINITION
;;STILL IN IFIDN <GEN><DEF>
;;HELPER MACROS TO X?
;;XMERR -- ERROR IN XM MACRO
DEFINE XMERR(NAM,STR),<PRINTX ? Error in XM macro for NAM: STR>
;;XDERR -- ERROR IN XD MACRO
DEFINE XDERR(NAM,STR),<PRINTX ? Error in XD macro for NAM: STR>
;;XFERR -- ERROR IN XF MACRO
DEFINE XFERR(NAM,STR),<PRINTX ? Error in XF macro for NAM: STR>
;;XVERR -- ERROR IN XV MACRO
DEFINE XVERR(NAM,STR),<PRINTX ? Error in XV macro for NAM: STR>
> ;;END IFIDN <GEN><DEF>
;;STILL IN DODAP DEFINITION
IFIDN <GEN><XCT>,<
;;Generate DAP execution table
DEFINE XM(NAM,COD,TXT),<$DX'NAM>
DEFINE XD(NAM,NNT,DFL,TXT),<$DX'NAM>
DEFINE XDE(NAM,NNT,DFL,TXT),<$DX'NAM>
DEFINE XDS(NAM,NNT,DFL,TXT),<$DX'NAM>
DEFINE XF(NAM,DIT,TXT),<>
DEFINE XV(NAM,VAL,TXT),<>
DEFINE XS(NAM,STS,TXT),<>
> ;;END IFIDN <GEN><XCT>
;;STILL IN DODAP DEFINITION
IFIDN <GEN><IDX>,<
;;Generate DAP execution table index based on message type
DEFINE XM(NAM,COD,TXT),<
IFE ^D<COD>,<..XDI==-1> ;;INITIALIZE GLOBAL INDEX
..XDI==..XDI+1 ;;BUMP GLOBAL INDEX
XWD ..XDI,^D<COD> ;;BUILD INDEX TABLE ENTRY
> ;;END XM MACRO DEFINITION
DEFINE XD(NAM,NNT,DFL,TXT),<..XDI==..XDI+1>
DEFINE XDE(NAM,NNT,DFL,TXT),<..XDI==..XDI+1>
DEFINE XDS(NAM,NNT,DFL,TXT),<..XDI==..XDI+1>
DEFINE XF(NAM,DIT,TXT),<>
DEFINE XV(NAM,VAL,TXT),<>
DEFINE XS(NAM,STS,TXT),<>
> ;;END IFIDN <GEN><IDX>
;;STILL IN DODAP DEFINITION
IFIDN <GEN><XTX>,<
;;Generate text table (for error printout) based on DAP execution table
DEFINE XM(NAM,COD,TXT),<[ASCIZ \TXT\]>
DEFINE XD(NAM,NNT,DFL,TXT),<[ASCIZ \TXT\]>
DEFINE XDE(NAM,NNT,DFL,TXT),<[ASCIZ \TXT\]>
DEFINE XDS(NAM,NNT,DFL,TXT),<[ASCIZ \TXT\]>
DEFINE XF(NAM,DIT,TXT),<>
DEFINE XV(NAM,VAL,TXT),<>
DEFINE XS(NAM,STS,TXT),<>
> ;;END IFIDN <GEN><XTX>
;;STILL IN DODAP DEFINITION
IFIDN <GEN><STS>,<
;;Generate textual messages corresponding to DAP status codes
DEFINE XM(NAM,COD,TXT),<>
DEFINE XD(NAM,NNT,DFL,TXT),<>
DEFINE XDE(NAM,NNT,DFL,TXT),<>
DEFINE XDS(NAM,NNT,DFL,TXT),<>
DEFINE XF(NAM,DIT,TXT),<>
DEFINE XV(NAM,VAL,TXT),<>
DEFINE XS(NAM,STS,TXT),<
XWD [ASCIZ \TXT\],^O<STS>
> ;;END XS MACRO DEFINITION
> ;;END IFIDN <GEN><STS>
;;STILL IN DODAP DEFINITION
IFIDN <GEN><CLN>,<
;;Cleanup the CREF listing
IF1,<
.XCREF ..FF, ..FM, ..FN, ..F0, ..F1
.XCREF ..XDA, ..XDB, ..XDC, ..XDE, ..XDF, ..XDI, ..XDL,
.XCREF ..XDM, ..XDO, ..XDS, ..XDT, ..XDV, ..XDX
.XCREF ..XM, ..XD, ..XD0
> ;;END IF1
IF2,<
PURGE ..XDA, ..XDB, ..XDC, ..XDE, ..XDF, ..XDI, ..XDL,
PURGE ..XDM, ..XDO, ..XDS, ..XDT, ..XDV, ..XDX
PURGE ..XM, ..XD, ..XD0
> ;;END IF2
> ;;END IFIDN <GEN><CLN>
;;STILL IN DODAP DEFINITION
IFDIF <GEN><CLN>,<DAP> ;;EXECUTE ALL THE GRUNDGE
IFIDN <GEN><XCT>,<EXP 0> ;;TERMINATE THE EXECUTION TABLE
IFIDN <GEN><IDX>,<EXP 0> ;;TERMINATE THE INDEX TABLE
IFIDN <GEN><XTX>,<EXP 0> ;;TERMINATE THE TEXT TABLE
IFIDN <GEN><STS>,<EXP 0> ;;TERMINATE THE STATUS TABLE
> ;;END DODAP MACRO DEFINITION
;DEFINE DAP EXECUTION TABLE FORMAT AND SYMBOLS
DX$ILM==1B0 ;ILLEGAL (UNSUPPORTED) FIELD
DX$SKP==1B1 ;IGNORE (NEVER TRANSMIT) FIELD
DX$VAR==1B2 ;FIELD IS VARIABLE LENGTH (FIRST BYTE IS COUNT)
DX$XTN==1B3 ;FIELD DATA IS EXTENSIBLE
; 1B4 ;FREE BIT
; 1B5 ;FREE BIT
; 1B6 ;FREE BIT
; 1B7 ;FREE BIT
DX$TYP==17B11 ;FIELD DATA TYPE
$DXTMS==0 ;DAP MESSAGE TYPE
$DXTAS==1 ;ASCII CHARACTERS
$DXTBN==2 ;BINARY (INTEGER) DATA
$DXTCN==3 ;KROCK 1 WORD (5 BYTE) BINARY DATA
$DXTFL==4 ;FLAGS (BITS)
$DXT8I==5 ;IMAGE 8-BIT BYTES
$DXTMN==6 ;MENU FIELD
$DXTDT==7 ;DATE/TIME (-10 ONE WORD, DAP ASCII STREAM)
$DXTMX==7 ;MAXIMUM FIELD DATA TYPE
DX$IOX==777B20 ;INDEX INTO .IODAP AREA WITHIN I/O CDB
DX$LNB==777B29 ;FIELD LENGTH (DAP BYTES)
DX$COD==77B35 ;FIELD NUMBER WITHIN MESSAGE
SUBTTL DAP field manipulation macros
;MOVD -- MOVE FROM DAP FIELD
;MOVDM -- MOVE TO DAP FIELD
;MOVD1 -- MOVE ONE-WORD-VALUE FROM DAP FIELD
;MOVD1M -- MOVE ONE-WORD-VALUE TO DAP FIELD
;MOVDII -- MOVE IMMEDIATE A LA DAP FIELD
;Call is:
;
; MOVD <ac>,<fld>[,<adr>]
; MOVDM <ac>,<fld>[,<adr>]
; MOVD1 <ac>,<fld>[,<adr>]
; MOVD1M <ac>,<fld>[,<adr>]
; MOVDII <ac>,<fld>,<val>
;
;where <ac> is the register to load/store; <fld> is the generic name
;of the DAP field to be referenced; <adr> is the actual address
;in main memory (if not specified, then the .IDfld location in the
;I/O CDB addressed by the IO register will be used); and <val> is the
;DAP data value (e.g., a flag mask) to be loaded.
DEFINE MOVD(AC,FLD,ADR),<
IFE $DT'FLD-$DXTMS,<MDERR FLD,Message type field illegal>
IFE $DT'FLD-$DXTAS,<MDERR FLD,ASCII type field illegal>
IFLE $DL'FLD,<MDERR FLD,Field length too small>
IFG $DL'FLD-2,<MDERR FLD,Field too large>
IFB <ADR>,<
IFE $DL'FLD-1,<MOVE AC,.ID'FLD(IO)>
IFE $DL'FLD-2,<DMOVE AC,.ID'FLD(IO)> >
IFNB <ADR>,<
IFE $DL'FLD-1,<MOVE AC,ADR>
IFE $DL'FLD-2,<DMOVE AC,ADR> >
> ;END MOVD MACRO DEFINITION
DEFINE MOVDM(AC,FLD,ADR),<
IFE $DT'FLD-$DXTMS,<MDERR FLD,Message type field illegal>
IFE $DT'FLD-$DXTAS,<MDERR FLD,ASCII type field illegal>
IFLE $DL'FLD,<MDERR FLD,Field length too small>
IFG $DL'FLD-2,<MDERR FLD,Field too large>
IFB <ADR>,<
IFE $DL'FLD-1,<MOVEM AC,.ID'FLD(IO)>
IFE $DL'FLD-2,<DMOVEM AC,.ID'FLD(IO)> >
IFNB <ADR>,<
IFE $DL'FLD-1,<MOVEM AC,ADR>
IFE $DL'FLD-2,<DMOVEM AC,ADR> >
> ;END MOVDM MACRO DEFINITION
DEFINE MOVD1(AC,FLD,ADR),<
IFE $DT'FLD-$DXTMS,<MDERR FLD,Message type field illegal>
IFE $DT'FLD-$DXTAS,<MDERR FLD,ASCII type field illegal>
IFE $DT'FLD-$DXTFL,<MDERR FLD,Flags type field illegal>
IFE $DT'FLD-$DXT8I,<MDERR FLD,Image type field illegal>
IFE $DT'FLD-$DXTMN,<MDERR FLD,Menu type field illegal>
IFLE $DL'FLD,<MDERR FLD,Field length too small>
IFG $DL'FLD-2,<MDERR FLD,Field too large>
IFB <ADR>,<
IFE $DL'FLD-1,<MOVE AC,.ID'FLD(IO)>
IFE $DL'FLD-2,<MOVE AC,.ID'FLD+1(IO)> >
IFNB <ADR>,<
IFE $DL'FLD-1,<MOVE AC,ADR>
IFE $DL'FLD-2,<MOVE AC,1+ADR> >
> ;END MOVD1 MACRO DEFINITION
DEFINE MOVD1M(AC,FLD,ADR),<
IFE $DT'FLD-$DXTMS,<MDERR FLD,Message type field illegal>
IFE $DT'FLD-$DXTAS,<MDERR FLD,ASCII type field illegal>
IFE $DT'FLD-$DXTFL,<MDERR FLD,Flags type field illegal>
IFE $DT'FLD-$DXT8I,<MDERR FLD,Image type field illegal>
IFE $DT'FLD-$DXTMN,<MDERR FLD,Menu type field illegal>
IFLE $DL'FLD,<MDERR FLD,Field length too small>
IFG $DL'FLD-2,<MDERR FLD,Field too large>
IFB <ADR>,<
IFE $DL'FLD-1,<MOVEM AC,.ID'FLD(IO)>
IFE $DL'FLD-2,<CAIA
JRST .+3
SETZM .ID'FLD(IO)
MOVEM AC,.ID'FLD+1(IO)> >
IFNB <ADR>,<
IFE $DL'FLD-1,<MOVEM AC,ADR>
IFE $DL'FLD-2,<CAIA
JRST .+3
SETZM ADR
MOVEM AC,1+ADR> >
> ;END MOVD1M MACRO DEFINITION
DEFINE MOVDII(AC,FLD,VAL),<
IFE $DT'FLD-$DXTMS,<MDERR FLD,Message type field illegal>
IFE $DT'FLD-$DXTAS,<MDERR FLD,ASCII type field illegal>
IFLE $DL'FLD,<MDERR FLD,Field length too small>
IFG $DL'FLD-2,<MDERR FLD,Field too large>
IFE $DT'FLD-$DXTBN,<
IFE $DL'FLD-1,<MOVX AC,<VAL>>
IFE $DL'FLD-2,<DMOVE AC,[EXP 0,<VAL>]> >
IFE $DT'FLD-$DXTCN,<MOVX AC,<VAL>>
IFE $DT'FLD-$DXTFL,<
..FF(<VAL>)
IFE $DL'FLD-1,<MOVX AC,<..F0>>
IFE $DL'FLD-2,<DMOVE AC,[EXP <..F0>,<..F1>]> >
IFE $DT'FLD-$DXT8I,<MDERR FLD,Image type field illegal>
IFE $DT'FLD-$DXTMN,<
..FM(<VAL>)
IFE $DL'FLD-1,<MOVX AC,<..F0>>
IFE $DL'FLD-2,<DMOVE AC,[EXP <..F0>,<..F1>]> >
IFE $DT'FLD-$DXTDT,<MOVX AC,<VAL>>
> ;END MOVDII MACRO DEFINITION
DEFINE MDERR(NAM,STR),<PRINTX ? Error in MOVDxx macro for NAM: STR>
;FJUMPE -- JUMP IF ALL FLAGS ZERO
;FJUMPN -- JUNP IF NOT ALL FLAGS ZERO
;Call is:
;
; jump <ac>,<fld>,<adr>
;
;Where <ac> is the register which contains the named field (either
;flags or menu); <fld> is the generic field name contained in <ac>;
;and <adr> is the resultant jump address.
;
;NOTE: The jump macros can not be skipped!
DEFINE FJUMPE(AC,FLD,ADR),<
IFE $DT'FLD-$DXTMS,<JMERR FLD,Message type field illegal>
IFE $DT'FLD-$DXTAS,<JMERR FLD,ASCII type field illegal>
IFE $DT'FLD-$DXTBN,<JMERR FLD,Binary type field illegal>
IFE $DT'FLD-$DXTCN,<JMERR FLD,Compressed binary type field illegal>
IFE $DT'FLD-$DXT8I,<JMERR FLD,Image type field illegal>
IFE $DT'FLD-$DXTDT,<JMERR FLD,Date/time type field illegal>
IFG $DL'FLD-2,<JMERR FLD,Field too large>
IFE $DL'FLD-1,< JUMPE AC,ADR>
IFE $DL'FLD-2,< CAIN AC,0
JUMPE AC+1,ADR>
> ;END FJUMPE MACRO DEFINITION
DEFINE FJUMPN(AC,FLD,ADR),<
IFE $DT'FLD-$DXTMS,<JMERR FLD,Message type field illegal>
IFE $DT'FLD-$DXTAS,<JMERR FLD,ASCII type field illegal>
IFE $DT'FLD-$DXTBN,<JMERR FLD,Binary type field illegal>
IFE $DT'FLD-$DXTCN,<JMERR FLD,Compressed binary type field illegal>
IFE $DT'FLD-$DXT8I,<JMERR FLD,Image type field illegal>
IFE $DT'FLD-$DXTDT,<JMERR FLD,Date/time type field illegal>
IFG $DL'FLD-2,<JMERR FLD,Field too large>
IFE $DL'FLD-1,< JUMPN AC,ADR>
IFE $DL'FLD-2,< JUMPN AC,ADR
JUMPN AC+1,ADR>
> ;END FJUMPN MACRO DEFINITION
DEFINE JMERR(NAM,STR),<PRINTX ? Error in FJUMPx macro for NAM: STR>
;TFO -- TEST DAP FLAG, SET TO ONE
;TFZ -- TEST DAP FLAG, SET TO ZERO
;TFNE -- TEST DAP FLAG, NO MODIFICATION, SKIP IF EQUAL
;TFNN -- TEST DAP FLAG, NO MODIFICATION, SKIP IF NOT EQUAL
;TFOE -- TEST DAP FLAG, SET TO ONE, SKIP IF EQUAL
;TFON -- TEST DAP FLAG, SET TO ONE, SKIP IF NOT EQUAL
;TFZE -- TEST DAP FLAG, SET TO ZERO, SKIP IF EQUAL
;TFZN -- TEST DAP FLAG, SET TO ZERO, SKIP IF NOT EQUAL
;Call is:
;
; TFxx <ac>,<flg>
;
;Where <ac> is the register which holds the flag (note that some
;flag fields are actually two words long!); and <flg> is the DAP
;field flag to be tested (multiple flags can be specified by
;enclosing the <flg> field in brackets and separating the several
;individual flags with commas). All flags are referenced by their
;defined three-letter mnemonic a la the XF macros in the DAP def-
;inition.
DEFINE TFO(AC,FLG),<
..FF(<FLG>) ;;BUILD BIT MASKS
IFE ..F0,<IFE ..F1,<TXO AC,0>> ;;NO FLAG BITS!
IFN ..F0,<IFE ..F1,<TXO AC,<..F0>>> ;;FIRST-WORD BITS ONLY
IFE ..F0,<IFN ..F1,<TXO AC+1,<..F1>>> ;;SECOND-WORD BITS ONLY
IFN ..F0,<IFN ..F1,<TXOA AC,<..F0> ;;FIRST- AND SECOND-WORD BITS
CAIA
TXO AC,<..F1>>>
> ;END TFO MACRO DEFINITION
DEFINE TFZ(AC,FLG),<
..FF(<FLG>) ;;BUILD BIT MASKS
IFE ..F0,<IFE ..F1,<TXZ AC,0>> ;;NO FLAG BITS!
IFN ..F0,<IFE ..F1,<TXZ AC,<..F0>>> ;;FIRST-WORD BITS ONLY
IFE ..F0,<IFN ..F1,<TXZ AC+1,<..F1>>> ;;SECOND-WORD BITS ONLY
IFN ..F0,<IFN ..F1,<TXZA AC,<..F0> ;;FIRST- AND SECOND-WORD BITS
CAIA
TXZ AC,<..F1>>>
> ;END TFZ MACRO DEFINITION
DEFINE TFNE(AC,FLG),<
..FF(<FLG>) ;;BUILD BIT MASKS
IFE ..F0,<IFE ..F1,<TXNE AC,0>> ;;NO FLAG BITS!
IFN ..F0,<IFE ..F1,<TXNE AC,<..F0>>> ;;FIRST-WORD BITS ONLY
IFE ..F0,<IFN ..F1,<TXNE AC+1,<..F1>>> ;;SECOND-WORD BITS ONLY
IFN ..F0,<IFN ..F1,<TXNE AC,<..F0> ;;FIRST-WORD BITS
CAIA ;;NON-SKIP
TXNE AC+1,<..F1>>> ;;SECOND-WORD BITS
> ;END TFNE MACRO DEFINITION
DEFINE TFNN(AC,FLG),<
..FF(<FLG>) ;;BUILD BIT MASKS
IFE ..F0,<IFE ..F1,<TXNN AC,0>> ;;NO FLAG BITS!
IFN ..F0,<IFE ..F1,<TXNN AC,<..F0>>> ;;FIRST-WORD BITS ONLY
IFE ..F0,<IFN ..F1,<TXNN AC+1,<..F1>>> ;;SECOND-WORD BITS ONLY
IFN ..F0,<IFN ..F1,<CAIA ;;FIRST- AND SECOND-WORD BITS
JRST .+4 ;;NON-SKIP
TXNN AC,<..F0> ;;CHECK FIRST-WORD BITS
TXNE AC,<..F1> ;; AND SECOND-WORD BITS
CAIA>> ;;SOME BIT SET - SKIP
> ;END TFNN MACRO DEFINITION
DEFINE TFOE(AC,FLG),<
..FF(<FLG>) ;;BUILD BIT MASKS
IFE ..F0,<IFE ..F1,<TXOE AC,0>> ;;NO FLAG BITS!
IFN ..F0,<IFE ..F1,<TXOE AC,<..F0>>> ;;FIRST-WORD BITS ONLY
IFE ..F0,<IFN ..F1,<TXOE AC+1,<..F1>>> ;;SECOND-WORD BITS ONLY
IFN ..F0,<IFN ..F1,<TXOE AC,<..F0> ;;FIRST-WORD BITS
CAIA ;;NON-SKIP
TXOE AC+1,<..F1>>> ;;SECOND-WORD BITS
> ;END TFOE MACRO DEFINITION
DEFINE TFON(AC,FLG),<
..FF(<FLG>) ;;BUILD BIT MASKS
IFE ..F0,<IFE ..F1,<TXON AC,0>> ;;NO FLAG BITS!
IFN ..F0,<IFE ..F1,<TXON AC,<..F0>>> ;;FIRST-WORD BITS ONLY
IFE ..F0,<IFN ..F1,<TXON AC+1,<..F1>>> ;;SECOND-WORD BITS ONLY
IFN ..F0,<IFN ..F1,<CAIA ;;FIRST- AND SECOND-WORD BITS
JRST .+4 ;;NON-SKIP
TXON AC,<..F0> ;;CHECK FIRST-WORD BITS
TXOE AC,<..F1> ;; AND SECOND-WORD BITS
CAIA>> ;;SOME BIT SET - SKIP
> ;END TFON MACRO DEFINITION
DEFINE TFZE(AC,FLG),<
..FF(<FLG>) ;;BUILD BIT MASKS
IFE ..F0,<IFE ..F1,<TXZE AC,0>> ;;NO FLAG BITS!
IFN ..F0,<IFE ..F1,<TXZE AC,<..F0>>> ;;FIRST-WORD BITS ONLY
IFE ..F0,<IFN ..F1,<TXZE AC+1,<..F1>>> ;;SECOND-WORD BITS ONLY
IFN ..F0,<IFN ..F1,<TXZE AC,<..F0> ;;FIRST-WORD BITS
CAIA ;;NON-SKIP
TXZE AC+1,<..F1>>> ;;SECOND-WORD BITS
> ;END TFZE MACRO DEFINITION
DEFINE TFZN(AC,FLG),<
..FF(<FLG>) ;;BUILD BIT MASKS
IFE ..F0,<IFE ..F1,<TXZN AC,0>> ;;NO FLAG BITS!
IFN ..F0,<IFE ..F1,<TXZN AC,<..F0>>> ;;FIRST-WORD BITS ONLY
IFE ..F0,<IFN ..F1,<TXZN AC+1,<..F1>>> ;;SECOND-WORD BITS ONLY
IFN ..F0,<IFN ..F1,<CAIA ;;FIRST- AND SECOND-WORD BITS
JRST .+4 ;;NON-SKIP
TXZN AC,<..F0> ;;CHECK FIRST-WORD BITS
TXZE AC,<..F1> ;; AND SECOND-WORD BITS
CAIA>> ;;SOME BIT SET - SKIP
> ;END TFZN MACRO DEFINITION
;TMO -- TEST MENU FLAG, SET TO ONE
;TMZ -- TEST MENU FLAG, SET TO ZERO
;TMNE -- TEST MENU FLAG, NO MODIFICATION, SKIP IF EQUAL
;TMNN -- TEST MENU FLAG, NO MODIFICATION, SKIP IF NOT EQUAL
;TMOE -- TEST MENU FLAG, SET TO ONE, SKIP IF EQUAL
;TMON -- TEST MENU FLAG, SET TO ONE, SKIP IF NOT EQUAL
;TMZE -- TEST MENU FLAG, SET TO ZERO, SKIP IF EQUAL
;TMZN -- TEST MENU FLAG, SET TO ZERO, SKIP IF NOT EQUAL
;Call is:
;
; TMxx <ac>,<flg>
;
;Where <ac> is the register which holds the flag (note that some
;flag fields are actually two words long!); and <flg> is the DAP
;menu flag to be tested (multiple flags can be specified by
;enclosing the <flg> field in brackets and separating the several
;individual flags with commas). All menu flags are referenced by
;their defined three-letter field mnemonic a la the XD macros in
;the DAP definition.
DEFINE TMO(AC,FLG),<
..FM(<FLG>) ;;BUILD BIT MASKS
IFE ..F0,<IFE ..F1,<TXO AC,0>> ;;NO FLAG BITS!
IFN ..F0,<IFE ..F1,<TXO AC,<..F0>>> ;;FIRST-WORD BITS ONLY
IFE ..F0,<IFN ..F1,<TXO AC+1,<..F1>>> ;;SECOND-WORD BITS ONLY
IFN ..F0,<IFN ..F1,<TXOA AC,<..F0> ;;FIRST- AND SECOND-WORD BITS
CAIA
TXO AC,<..F1>>>
> ;END TMO MACRO DEFINITION
DEFINE TMZ(AC,FLG),<
..FM(<FLG>) ;;BUILD BIT MASKS
IFE ..F0,<IFE ..F1,<TXZ AC,0>> ;;NO FLAG BITS!
IFN ..F0,<IFE ..F1,<TXZ AC,<..F0>>> ;;FIRST-WORD BITS ONLY
IFE ..F0,<IFN ..F1,<TXZ AC+1,<..F1>>> ;;SECOND-WORD BITS ONLY
IFN ..F0,<IFN ..F1,<TXZA AC,<..F0> ;;FIRST- AND SECOND-WORD BITS
CAIA
TXZ AC,<..F1>>>
> ;END TMZ MACRO DEFINITION
DEFINE TMNE(AC,FLG),<
..FM(<FLG>) ;;BUILD BIT MASKS
IFE ..F0,<IFE ..F1,<TXNE AC,0>> ;;NO FLAG BITS!
IFN ..F0,<IFE ..F1,<TXNE AC,<..F0>>> ;;FIRST-WORD BITS ONLY
IFE ..F0,<IFN ..F1,<TXNE AC+1,<..F1>>> ;;SECOND-WORD BITS ONLY
IFN ..F0,<IFN ..F1,<TXNE AC,<..F0> ;;FIRST-WORD BITS
CAIA ;;NON-SKIP
TXNE AC+1,<..F1>>> ;;SECOND-WORD BITS
> ;END TMNE MACRO DEFINITION
DEFINE TMNN(AC,FLG),<
..FM(<FLG>) ;;BUILD BIT MASKS
IFE ..F0,<IFE ..F1,<TXNN AC,0>> ;;NO FLAG BITS!
IFN ..F0,<IFE ..F1,<TXNN AC,<..F0>>> ;;FIRST-WORD BITS ONLY
IFE ..F0,<IFN ..F1,<TXNN AC+1,<..F1>>> ;;SECOND-WORD BITS ONLY
IFN ..F0,<IFN ..F1,<CAIA ;;FIRST- AND SECOND-WORD BITS
JRST .+4 ;;NON-SKIP
TXNN AC,<..F0> ;;CHECK FIRST-WORD BITS
TXNE AC,<..F1> ;; AND SECOND-WORD BITS
CAIA>> ;;SOME BIT SET - SKIP
> ;END TMNN MACRO DEFINITION
DEFINE TMOE(AC,FLG),<
..FM(<FLG>) ;;BUILD BIT MASKS
IFE ..F0,<IFE ..F1,<TXOE AC,0>> ;;NO FLAG BITS!
IFN ..F0,<IFE ..F1,<TXOE AC,<..F0>>> ;;FIRST-WORD BITS ONLY
IFE ..F0,<IFN ..F1,<TXOE AC+1,<..F1>>> ;;SECOND-WORD BITS ONLY
IFN ..F0,<IFN ..F1,<TXOE AC,<..F0> ;;FIRST-WORD BITS
CAIA ;;NON-SKIP
TXOE AC+1,<..F1>>> ;;SECOND-WORD BITS
> ;END TMOE MACRO DEFINITION
DEFINE TMON(AC,FLG),<
..FM(<FLG>) ;;BUILD BIT MASKS
IFE ..F0,<IFE ..F1,<TXON AC,0>> ;;NO FLAG BITS!
IFN ..F0,<IFE ..F1,<TXON AC,<..F0>>> ;;FIRST-WORD BITS ONLY
IFE ..F0,<IFN ..F1,<TXON AC+1,<..F1>>> ;;SECOND-WORD BITS ONLY
IFN ..F0,<IFN ..F1,<CAIA ;;FIRST- AND SECOND-WORD BITS
JRST .+4 ;;NON-SKIP
TXON AC,<..F0> ;;CHECK FIRST-WORD BITS
TXOE AC,<..F1> ;; AND SECOND-WORD BITS
CAIA>> ;;SOME BIT SET - SKIP
> ;END TMON MACRO DEFINITION
DEFINE TMZE(AC,FLG),<
..FM(<FLG>) ;;BUILD BIT MASKS
IFE ..F0,<IFE ..F1,<TXZE AC,0>> ;;NO FLAG BITS!
IFN ..F0,<IFE ..F1,<TXZE AC,<..F0>>> ;;FIRST-WORD BITS ONLY
IFE ..F0,<IFN ..F1,<TXZE AC+1,<..F1>>> ;;SECOND-WORD BITS ONLY
IFN ..F0,<IFN ..F1,<TXZE AC,<..F0> ;;FIRST-WORD BITS
CAIA ;;NON-SKIP
TXZE AC+1,<..F1>>> ;;SECOND-WORD BITS
> ;END TMZE MACRO DEFINITION
DEFINE TMZN(AC,FLG),<
..FM(<FLG>) ;;BUILD BIT MASKS
IFE ..F0,<IFE ..F1,<TXZN AC,0>> ;;NO FLAG BITS!
IFN ..F0,<IFE ..F1,<TXZN AC,<..F0>>> ;;FIRST-WORD BITS ONLY
IFE ..F0,<IFN ..F1,<TXZN AC+1,<..F1>>> ;;SECOND-WORD BITS ONLY
IFN ..F0,<IFN ..F1,<CAIA ;;FIRST- AND SECOND-WORD BITS
JRST .+4 ;;NON-SKIP
TXZN AC,<..F0> ;;CHECK FIRST-WORD BITS
TXZE AC,<..F1> ;; AND SECOND-WORD BITS
CAIA>> ;;SOME BIT SET - SKIP
> ;END TMZN MACRO DEFINITION
;HELPER MACRO TO RETURN FLAGS AS IMMEDIATE VALUE
;RETURNS FIRST WORD ONLY (THIS IS A KROCK IN THAT IT DEPENDS ON THE
;"OBSERVATION" THAT MOST DAP FLAGS FIT IN THE FIRST WORD, BUT IT SIMPLIFIES
;A LOT OF CODE, SO . . .)
DEFINE DPFLG1(FLG),<
..FF(<FLG>) ;;BUILD THE BIT MASKS
IFN ..F1,<PRINTX ? Second-word flags in DPFLG1 (FLG)>
<..F0>>
;SLAVE MACROS TO T?XX ABOVE
DEFINE ..FF(FLG),<
..F0==0 ;;INITIALIZE FIRST-WORD BIT MASK
..F1==0 ;;INITIALIZE SECOND-WORD BIT MASK
IRP FLG,<..FN(\<DF$'FLG/^D35>,<DF$'FLG-<<DF$'FLG/^D35>*^D35>>)>>
DEFINE ..FM(FLG),<
..F0==0 ;;INITIALIZE FIRST-WORD BIT MASK
..F1==0 ;;INITIALIZE SECOND-WORD BIT MASK
IRP FLG,<..FN(\<DM$'FLG/^D35>,<DM$'FLG-<<DM$'FLG/^D35>*^D35>>)>>
DEFINE ..FN(WRD,BIT),<..F'WRD==..F'WRD!1B<BIT>>
;NOW, TRY OUR LUCK AT BUILDING ALL THIS STUFF
;FIRST, DEFINE ALL RELEVANT DAP SYMBOLOGY
DODAP(DEF)
SUBTTL Macros to build ASCIZ tables descr. DAP Flag and Value fields
TRC <
DEFINE ..ADR(XDI),< $FV'XDI==. > ;;SYMBOL TO REMEMBER CURRENT LOC
DEFINE ..FLG(XDI,DIT),< $FL'XDI==^D<DIT> > ;;SYMBOL TO REMEMBER FLAG BIT
DEFINE ..LEN(XDI),< $VL'XDI==..XVC > ;;SYMBOL TO REMEMBER NO. VALUES
DEFINE FVMSG,<
;;Generate DAP messages corresponding to flag and value fields
DEFINE XM(NAM,COD,TXT),<
IFE ^D<COD>,<..XDI==-1> ;;INITIALIZE GLOBAL INDEX
..XDI==..XDI+1 ;;BUMP GLOBAL INDEX
> ;;END XM MACRO DEFINITION
DEFINE XD(NAM,NNT,DFL,TXT),< ..XDI==..XDI+1 ;;BUMP GLOBAL INDEX
..FST==0> ;;FLAG NEXT XF OR XV 1ST AFTER THIS XD
DEFINE XDE(NAM,NNT,DFL,TXT),<..XDI==..XDI+1 ;;BUMP GLOBAL INDEX
..FST==0> ;;FLAG NEXT XF OR XV 1ST AFTER THIS XDE
DEFINE XDS(NAM,NNT,DFL,TXT),<..XDI==..XDI+1> ;;BUMP GLOBAL INDEX
DEFINE XF(NAM,DIT,TXT),< IFE ..FST,< ..FST==-1 ;;IF 1ST FLAG IN DAP FIELD
..ADR(\..XDI) > ;; REMEMBER LOC COUNTER
EXP [ASCIZ \TXT\] ;;DESCRIBE FLAG
..FLG(\..XDI,DIT)> ;;REMEMBER FLAG BIT
DEFINE XV(NAM,VAL,TXT),< IFE ..FST,< ..FST==-1 ;;IF 1ST VALUE IN DAP FIELD
..XVC==0 ;; ZERO COUNT OF VALUES
..ADR(\..XDI) > ;; REMEMBER LOC COUNTER
XWD ^D<VAL>,[ASCIZ \TXT\] ;;DESCRIBE VALUE
..XVC==..XVC+1 ;;COUNT VALUES FOR FIELD
..LEN(\..XDI)> ;;REMEMBER NO. OF VALUES
DEFINE XS(NAM,STS,TXT),<>
DAP ;;BUILD MESSAGE TABLE
> ;;END FVMSG MACRO DEFINITION
> ;END TRC
TRC <
DEFINE ..PTR(XDI),<
IFDEF $FV'XDI,< IFDEF $VL'XDI,< XWD -$VL'XDI,$FV'XDI > ;;AOBJN FOR VALUES & TEXT PTR
IFDEF $FL'XDI,< XWD $FL'XDI,$FV'XDI > > ;;MAX FLAG BIT & TEXT PTR
IFNDEF $FV'XDI,< EXP 0> > ;;OTHERWISE ZERO
DEFINE FVIDX,<
;;Generate table pointing to messages corresponding to flag and value fields
;;This table is parallel to the DAPXCT table
DEFINE XM(NAM,COD,TXT),<
IFE ^D<COD>,<..XDI==-1> ;;INITIALIZE GLOBAL INDEX
..XDI==..XDI+1 ;;BUMP GLOBAL INDEX
EXP 0
> ;;END XM MACRO DEFINITION
DEFINE XD(NAM,NNT,DFL,TXT),<..XDI==..XDI+1 ;;BUMP GLOBAL INDEX
..PTR(\..XDI) > ;;ADDR. 1ST MSG OR ZERO
DEFINE XDE(NAM,NNT,DFL,TXT),<..XDI==..XDI+1 ;;BUMP GLOBAL INDEX
..PTR(\..XDI) > ;;ADDR. 1ST MSG OR ZERO
DEFINE XDS(NAM,NNT,DFL,TXT),<..XDI==..XDI+1 ;;BUMP GLOBAL INDEX
EXP 0 > ;;FILL WITH ZEROES TO
;;BE PARALLEL WITH DAPXCT
DEFINE XF(NAM,DIT,TXT),<>
DEFINE XV(NAM,VAL,TXT),<>
DEFINE XS(NAM,STS,TXT),<>
DAP ;;BUILD POINTERS TO MESSAGES
> ;;END FVIDX MACRO DEFINITION
> ;END TRC
SUBTTL Block storage macro definitions
DEFINE X0(SYM,SIZ<1>),<
IF1,<IFDEF SYM,<PRINTX ? Multiply-defined block offset SYM>>
..XXO==0 ;;RESET BLOCK OFFSET
..XXB==<..XXBM==0> ;;RESET BIT INDEX/MASK
SYM==<<..XXO==..XXO+<SIZ>>-<SIZ>> > ;;END OF X0 MACRO
DEFINE X(SYM,SIZ<1>),<
IF1,<IFDEF SYM,<PRINTX ? Multiply-defined block offset SYM>>
..XXB==<..XXBM==0> ;;RESET BIT INDEX/MASK
SYM==<<..XXO==..XXO+<SIZ>>-<SIZ>> > ;;END OF X MACRO
DEFINE XB(SYM,WID<1>,RBT),<
IF1,<IFDEF SYM,<PRINTX ? Multiply-defined bit field SYM>>
IFB <RBT>,<
..XXRB==<..XXB==..XXB+WID>
IFG ..XXRB-^D36,<PRINTX ? Bit field SYM exceeds 36 bits>>
IFNB <RBT>,<..XXRB==RBT+1>
..XXBS==<<-1_-<^D36-WID>>B<..XXRB-1>>
IFN ..XXBM&..XXBS,<PRINTX ? Bit fields overlap for SYM>
..XXBM==..XXBM!..XXBS
SYM==..XXBS > ;;END OF XB MACRO
DEFINE XC(SYM,VAL),<
IF1,<IFDEF SYM,<PRINTX ? Multiply-defined value SYM>>
SYM==VAL > ;;END OF XC MACRO
SUBTTL I/O Channel Data Block definitions
;The I/O Channel Data Block contains all the information pertinent
;to an I/O stream, whether local or network based.
;
;All of the I/O routines in NIP are "channel independent" and use the
;I/O CDB
X0 .IOCCF ;I/O CHANNEL CONTROL FLAGS
XB IO.INI ;CDB CHANNEL INITIALIZED AND ACTIVE
; IF NOT SET THE CDB CONTAINS NO VALID
; INFORMATION (.IOSIZ & .IOXSZ EXCEPTED)
XB IO.NET ;CHANNEL IS NETWORK I/O (DATA PROTOCOLS)
XB IO.ANF ;NETWORK IS ANF-PROTOCOL
XB IO.DCN ;NETWORK IS DECNET-PROTOCOL
XB IO.NEP ;CHANNEL IS NETWORK "PASSIVE"
XB IO.SLV ;CHANNEL IS FAL SLAVE CHANNEL
XB IO.OND ;CHANNEL IS OPEN FOR DAP LINK ONLY (NO FILE STUFF)
XB IO.DAP ;NETWORK PROTOCOL IS DECNET DAP
XB IO.DCC ;DAP CONTROL(CONNECT) SENT/RECEIVED
; (I.E., DAP I/O STREAM "ACTIVE")
XB IO.NBA ;NETWORK BUFFER(S) IS(ARE) ALLOCATED
XB IO.DEV ;DEVICE IS ALLOCATED/INITIALIZED FOR I/O
XB IO.IBA ;INPUT BUFFER(S) IS(ARE) ALLOCATED
XB IO.OBA ;OUTPUT BUFFER(S) IS(ARE) ALLOCATED
XB IO.OPN ;FILE IS "OPEN" FOR DATA I/O
XB IO.INP ;FILE IS OPEN FOR INPUT
XB IO.OUT ;FILE IS OPEN FOR OUTPUT
XB IO.RND ;FILE IS OPEN FOR RANDOM ACCESS
XB IO.IOA ;FILE IS I/O ACTIVE (I/O INITIALIZED)
XB IO.NBT ;NON-BLOCKING NETWORK INPUT (TEMP)
XB IO.ENM ;END NETWORK MESSAGE
XB IO.LKN ;.LKWLD PASSED TO .LKWLN (USED BY .IOPIN)
XB IO.YAF ;YET ANOTHER FILE COMING FROM DAP STREAM
XB IO.YAE ;YET ANOTHER FILE (ERROR) COMING (SEE OPIR)
XB IO.YAS ;YET ANOTHER SILLY BIT (FILE ERROR SYNC IN OPIR)
XB IO.NCK ;NO (BYPASS) FILE CLOSE CHECKSUM (FOR DAP)
XB IO.SID ;[1045] SEND CONTINUE MESSAGE AS INTERRUPT DATA
IO.CNC==IO.DCC ;CLEAR ON NET CLOSE
IO.CNR==IO.CNC!IO.NET!IO.NEP!IO.DAP ;CLEAR ON NET RELEASE
IO.CNR==IO.CNR!IO.ANF!IO.DCN!IO.ENM ;...
IO.CNR==IO.CNR!IO.LKN!IO.YAF!IO.YAE ;...
IO.CNR==IO.CNR!IO.YAS ;...
IO.CFC==IO.OPN!IO.INP!IO.OUT!IO.RND!IO.IOA ;CLEAR ON FILE CLOSE
IO.CFC==IO.CFC!IO.NCK ;...
IO.CFR==IO.CFC!IO.DEV ;CLEAR ON FILE RELEASE
SUBTTL I/O CDB - Global data
X .IOCVR ;CDB VERSION (PROTOCOL FORMAT)
X .IOSIZ ;SIZE OF CDB
X .IOXSZ ;"EXTRA" SIZE (FOR BUFFERS, ETC.) AT END OF CDB
X .IOXFF ;"FIRST FREE" IN "EXTRA" SPACE
X .IOBZI,0 ;BEGINING OF INITIALLY ZEROED I/O CDB AREA
; (ZEROED BY IOINI)
X .IOCHN ;I/O CHANNEL NUMBER FOR THIS CDB
X .IOSCH ;SCHEDULER ADDRESS (FOR NON-BLOCKING I/O)
X .IODBF ;DEFAULT <MAX BUFFERS,,MAX TOTAL SPACE>
X .IOMBF ;.GT. 0 THEN ABSOLUTE MAXIMUM BUFFER SPACE
X .IOPBF ;PREFERRED BUFFERING <COUNT,,BUFFER SIZE>
X .IOUBF ;USER-SPECIFIED <COUNT,,BUFFER SIZE>
X .IODBS ;DEFAULT <DATA,,FRAME> BYTE SIZE
X .IOUBS ;USER-SPECIFIED <DATA,,FRAME> BYTE SIZE
SUBTTL I/O CDB - File control
X .IOIOC ;FILE I/O CONTROL (RECORD STRUCTURE, ETC.)
XB IC.BYT ;OPEN FOR BYTE-MODE I/O
XB IC.BLK ;OPEN FOR BLOCK-MODE
XB IC.DMP ;OPEN FOR DUMP-MODE I/O
XB IC.RSI ;OPEN FOR RECORD-STRUCTURED I/O (RESERVED)
XB IC.RND ;OPEN FOR RANDOM ACCESS I/O
XB IC.LSN ;RETURN LSN (INPUT)/GENERATE LSN (OUTPUT)
XB IC.NLC ;RETURN NULLS AS VALID ASCII CHARACTER
XB IC.CCC ;COBOL CARRIAGE CONTROL
XB IC.FCC ;FORTRAN CARRIAGE CONTROL
XB IC.MCY ;MACY11-STYLE BYTES PACKED INTO 36-BIT FRAMES
XB IC.MEY ;MACY11-STYLE, "EVENED" OUT TO WORD ALIGNMENT
XB IC.RFM,6,^D29 ;RECORD FORMAT
XC .ICRFU,$DVFNR ;UNDEFINED (READ "NONE")
XC .ICRFX,$DVFFX ;FIXED LENGTH RECORDS
XC .ICRFV,$DVFVR ;VARIABLE LENGTH RECORDS
XC .ICRFF,$DVFVF ;VARIABLE LENGTH RECORDS WITH FIXED LENGTH HEADER
XC .ICRF3,17 ;SPECIAL /36PACK "FORMATTING" (NOT DAP-LEGAL)
XB IC.MOD,6,^D35 ;FILE DATA ACCESS MODE
XC .ICDEF,0 ;NONE SPECIFIED, DEFAULT, ASCII
XC .ICASC,1 ;ASCII, 7-BIT BYTES
XC .ICAS8,2 ;ASCII, 8-BIT BYTES
XC .ICEBC,3 ;EBCDIC, 8-BIT BYTES
XC .ICPIM,4 ;PACKED IMAGE (TOPS-10 ONLY), 8-BIT BYTES
XC .ICIMG,5 ;IMAGE, 36-BIT BYTES
XC .ICBYT,6 ;BINARY, 8-BIT BYTES
XC .ICBIN,7 ;BINARY, 36-BIT BYTES
XC .ICMAX,7 ;MAXIMUM FILE MODE
X .IOIOE ;I/O ERROR CONTROL FLAGS
XB IE.EAB ;ABORT I/O STREAM ON I/O ERROR
XB IE.MAB ;ISSUE ERROR MESSAGE ON I/O ERROR
XB IE.EIG ;IGNORE (SKIP) I/O ERROR
XB IE.MIG ;ISSUE WARNING MESSAGE ON I/O ERROR
X .IOIOM ;FILE I/O MODE
XB IM.PHS ;PHYSICAL ONLY DEVICE SPECIFICATION
XB IM.DEL ;DISABLE ERROR LOGGING
XB IM.DER ;DISABLE ERROR RETRY
XB IM.AIO ;ASYNCHRONOUS (NON-BLOCKING) I/O
XB IM.DSO ;DISK-DEVICES ONLY
XB IM.SIO ;SUPER I/O (BYPASS NORMAL FILE SYSTEM)
XB IM.LBF ;USE GENEROUS BUFFER SIZE
XB IM.SBO ;SUPPRESS BUFFER ALLOCATION AT OPEN TIME
XB IM.CTG ;CONTIGUOUS ALLOCATION REQUIRED
XB IM.CBT ;CONTIGUOUS BEST TRY
XB IM.CIF ;CONCATENATE INPUT FILES (AUTO WILD INPUT)
XB IM.CMD ;.IOIOC MODE OVERIDES ALL OTHERS
XB IM.SMD ;SELECT MODE BASED ON FILE FROM OPEN
XB IM.MFA ;MAINTAIN FILE ALLOCATION (ON CLOSE)
XB IM.SAD ;SUPPRESS ACCESS DATE UPDATE (ON CLOSE)
XB IM.ZOD ;ZERO DATA ON DELETE (SENSITIVE DATA)
XB IM.CSU ;SUBMIT ON CLOSE
XB IM.CPR ;PRINT ON CLOSE
XB IM.CDL ;DELETE ON CLOSE
XB IM.DQA ;DISABLE CALLS TO .IOQAT ALWAYS
XB IM.DQI ;DISABLE CALLS TO .IOQAT ON .IOPI? ONLY
XB IM.IQC ;.IOQAT "CONCATENATION" CALL FOR INPUT
XB IM.UNQ ;CREATE UNIQUE FILE NAME (TRAILING NUMERIC CHARS)
IM.CXX==IM.CSU!IM.CPR!IM.CDL ;ALL CLOSE OPTIONS
SUBTTL I/O CDB - File specification blocks, WILD blocks
;FILE-SPECIFICATION STUFF (SCAN BLOCK POINTERS, ETC.)
X .IOSDB ;POINTER TO SCAN DATA BASE
X .IOWDB ;POINTER TO WILD DATA BASE (.IOPIN, ETC.)
X .IOFSB ;ADDRESS OF FIRST FILE SPEC BLOCK
X .IOFSC ;ADDRESS OF CURRENT FILE SPEC BLOCK
X .IOFSL ;ADDRESS OF LAST FILE SPEC BLOCK
X .IOFSY ;ADDRESS OF LKWLN'S NETWORK'ED FILE SPEC BLOCK
X .IOWSR ;"WILD" STATE ROUTINE
X .IOFS3 ;TERTIARY POINTER TO START OF FSB CHAIN
X .IOCS3 ;TERTIARY CURRENT START FILE SPEC BLOCK
X .IOCU3 ;TERTIARY CURRENT FILE SPEC BLOCK
X .IOCN3 ;TERTIARY CURRENT END FILE SPEC BLOCK
X .IOLA3 ;TERTIARY FINAL END FILE SPEC BLOCK (TEMP)
X .IOWS3 ;TERTIARY "WILD" STATE ROUTINE
X .IOXTI ;BYTE POINTER USED VIA .XTYPI FOR "COMMAND" INPUT
X .IOXTO ;BYTE POINTER USED VIA .XTYPO FOR "COMMAND" OUTPUT
;START OF WILD INTERNAL STUFF (NOT AVAILABLE TO CALLER)
;.LKWLD STUFF
X .IOLKW,10 ;ARGUMENT BLOCK FOR CALL TO .LKWLD VERSION 7
;(00) SCAN/WILD PROTOCOL VERSION WORD
;(01) <FIRST,,LAST> SCAN BLOCK POINTER ADR
;(02) <OPEN,,LOOKUP> BLOCK ADDRESS
;(03) SCAN BLOCK LENGTH,,LOOKUP LENGTH
;(04) FLAGS!CHANNEL,,CUR SCNBLK PTR ADR
;(05) END OF DIRECTORY RTN
;(06) XXX
;(07) XXX
;.SCWLD STUFF
X .IOSCD ;ADDRESS OF "INPUT" CDB A LA IOPOU
X .IOSCF ;SCWILD PROCESSING FLAGS (DEFAULT .FXCTL)
X .IOSCW,10 ;ARGUMENT BLOCK FOR CALL TO .SCWLD VERSION 7
;(00) SCAN/WILD PROTOCOL VERSION WORD
;(01) <CUR INPUT,,OUTPUT> SCNBLK PTR ADR
;(02) <INPUT,,OUTPUT> OPEN BLK ADR
;(03) <INPUT,,OUTPUT> FILE BLK ADR
;(04) DEFAULT EXT ADR,,FILE BLK LEN
;(05) ADDRESS OF SECONDARY PATH BLOCK
;(06) ADDRESS OF DEFAULT SCWILD (.FXCTL) FLAGS
;(07) XXX
;"ON-BEHALF-OF" INFORMATION
X .IOPPN ;ON-BEHALF-OF PPN
X .IOACT,10 ;ON-BEHALF-OF ACCOUNT STRING
;"QUEUE" INFO (ALSO USED SORTA LIKE "ON-BEHALF-OF" BY FAL)
X .IOQUN ;QUEUE UNIT INFO (ATTR,,UNIT NUMBER (IF ANY))
X .IOQND ;QUEUE DESTINATION NODE (NUMBER)
X .IOQ6N,2 ;QUEUE USER NAME (SIXBIT, DOUBLE-WORD)
X .IOQ6J ;QUEUE JOB NAME (SIXBIT, FOR QUEUE ENTRY)
SUBTTL I/O CDB - File Information -- Name strings
;FILE-SPECIFIC GENERIC FILE AND I/O INFORMATION
X .IOBZR,0 ;START OF TO-BE-ZEROED ON RELEASE
;FILE NAME COMPONET STRINGS
;
; Note that these strings must not be zeroed on file CLOSE since
; DAP will only transmit the componets that change (e.g., the device
; is usually not sent for each file, only when it changes) . . .
X .IOFND ;ADDRESS OF FILE NODE NAME STRING
X .IOFDV ;ADDRESS OF FILE DEVICE NAME STRING
X .IOFDR ;ADDRESS OF FILE DIRECTORY STRING
X .IOFNM ;ADDRESS OF FILE NAME STRING
X .IOFEX ;ADDRESS OF FILE TYPE (OR EXTENSION) STRING
X .IOFGN ;ADDRESS OF FILE GENERATION STRING
;X .IOFOW ;ADDRESS OF FILE OWNER STRING
;X .IOFAU ;ADDRESS OF FILE AUTHOR STRING
X .IOF3D ;ADDRESS OF TERTIARY NODE NAME STRING
X .IOF3V ;ADDRESS OF TERTIARY DEVICE NAME STRING
X .IOF3R ;ADDRESS OF TERTIARY DIRECTORY STRING
X .IOF3M ;ADDRESS OF TERTIARY NAME STRING
X .IOF3X ;ADDRESS OF TERTIARY TYPE (OR EXTENSION) STRING
X .IOF3N ;ADDRESS OF TERTIARY GENERATION STRING
;X .IOF3W ;ADDRESS OF TERTIARY OWNER STRING
;X .IOF3U ;ADDRESS OF TERTIARY AUTHOR STRING
X .IOFGI ;FILE GENERATION INTEGER
SUBTTL I/O CDB - File Information -- File attributes and parameters
X .IOBZC,0 ;START OF TO-BE-ZEROED ON CLOSE
X .IOCCI ;I/O CONTROL FLAGS (INTERNAL USE ONLY)
X .IOOST ;OPERATING SYSTEM TYPE WHICH OWNS THE FILE
XC .IOSRT,1 ;RT-11
XC .IOSRE,2 ;RSTS/E
XC .IOSRS,3 ;RSX-11S
XC .IOSRM,4 ;RSX-11M
XC .IOSRD,5 ;RSX-11D
XC .IOSIA,6 ;IAS
XC .IOSVX,7 ;VAX/VMS
XC .IOST2,8 ;TOPS-20
XC .IOST1,9 ;TOPS-10
XC .IOSR8,10 ;RTS-8
XC .IOSS8,11 ;OS-8
XC .IOSRP,12 ;RSX-11M+
X .IOFOP ;FILE OPERATION BEING PERFORMED
XC .IFFND,0 ;FIND A FILE (NO I/O)
XC .IFRED,1 ;READ FILE
XC .IFWRT,2 ;WRITE FILE
XC .IFAPP,3 ;APPEND FILE
XC .IFSAU,4 ;UPDATE FILE (SINGLE-ACCESS)
XC .IFMAU,5 ;UPDATE FILE (MULTI-ACCESS)
XC .IFDLT,6 ;DELETE OPEN FILE
XC .IFRNM,7 ;RENAME OPEN FILE
XC .IFMAX,7 ;MAXIMUM FILE OPERATION
X .IOCKS ;FILE DATA CHECKSUM
X .IODTY ;FILE/DEVICE TYPE
X .IODCH ;FILE/DEVICE CHARACTERISTICS
XB IC.NUL ;DEVICE IS NUL:
XB IC.SQD ;DEVICE IS SEQUENTIAL BLOCK (E.G., MTA:)
XB IC.SDI ;DEVICE IS SINGLE DIRECTORY(E.G., DTA:)
XB IC.MDI ;DEVICE IS MULTIPLE DIRECTORY (E.G., DSK:)
XB IC.TRM ;DEVICE IS COMMAND TERMINAL (TTY:)
XB IC.CCL ;DEVICE USES CARRIAGE CONTROL
XB IC.REC ;DEVICE IS RECORD ORIENTED
XB IC.IDV ;DEVICE CAN PERFORM INPUT
XB IC.ODV ;DEVICE CAN PERFORM OUTPUT
XB IC.RAD ;DEVICE CAN DO RANDOM ACCESS
XB IC.ALL ;DEVICE IS ALLOCATED
XB IC.MNT ;DEVICE IS MOUNTED
XB IC.DMT ;DEVICE IS MARKED FOR DISMOUNT
XB IC.SPL ;DEVICE IS SPOOLED
XB IC.DSH ;DEVICE IS BEING SHARED
XB IC.FOD ;DEVICE IS FILE ORIENTED
XB IC.RTM ;DEVICE IS REAL-TIME IN NATURE
XB IC.MBX ;DEVICE IS A MAILBOX
XB IC.ELG ;DEVICE ERROR LOGGING IS ENABLED
XB IC.AVL ;DEVICE IS AVAILABLE
XB IC.SWL ;DEVICE IS SOFTWARE WRITE-LOCKED
XB IC.GDV ;DEVICE SPECIFICATION IS GENERIC
XB IC.NDV ;DEVICE IS NETWORK-BASED
XB IC.FRN ;DEVICE IS FOREIGN
XB IC.DWC ;DEVICE IS WRITE-CHECK ENABLED
XB IC.DRC ;DEVICE IS READ-CHECK ENABLED
XB IC.CTG ;FILE IS CONTIGUOUSLY ALLOCATED
X .IOBSZ ;LOGICAL DATA BYTE SIZE (BITS)
X .IOFSZ ;PHYSICAL FRAME SIZE CONTAINING DATA BYTE
X .IORSZ ;FILE/DEVICE RECORD SIZE (DATA BYTES)
X .IOBLS ;FILE/DEVICE BLOCKSIZE (DATA BYTES)
X .IOBLW ;FILE/DEVICE BLOCKSIZE (36-BIT WORDS)
X .IOBLC ;COUNT OF BUFFERS (OF SIZE .IOBLS)
X .IOBPA,0 ;BEGINNING OF FILE PARAMETERS AREA (FOR DIRECT COPY)
X .IOLNW ;FILE LENGTH (-10 WORDS)
X .IOLNB ;FILE LENGTH (LOGICAL DATA BYTES)
X .IOALW ;FILE ALLOCATION (-10 WORDS)
X .IOALB ;FILE ALLOCATION (LOGICAL DATA BYTES)
X .IOLSW ;LAST WORD IN FILE
X .IOLSB ;LAST LOGICAL DATA BYTE IN FILE
X .IOCDT ;LOGICAL DATA CREATION DATE/TIME
X .IOADT ;LAST ACCESS DATE/TIME
X .IOEDT ;EXPIRATION DATE/TIME
X .IOPDT ;PHYSICAL MEDIA CREATION DATE/TIME
X .IOBDT ;BACKUP DATE/TIME
X .IOUDT ;LAST UPDATE DATE/TIME
X .IOPRT ;FILE PROTECTION (INTEGER)
; (RH ONLY, LH CAN BE USED AS FLAG TO FORCE A
; ZERO PROTECTION TO BE PASSED THROUGH)
X .IOVER ;FILE VERSION (E.G., FOR .EXE FILE)
X .IOEPA,0 ;END (+1) OF FILE PARAMETERS AREA
X .IOECT ;I/O ERROR COUNTER
X .IOQCT ;COUNT OF .IOQAT CALLS (FOR ERR MSG PRINTOUT)
X .IOEZC,0 ;END (+1) OF TO-BE-CLEARED ON CLOSE
X .IOERR,2 ;ERROR CODE FOR LAST ERROR
; (+1 ADDRESS OF ERROR CALLER, SEE .ERPIN, ETC)
X .IOER2 ;SECONDARY ERROR INFORMATION (ERROR-DEPENDENT)
; E.G., USED AS "SUBSTATE" FOR $EINLA ERRORS
X .IOER3 ;TERTIARY ERROR INFORMATION (ERROR-DEPENDENT)
; E.G., CONTAINS TSK. I/O STATUS FOR $EINLA ERRORS
SUBTTL I/O CDB - I/O control
;THE INPUT SIDE OF THE I/O CDB
X .IOISR,2 ;INPUT SERVICE ROUTINE
; (+1 IS EOF RECOVERY)
X .IOISS ;INPUT SERVICE SHUTDOWN DISPATCH
X .IOISF ;INPUT SERVICE FLAGS WORD
XB IS.ICL ;IMPLIED <CR><LF> AT END OF RECORD
XB IS.ICR ;NEED A <CR> CHARACTER
XB IS.ILF ;NEED A <LF> CHARACTER
XB IS.INL ;NEED N <LF> CHARACTERS (COUNT IN IS.IXX BYTE)
XB IS.IVC ;LAST CARRIAGE-CONTROL WAS CARRIAGE RETURN
XB IS.IVI ;VAX PRINT-FILE FORMATTING INITIALIZED
; (SUPPRESS LEADING <LF>, GENERATE TRAILING <LF>)
XB IS.IXX,8 ;NEED A SPECIAL CHARACTER (THE IS.IXX BYTE)
XB IS.MCF ;NEED MACY11 INTER-RECORD FILLER
XB IS.MCK ;NEED TO OUTPUT MACY11 CHECKSUM BYTE
X .IOISH ;INPUT SERVICE FIXED HEADER (ISR DEPENDENT)
X .IOIS0 ;INPUT SERVICE ROUTINE SCRATCH (ISR DEPENDENT)
X .IOIS1 ;INPUT SERVICE ROUTINE SCRATCH (ISR DEPENDENT)
X .IOIS2 ;INPUT SERVICE ROUTINE SCRATCH (ISR DEPENDENT)
X .IOIS3 ;INPUT SERVICE ROUTINE SCRATCH (ISR DEPENDENT)
X .IOIS4 ;INPUT SERVICE ROUTINE SCRATCH (ISR DEPENDENT)
X .IOIS5 ;INPUT SERVICE ROUTINE SCRATCH (ISR DEPENDENT)
X .IOIUC ;INPUT BUFFERS COUNT (NUMBER OF IN UUOS)
X .IOIAC ;INPUT BUFFER ALLOCATION (CNT,,SIZ)
X .IOIAD ;INPUT BUFFER BASE ADDRESS
X .IOIBH,0 ;INPUT BUFFER RING HEADER CONTROL BLOCK
X .IOIBA ; INPUT BUFFER ADDRESS
X .IOIBP ; INPUT BUFFER BYTE POINTER
X .IOIBC ; INPUT BUFFER BYTE COUNTER
;THE OUTPUT SIDE OF THE I/O CDB
X .IOOSR,2 ;OUTPUT SERVICE ROUTINE
X .IOOSS ;OUTPUT SERVICE SHUTDOWN DISPATCH
X .IOOSF ;OUTPUT SERVICE FLAGS
X .IOOSH ;OUTPUT SERVICE RECORD HEADER (OSR DEPENDENT)
X .IOOS0 ;OUTPUT SERVICE ROUTINE SCRATCH (OSR DEPENDENT)
X .IOOS1 ;OUTPUT SERVICE ROUTINE SCRATCH (OSR DEPENDENT)
X .IOOS2 ;OUTPUT SERVICE ROUTINE SCRATCH (OSR DEPENDENT)
X .IOOS3 ;OUTPUT SERVICE ROUTINE SCRATCH (OSR DEPENDENT)
X .IOOS4 ;OUTPUT SERVICE ROUTINE SCRATCH (OSR DEPENDENT)
X .IOOS5 ;OUTPUT SERVICE ROUTINE SCRATCH (OSR DEPENDENT)
X .IOOUC ;OUTPUT BUFFERS WRITTEN (NUMBER OF OUT UUOS)
X .IOOAC ;OUTPUT BUFFER ALLOCATION (CNT,,SIZ)
X .IOOAD ;OUTPUT BUFFER BASE ADDRESS
X .IOOBH,0 ;OUTPUT BUFFER RING HEADER CONTROL BLOCK
X .IOOBA ; OUTPUT BUFFER ADDRESS
X .IOOBP ; OUTPUT BUFFER BYTE POINTER
X .IOOBC ; OUTPUT BUFFER BYTE COUNTER
X .IOEZR,0 ;END (+1) OF TO-BE-CLEARED ON RELEASE
SUBTTL I/O CDB - TOPS-10 interface
;TOPS-10 OPERATING-SYSTEM-SPECIFIC AREAS
X .IOB10,0 ;START OF TOPS-10 BLOCK(S)
X .I1BFD,0 ;START OF TOPS-10 FILE DATA
X .I1NOD ;NODE NAME (PRETTY MUCH A TEMP)
X .I1FLP,.FOMAX ;FILOP. BLOCK
.I1OPN==.I1FLP+.FOIOS ;OPEN BLOCK
X .I1PTH,.PTMAX ;PATH BLOCK
X .I1PT2,.PTMAX ;SECOND (RETURNED) PATH BLOCK
X .I1LKP,.RBMAX ;LOOKUP BLOCK
X .I1FIO,2 ;COPY OF .FOIOS/.FODEV ON LAST CALL TO OPEN FILE
X .I1DEV ;REAL DEVICE NAME
X .I1GEN ;FILE GENERATION NUMBER
X .I1DCH ;DEVCHR WORD
X .I1DTY ;DEVTYP WORD
X .I1DSZ ;DEVSIZ WORD
X .I1IOS ;DEVIOS (I.E., GETSTS) WORD
X .I1FL3,.FOMAX ;TERTIARY (SECONDARY WILDCARDED) FILOP. BLOCK
.I1OP3==.I1FL3+.FOIOS ; (SECONDARY WILDCARDED) OPEN BLOCK
X .I1PT3,.PTMAX ;TERTIARY (SECONDARY WILDCARDED) PATH BLOCK
X .I1LK3,.RBMAX ;TERTIARY (SECONDARY WILDCARDED) FILE BLOCK
X .I1GE3 ;TERTIARY GENERATION
; NOTE: TERTIARY STUFF TIMESHARED BY QUEOP ROUTINE
X .I1EFD,0 ;END (+1) OF TOPS-10 FILE DATA
X .I1NSP,.NSAA3+1 ;NSP. ARG BLOCK
X .I1NSC,.NSCUD+1 ;NSP. CONNECT BLOCK
X .I1NSS,.NSDPN+1 ;NSP. SOURCE PROCESS DESCRIPTOR BLOCK
X .I1NSD,.NSDPN+1 ;NSP. DESTINATION PROCESS DESCRIPTOR BLOCK
.I1NSL==.NSAA3+1+.NSCUD+1+.NSDPN+1+.NSDPN+1 ;AGGRAGATE LENGTH
; NOTE: NETWORK STUFF TIMESHARED BY QUEOP, FILOP, ETC.
X .IOE10,0 ;END (+1) OF TOPS-10 STUFF
SUBTTL I/O CDB - TOPS-20 interface
REPEAT 0,< ;SIGH
;TOPS-20 OPERATING-SYSTEM-SPECIFIC AREAS
X .IOB20,0 ;START OF TOPS-20 BLOCK
X .I2BFD,0 ;START OF TOPS-20 FILE DATA
X .I2FDB,.FBLEN+1 ;GTFDB BLOCK
X .I2JFB,.GJATR+1 ;GTJFN LONG BLOCK
X .I2MTB,20 ;MTOPR SCRATCH BLOCK
X .I2EFD,0 ;END (+1) OF TOPS-20 FILE DATA
X .IOE20,0 ;END (+1) OF TOPS-20 STUFF
> ;END REPEAT 0 ;SIGH
SUBTTL I/O CDB - Network control
;THE NETWORK DATA
;
;"6-BIT FORMAT" REFERS TO NORMAL SIXBIT ASCII (ONE WORD MAX);
;"7-BIT FORMAT" REFERS TO NORMAL USASCII, TERMINATED BY A NULL BYTE;
;"8-BIT FORMAT" REFERS TO AN ACTUAL BYTE COUNT,,MAXIMUM WORD COUNT,
; FOLLOWED BY "BYTE COUNT" 8-BIT BYTES.
X .ION6M ;NODE NAME (6-BIT FORMAT)
X .IONNM,$NTNBL ;NODE NAME (8-BIT FORMAT)
X .IONCH ;NETWORK "CHANNEL" NUMBER
X .IONLB ;NETWORK BUFFER SIZE IN 8-BIT BYTES
X .IONLW ;NETWORK BUFFER SIZE IN 36-BIT WORDS
X .IONLM ;NETWORK MESSAGE SIZE MAXIMUM IN 8-BIT BYTES
X .IONUS,$NTSBL ;USER ID (8-BIT FORMAT)
X .IONPW,$NTSBL ;USER PASSWORD (8-BIT FORMAT)
X .IONAC,$NTSBL ;USER ACCOUNTING DATA (8-BIT FORMAT)
X .IONUD,$NTSBL ;USER DATA (8-BIT FORMAT)
X .IONCD,$NTODL ;CONNECT/DISCONNECT DATA (8-BIT FORMAT)
X .IONSF ;SOURCE FORMAT,,OBJECT TYPE
X .IONSP ;SOURCE "PPN"
X .IONSN,$NTNBL ;SOURCE TASK NAME (8-BIT FORMAT)
X .IONDF ;DESTINATION FORMAT,,OBJECT TYPE
X .IONDP ;DESTINATION "PPN"
X .IONDN,$NTNBL ;DESTINATION TASK NAME (8-BIT FORMAT)
X .IONP3 ;AOBJN COUNTER FOR NP3P4/NTYPO
X .IONP4 ;BYTE POINTER FOR NP3P4/NTYPO
SUBTTL I/O CDB - Network I/O
;NETWORK INPUT DATA
X .IONIA ;INPUT DATA AVAILABLE (IF .NE. 0)
X .IONIH ;INPUT BUFFER RING HEADER
X .IONIP ;INPUT BUFFER BYTE POINTER
X .IONIC ;INPUT BUFFER BYTE COUNTER
X .IONIS ;INPUT BUFFER STATUS WORD (NF.EOM BIT)
X .IONIB,2 ;INPUT BUFFER ADDRESS
;NETWORK OUTPUT DATA
X .IONOH ;OUTPUT BUFFER RING HEADER
X .IONOP ;OUTPUT BUFFER BYTE POINTER
X .IONOC ;OUTPUT BUFFER BYTE COUNTER
X .IONOS ;OUTPUT BUFFER STATUS WORD
X .IONOB,2 ;OUTPUT BUFFER ADDRESS
X .IONOX ;OUTPUT ROUTINE SCRATCH/STATE
X .IONOY ;OUTPUT ROUTINE SCRATCH/STATE
SUBTTL I/O CDB - DAP control
;DAP CONTROL AND DATA
X .IODPF ;MISCELLANEOUS DAP LOGIC FLAGS
XB ID.SNM ;OK TO SEGMENT NETWORK MESSAGES
X .IODPV ;DAP PROTOCOL VERSION (BYTE (18)0(9)MAJOR(9)MINOR)
X .IODP3 ;AOBJN COUNTER FOR DP3P4/DTYPO
X .IODP4 ;BYTE POINTER FOR DP3P4/DTYPO
X .IODTM,4 ;SCRATCH AREA FOR DATE/TIME ASCIZ STRING
X .IODFC ;DAP FILE COUNT
;DAP INPUT MESSAGE HANDLING DATA
X .IODIM ;INPUT MESSAGE ($DH---) CURRENTLY IN EFFECT
; 0 IF NO MESSAGE, -1,,CODE INDICATES THAT CODE
; WAS THE LAST INPUT MESSAGE SEEN (AND HAS BEEN
; PROCESSED)
X .IODIC ;INPUT MESSAGE BYTE COUNT (RDBYT)
X .IODIF ;INPUT MESSAGE HEADER FLAGS
X .IODIS ;INPUT STREAM ID
X .IODIB ;INPUT DATA UNUSED BIT COUNT
X .IODIR ;INPUT DAP BYTE TO BE RE-EATEN
; EITHER -1,,DATA OR 400000,,ERRORCODE
.IODRL==.IODIB-.IODIM+1 ;LENGTH OF SAVED BLOCK IN .IODRP
X .IODIX ;INPUT CONTINUATION FLAG (RDBYT)
X .IODIK ;INPUT DAP FILE DATA CRC
X .IODRS,.IODRL ;SAVED .IODI? FROM .RDREA
X .IODRC ;ORIGINAL .IODIC FOR VERIFICATION IN .RDREA
X .IODRF ;INPUT MESSAGE FIELD NUMBER
X .IODRM,2 ;INPUT DAP MESSAGE MENU COUNTER/POINTER
X .IODRX ;INPUT DAP DAPXCT INDEX
X .IODIW ;PARTIAL INPUT DATA WORD (IRBW)
;DAP OUTPUT MESSAGE HANDLING DATA
X .IODOM ;OUTPUT MESSAGE IN EFFECT ($DH---)
X .IODOC ;OUTPUT MESSAGE BYTE COUNTER (XDBYT)
X .IODOF ;OUTPUT MESSAGE HEADER FLAGS
X .IODOS ;OUTPUT MESSAGE STREAM ID
X .IODOB ;OUTPUT DATA UNUSED BIT COUNT
X .IODOX ;OUTPUT CONTINUATION FLAG (XDBYT)
X .IODOK,2 ;OUTPUT DAP FILE DATA CRC
; (+1 USED TO HOLD COPY OF CRC IN ORBW)
X .IODO0 ;OUTPUT SAVED BYTE COUNT (FOR XDEOM)
X .IODO1 ;OUTPUT HEADER FLAGS BYTE POINTER
;X .IODO2 ;OUTPUT HEADER "STREAM" BYTE POINTER
X .IODO3 ;OUTPUT HEADER "LENGTH" BYTE POINTER
X .IODO4 ;OUTPUT HEADER "LEN256" BYTE POINTER
X .IODO5 ;OUTPUT HEADER "BITCNT" BYTE POINTER
X .IODO9 ;OUTPUT HEADER "ENDING" BYTE POINTER
; I.E., START OF MESSAGE DATA
X .IODXF ;OUTPUT MESSAGE FIELD NUMBER
X .IODXM,2 ;OUTPUT DAP MESSAGE MENU COUNTER/POINTER
X .IODXX ;OUTPUT DAP DAPXCT INDEX
X .IODXA,2 ;OUTPUT DAP MESSAGE ABORTION RESET POINTERS
;THE DAP HOLDING AREA
X .IOBZD,0 ;START OF DAP TO-BE-ZEROED REGION
X .IODAP,$DLDAP ;DAP MESSAGE BUILDING AREA
X .IOEZD,0 ;END (+1) OF DAP TO-BE-ZEROED REGION
SUBTTL I/O CDB - Errata
X .IOEZI,0 ;END (+1) OF I/O CDB INITIALLY ZEROED AREA
X .IOSND,12 ;STRING FILE NODE NAME
X .IOSDV,12 ;STRING FILE DEVICE NAME
X .IOSDR,12 ;STRING FILE DIRECTORY NAME
X .IOSNM,12 ;STRING FILE NAME
X .IOSEX,12 ;STRING FILE EXTENSION/TYPE
X .IOSGN,12 ;STRING FILE GENERATION
;X .IOSOW,12 ;STRING FILE OWNER
;X .IOSAU,12 ;STRING FILE AUTHOR
X .IOS3D,12 ;TERTIARY STRING FILE NODE NAME
X .IOS3V,12 ;TERTIARY STRING FILE DEVICE NAME
X .IOS3R,12 ;TERTIARY STRING FILE DIRECTORY NAME
X .IOS3M,12 ;TERTIARY STRING FILE NAME
X .IOS3X,12 ;TERTIARY STRING FILE EXTENSION/TYPE
X .IOS3N,12 ;TERTIARY STRING FILE GENERATION
;X .IOS3W,12 ;TERTIARY STRING FILE OWNER
;X .IOS3U,12 ;TERTIARY STRING FILE AUTHOR
X .IOMAX,0 ;END (+1) OF I/O CDB
X .IOXBZ,0 ;START OF "EXTRA" SPACE FOR BUFFERS ETC.
SUBTTL I/O function-call definitions
.FUBVR==1 ;SET BEGINING OF VARIABLE-LENGTH RECORD
.FULSN==2 ;SET ASCII LINE-SEQUENCE-NUMBER
.FUIEC==3 ;ATTEMPT TO I/O-ERROR CONTINUE
REPEAT 0,<
SUBTTL WILD input control block
;The Wild Input Control Block controls the selection of input files
;based on the File Spec Blocks returned from the command scanning
;process. Each Wild Input Control Block has only one primary-wildcarded
;spec, any others are secondary-wildcarded from the primary spec.
X0 .WDCCF ;WILD INPUT CONTROL FLAGS
XB WD.PR1 ;PRIMARY WILD-CARD ON INPUT SPEC # 1
; (MUST START AT BIT 0)
XB WD.PR2 ;PRIMARY WILD-CARD ON INPUT SPEC # 2
XB WD.PR3 ;PRIMARY WILD-CARD ON INPUT SPEC # 3
XB WD.PR4 ;PRIMARY WILD-CARD ON INPUT SPEC # 4
XB WD.PR5 ;PRIMARY WILD-CARD ON INPUT SPEC # 5
XB WD.PR6 ;PRIMARY WILD-CARD ON INPUT SPEC # 6
XB WD.PR7 ;PRIMARY WILD-CARD ON INPUT SPEC # 7
XB WD.PR8 ;PRIMARY WILD-CARD ON INPUT SPEC # 8
WD.PRN==WD.PR1!WD.PR2!WD.PR3!WD.PR4!WD.PR5!WD.PR6!WD.PR7!WD.PR8
XB WD.DAF ;RETURN DIRECTORY AS FILE AFTER FILES WITHIN DIRECTORY
XB WD.DBF ;RETURN DIRECTORY AS FILE BEFORE FILES WITHIN DIRECTORY
X .WDWVR ;WCB VERSION (PROTOCOL FORMAT)
X .WDSIZ ;SIZE OF WCB
X .WDBZR,0 ;START OF TO-BE-ZEROED AREA
X .WDNFI ;NUMBER OF PARALLEL INPUT FILES
X .WDNFO ;NUMBER OF PARALLEL OUTPUT FILES
X .WDPRI ;ADDRESS OF PRIMARY INPUT WDB
X .WDOBU ;"ON-BEHALF-OF" USER WORD
X .WDWSR ;STATE WORD - "WILD SERVICE ROUTINE"
;THE FIRST INPUT SPEC (BY DEFAULT THE PRIMARY INPUT SPEC)
X .W1IWF,0 ;START INDEX OF FIRST INPUT WILD FILE BLOCK
X .WDIFS ;ADDRESS OF INPUT FILE SPEC BLOCK (CHAIN)
X .WDCST ;ADDRESS OF CURRENT FIRST FILE SPEC BLOCK
X .WDCUR ;ADDRESS OF CURRENT FILE SPEC BLOCK
X .WDCND ;ADDRESS OF CURRENT END FILE SPEC BLOCK
X .WDICB ;ADDRESS OF INPUT I/O CDB
X .WDLAS ;(TEMP) ADDRESS OF LAST FILE SPEC BLOCK
;DEFINE THE "WILD FILE BLOCK" OFFSETS BASED ON THE ABOVE
.WFFSB==.WDIFS-.W1IWF ;ADDRESS OF FILE SPEC BLOCK
.WFCST==.WDCST-.W1IWF ;ADDRESS OF CURRENT FIRST FILE SPEC BLOCK
.WFCUR==.WDCUR-.W1IWF ;ADDRESS OF CURRENT CURRENT FILE SPEC BLOCK
.WFCND==.WDCND-.W1IWF ;ADDRESS OF CURRENT LAST FILE SPEC BLOCK
.WFCDB==.WDICB-.W1IWF ;ADDRESS OF I/O CDB
.WFLAS==.WDLAS-.W1IWF ;(TEMP) ADDRESS OF LAST FILE SPEC BLOCK
.WFMAX==.WFLAS+1 ;LENGTH OF WILD FILE BLOCK
;FIRST OUTPUT WILD FILE BLOCK
X .W1OWF,0 ;START INDEX OF FIRST OUTPUT WILD FILE BLOCK
X .WDOFS ;ADDRESS OF OUTPUT FILE SPEC BLOCK (CHAIN)
X .WDOX1 ;NOT USED FOR OUTPUT
X .WDOX2 ;NOT USED FOR OUTPUT
X .WDOX3 ;NOT USED FOR OUTPUT
X .WDOCB ;ADDRESS OF OUTPUT I/O CDB
X .WDOX4 ;NOT USED FOR OUTPUT
;START OF WILD INTERNAL STUFF (NOT AVAILABLE TO CALLER)
;.LKWLD STUFF
X .WDLKW,5 ;ARGUMENT BLOCK FOR CALL TO .LKWLD VERSION 7
;(00) <FIRST,,LAST> SCAN BLOCK POINTER ADR
;(01) <OPEN,,LOOKUP> BLOCK ADDRESS
;(02) SCAN BLOCK LENGTH,,LOOKUP LENGTH
;(03) FLAGS!CHANNEL,,CUR SCNBLK PTR ADR
;(04) END OF DIRECTORY RTN
;.SCWLD STUFF
X .WDSCF ;SCWILD PROCESSING FLAGS
X .WDSCW,5 ;ARGUMENT BLOCK FOR CALL TO .SCWLD VERSION 7
;(00) <CUR INPUT,,OUTPUT> SCNBLK PTR ADR
;(01) <INPUT,,OUTPUT> OPEN BLK ADR
;(02) <INPUT,,OUTPUT> FILE BLK ADR
;(03) DEFAULT EXT ADR,,FILE BLK LEN
;(04) <FUTURE>,,SCWILD PROCESSING FLAGS ADR
;END OF WILD CONTROL BLOCK
X .WDEZR,0 ;END OF TO-BE-ZEROED AREA
X .WDMAX,0 ;LENGTH OF WILD CONTROL BLOCK
> ;END REPEAT 0
;CLEAN UP THE SYMBOL TABLE
IF1,< .XCREF ..XXB, ..XXBM, ..XXBS, ..XXO, ..XXRB>
IF2,< PURGE ..XXB, ..XXBM, ..XXBS, ..XXO, ..XXRB>
SUBTTL Status and error/exception codes
;Status codes are 18-bit quantities decoded as follows:
;
; BYTE (6) group (3) level (9) reason
;
;where "group" is the generic functional grouping such as file access
;or I/O transfer; "level" is the relative severity level, and can be
;treated as either a 3-bit value (0 - 7) or as a bit mask (4/2/1) with
;"higher" values being more severe; and "reason" is the individual and
;specific reason or identity of the status/exception/error code.
;FUNCTION GROUPING
$E$ERR==770000 ;FUNCTION GROUP FIELD
$E$STS==630000 ;GENERAL STATUS (OPERATION PENDING, ETC.)
$E$FIL==640000 ;FILE ACCESS (PROTECTION FAILURE, ETC.)
$E$IOX==650000 ;I/O TRANSMISSION (DEVICE PARITY ERROR, ETC.)
$E$DAT==660000 ;DATA FORMAT (ILLEGAL LSN, ETC.)
$E$ENV==670000 ;ENVIRONMENTAL OR "ACTS OF GOD" (NETWORK DIED, ETC.)
$E$MEM==700000 ;MEMORY MANAGEMENT (MEMORY FULL, ETC.)
$E$QUE==710000 ;QUEUE/GALAXY ERRORS
$E$MSC==720000 ;MISCELLANEOUS
$E$CTL==760000 ;INTERNAL FLOW CONTROL
$E$DIE==770000 ;PROGRAM STOPCD
;SEVERITY LEVEL MASKING
$E$LVL==007000 ;SEVERITY LEVEL FIELD
EL$FTX==006000 ;FATAL (MORE SO THAN EL$FTL)
EL$FTL==004000 ;FATAL
EL$WRN==002000 ;WARNING
EL$INF==001000 ;INFORMATIONAL
;REASON CODES
$E$COD==000777 ;SPECIFIC REASON CODE FIELD
SUBTTL Status codes - General purpose
$EGOIP==$E$STS!EL$INF + 001 ;OPERATION IN PROGRESS
$EGAOK==$E$STS!EL$INF + 002 ;OPERATION SUCCESSFUL "A-OK"
SUBTTL Status codes - File access -- general (FILOP.)
$EFFNF==$E$FIL!EL$FTL + 001 ;FILE NOT FOUND
$EFDNF==$E$FIL!EL$FTL + 002 ;UFD/DIRECTORY NOT FOUND
$EFPRT==$E$FIL!EL$FTL + 003 ;PROTECTION FAILURE
$EFFBM==$E$FIL!EL$FTL + 004 ;FILE BEING MODIFIED (ANOTHER USER)
$EFAEF==$E$FIL!EL$FTL + 005 ;ALREADY EXISTING FILE
$EFISU==$E$FIL!EL$FTX + 006 ;ILLEGAL SEQUENCE OF UUOS
$EFRIB==$E$FIL!EL$FTL + 007 ;RIB OR DIRECTORY READ ERROR
$EFNSF==$E$FIL!EL$FTX + 010 ;NOT A SAVE FILE
$EFNEC==$E$FIL!EL$FTX + 011 ;NOT ENOUGH CORE/MEMORY
$EFDNA==$E$FIL!EL$FTX + 012 ;DEVICE NOT AVAILABLE
$EFNSD==$E$FIL!EL$FTX + 013 ;NO SUCH DEVICE
$EFILU==$E$FIL!EL$FTX + 014 ;ILLEGAL (FILOP.) MONITOR CALL
$EFNRM==$E$FIL!EL$FTL + 015 ;NO ROOM FOR FILE (QUOTA OR STORAGE EXHAUSTED)
$EFWLK==$E$FIL!EL$FTX + 016 ;WRITE-LOCKED DEVICE
$EFTBL==$E$FIL!EL$FTX + 017 ;NOT ENOUGH TABLE SPACE
$EFPOA==$E$FIL!EL$WRN + 020 ;PARTIAL ALLOCATION
$EFBNF==$E$FIL!EL$FTL + 021 ;BLOCK NOT FREE
$EFCSD==$E$FIL!EL$FTL + 022 ;CAN'T SUPERSEDE DIRECTORY FILE
$EFDNE==$E$FIL!EL$FTL + 023 ;CAN'T DELETE NON-EMPTY DIRECTORY FILE
$EFSNF==$E$FIL!EL$FTL + 024 ;SFD (DIRECTORY) NOT FOUND
$EFSLE==$E$FIL!EL$FTX + 025 ;SEARCH LIST EMPTY
$EFLVL==$E$FIL!EL$FTL + 026 ;SFD'S NESTED TOO DEEPLY
$EFNCE==$E$FIL!EL$FTX + 027 ;"NO CREATE" ON FOR ENTIRE SEARCH LIST
$EFSNS==$E$FIL!EL$FTX + 030 ;SEGMENT NOT ON SWAP SPACE OR JOB LOCKED
$EFFCU==$E$FIL!EL$FTL + 031 ;CAN'T UPDATE FILE
$EFLOH==$E$FIL!EL$FTX + 032 ;LOSEG OVERLAPS HISEG
$EFNLI==$E$FIL!EL$FTX + 033 ;ILLEGAL IF NOT LOGGED IN
$EFFLK==$E$FIL!EL$FTL + 034 ;FILE IS LOCKED BY ANOTHER USER
$EFBED==$E$FIL!EL$FTL + 035 ;BAD EXE DIRECTORY
$EFBEE==$E$FIL!EL$FTL + 036 ;BAD EXE EXTENSION
$EFDTB==$E$FIL!EL$FTL + 037 ;EXE DIRECTORY TOO BIG
$EFENC==$E$FIL!EL$FTX + 040 ;EXCEEDED NETWORK (TSK:) CAPACITY
$EFTNA==$E$FIL!EL$FTX + 041 ;TSK DEVICE NOT AVAILABLE
;EFNSN==$E$FIL!EL$FTX + 042 ;NO SUCH NODE NAME (TSK. OR NSP.)
$EFSIU==$E$FIL!EL$FTL + 043 ;SFD IN USE (RENAME)
$EFNDR==$E$FIL!EL$FTL + 044 ;FILE CAN'T BE DELETED - NDR LOCK SET
$EFJCH==$E$FIL!EL$FTL + 045 ;TOO MANY USERS OF FILE
$EFSSL==$E$FIL!EL$FTL + 046 ;CAN'T RENAME SFD TO LOWER LEVEL
$EFCNO==$E$FIL!EL$FTX + 047 ;CHANNEL NOT OPENED
;CONTINUED ON NEXT PAGE
;CONTINUED FROM PREVIOUS PAGE
$EFDDU==$E$FIL!EL$FTX + 050 ;DEVICE "DOWN" AND UNUSEABLE
$EFDRS==$E$FIL!EL$FTX + 051 ;DEVICE IS RESTRICTED
$EFDCM==$E$FIL!EL$FTX + 052 ;DEVICE IS CONTROLLED BY THE MDA PROCESS
$EFDAJ==$E$FIL!EL$FTX + 053 ;DEVICE ASSIGNED TO ANOTHER JOB
$EFIDM==$E$FIL!EL$FTX + 054 ;ILLEGAL I/O DATA MODE
$EFUOB==$E$FIL!EL$FTX + 055 ;UNDEFINED OPEN FLAGS SET
$EFDUM==$E$FIL!EL$FTX + 056 ;DEVICE IN USE ON AN MPX CHANNEL
$EFNPC==$E$FIL!EL$FTX + 057 ;NO PER-PROCESS SPACE AVAILABLE FOR CHAN TABLE
$EFNFC==$E$FIL!EL$FTX + 060 ;NO FREE CHANNELS LEFT FOR JOB
$EFUFF==$E$FIL!EL$FTX + 061 ;UNKNOWN/ILLEGAL FILOP. FUNCTION
$EFCTB==$E$FIL!EL$FTX + 062 ;CHANNEL TOO BIG
$EFCIF==$E$FIL!EL$FTX + 063 ;CHANNEL ILLEGAL FOR REQUESTED FUNCTION
$EFACR==$E$FIL!EL$FTX + 064 ;ADDRESS CHECK READING ARGUMENT LIST
$EFACS==$E$FIL!EL$FTX + 065 ;ADDRESS CHECK WRITING ARGUMENT LIST
$EFNZA==$E$FIL!EL$FTX + 066 ;NEGATIVE/ZERO ARGUMENT LIST COUNT
$EFATS==$E$FIL!EL$FTX + 067 ;ARGUMENT BLOCK TOO SHORT
SUBTTL Status codes - File access -- DAP level
$EFDAP==$E$FIL!EL$FTX + 200 ;BIZARRE (NOT-READILY-TRANSLATABLE) DAP STATUS
$EFRAE==$E$FIL!EL$FTL + 201 ;GENERIC (CATCH-ALL) REMOTE FILE ACCESS ERROR
$EFRNS==$E$FIL!EL$FTL + 202 ;REMOTE NO SUPPORT (GENERIC CATCH-ALL)
$EFRNR==$E$FIL!EL$FTL + 203 ;REMOTE NO RENAME SUPPORT
$EFRND==$E$FIL!EL$FTL + 204 ;REMOTE NO DELETE SUPPORT
$EFRNX==$E$FIL!EL$FTL + 205 ;REMOTE NO EXECUTE SUPPORT
$EFRNL==$E$FIL!EL$FTL + 206 ;REMOTE NO DIRECTORY LIST SUPPORT
$EFRNW==$E$FIL!EL$FTL + 207 ;REMOTE NO WILDCARD SUPPORT
$EFRNC==$E$FIL!EL$FTL + 210 ;REMOTE NO FILE CONSTRAINT SWITCH SUPPORT
$EFRNG==$E$FIL!EL$FTL + 211 ;REMOTE NO GO/NOGO SUPPORT
$EFRNA==$E$FIL!EL$FTL + 212 ;REMOTE NO ACCOMP(RENAME) SUPPORT
$EFRFB==$E$FIL!EL$FTX + 213 ;FILE SPECIFICATION STRING TOO BIG
$EFRSB==$E$FIL!EL$FTX + 214 ;RANDOM STRING TOO BIG (PASSWORD, ETC)
SUBTTL Status codes - File access -- network level (TSK./NSP.)
$EFNNS==$E$FIL!EL$FTX + 400 ;NO [MONITOR] NETWORK SOFTWARE
$EFNLA==$E$FIL!EL$FTX + 401 ;NETWORK LINK ABORTED
$EFABE==$E$FIL!EL$FTX + 501 ;ARGUMENT BLOCK FORMAT ERROR
$EFALF==$E$FIL!EL$FTX + 502 ;ALLOCATION FAILURE
$EFBCN==$E$FIL!EL$FTX + 503 ;BAD CHANNEL NUMBER
$EFBFT==$E$FIL!EL$FTX + 504 ;BAD FORMAT TYPE IN PROCESS BLOCK
$EFCFE==$E$FIL!EL$FTX + 505 ;CONNECT BLOCK FORMAT ERROR
$EFIDL==$E$FIL!EL$FTL + 506 ;INTERRUPT DATA TOO LONG
$EFIFM==$E$FIL!EL$FTX + 507 ;ILLEGAL FLOW CONTROL MODE
$EFILF==$E$FIL!EL$FTX + 510 ;ILLEGAL NSP. FUNCTION CODE
$EFJQX==$E$FIL!EL$FTX + 511 ;JOB QUOTA EXHAUSTED
$EFLQX==$E$FIL!EL$FTX + 512 ;LINK QUOTA EXHAUSTED
$EFNCD==$E$FIL!EL$FTL + 513 ;NO CONNECT DATA TO READ
$EFPIO==$E$FIL!EL$FTL + 514 ;PERCENTAGE INPUT OUT OF BOUNDS
$EFPRV==$E$FIL!EL$FTL + 515 ;NO PRIVILEGES TO PERFORM FUNCTION
$EFSTB==$E$FIL!EL$FTX + 516 ;SEGMENT SIZE TOO BIG
$EFNSN==$E$FIL!EL$FTX + 517 ;NO SUCH NODE NAME
$EFUXS==$E$FIL!EL$FTX + 520 ;UNEXPECTED STATE: UNSPECIFIED
$EFWNA==$E$FIL!EL$FTX + 521 ;WRONG NUMBER OF ARGUMENTS
$EFWRS==$E$FIL!EL$FTX + 522 ;FUNCTION CALLED IN WRONG STATE
$EFCBL==$E$FIL!EL$FTX + 523 ;CONNECT BLOCK LENGTH ERROR
$EFPBL==$E$FIL!EL$FTX + 524 ;PROCESS BLOCK LENGTH ERROR
$EFSBL==$E$FIL!EL$FTX + 525 ;STRING BLOCK LENGTH ERROR
$EFUDS==$E$FIL!EL$FTX + 526 ;UNEXPECTED STATE: DISCONNECT SENT
$EFUDC==$E$FIL!EL$FTX + 527 ;UNEXPECTED STATE: DISCONNECT CONFIRMED
$EFUCF==$E$FIL!EL$FTX + 530 ;UNEXPECTED STATE: NO CONFIDENCE
$EFULK==$E$FIL!EL$FTX + 531 ;UNEXPECTED STATE: NO LINK
$EFUCM==$E$FIL!EL$FTX + 532 ;UNEXPECTED STATE: NO COMMUNICATION
$EFUNR==$E$FIL!EL$FTX + 533 ;UNEXPECTED STATE: NO RESOURCES
$EFRBO==$E$FIL!EL$FTX + 534 ;CONNECT REJECTED BY OBJECT
$EFDBO==$E$FIL!EL$FTX + 535 ;DISCONNECTED BY OBJECT
$EFRES==$E$FIL!EL$FTX + 536 ;CONNECT REJECTED: NO RESOURCES
$EFUXN==$E$FIL!EL$FTX + 537 ;CONNECT REJECTED: UNKNOWN NAME
$EFRNS==$E$FIL!EL$FTX + 540 ;CONNECT REJECTED: NODE IS SHUT DOWN
$EFURO==$E$FIL!EL$FTX + 541 ;CONNECT REJECTED: UNRECOGNIZED OBJECT
$EFIOF==$E$FIL!EL$FTX + 542 ;CONNECT REJECTED: BAD OBJECT NAME FORMAT
$EFOTB==$E$FIL!EL$FTX + 543 ;CONNECT REJECTED: OBJECT TOO BUSY/FULL
$EFABM==$E$FIL!EL$FTX + 544 ;CONNECT REJECTED: ABORT BY MANAGEMENT
$EFABO==$E$FIL!EL$FTX + 545 ;CONNECT REJECTED: ABORT BY OBJECT
$EFINF==$E$FIL!EL$FTX + 546 ;CONNECT REJECTED: INVALID NODE NAME FORMAT
$EFLNS==$E$FIL!EL$FTX + 547 ;CONNECT REJECTED: LOCAL NODE SHUT DOWN
;CONTINUED ON NEXT PAGE
;CONTINUED FROM PREVIOUS PAGE
$EFUID==$E$FIL!EL$FTX + 550 ;CONNECT REJECTED: USER ID REJECTED
$EFNRO==$E$FIL!EL$FTX + 551 ;CONNECT REJECTED: NO RESPONSE FROM OBJECT
$EFNUR==$E$FIL!EL$FTX + 552 ;NODE UNREACHABLE
$EFNLK==$E$FIL!EL$FTX + 553 ;NO LINK
$EFDSC==$E$FIL!EL$FTX + 554 ;DISCONNECT COMPLETE
$EFIMG==$E$FIL!EL$FTX + 555 ;IMAGE FIELD TOO LONG
$EFUAC==$E$FIL!EL$FTX + 556 ;CONNECT REJECTED: INVALID ACCOUNT DATA
$EFBCF==$E$FIL!EL$FTL + 557 ;BAD COMBINATION OF NS.EOM AND NS.WAI
$EFADE==$E$FIL!EL$FTX + 560 ;ADDRESS CHECK
SUBTTL Status codes - File access -- miscellaneous
$EFRJU==$E$FIL!EL$FTL + 700 ;REJECTED BY USER (/QUERY, ETC)
$EFIXN==$E$FIL!EL$FTX + 701 ;INPUT FILE STREAM EXHAUSTED (NO MORE FILES)
$EFIXE==$E$FIL!EL$FTX + 702 ;INPUT EXHAUSTED (REDUNDANT, ERROR)
$EFNAD==$E$FIL!EL$FTX + 703 ;DEVICE NOT A DISK
$EFIFO==$E$FIL!EL$FTX + 704 ;ILLEGAL FILE OPERATION
$EFIFM==$E$FIL!EL$FTL + 705 ;ILLEGAL FILE MODE
$EFILI==$E$FIL!EL$FTX + 706 ;ILLEGAL INPUT (OUTPUT DEVICE ONLY)
$EFILO==$E$FIL!EL$FTX + 707 ;ILLEGAL OUTPUT (INPUT DEVICE ONLY)
$EFISW==$E$FIL!EL$FTX + 710 ;ILLEGAL SECONDARY WILDCARDING
$EFVBI==$E$FIL!EL$FTX + 711 ;VARIABLE BLOCKSIZE ILLEGAL
$EFBTB==$E$FIL!EL$FTX + 712 ;BLOCKSIZE TOO BIG
$EFBTS==$E$FIL!EL$FTX + 713 ;BLOCKSIZE TOO SMALL
$EFFUL==$E$FIL!EL$FTX + 714 ;DEVICE/FILE FULL (STORAGE EXAUSTED)
$EFQTA==$E$FIL!EL$FTX + 715 ;DEVICE QUOTA EXCEEDED
$EFDIF==$E$FIL!EL$FTX + 716 ;DIRECTORY IS FULL (OR CAN'T MAKE NAME UNIQUE)
$EFXXX==$E$FIL!EL$FTL + 777 ;UNKNOWN OR UNSPECIFIED ERROR
SUBTTL Status codes - I/O transmission -- file level
$EIEOF==$E$IOX!EL$FTL + 001 ;END OF FILE
$EIDEV==$E$IOX!EL$FTX + 002 ;HARD (UNRECOVERABLE) DEVICE ERROR
$EIDAT==$E$IOX!EL$FTL + 003 ;DATA PARITY/CHECKSUM ERROR
$EIBKT==$E$IOX!EL$FTL + 004 ;BLOCK TOO LARGE FOR DATA BUFFER
$EIIMP==$E$IOX!EL$FTL + 005 ;"IMPROPER MODE"
$EIFUL==$E$IOX!EL$FTL + 006 ;DEVICE FULL / STORAGE EXHAUSTED
$EIQTA==$E$IOX!EL$FTL + 007 ;USER QUOTA EXCEEDED
$EIHWL==$E$IOX!EL$FTL + 010 ;DEVICE HARDWARE WRITE-LOCKED
$EISWL==$E$IOX!EL$FTL + 011 ;DEVICE SOFTWARE WRITE-LOCKED
$EIEOV==$E$IOX!EL$FTL + 012 ;END-OF-VOLUME
$EIOFL==$E$IOX!EL$FTL + 013 ;DEVICE "OFFLINE"
$EILLE==$E$IOX!EL$FTL + 014 ;PAGE LIMIT EXCEEDED
$EIVFE==$E$IOX!EL$FTL + 015 ;VFU ERROR
$EILUC==$E$IOX!EL$FTL + 016 ;LP20 UNDEFINED CHARACTER INTERRUPT
$EIVRP==$E$IOX!EL$FTL + 017 ;LP20 RAM PARITY ERROR
$EILBL==$E$IOX!EL$FTL + 020 ;TAPE LABEL ERROR (GENERIC)
$EICNO==$E$IOX!EL$FTL + 021 ;CHANNEL NOT OPEN FOR FILE/I/O ACTIVITY
$EIECF==$E$IOX!EL$FTL + 022 ;ERROR CLOSING FILE
$EINBI==$E$IOX!EL$INF + 023 ;NON-BLOCKING FILE INPUT
$EINBO==$E$IOX!EL$INF + 024 ;NON-BLOCKING FILE OUTPUT
$EILSN==$E$IOX!EL$INF + 025 ;LINE SEQUENCE NUMBER DETECTED
$EILLN==$E$IOX!EL$FTL + 026 ;LUDICROUS LINE SEQUENCE NUMBER
$EIEFL==$E$IOX!EL$FTL + 027 ;EOF READING LSN
$EIMLN==$E$IOX!EL$FTL + 030 ;MULTIPLE LSN'S
$EINOL==$E$IOX!EL$FTL + 031 ;NOT OPENED FOR LSN SUPPORT
$EILTB==$E$IOX!EL$FTL + 032 ;LSN TOO BIG
$EIINO==$E$IOX!EL$FTL + 033 ;NOT OPENED FOR INPUT
$EIONO==$E$IOX!EL$FTL + 034 ;NOT OPENED FOR OUTPUT
$EIILF==$E$IOX!EL$FTL + 035 ;ILLEGAL I/O FUNCTION (.IOFUN CALL)
$EIBOR==$E$IOX!EL$INF + 036 ;BEGINING OF RECORD ENCOUNTERED
$EIRSU==$E$IOX!EL$INF + 036 ;BOR, BUT SIZE OF RECORD IS UNKNOWN
$EIEOR==$E$IOX!EL$FTL + 037 ;PREMATURE END OF RECORD (RECORD SIZE WRONG)
$EIDPR==$E$IOX!EL$FTL + 040 ;DATA PAST END OF RECORD (RECORD SIZE WRONG)
$EIRFE==$E$IOX!EL$FTL + 041 ;RECORD FORMAT ERROR
$EICCC==$E$IOX!EL$FTL + 042 ;ERROR IN COBOL CARRIAGE CONTROL FORMAT
$EIFCC==$E$IOX!EL$FTL + 043 ;ERROR IN FORTRAN CARRIAGE CONTROL FORMAT
$EIPRN==$E$IOX!EL$FTL + 044 ;ERROR IN VAX "PRINT FILE" CONTROL FORMAT
$EINRS==$E$IOX!EL$FTL + 045 ;NOT A RECORD-STRUCTURED FILE
$EINIR==$E$IOX!EL$FTL + 046 ;NOT IN A RECORD
$EIRSO==$E$IOX!EL$FTL + 047 ;RECORD STILL OUTSTANDING (ALREADY IN A RECORD)
$EIRTB==$E$IOX!EL$FTL + 050 ;RECORD [SIZE] TOO BIG
$EIRAI==$E$IOX!EL$FTL + 051 ;RECORD ADDRESS ILLEGAL
SUBTTL Status codes - I/O transmission -- DAP/data level
$EIDAP==$E$IOX!EL$FTX + 200 ;BIZARRE (NOT-READILY-TRANSLATABLE) DAP STATUS
$EIRIE==$E$IOX!EL$FTL + 201 ;GENERIC (CATCH-ALL) REMOTE I/O ERROR
$EICKE==$E$IOX!EL$FTL + 202 ;NETWORK FILE DATA CRC ("CHECKSUM") ERROR
$EINTI==$E$IOX!EL$INF + 203 ;NON-BLOCKING NETWORK INPUT
$EINTO==$E$IOX!EL$INF + 204 ;NON-BLOCKING NETWORK OUTPUT
$EIBAI==$E$IOX!EL$FTL + 205 ;BINARY FILE WITH ASCII ATTRIBUTES ILLEGAL
SUBTTL Status codes - I/O transmission -- network level (TSK./NSP.)
$EINLA==$E$IOX!EL$FTX + 401 ;NETWORK LINK ABORTED
$EINMP==$E$IOX!EL$INF + 402 ;NETWORK [INPUT] MESSAGE PENDING
$EIABE==$E$IOX!EL$FTX + 501 ;ARGUMENT BLOCK FORMAT ERROR
$EIALF==$E$IOX!EL$FTX + 502 ;ALLOCATION FAILURE
$EIBCN==$E$IOX!EL$FTX + 503 ;BAD CHANNEL NUMBER
$EIBFT==$E$IOX!EL$FTX + 504 ;BAD FORMAT TYPE IN PROCESS BLOCK
$EICFE==$E$IOX!EL$FTX + 505 ;CONNECT BLOCK FORMAT ERROR
$EIIDL==$E$IOX!EL$FTL + 506 ;INTERRUPT DATA TOO LONG
$EIIFM==$E$IOX!EL$FTX + 507 ;ILLEGAL FLOW CONTROL MODE
$EIILF==$E$IOX!EL$FTX + 510 ;ILLEGAL NSP. FUNCTION CODE
$EIJQX==$E$IOX!EL$FTX + 511 ;JOB QUOTA EXHAUSTED
$EILQX==$E$IOX!EL$FTX + 512 ;LINK QUOTA EXHAUSTED
$EINCD==$E$IOX!EL$FTL + 513 ;NO CONNECT DATA TO READ
$EIPIO==$E$IOX!EL$FTL + 514 ;PERCENTAGE INPUT OUT OF BOUNDS
$EIPRV==$E$IOX!EL$FTL + 515 ;NO PRIVILEGES TO PERFORM FUNCTION
$EISTB==$E$IOX!EL$FTX + 516 ;SEGMENT SIZE TOO BIG
$EINSN==$E$IOX!EL$FTX + 517 ;UNKNOWN NODE NAME
$EIUXS==$E$IOX!EL$FTX + 520 ;UNEXPECTED STATE: UNSPECIFIED
$EIWNA==$E$IOX!EL$FTX + 521 ;WRONG NUMBER OF ARGUMENTS
$EIWRS==$E$IOX!EL$FTX + 522 ;FUNCTION CALLED IN WRONG STATE
$EICBL==$E$IOX!EL$FTX + 523 ;CONNECT BLOCK LENGTH ERROR
$EIPBL==$E$IOX!EL$FTX + 524 ;PROCESS BLOCK LENGTH ERROR
$EISBL==$E$IOX!EL$FTX + 525 ;STRING BLOCK LENGTH ERROR
$EIUDS==$E$IOX!EL$FTX + 526 ;UNEXPECTED STATE: DISCONNECT SENT
$EIUDC==$E$IOX!EL$FTX + 527 ;UNEXPECTED STATE: DISCONNECT CONFIRMED
$EIUCF==$E$IOX!EL$FTX + 530 ;UNEXPECTED STATE: NO CONFIDENCE
$EIULK==$E$IOX!EL$FTX + 531 ;UNEXPECTED STATE: NO LINK
$EIUCM==$E$IOX!EL$FTX + 532 ;UNEXPECTED STATE: NO COMMUNICATION
$EIUNR==$E$IOX!EL$FTX + 533 ;UNEXPECTED STATE: NO RESOURCES
$EIRBO==$E$IOX!EL$FTX + 534 ;CONNECT REJECTED BY OBJECT
$EIDBO==$E$IOX!EL$FTX + 535 ;DISCONNECTED BY OBJECT
$EIRES==$E$IOX!EL$FTX + 536 ;CONNECT REJECTED: NO RESOURCES
$EIUXN==$E$IOX!EL$FTX + 537 ;CONNECT REJECTED: UNKNOWN NAME
$EIRNS==$E$IOX!EL$FTX + 540 ;CONNECT REJECTED: NODE IS SHUT DOWN
$EIURO==$E$IOX!EL$FTX + 541 ;CONNECT REJECTED: UNRECOGNIZED OBJECT
$EIIOF==$E$IOX!EL$FTX + 542 ;CONNECT REJECTED: BAD OBJECT NAME FORMAT
$EIOTB==$E$IOX!EL$FTX + 543 ;CONNECT REJECTED: OBJECT TOO BUSY/FULL
$EIABM==$E$IOX!EL$FTX + 544 ;CONNECT REJECTED: ABORT BY MANAGEMENT
$EIABO==$E$IOX!EL$FTX + 545 ;CONNECT REJECTED: ABORT BY OBJECT
$EIINF==$E$IOX!EL$FTX + 546 ;CONNECT REJECTED: INVALID NODE NAME FORMAT
$EILNS==$E$IOX!EL$FTX + 547 ;CONNECT REJECTED: LOCAL NODE SHUT DOWN
;CONTINUED ON NEXT PAGE
;CONTINUED FROM PREVIOUS PAGE
$EIUID==$E$IOX!EL$FTX + 550 ;CONNECT REJECTED: USER ID REJECTED
$EINRO==$E$IOX!EL$FTX + 551 ;CONNECT REJECTED: NO RESPONSE FROM OBJECT
$EINUR==$E$IOX!EL$FTX + 552 ;NODE UNREACHABLE
$EINLK==$E$IOX!EL$FTX + 553 ;NO LINK
$EIDSC==$E$IOX!EL$FTX + 554 ;DISCONNECT COMPLETE
$EIIMG==$E$IOX!EL$FTX + 555 ;IMAGE FIELD TOO LONG
$EIUAC==$E$IOX!EL$FTX + 556 ;CONNECT REJECTED: INVALID ACCOUNT DATA
$EIBCF==$E$IOX!EL$FTL + 557 ;BAD COMBINATION OF NS.EOM AND NS.WAI
$EIADE==$E$IOX!EL$FTX + 560 ;ADDRESS CHECK
;"OTHER" NON-SPECIFIC ERRORS
$EIXXX==$E$IOX!EL$FTL + 777 ;UNKNOWN OR UNSPECIFIED ERROR
SUBTTL Status codes - Data format and syntax
;"OTHER" NON-SPECIFIC ERRORS
$EDXXX==$E$DAT!EL$FTL + 777 ;UNKNOWN OR UNSPECIFIED ERROR
SUBTTL Status codes - Environmental ("Acts of God") Errors
;400 - 577 NETWORK BASED
;600 - 776 DAP BASED
$EERDE==$E$ENV!EL$FTL + 600 ;REMOTE-DETECTED DAP-LEVEL ERROR
$EELDE==$E$ENV!EL$FTL + 610 ;LOCAL-DETECTED DAP-LEVEL ERROR
; (IMPLICITLY NEED TO SEND STATUS TO REMOTE)
$EEUDS==$E$ENV!EL$FTL + 620 ;RESERVED/UNKNOWN DAP STATUS RECEIVED
$EERSP==$E$ENV!EL$FTX + 621 ;REMOTE SCREWY PROTOCOL, LINK ABORTED
;"OTHER" NON-SPECIFIC ERRORS
$EEXXX==$E$ENV!EL$FTL + 777 ;UNKNOWN OR UNSPECIFIED ERROR
SUBTTL Status codes - Memory management
;<TBS>
SUBTTL Status codes - QUEUE and GALAXY related
;QUEUE. ERRORS
$EQIAL==$E$QUE!EL$FTL + 001 ;ILLEGAL ARGUMENT LIST
$EQILF==$E$QUE!EL$FTL + 002 ;ILLEGAL FUNCTION (QUEUE.)
$EQNFS==$E$QUE!EL$FTL + 003 ;NO MONITOR FREE CORE
$EQADC==$E$QUE!EL$FTL + 004 ;ADDRESS CHECK
$EQCNR==$E$QUE!EL$FTL + 005 ;COMPONENT NOT RUNNING (NO PID)
$EQFER==$E$QUE!EL$FTL + 006 ;ERROR RETURNED FROM ORION
$EQSOC==$E$QUE!EL$FTL + 007 ;INVALID MESSAGE FROM ORION
$EQNPV==$E$QUE!EL$FTL + 010 ;NOT PRIVILEGED
;SPPRM. ERRORS
$EQPAC==$E$QUE!EL$FTL + 100 ;ADDRESS CHECK
$EQPIA==$E$QUE!EL$FTL + 101 ;ILLEGAL ARGUMENT LIST LENGTH
$EQPID==$E$QUE!EL$FTL + 102 ;ILLEGAL DEVICE
$EQPNA==$E$QUE!EL$FTL + 103 ;DEVICE NOT OPENED
$EQPNS==$E$QUE!EL$FTL + 104 ;DEVICE NOT SPOOLED
$EQPNC==$E$QUE!EL$FTL + 105 ;NO MONITOR FREE CORE
$EQPIF==$E$QUE!EL$FTL + 106 ;ILLEGAL FUNCTION
;ACCOUNTING SYSTEM ERRORS
$EQPRA==$E$QUE!EL$FTL + 400 ;NOT PRIVILEGED TO DO ACCOUNTING STUFF
$EQILP==$E$QUE!EL$FTL + 401 ;ILLEGAL PPN
$EQIPW==$E$QUE!EL$FTL + 402 ;INVALID PASSWORD
$EQIVA==$E$QUE!EL$FTL + 403 ;INVALID ACCOUNT STRING
;MISCELLANEOUS
$EQFUF==$E$QUE!EL$FTL + 700 ;QUEUE. FUNCTION FAILED
$EQXXX==$E$QUE!EL$FTL + 777 ;UNKNOWN OR UNSPECIFIED ERROR
SUBTTL Status codes - Miscellaneous
;<TBS>
SUBTTL Status codes - Internal flow control
$ECTRA==$E$CTL!EL$INF + 001 ;ABORTED, "TRY AGAIN"
$ECAUR==$E$CTL!EL$INF + 002 ;ABORTED AT USER'S REQUEST
SUBTTL Status codes - STOPCDs
$EDSTP==$E$DIE!EL$FTX + 001 ;PROGRAM STOPCODE
SUBTTL Scheduler codes
$SCNBI==0 ;NON-BLOCKING LOCAL INPUT
$SCNBO==1 ;NON-BLOCKING LOCAL OUTPUT
$SCNTI==2 ;NON-BLOCKING NETWORK INPUT
$SCNTO==3 ;NON-BLOCKING NETWORK OUTPUT
;CLEAN UP THE SYMBOL TABLE
DODAP(CLN)
END