mirror of
https://github.com/PDP-10/stacken.git
synced 2026-02-23 15:32:07 +00:00
1147 lines
37 KiB
Plaintext
1147 lines
37 KiB
Plaintext
! 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]
|