1
0
mirror of https://github.com/PDP-10/stacken.git synced 2026-02-23 15:32:07 +00:00
Files
PDP-10.stacken/files/stacken-tape-backup/dskb:10_7/decmai/mx/mxncom.req
Lars Brinkhoff 6e18f5ebef Extract files from tape images.
Some tapes could not be extracted.
2021-01-29 10:47:33 +01:00

1147 lines
37 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
! 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]