Trailing-Edge
-
PDP-10 Archives
-
BB-P363B-SM_1985
-
t20/nmlt20/nmukni.b36
There is 1 other file named nmukni.b36 in the archive. Click here to see a list.
! UPD ID= 193, SNARK:<6.1.NML>NMUKNI.B36.7, 10-Dec-84 14:53:38 by HALPIN
! Get MONSYM Library file out of default directory, not BLI:
!
! UPD ID= 181, SNARK:<6.1.NML>NMUKNI.B36.6, 7-Dec-84 08:41:37 by HALPIN
! Change all DLX_LOAD and DLX_DUMP references to DLX_LDA. Now there is
! one Circuit Block for Load/Dump Assistance.
! Fix NMU$KLNI_CLOSE to call CLOSE_KLNI_DEVICE for LOAD/DUMP ASSISTANCE,
! just return $true for DLX_TRIGGER and DLX_LOOP.
!
! UPD ID= 171, SNARK:<6.1.NML>NMUKNI.B36.5, 19-Nov-84 10:17:09 by HALPIN
! Add support for LOAD/DUMP and ENABLE MULTICAST over the KLNI.
!
! UPD ID= 150, SNARK:<6.1.NML>NMUKNI.B36.4, 31-Oct-84 09:50:50 by GUNN
! Allow DLX_TRIGGER in NMU$KLNI_OPEN.
!
! UPD ID= 146, SNARK:<6.1.NML>NMUKNI.B36.3, 30-Oct-84 11:33:36 by GUNN
! Add call to BOOT_REMOTE for DLX_TRIGGER case in NMU$KLNI_WRITE.
!
! UPD ID= 109, SLICE:<6.1.NML>NMUKNI.B36.2, 18-Sep-84 16:24:12 by GUNN
%title 'NMUKNI -- Ethernet KLNI MOP Interface'
module NMUKNI (
ident = 'X00.01'
) =
begin
!
! COPYRIGHT (C) 1984.
! 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 Management
!
! Abstract: This module provides direct line access for
! NI circuits on KL systems.
!
! Environment: TOPS-20 version 6.1 or later
!
! Author: Dale C. Gunn Creation date: 4-Jun-84
!
! Modified by:
!
!--
!
! Library files
!
library 'NMULIB'; ! Get all required definitions
library 'MONSYM'; ! Monitor symbols
library 'JLNKG'; ! JSYS linkage definitions
library 'BLI:TENDEF'; ! Get MONxxx definitions
!
! Global routines
!
forward routine
NMU$KLNI_ROUTINES,
OPEN_KLNI_DEVICE,
CLOSE_KLNI_DEVICE,
READ_MOP_LOOP,
READ_MOP_LOAD_DUMP,
BOOT_REMOTE,
WRITE_MOP_LOOP,
%if $TOPS20
%then
POST_RECEIVE_BUFFER,
%fi
ENABLE_MULTICAST_ADDRESS,
WRITE_MOP_LOAD_DUMP;
!
! External references
!
external routine
NMU$MEMORY_MANAGER,
NMU$TEXT,
NMU$PAGE_ALLOCATOR,
NMU$SCHED_MANAGER;
%global_routine ('NMU$KLNI_OPEN', CD: ref CD_BLOCK, RSP_POINTER) =
!++
! Functional description:
!
! This routine is called by NMU$DLX_OPEN to open a
! KLNI circuit in MOP protocol mode. The link is
! set up properly depending upon its usage.
!
! Formal parameters:
!
! .CD Pointer to circuit data block
! .RSP_POINTER Pointer to NICE response buffer
!
! Routine value:
!
! $true No errors
! $false Error occured
!
!--
begin
!
! Fill in the circuit data block KLNI specific entries
!
CD [CD_KLNI_CHAN] = 0; ! Get channel from circuit id
CD [CD_KLNI_REQNO] = 0; ! Reset request number
!
! Check for valid operations (LOAD, DUMP, LOOP, and TRIGGER on KLNI device)
!
if (.CD [CD_USAGE] neq DLX_LOOP)
and
(.CD [CD_USAGE] neq DLX_TRIGGER)
and
(.CD [CD_USAGE] neq DLX_LDA)
then
begin
$RESPONSE (.RSP_POINTER, NICE$_OPF, 0,
'Function not supported on device');
return $false;
end;
!
! Do system specific open of KLNI device
!
if not OPEN_KLNI_DEVICE (.CD, .RSP_POINTER)
then
return $false;
$true
end; ! End of NMU$KLNI_OPEN
%global_routine ('NMU$KLNI_CLOSE', CD: ref CD_BLOCK) =
!++
! Functional description:
!
! This routine is called from NMU$DLX_CLOSE to release
! a KLNI circuit from network management service.
!
! Formal parameters:
!
! .CD Pointer to circuit data block
!
! Routine value:
!
! $true Successful
! $false Error during close
!
!--
begin
!
! Do system specific KLNI close
!
if .CD [CD_USAGE] eql DLX_LDA
then return CLOSE_KLNI_DEVICE (.CD)
else return $true;
end; ! End of NMU$KLNI_CLOSE
%global_routine ('NMU$KLNI_READ', CD: ref CD_BLOCK, USAGE, PTR, LEN, RSP_POINTER) =
!++
! Functional description:
!
! This routine is called from NMU$DLX_READ to read a MOP
! message from a KLNI circuit.
!
! Formal parameters:
!
! .CD Pointer to circuit data block
! .USAGE What type of read is supposed to be done
! (DLX_DATA for MOP data)
! .PTR Pointer to message buffer
! .LEN Number of bytes in message buffer to write
! .RSP_POINTER Pointer to NICE response buffer
!
! Routine value:
!
! Number of bytes read on circuit
!
! or
!
! -2 for read timeout
! -1 for any other error
!
!--
begin
!
! Do write based on type of usage
!
selectone .CD [CD_USAGE] of
set
[DLX_LOOP]: ! MOP loop
begin
local
MOP_COUNT,
MOP_POINTER,
MOP_DATA_WORD;
MOP_COUNT = 0;
MOP_COUNT = READ_MOP_LOOP (.CD, .PTR, .LEN, .RSP_POINTER);
MOP_POINTER = .PTR;
return .MOP_COUNT
end;
[DLX_LDA]:
return READ_MOP_LOAD_DUMP (.CD, .PTR, .LEN, .RSP_POINTER);
[otherwise]:
TASK_ERROR ('NMU$KLNI_READ called with invalid usage');
tes;
return -1
end; ! End of NMU$KLNI_READ
%global_routine ('NMU$KLNI_WRITE', CD: ref CD_BLOCK, USAGE, PTR, LEN, RSP_POINTER) =
!++
! Functional description:
!
! This routine is called from NMU$DLX_WRITE to write a MOP
! message onto a KLNI circuit.
!
! Formal parameters:
!
! .CD Pointer to circuit data block
! .USAGE What type of write is supposed to be done
! (DLX_DATA for MOP data)
! or (DLX_OTHER ?)
! .PTR Pointer to message buffer
! .LEN Number of bytes in message buffer to write
! .RSP_POINTER Pointer to NICE response buffer
!
! Routine value:
!
! $true Success
! $false Failure during write
!
!--
begin
!
! Do write based on type of usage
!
selectone .CD [CD_USAGE] of
set
[DLX_LOOP]: ! MOP loop
return WRITE_MOP_LOOP (.CD, .PTR, .LEN, .RSP_POINTER);
[DLX_LDA]:
return WRITE_MOP_LOAD_DUMP (.CD, .PTR, .LEN, .RSP_POINTER);
[DLX_TRIGGER]: ! MOP Trigger Boot
return BOOT_REMOTE (.CD, .PTR, .LEN, .RSP_POINTER);
[otherwise]:
TASK_ERROR ('NMU$KLNI_WRITE called with invalid usage');
tes;
$false
end; ! End of NMU$KLNI_WRITE
%global_routine ('NMU$KLNI_ENABLE_MULTICAST', CD: ref CD_BLOCK, RSP_POINTER) =
!++
! Functional description:
!
! This routine is called from NMU$DLX_ENABLE_MULTICAST to Enable
! a Multicast Address on a KLNI circuit.
!
! Formal parameters:
!
! .CD Pointer to circuit data block
! .RSP_POINTER Pointer to NICE response buffer
!
! Routine value:
!
! $true Success
! $false Failure
!
!--
begin
return ENABLE_MULTICAST_ADDRESS (.CD, .RSP_POINTER);
end; ! of NMU$KLNI_ENABLE_MULTICAST
!
! System specific KLNI service routines
!
switches
list (require);
%if $TOPS20
%then require 'KNIT20';
%else %if $TOPS10
%then %error ('NMUKNI not supported for TOPS-10')
%else %error ('NMUKNI not supported for MCB')
%fi %fi
end ! of module NMUKNI
eludom