Trailing-Edge
-
PDP-10 Archives
-
T10_DECMAIL_MS_V11_FT1_860414
-
10,7/mail/mx/nmucom.req
There are 3 other files named nmucom.req in the archive. Click here to see a list.
! UPD ID= 337, SNARK:<6.1.NML>NMUCOM.REQ.13, 23-Jul-85 14:23:35 by MCCOLLUM
! Add CD_MORE_MOP_RESPONSES flag to CD_BLOCK to show that there are more
! responses pending to a LOOP request on the multicast. Set in READ_MOP_LOOP
! in NMUKNI and read in LOOP_CIRCUIT in NMLLBK.
!
! UPD ID= 289, SNARK:<6.1.NML>NMUCOM.REQ.12, 14-Mar-85 16:18:54 by GLINDELL
! The bit name was CD_.., not CB_
!
! UPD ID= 288, SNARK:<6.1.NML>NMUCOM.REQ.11, 14-Mar-85 16:17:13 by GLINDELL
! Remove CB_WAIT_REQ - there's more to it...
!
! UPD ID= 287, SNARK:<6.1.NML>NMUCOM.REQ.10, 14-Mar-85 15:59:51 by GLINDELL
! Add CD_WAIT_REQ to flag that we are waiting for a 2nd MOP request
!
! UPD ID= 178, SNARK:<6.1.NML>NMUCOM.REQ.9, 7-Dec-84 08:18:44 by HALPIN
! Fixed $NMU_DLX_ENABLE_MULTICAST macro. Forget the RSP_PTR argument.
! Add a bit field, CD_KLNI_MULTICAST, to flag that a multicast
! message was received.
! Add fields for NI Interrupt channels in CD_BLOCK definition.
! Add PSI channel number arguments to $NMU_DLX_OPEN macro.
!
! UPD ID= 164, SNARK:<6.1.NML>NMUCOM.REQ.8, 14-Nov-84 13:55:04 by HALPIN
! Add DLX_LDA (Load/Dump Assistance) symbol, for USAGE field in calls
! to $NMU_DLX_OPEN.
! Add macro definitions for the following routines: NMU$DLX_ENABLE_MULTICAST,
! and NMU$KLNI_ENABLE_MULTICAST.
!
! UPD ID= 152, SNARK:<6.1.NML>NMUCOM.REQ.7, 31-Oct-84 15:58:03 by HALPIN
! Remove Semi-colon (;) from $NMU_DLX_DEVICE_TYPE macro to it passes
! the routine value to the caller.
!
! UPD ID= 145, SNARK:<6.1.NML>NMUCOM.REQ.6, 30-Oct-84 11:31:10 by HALPIN
! New field in Circuit Device Block (CD) for ETHERNET Hardware Address
! (CD_HARDWARE_ADDRESS) and Receive Buffer Id (CD_RCV_BID).
!
! UPD ID= 142, SNARK:<6.1.NML>NMUCOM.REQ.5, 29-Oct-84 13:43:35 by GUNN
! Add definitions for new routine NMU$DLX_DEVICE_TYPE.
!
! UPD ID= 137, SNARK:<6.1.NML>NMUCOM.REQ.4, 24-Oct-84 16:54:15 by GUNN
! Add DLX_TRIGGER as an additional usage reason code.
!
! UPD ID= 94, SLICE:<6.1.NML>NMUCOM.REQ.3, 18-Sep-84 15:20:03 by GUNN
! Add support for KLNI in NMUKNI.
! Change $NMU_DLX_OPEN macro to accept and pass PHYSICAL ADDRESS.
!
! UPD ID= 16, SNARK:<6.1.NML>NMUCOM.REQ.2, 24-May-84 13:39:35 by GLINDELL
! DSKT:NMUCOM.REQ[10,6026,NML702] 2-Feb-84 09:16:20, Edit by DAVENPORT
!
! Clean up definition of TASK_ERROR to avoid compilation errors from
! BLISS version 4(215).
!
! DSKC:NMUCOM.REQ[10,5665,SOURCE,TOPS10] 25-Apr-83 13:22:55, Edit by GROSSMAN
!
! Add definitions of NMU$FILE_BUILD_BUFFERS and NMU$FILE_KILL_BUFFERS
!
! PH4:<GLINDELL>NMUCOM.REQ.2 21-Nov-83 20:18:41, Edit by GLINDELL
!
! Add NMU$QUEUE_NEXT to list of global NMU QUEUE functions
!
!<X25-UPDATE>NMUCOM.REQ.6, 21-Jun-83 09:09:25, Edit by MCINTEE
!
! Change $NMU_DLX_OPEN to accomodate X.25 circuits.
!
! <BRANDT.DEVELOPMENT>NMUCOM.REQ.1 07-Sep-82 10:13:05, Edit by BRANDT
!
! Make PROGRAM_ERROR cause the program to stop. Before this edit
! this was just a NOP.
!
! NET:<PECKHAM.DEVELOPMENT>NMUCOM.REQ.2 29-Jun-82 09:56:00, Edit by PECKHAM
!
! Changes for NMX command handling:
! Add $NMU_NMX_* macros for optimimal implementation.
!
! <BRANDT.DEVELOPMENT>NMUCOM.REQ.1 01-Jun-82 10:13:05, Edit by BRANDT
!
! Remove definition for NMU$TIMEOUT_CHECK.
!
! NET:<PECKHAM.DEVELOPMENT>NMUCOM.REQ.3 14-May-82 12:19:27, Edit by PECKHAM
!
! Add NMU$DLX_KNOWN_DEVICE and NMU$DLX_RETURN_CIRCUITS synonyms.
!
! NET:<PECKHAM.DEVELOPMENT>NMUCOM.REQ.9 28-Apr-82 13:52:10, Edit by PECKHAM
!
! Add $NMU_DLX_* macros. This is to help fix the MOP function timeout bug.
! Add NMU$K_MOP_RETRY_LIMIT for MOP retransmit limit.
!
! NET:<VOBA.NML.DEVELOPMENT>NMUCOM.REQ.4 25-Mar-82 17:55:39, Edit by VOBA
!
! Add new routine (global mapping) name NMU$QUEUE_LENGTH (alias UQ_LENGTH)
! for NMUQUE module.
!
! NET:<VOBA.NML.DEVELOPMENT>NMUCOM.REQ.3 19-Feb-82 12:41:10, Edit by VOBA
!
! Fix typo errors.
!
! NET:<VOBA.NML.DEVELOPMENT>NMUCOM.REQ.15 18-Feb-82 17:10:20, Edit by VOBA
!
! Clean up code and update copyright date.
!
! NET:<GROSSMAN>NMUCOM.REQ.3 26-Jan-82 06:53:41, Edit by GROSSMAN
!
! Fix definition of EVENT_BLOCK. This is need in order to have tasks wake up
! on multiple events.
!
! NET:<PECKHAM.DEVELOPMENT>NMUCOM.REQ.2 20-Jan-82 08:54:21, Edit by PECKHAM
!
! Fix NMU$SCHED_MANAGER macro to declare NMU$SCHED_WAIT as having a value.
!
! NET:<DECNET20-V3P1.NMLLIB>NMUCOM.REQ.3 03-Dec-81 14:31:00, Edit by THIGPEN
!
! Add definition for NMU$TIMEOUT_CHECK.
!
! NET:<DECNET20-V3P1.NMU>NMUCOM.REQ.3 13-Jul-81 10:00:18, Edit by GUNN
!
! Add definition for NMU$FILE_INITIALIZE.
!
! NET:<DECNET20-V3P1.NMU>NMUCOM.REQ.2 2-Jul-81 12:03:30, Edit by GUNN
!
! Add definitions for new module NMUUTL.
!
! NET:<DECNET20-V3P1.NMU>NMUCOM.REQ.2 18-Jun-81 15:48:09, Edit by GUNN
!
! Remove definition of DLX_TRANSFER.
!
! NET:<DECNET20-V3P1.NMU>NMUCOM.REQ.2 12-Jun-81 13:36:30, Edit by JENNESS
!
! Readability improvements.
!
! NET:<DECNET20-V3P1.BASELEVEL-2.MCB>NMUCOM.REQ.2 10-Jun-81 09:58:52, Edit by SROBINSON
!
! Add Quota Queue Definitions
!
! NET:<DECNET20-V3P1.NMU>NMUCOM.REQ.2 26-May-81 13:27:39, Edit by JENNESS
!
! Add OUTPUT_POSITION to TEXT STATE BLOCK.
!
! NET:<DECNET20-V3P1.NMU>NMUCOM.REQ.12 8-May-81 17:28:37, Edit by GUNN
!
! Fix TASK_ERROR, TASK_INFO, and PROGRAM_ERROR to really handle
! arguments like %STRING as advertised.
!
! NET:<DECNET20-V3P1.NMU>NMUCOM.REQ.2 16-Apr-81 13:43:09, Edit by JENNESS
!
! Add NMU$FILE and NMU$TABLE definitions
!
! NET:<DECNET20-V3P1.BASELEVEL-2.MCB>NMUCOM.REQ.2 30-Apr-81 14:07:55, Edit by SROBINSON
!
! Fix Text Generation in MCB mode
!
! NET:<DECNET20-V3P1.NMU>NMUCOM.REQ.36 18-Mar-81 11:23:31, Edit by JENNESS
!
! Split debugging macros off into file DEBUG.REQ
!
! NET:<DECNET20-V3P1.NMU>NMUCOM.REQ.3 10-Mar-81 11:26:21, Edit by JENNESS
!
! Add debugging macros.
!
! NET:<DECNET20-V3P1.NMU>NMUCOM.REQ.3 9-Feb-81 10:33:38, Edit by JENNESS
!
! Change text state block. Remove FIELD_SUPPRESS. Change FIELD_NOCOMPRESS
! to FIELD_ZERO_SUPPRESS. Makes code much(!!) clearer.
!
! NET:<DECNET20-V3P1.BASELEVEL-2.SOURCES>NMUCOM.REQ.16 4-Feb-81 17:41:37, Edit by GUNN
!
! Update copyright date to 1981
%title 'NMUCOM -- Network Management Utilities Common Definitions'
! COPYRIGHT (C) 1981, 1982 BY
! DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASSACHUSETTS 01754
!
! THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ON A SINGLE
! COMPUTER SYSTEM AND MAY BE COPIED ONLY 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
! EXCEPT FOR USE ON SUCH SYSTEM AND TO ONE WHO AGREES TO THESE LICENSE
! TERMS. TITLE TO AND OWNERSHIP OF THE SOFTWARE SHALL AT ALL TIMES
! REMAIN IN DEC.
!
! THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE
! AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
! CORPORATION.
!
! DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
! SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
!
!++
! Facility: LSG DECnet Network Management
!
! Abstract: This file contains definitions for data base
! formats and interesting values used when communicating
! with the NMU utility routines.
!
! Environment: Bliss-36, Bliss-32 and Bliss-16.
!
! Author: Steven M. Jenness, Creation date: 10-Sep-80
!
!--
!
! Boolean value definitions
!
literal
$TRUE = 1 eql 1,
$FALSE = 1 eql 0;
! Semaphore block
!
! A semaphore defined by this block is set/reset by
! the macro calls LOCK/UNLOCK.
!
! macro: SEMAPHORE_BLOCK Defines a semaphore block
! value: SEMAPHORE_BLOCK_SIZE Defines size of a semaphore block
$field SEMAPHORE_BLOCK_FIELDS =
set
SEMAPHORE = [$integer] ! Interlock flag
tes;
literal
SEMAPHORE_BLOCK_SIZE = $field_set_size;
macro
SEMAPHORE_BLOCK =
block [SEMAPHORE_BLOCK_SIZE] field (SEMAPHORE_BLOCK_FIELDS) %;
%sbttl 'Queue Structure Definitions'
! These queue structure definitions are used with the routines contained
! in NMUQUE (Queue Manager).
!
! Queue entry definitions
!
! macro: Q_ENTRY Defines a queue entry
! value: Q_ENTRY_SIZE Defines size of queue entry header
$field Q_ENTRY_FIELDS =
set
Q_FORWARD = [$address],
Q_REVERSE = [$address],
Q_SEMAPHORE = [$sub_block (SEMAPHORE_BLOCK_SIZE)],
Q_DATA = [$sub_block (0)]
tes;
literal
Q_ENTRY_SIZE = $field_set_size,
Q_ENTRY_ALLOCATION = $field_set_units;
macro
Q_ENTRY =
block [Q_ENTRY_SIZE] field (Q_ENTRY_FIELDS) %;
! Queue header definitions
!
! macro: Q_HEADER Defines a queue header
! value: Q_HEADER_SIZE Defines size of queue header
literal
Q_HEADER_SIZE = Q_ENTRY_SIZE,
Q_HEADER_ALLOCATION = Q_ENTRY_ALLOCATION;
macro
Q_HEADER =
block [Q_HEADER_SIZE] field (Q_ENTRY_FIELDS) %;
! These tasking definitions are used with the tasking system contained
! in NMUSKD (Scheduler).
!
! Event data base definitions
!
! macro: EVENT_BLOCK Defines a event block
! value: EVENT_BLOCK_SIZE Defines size of a event block
$field EVENT_BLOCK_FIELDS =
set
EB_TASKS = [$address],
! EB_SEMAPHORE = [$sub_block (SEMAPHORE_BLOCK_SIZE)],
EB_SEMAPHORE = [$integer],
EB_NOINT = [$bit]
tes;
literal
EVENT_BLOCK_SIZE = $field_set_size,
EVENT_BLOCK_ALLOCATION = $field_set_units;
macro
EVENT_BLOCK =
block [EVENT_BLOCK_SIZE] field (EVENT_BLOCK_FIELDS) %;
! Scheduling queue header definitions
!
! macro: SQ_HEADER Defines a queue header block
! value: SQ_HEADER_SIZE Defines size of queue header block
$field SQ_HEADER_FIELDS =
set
Q_QUEUE = [$sub_block (Q_HEADER_SIZE)],
Q_EVENT = [$sub_block (EVENT_BLOCK_SIZE)]
tes;
literal
SQ_HEADER_SIZE = $field_set_size,
SQ_HEADER_ALLOCATION = $field_set_units;
macro
SQ_HEADER =
block [SQ_HEADER_SIZE] field (SQ_HEADER_FIELDS) %;
! macro: QQ_HEADER Defines a quota queue header block
! value: QQ_HEADER_SIZE Defines size of quota queue header block
$field QQ_HEADER_FIELDS =
set
QQ_SQUEUE = [$sub_block (SQ_HEADER_SIZE)],
QQ_IEVENT = [$sub_block (EVENT_BLOCK_SIZE)],
QQ_QUOTA = [$short_integer],
QQ_CURRENT = [$short_integer]
tes;
literal
QQ_HEADER_SIZE = $field_set_size,
QQ_HEADER_ALLOCATION = $field_set_units;
macro
QQ_HEADER =
block [QQ_HEADER_SIZE] field (QQ_HEADER_FIELDS) %;
%sbttl 'Tasking Definitions'
! macro: TASK_ERROR
!
! This macro signals that the currently running
! task has encountered a fatal error. The supplied
! string is associated with the task crash. The
! system specific recovery procedure is started.
!
! TASK_ERROR (ERROR_STRING)
!
! where ERROR_STRING is either a pointer to a string
! or a literal message string as for %STRING.
macro
TASK_ERROR [] =
begin
%if $MCB
%then external routine NMU$SCHED_COMPLETE : novalue;
NMU$SCHED_COMPLETE ();
%else external routine NMU$SCHED_ERROR : novalue;
NMU$SCHED_ERROR (%if %isstring (%remove (%remaining))
%then ch$asciz (%remaining)
%else %remaining
%fi);
%fi
end %;
! macro: TASK_INFO
!
! This macro is used by a task that wishes to
! output an informational message. Hopefully
! to an operators console, log, or controlling
! terminal.
!
! TASK_INFO (INFO_MESSAGE)
!
! where INFO_MESSAGE is either a pointer to a string
! or a literal message string as for %STRING.
macro
TASK_INFO [] =
%if not $MCB
%then begin
external routine SS_MESSAGE; ! System specific routine
%if %isstring (%remove (%remaining))
%then SS_MESSAGE (ch$asciz (%remaining))
%else SS_MESSAGE (%remaining)
%fi
end
%fi %;
! macro: PROGRAM_ERROR
!
! This macro is used when a unrecoverable error
! has been detected in the multi-tasking environment.
!
! PROGRAM_ERROR (INFO_MESSAGE)
!
! where INFO_MESSAGE is either a pointer to a string
! or a literal message string as for %STRING.
macro
PROGRAM_ERROR [] =
%if not $MCB
%then begin
external routine SS_MESSAGE; ! System specific routine
SS_MESSAGE (ch$asciz ('?FATAL PROGRAM ERROR: '));
%if %isstring (%remove (%remaining))
%then SS_MESSAGE (ch$asciz (%remaining));
%else SS_MESSAGE (%remaining);
%fi
while $true do STOP_PROGRAM;
end
%else begin
external routine NMU$FA; ! System specific routine
NMU$FA (); ! Execute IOT for MCB
end
%fi %;
%sbttl 'Network Logical Link Definitions'
! These definitions are used with the task to task logical link
! interface contained in NMUNET (Network Interface).
!
! Connect block definition
$field CONNECT_BLOCK_FIELDS =
set
!
! Fields common to source and target links
!
CB_HOST = [$pointer], ! Host name
CB_HOST_LENGTH = [$integer],
CB_OBJECT = [$integer], ! DECnet object type code
CB_TASK = [$pointer], ! Task name
CB_TASK_LENGTH = [$integer],
!
! Access control info
! supplied on source links
! returned on target links
!
CB_USERID = [$pointer], ! User id
CB_USERID_LENGTH = [$integer],
CB_DATA = [$pointer], ! Optional data
CB_DATA_LENGTH = [$integer],
CB_ACCOUNT = [$pointer], ! Account
CB_ACCOUNT_LENGTH = [$integer],
CB_PASSWORD = [$pointer], ! Password
CB_PASSWORD_LENGTH = [$integer],
!
! Fields for source links only
!
CB_DESCRIPTOR = [$pointer], ! Object descriptor
CB_DESCRIPTOR_LENGTH = [$integer],
CB_REJECT_CODE = [$integer], ! Reject code
!
! Fields for target links only
!
CB_HOST_BUFFER = [$bytes (9)], ! Host id at other end of link
$align (fullword)
CB_TASK_BUFFER = [$bytes(17)],
$align (fullword)
CB_USERID_BUFFER = [$bytes (17)],
$align (fullword)
CB_PASSWORD_BUFFER = [$bytes (17)],
$align (fullword)
CB_ACCOUNT_BUFFER = [$bytes (17)],
$align (fullword)
CB_DESCRIPTOR_BUFFER = [$bytes (17)],
!
! Connect data buffer
!
$align (fullword)
CB_DATA_BUFFER = [$bytes (17)]
tes;
literal
CONNECT_BLOCK_SIZE = $field_set_size,
CONNECT_BLOCK_ALLOCATION = $field_set_units;
macro
CONNECT_BLOCK =
block [CONNECT_BLOCK_SIZE] field (CONNECT_BLOCK_FIELDS) %;
$literal
TARGET_LINK = 1, ! Code for target link (passive)
SOURCE_LINK = 2; ! Code for source link (active)
!
! Link status block
!
$field LINK_STATUS_BLOCK_FIELDS =
set
LSB_FLAGS = [$bits (9)], ! Link status bits
$overlay (LSB_FLAGS)
LSB_PREV_CONNECT = [$bit], ! Link was previously connected
LSB_INTERRUPT = [$bit], ! Link has interrupt data waiting
LSB_CLOSED = [$bit], ! Link has been closed normally
LSB_ABORTED = [$bit], ! Link has been aborted
LSB_EOM = [$bit], ! Link has full message to read
LSB_CCWAIT = [$bit], ! Link is waiting for connect confirm
LSB_CIWAIT = [$bit], ! Link is waiting for connect
LSB_SERVER = [$bit], ! Link is a server
LSB_CONNECTED = [$bit], ! Link is connected flag
$continue
LSB_REASON = [$byte] ! Link abort reason
tes;
literal
LINK_STATUS_BLOCK_SIZE = $field_set_size,
LINK_STATUS_BLOCK_ALLOCATION = $field_set_units;
macro
LINK_STATUS_BLOCK =
block [LINK_STATUS_BLOCK_SIZE] field (LINK_STATUS_BLOCK_FIELDS) %;
%sbttl 'Text Processing Definitions'
!
! Provide interface to NMU text facility.
!
! $NMU$TEXT (DPTR, N, PPTR {,ARG}...)
!
! Interpret DPTR as a pointer to a destination string. Interpret
! N as a value which represents the length of the destination
! string. Interpret PPTR as a character sequence pointer to an
! ASCIZ string pattern format string. Interpret ARG as zero or
! more arguments to be used as specified by the pattern format
! string.
!
macro
$NMU$TEXT (DST, DST_SIZE, PAT) =
begin
%if not %null(%remaining)
%then local ARGLIST: vector[%length-3];
$$TEXT_ARG (ARGLIST,%remaining);
%fi
NMU$TEXT (DST,
DST_SIZE,
%if %isstring (%remove(PAT))
%then CH$ASCIZ(%remove(PAT))
%else PAT %fi,
(%length-3),
%if not %null(%remaining)
%then ARGLIST
%else 0
%fi)
end %;
! Inner macro to process argument list for $NMU$TEXT
macro
$$TEXT_ARG (VNAME) [ARG] =
VNAME[%count] = ARG %;
!
! Text state block
!
$field TEXT_BLOCK_FIELDS =
set
STATE = [$integer], ! Current state of pattern parser
PARAMETER_LIST = [$address], ! Start of parameter list
PARAMETER_NEXT = [$address], ! Next parameter to use
PARAMETER_COUNT = [$integer], ! Number of parameters left on list
PATTERN_START = [$pointer], ! Start of pattern
PATTERN_PTR = [$pointer], ! Current pointer into pattern
PATTERN_CHECKPOINT = [$pointer], ! Checkpoint into pattern
OUTPUT_ROUTINE = [$address], ! Character output routine
OUTPUT_START = [$pointer], ! Pointer to start of output
OUTPUT_PTR = [$pointer], ! Current pointer into output
OUTPUT_CHECKPOINT = [$integer], ! Checkpoint into output
OUTPUT_COUNT = [$integer], ! Characters already output
OUTPUT_MAX = [$integer], ! Maximum characters for output
OUTPUT_POSITION = [$integer], ! Horizontal position on line
FIELD_COUNT = [$integer], ! Characters already output to field
FIELD_WIDTH = [$integer], ! Max characters for field
FIELD_JUSTIFY = [$integer], ! Justification type for field
FIELD_REPEAT = [$integer], ! Number of times to repeat field
FIELD_RADIX = [$integer], ! Radix for a numeric field
FIELD_DEFAULT = [$bit], ! Repeat default flag
FIELD_NOWIDTH = [$bit], ! No width field given
FIELD_SIGNED = [$bit], ! Field is a signed value
FIELD_ZERO_SUPPRESS = [$bit], ! Suppress leading zeros
FIELD_OVERFLOW = [$bit], ! Field overflowed width
NULL_SUPPRESS = [$bit] ! Suppress "free" null at end
tes;
literal
TEXT_BLOCK_SIZE = $field_set_size,
TEXT_BLOCK_ALLOCATION = $field_set_units;
macro
TEXT_STATE_BLOCK =
block [TEXT_BLOCK_SIZE] field (TEXT_BLOCK_FIELDS) %;
literal ! Values for TEXT_STATE_BLOCK [STATE]
TEXT_COPY = 1, ! Copying from pattern to output
DIRECTIVE_START = 2, ! Start of directive seen
REPT_PARM = 3, ! Field repeat set from parameter list
REPT_VALUE = 4, ! Field repeat accumulated from pattern
WIDTH_START = 5, ! Start of width field seen
WIDTH_PARM = 6, ! Width set from parameter list
WIDTH_VALUE = 7, ! Width accumulated from pattern
JUSTIFY_FIELD = 8, ! Field justify character seen
WIDTH_END = 9, ! End of width field seen
DONE = 10, ! Interpretation successfull completion
ABORT = 11, ! Unprocessable directive
BUFFER_OVERFLOW = 12; ! Output buffer overflow
literal
STATE_MIN = TEXT_COPY, ! Minimum state value
STATE_MAX = WIDTH_END; ! Maximum state value
literal ! Values for TEXT_STATE_BLOCK [FIELD_JUSTIFY]
NO_FILL = 1, ! No justify and no fill
LEFT_JUSTIFY = 2, ! Left justify and fill on right
RIGHT_JUSTIFY = 3, ! Right justify and left fill
CENTER_FILL = 4; ! Center and fill both ends
%sbttl 'Direct Line Access Definitions'
!
! Circuit data block definition
!
$field
CD_BLOCK_FIELDS =
set
CD_LINK = [$sub_block (Q_ENTRY_SIZE)], ! Link to other blocks
$align (fullword)
CD_NAME = [$bytes(17)], ! Name of this circuit
CD_USAGE = [$byte], ! Type of usage
CD_TYPE = [$byte], ! Type of device
CD_CONTROLLER = [$byte], ! Controller number
CD_DEVICE = [$byte], ! Device number
CD_STATION = [$byte], ! Station number
CD_DSB = [$sub_block ()], ! Start of device service block
$overlay (CD_DSB)
CD_DTE_DSB = [$sub_block ()], ! DTE device service block
CD_DTE_SYSID = [$integer], ! System DTE identifier
%if $TOPS10
%then
CD_DTE_CHAN = [$byte], ! I/O channel number
CD_DTE_PSI = [$byte], ! PSI channel number
CD_DTE_EVB = [$sub_block (EVENT_BLOCK_SIZE)], ! PSI event block
CD_DTE_OBUF = [$sub_block (3)], ! Output buffer header block
CD_DTE_IBUF = [$sub_block (3)], ! Input buffer header block
%fi
CD_DTE_PAGE0 = [$address], ! First page of extracted dump
CD_DTE_PAGE1 = [$address], ! Second page of extracted dump
CD_DTE_DADDR = [$integer], ! Current DN20 dump address
CD_DTE_DCNT = [$integer], ! Count of PDP-11 words remaining
CD_DTE_DPTR = [$pointer], ! Pointer into dump data
$continue
$overlay (CD_DSB)
CD_KLNI_DSB = [$sub_block ()], ! KLNI device service block
CD_KLNI_PHYADR = [$pointer], ! Node Physical Address
CD_KLNI_HRDWADR = [$pointer], ! ETHERNET Hardware Address
CD_KLNI_PROTYP = [$bytes(2)], ! Protocol type
CD_KLNI_PRTLID = [$integer], ! Portal Id
CD_KLNI_RCV_PSI = [$byte], ! NI Receive Interrupt channel
CD_KLNI_XMT_PSI = [$byte], ! NI Transmit Interrupt channel
CD_KLNI_STS_PSI = [$byte], ! NI Status Interrupt channel
CD_KLNI_CHAN = [$byte], ! I/O channel number
CD_KLNI_EADDR = [$sub_block (3)], ! Destination Ethernet Address
CD_RCV_BID = [$integer], ! Receive Buffer Id (for NI%)
CD_KLNI_REQNO = [$integer], ! Request Number
CD_KLNI_MULTICAST = [$bit], ! Received Multicast Msg flag
CD_MORE_MOP_RESPONSES = [$bit] ! More LOOP responses pending
$continue
tes;
literal
CD_BLOCK_SIZE = $field_set_size;
macro
CD_BLOCK =
block [CD_BLOCK_SIZE] field (CD_BLOCK_FIELDS) %;
literal ! DLX open usage reasons
DLX_PROTOCOL = 1, ! Starting/stopping protocol
DLX_LOAD = 2, ! Loading
DLX_DUMP = 3, ! Dumping
DLX_LOOP = 4, ! Loop back test
DLX_TRIGGER = 5, ! Triggering
DLX_LDA = 6, ! LOAD/DUMP ASSISTANCE
! DLX read/write reasons
DLX_DATA = 5, ! MOP data message
DLX_SECONDARY = 6, ! Loading secondary bootstrap
DLX_OTHER = 7; ! Other read/write
!
! File system definitions
!
literal ! File types
FILE_PERMANENT_DATA_BASE = 0,
FILE_SYSTEM_IMAGE = 1,
FILE_DUMP_IMAGE = 2,
FILE_SECONDARY_LOADER = 3,
FILE_TERTIARY_LOADER = 4,
FILE_SECONDARY_DUMPER = 5,
MAX_FILE_TYPE = 5;
%sbttl 'Global Name Mappings'
!
! Queue manager (NMUQUE)
!
macro
NMU$QUEUE_RESET = UQ_RESET %,
NMU$QUEUE_INSERT = UQ_INSERT %,
NMU$QUEUE_REMOVE = UQ_REMOVE %,
NMU$QUEUE_EXTRACT = UQ_EXTRACT %,
NMU$QUEUE_LENGTH = UQ_LENGTH %,
NMU$QUEUE_SCAN = UQ_SCAN %,
NMU$QUEUE_SCAN_EXTRACT = UQ_SEXTRACT %,
NMU$QUEUE_NEXT = UQ_NEXT %,
NMU$QUEUE_MANAGER =
NMU$QUEUE_RESET : novalue, ! Reset a queue to null
NMU$QUEUE_INSERT, ! Insert an entry to queue end
NMU$QUEUE_REMOVE, ! Remove an entry from front of queue
NMU$QUEUE_EXTRACT, ! Remove specific entry from queue
NMU$QUEUE_LENGTH, ! Return the length of queue
NMU$QUEUE_SCAN, ! Operate on queue sequentially
NMU$QUEUE_SCAN_EXTRACT : novalue, ! Extract entry while scanning
NMU$QUEUE_NEXT
%;
!
! Memory Manager (NMUMEM)
!
macro
NMU$MEMORY_RESET = UM_RESET %,
NMU$MEMORY_GET = UM_GET %,
NMU$MEMORY_RELEASE = UM_RELEASE %,
NMU$MEMORY_INITIALIZE = UM_INITIALIZE %,
NMU$MEMORY_MANAGER =
NMU$MEMORY_RESET : novalue, ! Reset free pool to empty
NMU$MEMORY_INITIALIZE : novalue, ! Add memory to free pool
NMU$MEMORY_GET, ! Get block from free pool
NMU$MEMORY_RELEASE : novalue ! Release block to free pool
%;
!
! Page allocator (NMUPAG)
!
macro
NMU$PAGE_INITIALIZE = UMP_INIT %,
NMU$PAGE_GET = UMP_GET %,
NMU$PAGE_RELEASE = UMP_RELEASE %,
NMU$PAGE_ALLOCATOR =
NMU$PAGE_INITIALIZE : novalue, ! Reset page allocator
NMU$PAGE_GET, ! Allocate a page
NMU$PAGE_RELEASE : novalue ! Release an allocated page
%;
!
! Scheduler (NMUSKD)
!
macro
NMU$SQUEUE_INSERT = US_INSERT %,
NMU$SQUEUE_REMOVE = US_REMOVE %,
NMU$SQUEUE_RESET = US_QRESET %,
NMU$QQUEUE_INSERT = US_QQINS %,
NMU$QQUEUE_REMOVE = US_QQREM %,
NMU$QQUEUE_RESET = US_QQSET %,
NMU$QQUEUE_EXTRACT = US_QQEXT %,
NMU$SCHED_EVENT = US_EVENT %,
NMU$SCHED_WAIT = US_WAIT %,
NMU$SCHED_FLAG = US_FLAG %,
NMU$SCHED_CREATE = US_CREATE %,
NMU$SCHED_ABORT = US_ABORT %,
NMU$SCHED_FINI = US_FINI %,
NMU$SCHED_SLEEP = US_SLEEP %,
NMU$SCHED_CURRENT = US_CURRENT %,
NMU$SCHED_DESCHEDULE = US_DESCHEDULE %,
NMU$SCHED_COMPLETE = US_COMPLETE %,
NMU$SCHED_ERROR = US_ERROR %,
NMU$SCHED_PAUSE = US_PAU %,
NMU$SCHED_MANAGER =
NMU$SCHED_CREATE, ! Create a new task
NMU$SCHED_ABORT : novalue, ! Abort a task
NMU$SCHED_FINI : novalue, ! Finish a task's execution
NMU$SCHED_COMPLETE : novalue, ! Complete a task's execution
NMU$SCHED_ERROR : novalue, ! Print an error message, complete task
NMU$SQUEUE_INSERT : novalue, ! Insert entry in a scheduling queue
NMU$SQUEUE_REMOVE, ! Remove an entry, blocking if needed
NMU$SQUEUE_RESET : novalue, ! Reset a scheduling type queue
NMU$QQUEUE_INSERT : novalue, ! Insert entry in a quota queue
NMU$QQUEUE_REMOVE, ! Remove a quota queue entry, blocking if needed
NMU$QQUEUE_RESET : novalue, ! Reset a quota type queue
NMU$QQUEUE_EXTRACT, ! Extract entry from quota type queue
NMU$SCHED_EVENT : novalue, ! Reset a event block
NMU$SCHED_WAIT, ! Wait for any event
NMU$SCHED_FLAG : novalue, ! Flag event occurance
NMU$SCHED_SLEEP : novalue, ! Put task to sleep for specified time
NMU$SCHED_CURRENT, ! Return current task block address
NMU$SCHED_DESCHEDULE : novalue,! Task descheduler
NMU$SCHED_PAUSE: novalue ! Allow other tasks to run
%;
!
! IPCF Manager (NMUIPC)
!
macro
NMU$IPCF_INITIALIZE = UI_INIT %,
NMU$IPCF_FIND_PID = UI_FIND %,
NMU$IPCF_INFO = UI_INFO %,
NMU$IPCF_ORION = UI_ORION %,
NMU$IPCF_CREATE = UI_CREATE %,
NMU$IPCF_DESTROY = UI_DESTROY %,
NMU$IPCF_ALLOW = UI_ALLOW %,
NMU$IPCF_DISALLOW = UI_DISALLOW %,
NMU$IPCF_TRANSMIT = UI_TRANSMIT %,
NMU$IPCF_RECEIVE = UI_RECEIVE %,
NMU$IPCF_MAP_ID = UI_MAP %,
NMU$IPCF_MANAGER =
NMU$IPCF_INITIALIZE : novalue, ! Initialize the IPCF system
NMU$IPCF_FIND_PID, ! Return of PID of given name
NMU$IPCF_INFO, ! Return PID of [SYSTEM]INFO
NMU$IPCF_ORION, ! Return PID of ORION
NMU$IPCF_CREATE, ! Make a pid for this process
NMU$IPCF_DESTROY, ! Destroy pid and data bases
NMU$IPCF_ALLOW, ! Allow pid to send to us
NMU$IPCF_DISALLOW, ! Disallow pid from sending to us
NMU$IPCF_TRANSMIT, ! Transmit a message
NMU$IPCF_RECEIVE, ! Receive a message
NMU$IPCF_MAP_ID ! Map a NMU$IPCF id to a IPCF PID
%;
!
! Network logical link interface (NMUNET)
!
macro
NMU$NETWORK_INITIALIZE = UN_INIT %,
NMU$NETWORK_LOCAL = UN_LOCAL %,
NMU$NETWORK_OPEN = UN_OPEN%,
NMU$NETWORK_ACCEPT = UN_ACCEPT %,
NMU$NETWORK_REJECT = UN_REJECT %,
NMU$NETWORK_READ = UN_READ %,
NMU$NETWORK_WRITE = UN_WRITE %,
NMU$NETWORK_ABORT = UN_ABORT %,
NMU$NETWORK_CLOSE = UN_CLOSE %,
NMU$NETWORK_STATUS = UN_STATUS %,
NMU$NETWORK_VALIDATE = UN_VALIDATE %;
macro
NMU$NETWORK_UTILITIES =
NMU$NETWORK_INITIALIZE : novalue, ! Initialize network interface
NMU$NETWORK_LOCAL, ! Get pointer to local node id
NMU$NETWORK_OPEN, ! Open a logical link
NMU$NETWORK_ACCEPT, ! Accept an incoming connection on link
NMU$NETWORK_REJECT, ! Reject incoming connection
NMU$NETWORK_READ, ! Read data from link
NMU$NETWORK_WRITE, ! Write data to link
NMU$NETWORK_ABORT, ! Abort link
NMU$NETWORK_CLOSE, ! Close link normally
NMU$NETWORK_STATUS, ! Read link's status
NMU$NETWORK_VALIDATE ! Validate system specific access info
%;
!
! File system interface (NMUFIL)
!
macro
NMU$FILE_INITIALIZE = UF_INI %,
NMU$FILE_OPEN = UF_OPEN %,
NMU$FILE_READ = UF_READ %,
NMU$FILE_WRITE = UF_WRITE %,
NMU$FILE_SKIP = UF_SKIP %,
NMU$FILE_SEEK = UF_SEEK %,
%if $TOPS10
%then
NMU$FILE_BUILD_BUFFERS = UF_BLD %,
NMU$FILE_KILL_BUFFERS = UF_KIL %,
%fi
NMU$FILE_CLOSE = UF_CLOSE %,
NMU$FILE_ROUTINES =
NMU$FILE_OPEN, ! Open file
NMU$FILE_READ, ! Read record from file
NMU$FILE_WRITE, ! Write record to file
NMU$FILE_SKIP, ! Skip over bytes in a file
NMU$FILE_SEEK, ! Seek to specified byte in file
%if $TOPS10
%then
NMU$FILE_BUILD_BUFFERS, ! Allocate I/O buffer ring
NMU$FILE_KILL_BUFFERS: novalue, ! Deallocate I/O buffer ring
%fi
NMU$FILE_CLOSE ! Close file
%;
!
! Table data base manager (NMUTBL)
!
macro
NMU$TABLE_CLEAR = UT_CLEAR %,
NMU$TABLE_INSERT = UT_INSERT %,
NMU$TABLE_FETCH = UT_FETCH %,
NMU$TABLE_DELETE = UT_DELETE %,
NMU$TABLE_CHANGE = UT_CHANGE %,
NMU$TABLE_MAX = UT_MAX %,
NMU$TABLE_ROUTINES =
NMU$TABLE_CLEAR : novalue, ! Clear a table
NMU$TABLE_INSERT, ! Insert entry into table
NMU$TABLE_FETCH, ! Fetch value from table
NMU$TABLE_DELETE, ! Delete entry from table
NMU$TABLE_CHANGE, ! Change entry value
NMU$TABLE_MAX ! Maximum table index
%;
!
! Direct line access routines (NMUDLX)
!
literal
NMU$K_MOP_RETRY_LIMIT = 5; ! MOP retransmit limit
macro
$NMU_DLX_INITIALIZE =
begin
external routine NMU$DLX_INITIALIZE: novalue;
NMU$DLX_INITIALIZE
end %,
$NMU_DLX_OPEN (USAGE, ENTITY_TYPE, ENTITY_ID, PHY_ADDR, RCV_PSI,
XMT_PSI, STS_PSI, RSP_PTR) =
begin
external routine NMU$DLX_OPEN;
%if $MCB
%then NMU$DLX_OPEN (USAGE, ENTITY_TYPE, ENTITY_ID, %(PHY_ADDR,
RCV_PSI, XMT_PSI, STS_PSI,)% RSP_PTR)
%else NMU$DLX_OPEN (USAGE, %(ENTITY_TYPE,)% ENTITY_ID, PHY_ADDR,
RCV_PSI, XMT_PSI, STS_PSI, RSP_PTR)
%fi
end %,
$NMU_DLX_CLOSE (ID) =
begin
external routine NMU$DLX_CLOSE;
NMU$DLX_CLOSE (ID)
end %,
%if $MCB
%then
$NMU_DLX_READ (ID, USAGE, PTR, CNT, TIMEOUT, RSP_PTR) =
begin
external routine NMU$DLX_TIMED_READ;
NMU$DLX_TIMED_READ (ID, USAGE, PTR, CNT, TIMEOUT + 0, RSP_PTR)
end %,
%else
$NMU_DLX_READ (ID, USAGE, PTR, CNT, TIMEOUT, RSP_PTR) =
begin
external routine NMU$DLX_READ;
NMU$DLX_READ (ID, USAGE, PTR, CNT, RSP_PTR)
end %,
%fi
$NMU_DLX_WRITE (ID, USAGE, PTR, CNT, RSP_PTR) =
begin
external routine NMU$DLX_WRITE;
NMU$DLX_WRITE (ID, USAGE, PTR, CNT, RSP_PTR)
end %,
$NMU_DLX_START_PROTOCOL (ID, RSP_PTR) =
begin
external routine NMU$DLX_START_PROTOCOL;
NMU$DLX_START_PROTOCOL (ID, RSP_PTR)
end %,
$NMU_DLX_STOP_PROTOCOL (ID, RSP_PTR) =
begin
external routine NMU$DLX_STOP_PROTOCOL;
NMU$DLX_STOP_PROTOCOL (ID, RSP_PTR)
end %,
$NMU_DLX_DECNET_RUNNING (ID, RSP_PTR) =
begin
external routine NMU$DLX_DECNET_RUNNING;
NMU$DLX_DECNET_RUNNING (ID, RSP_PTR)
end %,
$NMU_DLX_KNOWN_DEVICE (ID) =
begin
external routine NMU$DLX_KNOWN_DEVICE;
NMU$DLX_KNOWN_DEVICE (ID)
end %,
$NMU_DLX_FRONT_END_DEVICE (ID) =
begin
external routine NMU$DLX_FRONT_END_DEVICE;
NMU$DLX_FRONT_END_DEVICE (ID)
end %,
$NMU_DLX_DEVICE_TYPE (ID) =
begin
external routine NMU$DLX_DEVICE_TYPE;
NMU$DLX_DEVICE_TYPE (ID)
end %,
$NMU_DLX_ENABLE_MULTICAST (ID, RSP_PTR) =
begin
external routine NMU$DLX_ENABLE_MULTICAST;
NMU$DLX_ENABLE_MULTICAST (ID, RSP_PTR)
end %;
macro
NMU$DLX_INITIALIZE = UD_INIT %,
NMU$DLX_OPEN = UD_OPEN %,
NMU$DLX_CLOSE = UD_CLOSE %,
NMU$DLX_READ = UD_READ %,
NMU$DLX_WRITE = UD_WRITE %,
NMU$DLX_START_PROTOCOL = UD_STP %,
NMU$DLX_STOP_PROTOCOL = UD_SPP %,
NMU$DLX_DECNET_RUNNING = UD_DPR %,
NMU$DLX_KNOWN_DEVICE = UD_KDV %,
NMU$DLX_FRONT_END_DEVICE = UD_FED %,
NMU$DLX_DEVICE_TYPE = UD_DTY %,
NMU$DLX_ENABLE_MULTICAST = UD_ENA %,
NMU$DLX_ROUTINES =
NMU$DLX_INITIALIZE: novalue, ! Initialize data base
NMU$DLX_OPEN, ! Open link
NMU$DLX_CLOSE, ! Close link
NMU$DLX_READ, ! Read MOP message on link
NMU$DLX_WRITE, ! Write MOP message on link
NMU$DLX_START_PROTOCOL, ! Start protocol on link
NMU$DLX_STOP_PROTOCOL, ! Stop protocol on link
NMU$DLX_DECNET_RUNNING, ! Check if DECnet protocol is running
NMU$DLX_KNOWN_DEVICE, ! Device existence predicate
NMU$DLX_FRONT_END_DEVICE, ! Check if circuit is to front end
NMU$DLX_DEVICE_TYPE, ! Return circuit's device type
NMU$DLX_ENABLE_MULTICAST ! Enable Multicast Address
%;
!
! NMU DTE service routines (NMUDTE)
!
macro
NMU$DTE_OPEN = UE_OPEN %, ! Open DTE
NMU$DTE_CLOSE = UE_CLOSE %, ! Close DTE
NMU$DTE_READ = UE_READ %, ! Read MOP data
NMU$DTE_WRITE = UE_WRITE %, ! Write MOP data
NMU$DTE_START_PROTOCOL = UE_STP %, ! Start protocol
NMU$DTE_STOP_PROTOCOL = UE_SPP %, ! Stop protocol
NMU$DTE_DECNET_RUNNING = UE_DPR %; ! Check if DECnet protocol is running
macro
NMU$DTE_ROUTINES =
NMU$DTE_OPEN, ! NMU$DLX_OPEN call
NMU$DTE_CLOSE, ! NMU$DLX_CLOSE call
NMU$DTE_READ, ! NMU$DLX_READ call
NMU$DTE_WRITE, ! NMU$DLX_WRITE call
NMU$DTE_START_PROTOCOL, ! NMU$DLX_START_PROTOCOL call
NMU$DTE_STOP_PROTOCOL, ! NMU$DLX_STOP_PROTOCOL call
NMU$DTE_DECNET_RUNNING ! NMU$DLX_DECNET_RUNNING call
%;
!
! NMU KLNI service routines (NMUKNI)
!
macro
NMU$KLNI_OPEN = UK_OPEN %, ! Open KLNI
NMU$KLNI_CLOSE = UK_CLOSE %, ! Close KLNI
NMU$KLNI_READ = UK_READ %, ! Read MOP data
NMU$KLNI_WRITE = UK_WRITE %, ! Write MOP data
NMU$KLNI_ENABLE_MULTICAST = UK_ENA %; ! Enable Multicast Address
macro
NMU$KLNI_ROUTINES =
NMU$KLNI_OPEN, ! NMU$DLX_OPEN call
NMU$KLNI_CLOSE, ! NMU$DLX_CLOSE call
NMU$KLNI_READ, ! NMU$DLX_READ call
NMU$KLNI_WRITE, ! NMU$DLX_WRITE call
NMU$KLNI_ENABLE_MULTICAST %; ! NMU$DLX_ENABLE_MULTICAST call
!
! NMX access routines (NMUMCB)
!
macro
$NMU_NMX_READ_EVENT (BUF_PTR, BUF_LEN) =
begin
external routine NMU$NMX_IO;
NMU$NMX_IO (IO$RLB + 0, BUF_PTR, BUF_LEN)
end %,
$NMU_NMX_READ_COMMAND (BUF_PTR, BUF_LEN) =
begin
external routine NMU$NMX_IO;
NMU$NMX_IO (IO$RLB + 1, BUF_PTR, BUF_LEN)
end %,
$NMU_NMX_RESPOND_COMMAND (BUF_PTR, BUF_LEN) =
begin
external routine NMU$NMX_IO;
NMU$NMX_IO (IO$WLB + 1, BUF_PTR, BUF_LEN)
end %;
macro
NMU$NMX_IO = SS$NMX %;
!
! Interrupt manager (NMUINT)
!
macro
NMU$INTERRUPT_INITIALIZE = UX_INIT %;
!
! Utility routines (NMUUTL)
!
macro
NMU$UTILITY_BUFFER_TEXT = UU_FBT %;
!
! TEXT processing (NMUTXT)
!
macro
NMU$TEXT = UT_TEXT %,
NMU$TEXT_MANAGER =
NMU$TEXT ! Directive driven text formatting
%;
%title ''
%sbttl ''
!
! [End of NMUCOM.REQ]