Trailing-Edge
-
PDP-10 Archives
-
BB-P363B-SM_1985
-
mcb/cex/cexnmx.m11
There are no other files named cexnmx.m11 in the archive.
.TITLE CEXNMX - Network Management Service Routines
.IDENT /003060/
.ENABL LC
;
; COPYRIGHT (c) 1980, 1981, 1982
; DIGITAL EQUIPMENT CORPORATION
; Maynard, Massachusetts
;
; This software is furnished under a license and may be used
; and copied only in accordance with the terms of such license
; and with the inclusion of the above copyright notice. This
; software or any other copies thereof may not be provided or
; otherwise made available to any other person. No title to
; and ownership of the software is hereby transferred.
;
; The information in this software is subject to change
; without notice and should not be construed as a commitment
; by DIGITAL EQUIPMENT CORPORATION.
;
; DIGITAL assumes no responsibility for the use or reliability
; of its software on equipment which is not supplied by
; DIGITAL.
;
;++
; FACILITY:
; MCB Communications Executive
;
; ABSTRACT:
; This module contains routines to service Network Management
; common functions to save space in individual processes.
;
; ENVIRONMENT:
; RSX kernel mode with EIS
;
; AUTHOR: Alan D. Peckham CREATION DATE: 19-Sep-81
;
; MODIFIED BY:
;
; Alan D. Peckham, 19-Sep-81: VERSION 1.0
; 01 - New module.
; 02 - Fixes too numerable to mention.
; 03 - Account for length byte in logging buffer in $NLBEG and $NLEND.
; 04 - Add O-2 parameter.
; 05 - NCTR$ should not account for DATA_ID field (messes up NCNT).
; 06 - Add $ST32 and $DT16 for seconds-since-last-zeroed support.
;--
.SBTTL DECLARATIONS
;
; INCLUDE FILES:
;
.MCALL POP$S,PUSH$S,SAV5$S
;
; MACROS:
;
.MACRO NCTR$ cnt
JSR R1,NCTR
.WORD cnt
.ENDM NCTR$
.MACRO NIDN$
INC NMNUM
.ENDM NIDN$
.MACRO NMAP$
JSR R2,NMAP
.ENDM NMAP$
.MACRO NPRM$ typ,cnt
JSR R1,NPRM
.IF NB,<cnt>
.BYTE 1+cnt,typ
.IFF
.BYTE -1-1,typ
.ENDC
.ENDM NPRM$
;
; EQUATED SYMBOLS:
;
; None
;
; OWN STORAGE:
;
.PSECT $OWN$,D
NMBIAS: .WORD 0 ; Destination APR5 buffer bias
NMPTR: .WORD 0 ; Current APR5 buffer address
NMCNT: .WORD 0 ; Bytes left in destination buffer
NMNUM: .WORD 0 ; Non-zero if to insert number.
NMPRM: .WORD 0 ; Pointer after last successful insertion.
.SBTTL $ST32 - Set 32 bit time in seconds
;++
; FUNCTIONAL DESCRIPTION:
;
; Set 32 bit time from $TTNS to user area.
;
; NOTE: not accurate for more than a month uptime!
;
; CALLING SEQUENCE:
;
; JSR PC,$ST32
;
; INPUT PARAMETERS:
;
; R0 = time address
;
; IMPLICIT INPUTS:
;
; None
;
; OUTPUT PARAMETERS:
;
; None
;
; IMPLICIT OUTPUTS:
;
; R0 = time address+2 (for $DT16).
;
; CONDITION CODES:
;
; None
;
; SIDE EFFECTS:
;
; None
;--
.PSECT $CODE$,I,RO
$ST32:: PUSH$S <R2,R3>
MOV $TTNS-10,R3 ; Get days
MUL #24.,R3 ; convert to hours
ADD $TTNS-6,R3 ; add hours
MOV R3,R2 ; and
MUL #60.*60.,R2 ; convert to seconds.
MOV R3,(R0) ; save intermediate result.
MOV R2,2(R0)
MOV $TTNS-4,R2 ; Get minutes
MUL #60.,R2 ; convert to seconds
ADD $TTNS-2,R3 ; add seconds.
ADD R3,(R0)+ ; Accumulate
ADC (R0) ; for his
ADD R2,(R0) ; convenience.
POP$S <R3,R2>
RETURN
.SBTTL $DT16 - Store 16 Bit Time Difference
;++
; FUNCTIONAL DESCRIPTION:
;
; None
;
; CALLING SEQUENCE:
;
; None
;
; INPUT PARAMETERS:
;
; 2(SP) = counter number
; R0 = address of 32 bit starting time
;
; IMPLICIT INPUTS:
;
; None
;
; OUTPUT PARAMETERS:
;
; None
;
; IMPLICIT OUTPUTS:
;
; None
;
; CONDITION CODES:
;
; None
;
; SIDE EFFECTS:
;
; None
;--
.PSECT $CODE$,I,RO
$DT16:: NCTR$ 2. ; Set up DATA ID.
MOV R0,R1
CMP -(SP),-(SP) ; Make room
MOV SP,R0 ; for
CALL $ST32 ; current time.
SUB (R1)+,(SP) ; Get low order
SBC (R0) ; difference
SUB (R1),(R0) ; then high order.
BEQ 10$ ; If overflow beyond 16 bits
MOV #-1,(SP) ; then set to overflow value.
10$: MOVB (SP),(R2)+ ; Store 16 bits.
MOVB -(R0),(R2)+
CMP (SP)+,(SP)+
RETURN
.SBTTL $AC32 - Add a value to a 32 bit counter
;++
; FUNCTIONAL DESCRIPTION:
;
; None
;
; CALLING SEQUENCE:
;
; None
;
; INPUT PARAMETERS:
;
; R0 = counter address
; R1 = value to add
;
; IMPLICIT INPUTS:
;
; None
;
; OUTPUT PARAMETERS:
;
; None
;
; IMPLICIT OUTPUTS:
;
; None
;
; CONDITION CODES:
;
; None
;
; SIDE EFFECTS:
;
; None
;--
.PSECT $CODE$,I,RO
$AC32:: ADD R1,(R0)+
ADC (R0)
BCC 90$
DEC (R0)
MOV (R0),-(R0)
90$: RETURN
.SBTTL $DC16 - Store 16 Bit Counter
;++
; FUNCTIONAL DESCRIPTION:
;
; None
;
; CALLING SEQUENCE:
;
; None
;
; INPUT PARAMETERS:
;
; 2(SP) = counter number
; R0 = counter value
;
; IMPLICIT INPUTS:
;
; None
;
; OUTPUT PARAMETERS:
;
; None
;
; IMPLICIT OUTPUTS:
;
; None
;
; CONDITION CODES:
;
; None
;
; SIDE EFFECTS:
;
; None
;--
.PSECT $CODE$,I,RO
$DC16:: NCTR$ 2.
BR NMCP2
.SBTTL $DC32 - Store 32 Bit Counter
;++
; FUNCTIONAL DESCRIPTION:
;
; None
;
; CALLING SEQUENCE:
;
; None
;
; INPUT PARAMETERS:
;
; 2(SP) = counter number
; R0 = address of counter value
;
; IMPLICIT INPUTS:
;
; None
;
; OUTPUT PARAMETERS:
;
; None
;
; IMPLICIT OUTPUTS:
;
; None
;
; CONDITION CODES:
;
; None
;
; SIDE EFFECTS:
;
; None
;--
.PSECT $CODE$,I,RO
$DC32:: NCTR$ 4.
BR NMCP4
.SBTTL $DC8 - Store 8 Bit Counter
;++
; FUNCTIONAL DESCRIPTION:
;
; None
;
; CALLING SEQUENCE:
;
; None
;
; INPUT PARAMETERS:
;
; 2(SP) = counter number
; R0 = counter value
;
; IMPLICIT INPUTS:
;
; None
;
; OUTPUT PARAMETERS:
;
; None
;
; IMPLICIT OUTPUTS:
;
; None
;
; CONDITION CODES:
;
; None
;
; SIDE EFFECTS:
;
; None
;--
.PSECT $CODE$,I,RO
$DC8:: NCTR$ 1.
MOVB R0,(R2)+
RETURN
.SBTTL $DC8B - Store 8 Bit-mapped Counter
;++
; FUNCTIONAL DESCRIPTION:
;
; None
;
; CALLING SEQUENCE:
;
; None
;
; INPUT PARAMETERS:
;
; 2(SP) = counter number
; R0 = counter value + map in high byte
;
; IMPLICIT INPUTS:
;
; None
;
; OUTPUT PARAMETERS:
;
; None
;
; IMPLICIT OUTPUTS:
;
; None
;
; CONDITION CODES:
;
; None
;
; SIDE EFFECTS:
;
; None
;--
.PSECT $CODE$,I,RO
$DC8B:: NCTR$ 3.
SWAB R0
MOVB R0,(R2)+
CLRB (R2)+
BR NMCPH
.SBTTL $DPAI - Store AI-n Parameter
;++
; FUNCTIONAL DESCRIPTION:
;
; None
;
; CALLING SEQUENCE:
;
; None
;
; INPUT PARAMETERS:
;
; 2(SP) = parameter number
; R0 = string length
; R1 = string pointer
;
; IMPLICIT INPUTS:
;
; None
;
; OUTPUT PARAMETERS:
;
; None
;
; IMPLICIT OUTPUTS:
;
; None
;
; CONDITION CODES:
;
; None
;
; SIDE EFFECTS:
;
; None
;--
.PSECT $CODE$,I,RO
$DPAI:: NIDN$
$TPAI:: NPRM$ 100
BR NMCPI
.SBTTL $DPC1 - Store C-1 Parameter
;++
; FUNCTIONAL DESCRIPTION:
;
; None
;
; CALLING SEQUENCE:
;
; None
;
; INPUT PARAMETERS:
;
; 2(SP) = parameter number
; R0 = parameter value
;
; IMPLICIT INPUTS:
;
; None
;
; OUTPUT PARAMETERS:
;
; None
;
; IMPLICIT OUTPUTS:
;
; None
;
; CONDITION CODES:
;
; None
;
; SIDE EFFECTS:
;
; None
;--
.PSECT $CODE$,I,RO
$DPC1:: NIDN$
$TPC1:: NPRM$ 200+1,1.
MOVB R0,(R2)+
RETURN
.SBTTL $DPC2 - Store C-2 Parameter
;++
; FUNCTIONAL DESCRIPTION:
;
; None
;
; CALLING SEQUENCE:
;
; None
;
; INPUT PARAMETERS:
;
; 2(SP) = parameter number
; R0 = parameter value
;
; IMPLICIT INPUTS:
;
; None
;
; OUTPUT PARAMETERS:
;
; None
;
; IMPLICIT OUTPUTS:
;
; None
;
; CONDITION CODES:
;
; None
;
; SIDE EFFECTS:
;
; None
;--
.PSECT $CODE$,I,RO
$DPC2:: NIDN$
$TPC2:: NPRM$ 200+2,2.
NMCP2: MOVB R0,(R2)+
NMCPH: SWAB R0
MOVB R0,(R2)+
RETURN
.SBTTL $DPDS1 - Store DS-1 Parameter
;++
; FUNCTIONAL DESCRIPTION:
;
; None
;
; CALLING SEQUENCE:
;
; None
;
; INPUT PARAMETERS:
;
; 2(SP) = parameter number
; R0 = parameter value
;
; IMPLICIT INPUTS:
;
; None
;
; OUTPUT PARAMETERS:
;
; None
;
; IMPLICIT OUTPUTS:
;
; None
;
; CONDITION CODES:
;
; None
;
; SIDE EFFECTS:
;
; None
;--
.PSECT $CODE$,I,RO
$DPDS1::NIDN$
$TPDS1::NPRM$ 1*20+1,1.
MOVB R0,(R2)+
RETURN
.SBTTL $DPDU1 - Store DU-1 Parameter
;++
; FUNCTIONAL DESCRIPTION:
;
; None
;
; CALLING SEQUENCE:
;
; None
;
; INPUT PARAMETERS:
;
; 2(SP) = parameter number
; R0 = parameter value
;
; IMPLICIT INPUTS:
;
; None
;
; OUTPUT PARAMETERS:
;
; None
;
; IMPLICIT OUTPUTS:
;
; None
;
; CONDITION CODES:
;
; None
;
; SIDE EFFECTS:
;
; None
;--
.PSECT $CODE$,I,RO
$DPDU1::NIDN$
$TPDU1::NPRM$ 0*20+1,1.
MOVB R0,(R2)+
RETURN
.SBTTL $DPDU2 - Store DU-2 Parameter
;++
; FUNCTIONAL DESCRIPTION:
;
; None
;
; CALLING SEQUENCE:
;
; None
;
; INPUT PARAMETERS:
;
; 2(SP) = parameter number
; R0 = parameter value
;
; IMPLICIT INPUTS:
;
; None
;
; OUTPUT PARAMETERS:
;
; None
;
; IMPLICIT OUTPUTS:
;
; None
;
; CONDITION CODES:
;
; None
;
; SIDE EFFECTS:
;
; None
;--
.PSECT $CODE$,I,RO
$DPDU2::NIDN$
$TPDU2::NPRM$ 0*20+2,2.
BR NMCP2
.SBTTL $DPH1 - Store H-1 Parameter
;++
; FUNCTIONAL DESCRIPTION:
;
; None
;
; CALLING SEQUENCE:
;
; None
;
; INPUT PARAMETERS:
;
; 2(SP) = parameter number
; R0 = parameter value
;
; IMPLICIT INPUTS:
;
; None
;
; OUTPUT PARAMETERS:
;
; None
;
; IMPLICIT OUTPUTS:
;
; None
;
; CONDITION CODES:
;
; None
;
; SIDE EFFECTS:
;
; None
;--
.PSECT $CODE$,I,RO
$DPH1:: NIDN$
$TPH1:: NPRM$ 2*20+1,1.
MOVB R0,(R2)+
RETURN
.SBTTL $DPH2 - Store H-2 Parameter
;++
; FUNCTIONAL DESCRIPTION:
;
; None
;
; CALLING SEQUENCE:
;
; None
;
; INPUT PARAMETERS:
;
; 2(SP) = parameter number
; R0 = parameter value
;
; IMPLICIT INPUTS:
;
; None
;
; OUTPUT PARAMETERS:
;
; None
;
; IMPLICIT OUTPUTS:
;
; None
;
; CONDITION CODES:
;
; None
;
; SIDE EFFECTS:
;
; None
;--
.PSECT $CODE$,I,RO
$DPH2:: NIDN$
$TPH2:: NPRM$ 2*20+2,2.
BR NMCP2
.SBTTL $DPHI - Store HI-n Parameter
;++
; FUNCTIONAL DESCRIPTION:
;
; None
;
; CALLING SEQUENCE:
;
; None
;
; INPUT PARAMETERS:
;
; 2(SP) = parameter number
; R0 = string length
; R1 = string pointer
;
; IMPLICIT INPUTS:
;
; None
;
; OUTPUT PARAMETERS:
;
; None
;
; IMPLICIT OUTPUTS:
;
; None
;
; CONDITION CODES:
;
; None
;
; SIDE EFFECTS:
;
; None
;--
.PSECT $CODE$,I,RO
$DPHI:: NIDN$
$TPHI:: NPRM$ 2*20
NMCPI: MOVB R0,(R2)+
BEQ 90$
MOV 10(SP),R1
10$: MOVB (R1)+,(R2)+
SOB R0,10$
90$: RETURN
.SBTTL $DPCM - Prepare for CM-n Parameter
;++
; FUNCTIONAL DESCRIPTION:
;
; None
;
; CALLING SEQUENCE:
;
; None
;
; INPUT PARAMETERS:
;
; 2(SP) = parameter number
; R0 = parameter value
;
; IMPLICIT INPUTS:
;
; None
;
; OUTPUT PARAMETERS:
;
; None
;
; IMPLICIT OUTPUTS:
;
; None
;
; CONDITION CODES:
;
; None
;
; SIDE EFFECTS:
;
; None
;--
.PSECT $CODE$,I,RO
$DPCM:: NIDN$
NCTR$ 1.
MOVB R0,(R2)
BISB #300,(R2)+
RETURN
.SBTTL $DPO2 - Store O-2 Parameter
;++
; FUNCTIONAL DESCRIPTION:
;
; None
;
; CALLING SEQUENCE:
;
; None
;
; INPUT PARAMETERS:
;
; 2(SP) = parameter number
; R0 = parameter value
;
; IMPLICIT INPUTS:
;
; None
;
; OUTPUT PARAMETERS:
;
; None
;
; IMPLICIT OUTPUTS:
;
; None
;
; CONDITION CODES:
;
; None
;
; SIDE EFFECTS:
;
; None
;--
.PSECT $CODE$,I,RO
$DPO2:: NIDN$
$TPO2:: NPRM$ 3*20+2,2.
BR NMCP2
.SBTTL $DPO4 - Store O-4 Parameter
;++
; FUNCTIONAL DESCRIPTION:
;
; None
;
; CALLING SEQUENCE:
;
; None
;
; INPUT PARAMETERS:
;
; 2(SP) = parameter number
; R0 = parameter value
;
; IMPLICIT INPUTS:
;
; None
;
; OUTPUT PARAMETERS:
;
; None
;
; IMPLICIT OUTPUTS:
;
; None
;
; CONDITION CODES:
;
; None
;
; SIDE EFFECTS:
;
; None
;--
.PSECT $CODE$,I,RO
$DPO4:: NIDN$
$TPO4:: NPRM$ 3*20+4,4.
NMCP4: MOVB (R0)+,(R2)+
MOVB (R0)+,(R2)+
MOVB (R0)+,(R2)+
MOVB (R0)+,(R2)+
RETURN
.SBTTL $IC32 - Increment a 32 bit counter
;++
; FUNCTIONAL DESCRIPTION:
;
; None
;
; CALLING SEQUENCE:
;
; None
;
; INPUT PARAMETERS:
;
; R0 = counter address
;
; IMPLICIT INPUTS:
;
; None
;
; OUTPUT PARAMETERS:
;
; None
;
; IMPLICIT OUTPUTS:
;
; None
;
; CONDITION CODES:
;
; None
;
; SIDE EFFECTS:
;
; None
;--
.PSECT $CODE$,I,RO
$IC32:: INC (R0)+
BNE 90$
INC (R0)
BNE 90$
DEC (R0)
DEC -(R0)
90$: RETURN
.SBTTL $IC8 - Increment a 8 bit counter
;++
; FUNCTIONAL DESCRIPTION:
;
; None
;
; CALLING SEQUENCE:
;
; None
;
; INPUT PARAMETERS:
;
; R0 = counter address
;
; IMPLICIT INPUTS:
;
; None
;
; OUTPUT PARAMETERS:
;
; None
;
; IMPLICIT OUTPUTS:
;
; None
;
; CONDITION CODES:
;
; None
;
; SIDE EFFECTS:
;
; None
;--
.PSECT $CODE$,I,RO
$IC8:: INCB (R0)
BNE 90$
DECB (R0)
90$: RETURN
.SBTTL $NLBEG - Begin Event Logging Entry
;++
; FUNCTIONAL DESCRIPTION:
;
; None
;
; CALLING SEQUENCE:
;
; None
;
; INPUT PARAMETERS:
;
; None
;
; IMPLICIT INPUTS:
;
; None
;
; OUTPUT PARAMETERS:
;
; None
;
; IMPLICIT OUTPUTS:
;
; None
;
; CONDITION CODES:
;
; None
;
; SIDE EFFECTS:
;
; None
;--
.PSECT $CODE$,I,RO
$NLBEG::MOV .LOGPT,R0
MOV R0,NMPTR
INC NMPTR
CLR NMCNT
MOVB -(R0),NMCNT
BR NPSET
.SBTTL $NLEND - Signal Event Logging Entry
;++
; FUNCTIONAL DESCRIPTION:
;
; None
;
; CALLING SEQUENCE:
;
; None
;
; INPUT PARAMETERS:
;
; R0 = event type/class
; R1 = entity code
;
; IMPLICIT INPUTS:
;
; None
;
; OUTPUT PARAMETERS:
;
; None
;
; IMPLICIT OUTPUTS:
;
; None
;
; CONDITION CODES:
;
; None
;
; SIDE EFFECTS:
;
; None
;--
.PSECT $CODE$,I,RO
$NLEND::CALL NPSET
SUB .LOGPT,NMPTR
DEC NMPTR
MOVB NMPTR,@.LOGPT
SGNL$S #CE$EVT,R0,R1,.LOGPT
RETURN
.SBTTL $NRBEG - Begin NM Response Entry
;++
; FUNCTIONAL DESCRIPTION:
;
; None
;
; CALLING SEQUENCE:
;
; None
;
; INPUT PARAMETERS:
;
; R4 = NM CCB address
;
; IMPLICIT INPUTS:
;
; None
;
; OUTPUT PARAMETERS:
;
; None
;
; IMPLICIT OUTPUTS:
;
; None
;
; CONDITION CODES:
;
; None
;
; SIDE EFFECTS:
;
; None
;--
.PSECT $CODE$,I,RO
$NRBEG::MOV C.BUF(R4),NMBIAS
CALL NRPTR
MOV C.CNT(R4),NMCNT
CALL NPSET
MOV #1,C.STS(R4)
RETURN
NRPTR: MOV C.BUF+2(R4),NMPTR
CMP #140000,NMPTR
BHI 90$
SUB #20000,NMPTR
90$: RETURN
.SBTTL $NREND - Finish NM Response Entry
;++
; FUNCTIONAL DESCRIPTION:
;
; None
;
; CALLING SEQUENCE:
;
; None
;
; INPUT PARAMETERS:
;
; R4 = NM CCB address
;
; IMPLICIT INPUTS:
;
; None
;
; OUTPUT PARAMETERS:
;
; C.CNT(R4) = length of data inserted
;
; IMPLICIT OUTPUTS:
;
; None
;
; CONDITION CODES:
;
; None
;
; SIDE EFFECTS:
;
; None
;--
.PSECT $CODE$,I,RO
$NREND::CALL NPSET
MOV NMPTR,C.CNT(R4)
CALL NRPTR
SUB NMPTR,C.CNT(R4)
TST NMCNT
BPL 90$
MOV #-4,C.STS(R4)
90$: RETURN
.SBTTL N* - Set Up Mapping for Parameter/Counter
;++
; FUNCTIONAL DESCRIPTION:
;
; None
;
; CALLING SEQUENCE:
;
; None
;
; INPUT PARAMETERS:
;
; None
;
; IMPLICIT INPUTS:
;
; None
;
; OUTPUT PARAMETERS:
;
; None
;
; IMPLICIT OUTPUTS:
;
; None
;
; CONDITION CODES:
;
; None
;
; SIDE EFFECTS:
;
; None
;--
.PSECT $CODE$,I,RO
NPSET: TST NMCNT
BPL 10$
MOV NMPRM,NMPTR
RETURN
10$: MOV NMPTR,NMPRM
RETURN
NMAP: PUSH$S <@#KISAR5,R2>
MOV NMBIAS,@#KISAR5
MOV NMPTR,R2
TST NMNUM
BEQ 10$
CLR NMNUM
CALL NPSET
SUB #2,NMCNT
BMI 10$
MOVB 12(SP),(R2)+
MOVB 13(SP),(R2)+
10$: CALL @(SP)+
MOV R2,NMPTR
POP$S <@#KISAR5,R2,R1>
RTS PC
NPRM: NMAP$
CLR -(SP)
MOVB (R1)+,(SP)
BPL 20$
NEGB (SP)
ADD R0,(SP)
20$: SUB (SP)+,NMCNT
BMI 90$
MOVB (R1)+,(R2)+
CALL (R1)
90$: RETURN
NCTR: INC NMNUM
NMAP$
SUB (R1)+,NMCNT
BMI 90$
CALL (R1)
90$: RETURN
.END