Trailing-Edge
-
PDP-10 Archives
-
BB-P363B-SM_1985
-
mcb/nml/nmlevt.lst
There are no other files named nmlevt.lst in the archive.
24-May-1985 13:26:12 TOPS-20 Bliss-16 2A(530) Page 1
3-Jan-1983 01:22:13 DNET61:<MCB.NML>NMLEVT.BLI.1 (1)
; 0001 !NET:<PECKHAM.DEVELOPMENT>NMLEVT.BLI.2 28-Sep-82 11:49:03, Edit by PECKHAM
; 0002 !
; 0003 ! Ident 22.
; 0004 ! Fix dot bug introduced by #21.
; 0005 !
; 0006 !NET:<PECKHAM.DEVELOPMENT>NMLEVT.BLI.2 8-Sep-82 09:46:56, Edit by PECKHAM
; 0007 !
; 0008 ! Ident 21.
; 0009 ! Add code in GET_LOCAL_EVENTS to set the EXECUTOR IDENTIFICATION
; 0010 ! from the NMX access control information block.
; 0011 !
; 0012 !NET:<PECKHAM.DEVELOPMENT>NMLEVT.BLI.2 29-Jun-82 09:59:30, Edit by PECKHAM
; 0013 !
; 0014 ! Ident 20.
; 0015 ! Change SS$EVR reference into $NMU_NMX_READ_EVENT reference.
; 0016 !
; 0017 !NET:<PECKHAM.DEVELOPMENT>NMLEVT.BLI.6 27-Jun-82 01:46:10, Edit by PECKHAM
; 0018 !
; 0019 ! Ident 19.
; 0020 ! Fix the TOPS20 EVENT TIME figured in GET_EVENT_BUFFER. It was not
; 0021 ! being set relative to 1-JAN-77.
; 0022 !
; 0023 !NET:<PECKHAM.DEVELOPMENT>NMLEVT.BLI.2 25-Jun-82 11:57:31, Edit by PECKHAM
; 0024 !
; 0025 ! Ident 18.
; 0026 ! Fix GET_LOCAL_EVENTS to recognize access control message from NMX
; 0027 ! and copy data into UN$xxx areas for use by NMUNET.
; 0028 !
; 0029 !NET:<PECKHAM.DEVELOPMENT>NMLEVT.BLI.2 1-Jun-82 13:43:01, Edit by PECKHAM
; 0030 !
; 0031 ! Ident 17.
; 0032 ! New event message format from NMX/MCB.
; 0033 !
; 0034 !NET:<BRANDT.DEVELOPMENT>NMLEVT.BLI.2 4-May-82 16:23:09, Edit by BRANDT
; 0035 !
; 0036 ! Ident 16.
; 0037 ! Put external declaration for NML$DLW_CALL under MCB conditional.
; 0038 !
; 0039 !NET:<PECKHAM.DEVELOPMENT>NMLEVT.BLI.2 22-Apr-82 08:23:09, Edit by PECKHAM
; 0040 !
; 0041 ! Ident 15.
; 0042 ! Change configuration switch naming.
; 0043 !
; 0044 !NET:<PECKHAM.DEVELOPMENT>NMLEVT.BLI.2 26-Mar-82 08:42:52, Edit by PECKHAM
; 0045 !
; 0046 ! Ident 14.
; 0047 ! Utilize new MCB time block.
; 0048 !
; 0049 !NET:<PECKHAM.DEVELOPMENT>NMLEVT.BLI.57 24-Mar-82 08:33:15, Edit by PECKHAM
; 0050 !
; 0051 ! Ident 13.
; 0052 ! Fix event queues to work properly (avoid consecutive lost event events).
24-May-1985 13:26:12 TOPS-20 Bliss-16 2A(530) Page 2
3-Jan-1983 01:22:13 DNET61:<MCB.NML>NMLEVT.BLI.1 (1)
; 0053 ! Use configuration switches from NMLCOM.
; 0054 !
; 0055 !NET:<PECKHAM.DEVELOPMENT>NMLEVT.BLI.2 2-Mar-82 09:47:35, Edit by PECKHAM
; 0056 !
; 0057 ! Ident 12.
; 0058 ! Fix bug in NML$EVENT_RECORDER that caused SYSERR code to go away.
; 0059 !
; 0060 !NET:<PECKHAM.DEVELOPMENT>NMLEVT.BLI.2 19-Feb-82 08:29:21, Edit by PECKHAM
; 0061 !
; 0062 ! Ident 11.
; 0063 ! Add direct access to time routines, thus making EV_ETM unnecessary.
; 0064 ! Add LOGGING FILE state maintenance for TOPS20.
; 0065 ! Remove LW_EVT (DLW routines now call NML$DECLARE_EVENT directly).
; 0066 !
; 0067 !NET:<PECKHAM.DEVELOPMENT>NMLEVT.BLI.2 17-Feb-82 12:41:38, Edit by PECKHAM
; 0068 !
; 0069 ! Ident 10.
; 0070 ! Reduce task stack size by half.
; 0071 !
; 0072 !NET:<PECKHAM.DEVELOPMENT>NMLEVT.BLI.3 5-Feb-82 15:40:30, Edit by PECKHAM
; 0073 !
; 0074 ! Ident 09.
; 0075 ! The PROCESSED_QUEUE must be a scheduled queue!
; 0076 ! Also change PROCESSED_QUEUE size from 3 to 6.
; 0077 !
; 0078 !NET:<PECKHAM.DEVELOPMENT>NMLEVT.BLI.3 5-Feb-82 13:04:17, Edit by PECKHAM
; 0079 !NET:<PECKHAM.DEVELOPMENT>NMLEVT.BLI.2 5-Feb-82 09:19:00, Edit by GROSSMAN
; 0080 !
; 0081 ! Ident 08.
; 0082 ! Decrement PROCESSED_QUEUE_COUNT each time an item is removed from the
; 0083 ! PROCESSED_QUEUE. This allows NML to pass more than 3 events.
; 0084 ! Change PROCESSED_QUEUE from quota queue to regular queue.
; 0085 !
; 0086 !NET:<PECKHAM.DEVELOPMENT>NMLEVT.BLI.2 22-Jan-82 13:00:18, Edit by PECKHAM
; 0087 !
; 0088 ! Ident 07.
; 0089 ! Make declared events in a TOPSxx system RT$LOCAL in DECLARE_EVENT.
; 0090 ! Fix HOST_ID length in EVENT_INITIALIZE.
; 0091 !
; 0092 !NET:<PECKHAM.DEVELOPMENT>NMLEVT.BLI.3 20-Jan-82 17:17:47, Edit by PECKHAM
; 0093 !
; 0094 ! Ident 06.
; 0095 ! Fix NML$DECLARE_EVENT to figure entity-id string length
; 0096 ! instead of requiring caller to supply it.
; 0097 !
; 0098 !NET:<PECKHAM.DEVELOPMENT>NMLEVT.BLI.2 18-Jan-82 20:33:29, Edit by PECKHAM
; 0099 !
; 0100 ! Ident 05.
; 0101 ! Modify LW_EVT to satisfy both NMLDLW 36 & 16 needs.
; 0102 !
; 0103 !NET:<PECKHAM.DEVELOPMENT>NMLEVT.BLI.22 16-Jan-82 17:29:18, Edit by PECKHAM
; 0104 !
24-May-1985 13:26:12 TOPS-20 Bliss-16 2A(530) Page 3
3-Jan-1983 01:22:13 DNET61:<MCB.NML>NMLEVT.BLI.1 (1)
; 0105 ! Ident 04.
; 0106 ! Update copyright date.
; 0107 ! Add NML$DECLARE_EVENT support and review event queue handling.
; 0108 ! Note : all event times are being assigned at NML level as of now.
; 0109 ! Note : the current time cannot be obtained from here due to lack of NMULIB;
; 0110 ! The routine EV_ETM will be put in a module which uses NMULIB.
; 0111 ! Get proper host node id for events.
; 0112 ! Remove EVENT_TIME routine.
; 0113 ! Temporary LW_EVT routine for NMLDLW to log events (until it uses NMLLIB)
; 0114 ! I am putting EV_ETM into NMLDLW for now.
; 0115 !
; 0116 !NET:<DECNET20-V3P1.BASELEVEL-2.SOURCES>NMLEVT.BLI.10 12-Oct-81 10:22:21, Edit by PECKHAM
; 0117 !
; 0118 ! Ident 03.
; 0119 ! Correct bug introduced in ident 01 in GET_LOCAL_EVENT.
; 0120 !
; 0121 ! NET:<DECNET20-V3P1.BASELEVEL-2.SOURCES>NMLEVT.BLI.8 11-Oct-81 16:36:35, Edit by PECKHAM
; 0122 !
; 0123 ! Ident 01.
; 0124 ! Add recognition of maintenance requests to GET_LOCAL_EVENT to call
; 0125 ! the Data Link Watcher.
; 0126 !
; 0127 !<DECNET20-V3P1.BASELEVEL-2.MCB>NMLEVT.BLI.2 26-Jun-81 13:26:36, Edit by SROBINSON
; 0128 !
; 0129 ! Fix NODE_E Event Logging Address Bug using GETW
; 0130 !
; 0131 !<DECNET20-V3P1.BASELEVEL-2.MCB>NMLEVT.BLI.2 11-Jun-81 11:38:14, Edit by SROBINSON
; 0132 ! Add Quota Checked Queues
; 0133 !
; 0134 module NMLEVT ( ! Event Processing Module
; 0135 ident = 'X00.22'
; 0136 ) =
; 0137 begin
; 0138 !
; 0139 ! COPYRIGHT (c) 1980, 1981, 1982
; 0140 ! DIGITAL EQUIPMENT CORPORATION
; 0141 ! Maynard, Massachusetts
; 0142 !
; 0143 ! This software is furnished under a license and may be used
; 0144 ! and copied only in accordance with the terms of such license
; 0145 ! and with the inclusion of the above copyright notice. This
; 0146 ! software or any other copies thereof may not be provided or
; 0147 ! otherwise made available to any other person. No title to
; 0148 ! and ownership of the software is hereby transferred.
; 0149 !
; 0150 ! The information in this software is subject to change
; 0151 ! without notice and should not be construed as a commitment
; 0152 ! by DIGITAL EQUIPMENT CORPORATION.
; 0153 !
; 0154 ! DIGITAL assumes no responsibility for the use or reliability
; 0155 ! of its software on equipment which is not supplied by
; 0156 ! DIGITAL.
NMLEVT 24-May-1985 13:26:12 TOPS-20 Bliss-16 2A(530) Page 4
X00.22 3-Jan-1983 01:22:13 DNET61:<MCB.NML>NMLEVT.BLI.1 (1)
; 0157 !
; 0158
; 0159 !++
; 0160 ! Facility: LSG DECnet Network Management
; 0161 !
; 0162 ! Abstract: This module provides the routines that control the
; 0163 ! Event Queueing system within the NML task. It also contains
; 0164 ! the Event Recorder and Processor.
; 0165 !
; 0166 ! Environment: TOPS10/TOPS20 user mode, MCB RSX task level
; 0167 !
; 0168 ! Author: Scott G. Robinson, Creation date: 24-Mar-81
; 0169 ! From NMLQUE by Steven M. Jenness
; 0170 ! From NMLNIC by Dale C. Gunn
; 0171 !
; 0172 !--
; 0173
; 0174 !<BLF/SYNONYM $FIELD=FIELD>
; 0175 !<BLF/SYNONYM %UNQUOTE =>
; 0176 !<BLF/PAGE>
NMLEVT 24-May-1985 13:26:12 TOPS-20 Bliss-16 2A(530) Page 5
X00.22 3-Jan-1983 01:22:13 DNET61:<MCB.NML>NMLEVT.BLI.1 (2)
; 0177 !
; 0178 ! Include files
; 0179 !
; 0180
; 0181 library 'NMLLIB'; ! All needed definitions
; 0182
; 0183 !
; 0184 ! Global routines
; 0185 !
; 0186
; 0187 forward routine
; 0188 NML$EVENT_MANAGER, ! Define global entry points
; 0189 NML$LOGGING_FILE : novalue; ! LOGGING FILE event handler
; 0190
; 0191 forward routine
; 0192 EMPTY_QUEUE_CHECK, ! Check if a queue is empty
; 0193 GET_EVENT_BUFFER, ! Allocate and format event block
; 0194 GET_LOCAL_EVENT : novalue; ! Local Event Reader
; 0195
; 0196 !
; 0197 ! Local routines
; 0198 !
; 0199
; 0200 !
; 0201 ! Logging values
; 0202 !
; 0203
; 0204 macro
; M 0205 C_STRING [ ] = ! Counted string
; M 0206 %if not $MCB
; M 0207 %then
; M 0208 C_CHAR(%char(%charcount(%remaining)),%explode(%remaining))
; M 0209 %else
; M 0210 %string(%char(%charcount(%remaining)),%remaining)
; 0211 %fi % ;
; 0212
; L 0213 %if not $MCB
; U 0214 %then
; U 0215 macro
; U 0216 C_CHAR [B1,B2,B3,B4] =
; U 0217 ((%C B1 ^ (%bpval-8))
; U 0218 %if not %null(B2)
; U 0219 %then
; U 0220 or (%C B2 ^ (%bpval-16))
; U 0221 %if not %null(B3)
; U 0222 %then
; U 0223 or (%C B3 ^ (%bpval-24))
; U 0224 %if not %null(B4)
; U 0225 %then
; U 0226 or (%C B4 ^ (%bpval-32))
; U 0227 %fi %fi %fi) %;
; 0228 %else
NMLEVT 24-May-1985 13:26:12 TOPS-20 Bliss-16 2A(530) Page 6
X00.22 3-Jan-1983 01:22:13 DNET61:<MCB.NML>NMLEVT.BLI.1 (2)
; 0229 macro
; M 0230 C_CHAR [] =
; 0231 (%string (%remaining)) %;
; 0232 %fi
; 0233
; L 0234 %if NML$CFG_LOGGING_FILE
; U 0235 %then
; U 0236 bind
; U 0237 LOGGING_FILE_PTR = ch$ptr (uplit (%char (FILE_))),
; U 0238 LOGGING_NAME_ADR = uplit (C_STRING ('ERROR.SYS'));
; 0239 %fi
; 0240
; 0241 literal
; 0242 LOGGING_STATE = 0,
; 0243 STATE_ON = 0,
; 0244 STATE_OFF = 1,
; 0245 STATE_HOLD = 2,
; 0246 LOGGING_NAME = 100;
; 0247
; 0248 !
; 0249 ! Own storage
; 0250 !
; 0251
; 0252 own
; L 0253 %if NML$CFG_LOGGING_FILE
; U 0254 %then
; U 0255 FILE_QUEUE : EVENT_QUEUE, ! LOGGING FILE event queue
; 0256 %fi
; L 0257 %if NML$CFG_LOGGING_TRANSMITTER
; 0258 %then
; 0259 HOST_TRANSMITTER : TRANSMITTER_QUEUE, ! Event transmitter queue for host
; 0260 %fi
; 0261 LOST_EVENTS, ! Lost events due to full queue
; 0262 ALLOCATION_FAILURES; ! Lost events due to insufficient memory
; 0263
; 0264 !
; 0265 ! External references
; 0266 !
; 0267
; 0268 external routine
; L 0269 %if $MCB
; 0270 %then
; 0271 NML$DLW_CALL, ! Notify Data Link Watcher
; 0272 %fi
; L 0273 %if NML$CFG_LOGGING_TRANSMITTER
; 0274 %then
; 0275 NML$EVENT_TRANSMITTER, ! Event Transmitter
; 0276 %fi
; L 0277 %if NML$CFG_LOGGING_RECEIVER
; U 0278 %then
; U 0279 NML$EVENT_RECEIVER, ! Event Receiver
; 0280 %fi
NMLEVT 24-May-1985 13:26:12 TOPS-20 Bliss-16 2A(530) Page 7
X00.22 3-Jan-1983 01:22:13 DNET61:<MCB.NML>NMLEVT.BLI.1 (2)
; 0281 NMU$QUEUE_MANAGER, ! Generalized queue management routines
; 0282 NMU$SCHED_MANAGER, ! Scheduler
; 0283 NMU$MEMORY_MANAGER, ! Memory management routines
; 0284 NML$GET_VDB_PARAMETER, ! Extract data for specific parameter
; 0285 NML$SET_VDB_PARAMETER, ! Set parameter in Volatile DB
; 0286 NMU$TABLE_ROUTINES, ! Table handling routines
; 0287 NMU$NETWORK_UTILITIES; ! Network interface
; 0288
NMLEVT 24-May-1985 13:26:12 TOPS-20 Bliss-16 2A(530) Page 8
X00.22 NML$DECLARE_EVENT as EV_DEC 3-Jan-1983 01:22:13 DNET61:<MCB.NML>NMLEVT.BLI.1 (3)
; 0289 %global_routine ('NML$DECLARE_EVENT', REB : ref RAW_EVENT_BLOCK) : novalue =
; 0290
; 0291 !++
; 0292 ! Functional description:
; 0293 !
; 0294 ! This routine accepts a raw event block and gives it to the
; 0295 ! event processor for filtering and transmitting.
; 0296 !
; 0297 ! Formal parameters: none
; 0298 !
; 0299 ! Routine value: none
; 0300 ! Side effects: none
; 0301 !
; 0302 !--
; 0303
; 0304 begin
; 0305 NML$EVENT_PROCESSOR (.REB);
; 0306 end; ! End of NML$DECLARE_EVENT
.TITLE NMLEVT
.IDENT /X00.22/
000000 .PSECT $OWN$, D
000000 HOST.TRANSMITTER:
.BLKW 16
000034 LOST.EVENTS:
.BLKW 1
000036 ALLOCATION.FAILURES:
.BLKW 1
.GLOBL NW.CAL, EV.XMT, UQ.RESET, UQ.INSERT
.GLOBL UQ.REMOVE, UQ.EXTRACT, UQ.LENGTH
.GLOBL UQ.SCAN, UQ.SEXTRACT, US.CREATE
.GLOBL US.ABORT, US.FINI, US.COMPLETE
.GLOBL US.ERROR, US.INSERT, US.REMOVE
.GLOBL US.QRESET, US.QQINS, US.QQREM
.GLOBL US.QQSET, US.QQEXT, US.EVENT, US.WAIT
.GLOBL US.FLAG, US.SLEEP, US.CURRENT
.GLOBL US.DESCHEDULE, UM.RESET, UM.INITIALIZE
.GLOBL UM.GET, UM.RELEASE, NL.VGP, NL.VSP
.GLOBL UT.CLEAR, UT.INSERT, UT.FETCH
.GLOBL UT.DELETE, UT.CHANGE, UT.MAX, UN.INIT
.GLOBL UN.LOCAL, UN.OPEN, UN.ACCEPT, UN.REJECT
.GLOBL UN.READ, UN.WRITE, UN.ABORT, UN.CLOSE
.GLOBL UN.STATUS, UN.VALIDATE
.SBTTL EV.DEC NML$DECLARE_EVENT as EV_DEC
000000 .PSECT $CODE$, RO
NMLEVT 24-May-1985 13:26:12 TOPS-20 Bliss-16 2A(530) Page 9
X00.22 NML$DECLARE_EVENT as EV_DEC 3-Jan-1983 01:22:13 DNET61:<MCB.NML>NMLEVT.BLI.1 (3)
000000 016646 000002 EV.DEC::MOV 2(SP),-(SP) ; REB,* 0305
000004 004767 000000V JSR PC,EV.PRO
000010 005726 TST (SP)+ ; 0304
000012 000207 RTS PC ; 0289
; Routine Size: 6 words, Routine Base: $CODE$ + 0000
; Maximum stack depth per invocation: 2 words
; 0307
NMLEVT 24-May-1985 13:26:12 TOPS-20 Bliss-16 2A(530) Page 10
X00.22 NML$EQUEUE_INSERT as EQ_INS 3-Jan-1983 01:22:13 DNET61:<MCB.NML>NMLEVT.BLI.1 (4)
; 0308 %global_routine ('NML$EQUEUE_INSERT', EQ: ref EVENT_QUEUE, EB : ref EVENT_BUFFER) : novalue =
; 0309
; 0310 !++
; 0311 ! Functional description:
; 0312 !
; 0313 ! None
; 0314 !
; 0315 ! Formal parameters: none
; 0316 !
; 0317 ! Routine value: none
; 0318 ! Side effects: none
; 0319 !
; 0320 !--
; 0321
; 0322 begin
; 0323
; 0324 if .EQ [EQ_COUNT] eql .EQ [EQ_LENGTH]
; 0325 then
; 0326 begin
; 0327 NMU$MEMORY_RELEASE (.EB, .EB [EB_ALLOCATION]);
; 0328 return;
; 0329 end;
; 0330
; 0331 EQ [EQ_COUNT] = .EQ [EQ_COUNT] + 1;
; 0332
; 0333 if .EQ [EQ_COUNT] eql .EQ [EQ_LENGTH]
; 0334 then
; 0335 begin
; 0336
; 0337 local
; 0338 LNG,
; 0339 PTR;
; 0340
; 0341 PTR = ch$ptr (EB [EB_BUFFER], 2, 8);
; 0342
; 0343 if (ch$rchar (.PTR) eql 0) and
; 0344 (ch$rchar (ch$plus (.PTR, 1)) eql 0)
; 0345 then ! Last event is lost event
; 0346 begin
; 0347 EQ [EQ_COUNT] = .EQ [EQ_COUNT] - 1;
; 0348 NMU$MEMORY_RELEASE (.EB, .EB [EB_ALLOCATION]);
; 0349 return;
; 0350 end;
; 0351 !
; 0352 ! Turn current event into 'lost event' event
; 0353 !
; 0354 ch$wchar_a (0, PTR);
; 0355 ch$wchar_a (0, PTR);
; 0356 PTR = ch$plus (.PTR, 6 + 2);
; 0357 LNG = ch$rchar_a (PTR);
; 0358 PTR = ch$plus (.PTR, .LNG);
; 0359 ch$wchar_a (NO_ENTITY_ and %o'377', PTR);
NMLEVT 24-May-1985 13:26:12 TOPS-20 Bliss-16 2A(530) Page 11
X00.22 NML$EQUEUE_INSERT as EQ_INS 3-Jan-1983 01:22:13 DNET61:<MCB.NML>NMLEVT.BLI.1 (4)
; 0360 ch$wchar_a (NO_ENTITY_^-8 and %o'377', PTR);
; 0361 EB [EB_LENGTH] = PTR = ch$diff (.PTR, ch$ptr (EB [EB_BUFFER],, 8));
; 0362 end;
; 0363
; 0364 NMU$SQUEUE_INSERT (.EQ, .EB);
; 0365 end; ! End of NML$EQUEUE_INSERT
.SBTTL EQ.INS NML$EQUEUE_INSERT as EQ_INS
000000 004167 000000G EQ.INS::JSR R1,$SAVE4 ; 0308
000004 016602 000016 MOV 16(SP),R2 ; EQ,* 0324
000010 012703 000014 MOV #14,R3
000014 060203 ADD R2,R3
000016 021362 000016 CMP (R3),16(R2)
000022 001010 BNE 2$
000024 016646 000014 MOV 14(SP),-(SP) ; EB,* 0327
000030 011600 MOV (SP),R0 ; EB,*
000032 016046 000006 MOV 6(R0),-(SP)
000036 004767 000000G 1$: JSR PC,UM.RELEASE
000042 000452 BR 5$ ; 0324
000044 005213 2$: INC (R3) ; 0331
000046 021362 000016 CMP (R3),16(R2) ; 0333
000052 001041 BNE 4$
000054 016601 000014 MOV 14(SP),R1 ; EB,* 0341
000060 010104 MOV R1,R4 ; *,PTR
000062 062704 000014 ADD #14,R4 ; *,PTR
000066 105714 TSTB (R4) ; PTR 0343
000070 001010 BNE 3$
000072 105764 000001 TSTB 1(R4) ; *(PTR) 0344
000076 001005 BNE 3$
000100 005313 DEC (R3) ; 0347
000102 010146 MOV R1,-(SP) ; 0348
000104 016146 000006 MOV 6(R1),-(SP)
000110 000752 BR 1$
000112 105024 3$: CLRB (R4)+ ; PTR 0354
000114 105024 CLRB (R4)+ ; PTR 0355
000116 062704 000010 ADD #10,R4 ; *,PTR 0357
000122 005000 CLR R0 ; LNG
000124 152400 BISB (R4)+,R0 ; PTR,LNG
000126 060004 ADD R0,R4 ; LNG,PTR 0358
000130 112724 000377 MOVB #377,(R4)+ ; *,PTR 0359
000134 112724 000377 MOVB #377,(R4)+ ; *,PTR 0360
000140 010400 MOV R4,R0 ; PTR,* 0361
000142 160100 SUB R1,R0
000144 010004 MOV R0,R4 ; *,PTR
000146 162704 000012 SUB #12,R4 ; *,PTR
000152 010461 000010 MOV R4,10(R1) ; PTR,*
000156 010246 4$: MOV R2,-(SP) ; 0364
000160 016646 000016 MOV 16(SP),-(SP) ; EB,*
000164 004767 000000G JSR PC,US.INSERT
000170 022626 5$: CMP (SP)+,(SP)+ ; 0322
000172 000207 RTS PC ; 0308
NMLEVT 24-May-1985 13:26:12 TOPS-20 Bliss-16 2A(530) Page 12
X00.22 NML$EQUEUE_INSERT as EQ_INS 3-Jan-1983 01:22:13 DNET61:<MCB.NML>NMLEVT.BLI.1 (4)
; Routine Size: 62 words, Routine Base: $CODE$ + 0014
; Maximum stack depth per invocation: 8 words
; 0366
NMLEVT 24-May-1985 13:26:12 TOPS-20 Bliss-16 2A(530) Page 13
X00.22 NML$EQUEUE_REMOVE as EQ_REM 3-Jan-1983 01:22:13 DNET61:<MCB.NML>NMLEVT.BLI.1 (5)
; 0367 %global_routine ('NML$EQUEUE_REMOVE', EQ: ref EVENT_QUEUE) =
; 0368
; 0369 !++
; 0370 ! Functional description:
; 0371 !
; 0372 ! None
; 0373 !
; 0374 ! Formal parameters: none
; 0375 !
; 0376 ! Routine value: none
; 0377 ! Side effects: none
; 0378 !
; 0379 !--
; 0380
; 0381 begin
; 0382
; 0383 local
; 0384 EB;
; 0385
; 0386 EB = NMU$SQUEUE_REMOVE (.EQ);
; 0387 EQ [EQ_COUNT] = .EQ [EQ_COUNT] - 1;
; 0388 .EB
; 0389 end; ! End of NML$EQUEUE_REMOVE
.SBTTL EQ.REM NML$EQUEUE_REMOVE as EQ_REM
000000 010146 EQ.REM::MOV R1,-(SP) ; 0367
000002 016646 000004 MOV 4(SP),-(SP) ; EQ,* 0386
000006 004767 000000G JSR PC,US.REMOVE
000012 016601 000006 MOV 6(SP),R1 ; EQ,* 0387
000016 005361 000014 DEC 14(R1)
000022 005726 TST (SP)+ ; 0381
000024 012601 MOV (SP)+,R1 ; 0367
000026 000207 RTS PC
; Routine Size: 12 words, Routine Base: $CODE$ + 0210
; Maximum stack depth per invocation: 3 words
; 0390
NMLEVT 24-May-1985 13:26:12 TOPS-20 Bliss-16 2A(530) Page 14
X00.22 NML$EQUEUE_RESET as EQ_RES 3-Jan-1983 01:22:13 DNET61:<MCB.NML>NMLEVT.BLI.1 (6)
; 0391 %global_routine ('NML$EQUEUE_RESET', EQ: ref EVENT_QUEUE, LENGTH) : novalue =
; 0392
; 0393 !++
; 0394 ! Functional description:
; 0395 !
; 0396 ! None
; 0397 !
; 0398 ! Formal parameters: none
; 0399 !
; 0400 ! Routine value: none
; 0401 ! Side effects: none
; 0402 !
; 0403 !--
; 0404
; 0405 begin
; 0406 NMU$SQUEUE_RESET (.EQ);
; 0407 EQ [EQ_COUNT] = 0;
; 0408 EQ [EQ_LENGTH] = .LENGTH;
; 0409 end; ! End of NML$EQUEUE_RESET
.SBTTL EQ.RES NML$EQUEUE_RESET as EQ_RES
000000 010146 EQ.RES::MOV R1,-(SP) ; 0391
000002 016601 000006 MOV 6(SP),R1 ; EQ,* 0406
000006 010146 MOV R1,-(SP)
000010 004767 000000G JSR PC,US.QRESET
000014 005061 000014 CLR 14(R1) ; 0407
000020 016661 000006 000016 MOV 6(SP),16(R1) ; LENGTH,* 0408
000026 005726 TST (SP)+ ; 0405
000030 012601 MOV (SP)+,R1 ; 0391
000032 000207 RTS PC
; Routine Size: 14 words, Routine Base: $CODE$ + 0240
; Maximum stack depth per invocation: 3 words
; 0410
NMLEVT 24-May-1985 13:26:12 TOPS-20 Bliss-16 2A(530) Page 15
X00.22 NML$EVENT_INITIALIZE as EV_INI 3-Jan-1983 01:22:13 DNET61:<MCB.NML>NMLEVT.BLI.1 (7)
; 0411 %global_routine ('NML$EVENT_INITIALIZE') : novalue =
; 0412
; 0413 !++
; 0414 ! Functional description:
; 0415 !
; 0416 ! This routine initializes the entire event system including
; 0417 ! creation of the Event Listener, Event Transmitter, Event Recorder,
; 0418 ! and Event Processor. All queues are cleared.
; 0419 !
; 0420 ! Formal parameters: none
; 0421 !
; 0422 ! Routine value: none
; 0423 ! Side effects: none
; 0424 !
; 0425 !--
; 0426
; 0427 begin
; 0428 !
; 0429 ! Create the tasks for Event Handling
; 0430 !
; L 0431 %if $MCB
; 0432 %then
; 0433 NMU$SCHED_CREATE (GET_LOCAL_EVENT, 100, 0, ch$asciz ('GET-LOCAL-EVENTS'));
; 0434 %fi
; L 0435 %if NML$CFG_LOGGING_TRANSMITTER
; 0436 %then
; 0437 begin ! Set up with host node for now.
; 0438
; 0439 macro
; 0440 TRANSMITTER_TO_ = 'TRANSMITTER-TO-' %;
; 0441
; 0442 psect plit = $own$;
; 0443 bind
; 0444 TRANSMITTER_NAME_PTR = ch$asciz (TRANSMITTER_TO_, 'xxxxx'),
; 0445 HOST_ID = HOST_TRANSMITTER [TQ_SINK_NODE];
; 0446 psect plit = $plit$;
; 0447
; 0448 NML$EQUEUE_RESET (HOST_TRANSMITTER, 6);
; 0449 $NML$GET_HOST_ID (uplit (NODE_ID_BUFFER_LENGTH), ch$ptr (HOST_ID,, 8));
; 0450 begin
; 0451 local NUMBER, PTR;
; 0452 linkage
; 0453 LNKG = JSR (register = 0, register = 1, register = 2; register = 0) :
; 0454 nopreserve (1,2);
; 0455 external routine
; 0456 $CBDMG : LNKG novalue;
; 0457 NUMBER = ch$ptr (HOST_TRANSMITTER [TQ_SINK_NODE],, 8);
; 0458 NUMBER = GETW (NUMBER);
; 0459 $CBDMG (ch$plus (TRANSMITTER_NAME_PTR, %charcount (TRANSMITTER_TO_)),
; 0460 .NUMBER, 0; PTR);
; 0461 ch$wchar (0, .PTR);
; 0462 end;
NMLEVT 24-May-1985 13:26:12 TOPS-20 Bliss-16 2A(530) Page 16
X00.22 NML$EVENT_INITIALIZE as EV_INI 3-Jan-1983 01:22:13 DNET61:<MCB.NML>NMLEVT.BLI.1 (7)
; 0463 HOST_TRANSMITTER [TQ_TRANSMITTER_TASK] =
; 0464 NMU$SCHED_CREATE (NML$EVENT_TRANSMITTER, 300, 0, TRANSMITTER_NAME_PTR);
; 0465 end;
; 0466 %fi
; L 0467 %if NML$CFG_LOGGING_RECEIVER
; U 0468 %then
; U 0469 NMU$SCHED_CREATE (NML$EVENT_RECEIVER, 250, 0,
; U 0470 ch$asciz ('EVENT-LISTENER'));
; 0471 %fi
; L 0472 %if NML$CFG_LOGGING_FILE
; U 0473 %then
; U 0474 NML$SET_VDB_PARAMETER (LOGGING_,
; U 0475 LOGGING_FILE_PTR,
; U 0476 LOGGING_NAME,
; U 0477 uplit (LOGGING_NAME_ADR));
; U 0478 NML$SET_VDB_PARAMETER (LOGGING_,
; U 0479 LOGGING_FILE_PTR,
; U 0480 LOGGING_STATE,
; U 0481 uplit (STATE_ON));
; U 0482 NML$EQUEUE_RESET (FILE_QUEUE, 6);
; U 0483 NMU$SCHED_CREATE (NML$LOGGING_FILE, 100, 0, ch$asciz ('EVENT-FILE'));
; 0484 %fi
; 0485 end; ! End of NML$EVENT_INITIALIZE
000000 .PSECT $PLIT$, RO , D
000000 107 105 124 P.AAA: .ASCII /GET/
000003 055 114 117 .ASCII /-LO/
000006 103 101 114 .ASCII /CAL/
000011 055 105 126 .ASCII /-EV/
000014 105 116 124 .ASCII /ENT/
000017 123 000 000 .ASCII /S/<00><00>
000022 000011 P.AAC: .WORD 11
000040 .PSECT $OWN$, D
000040 124 122 101 P.AAB: .ASCII /TRA/
000043 116 123 115 .ASCII /NSM/
000046 111 124 124 .ASCII /ITT/
000051 105 122 055 .ASCII /ER-/
000054 124 117 055 .ASCII /TO-/
000057 170 170 170 .ASCII /xxx/
000062 170 170 000 .ASCII /xx/<00>
000065 000 .ASCII <00>
000066 IOSB: .BLKW 2
.GLOBL LUN$NS, EFN$NS, $CBDMG
NMLEVT 24-May-1985 13:26:12 TOPS-20 Bliss-16 2A(530) Page 17
X00.22 NML$EVENT_INITIALIZE as EV_INI 3-Jan-1983 01:22:13 DNET61:<MCB.NML>NMLEVT.BLI.1 (7)
000040' TRANSMITTER.NAME.PTR=
P.AAB
000022' HOST.ID= HOST.TRANSMITTER+22
.SBTTL EV.INI NML$EVENT_INITIALIZE as EV_INI
000274 .PSECT $CODE$, RO
000000 004167 000000G EV.INI::JSR R1,$SAVE2 ; 0411
000004 005746 TST -(SP)
000006 012746 000000V MOV #GET.LOCAL.EVENT,-(SP) ; 0433
000012 012746 000144 MOV #144,-(SP)
000016 005046 CLR -(SP)
000020 012746 000000' MOV #P.AAA,-(SP)
000024 004767 000000G JSR PC,US.CREATE
000030 012716 000000' MOV #HOST.TRANSMITTER,(SP) ; 0448
000034 012746 000006 MOV #6,-(SP)
000040 004767 177700 JSR PC,EQ.RES
000044 005046 CLR -(SP) ; 0449
000046 005046 CLR -(SP)
000050 005046 CLR -(SP)
000052 012746 000003 MOV #3,-(SP)
000056 016746 000022' MOV P.AAC,-(SP)
000062 012746 000022' MOV #HOST.ID,-(SP)
000066 005046 CLR -(SP)
000070 012746 000066' MOV #IOSB,-(SP)
000074 012746 000000G MOV #EFN$NS,-(SP)
000100 012746 000000G MOV #LUN$NS,-(SP)
000104 012746 016670 MOV #16670,-(SP)
000110 012746 006003 MOV #6003,-(SP)
000114 104377 EMT 377
000116 062706 000012 ADD #12,SP
000122 012701 000022' MOV #HOST.TRANSMITTER+22,R1 ; *,NUMBER 0457
000126 112116 MOVB (R1)+,(SP) ; NUMBER,$$GETB.X 0458
000130 112166 000001 MOVB (R1)+,1(SP) ; NUMBER,$$GETB.X
000134 011601 MOV (SP),R1 ; $$GETB.X,NUMBER
000136 012700 000057' MOV #TRANSMITTER.NAME.PTR+17,R0 ; 0459
000142 005002 CLR R2
000144 004767 000000G JSR PC,$CBDMG
000150 105010 CLRB (R0) ; PTR 0461
000152 012746 000000G MOV #EV.XMT,-(SP) ; 0464
000156 012746 000454 MOV #454,-(SP)
000162 005046 CLR -(SP)
000164 012746 000040' MOV #TRANSMITTER.NAME.PTR,-(SP)
000170 004767 000000G JSR PC,US.CREATE
000174 010067 000020' MOV R0,HOST.TRANSMITTER+20 ; 0463
000200 062706 000012 ADD #12,SP ; 0411
000204 000207 RTS PC
; Routine Size: 67 words, Routine Base: $CODE$ + 0274
; Maximum stack depth per invocation: 23 words
; 0486
NMLEVT 24-May-1985 13:26:12 TOPS-20 Bliss-16 2A(530) Page 18
X00.22 NML$EVENT_PROCESSOR as EV_PRO 3-Jan-1983 01:22:13 DNET61:<MCB.NML>NMLEVT.BLI.1 (8)
; 0487 %global_routine ('NML$EVENT_PROCESSOR', REB : ref RAW_EVENT_BLOCK) : novalue =
; 0488
; 0489 !++
; 0490 ! FUNCTIONAL DESCRIPTION:
; 0491 !
; 0492 !
; 0493 ! FORMAL PARAMETERS
; 0494 !
; 0495 ! NONE.
; 0496 !
; 0497 ! IMPLICIT INPUTS
; 0498 !
; 0499 !
; 0500 ! ROUTINE VALUE:
; 0501 !
; 0502 ! NONE.
; 0503 !
; 0504 ! SIDE EFFECTS:
; 0505 !
; 0506 ! None
; 0507 !
; 0508 !--
; 0509
; 0510 begin
; 0511
; 0512 local
; 0513 OLD_TB,
; 0514 TB : TIME_BLOCK;
; 0515
; 0516 OLD_TB = .REB [REB_TIME_BLOCK];
; 0517 TIME_CURRENT (0, TB);
; 0518 REB [REB_TIME_BLOCK] = TB;
; 0519 REB [REB_SOURCE_POINTER] = NMU$NETWORK_LOCAL ();
; L 0520 %if NML$CFG_LOGGING_RECEIVER
; U 0521 %then
; U 0522 !
; U 0523 ! This is for SINK NODE EXECUTOR
; U 0524 !
; U 0525 REB [REB_SINK_FLAGS] = 0;
; U 0526 !
; U 0527 ! Pass if through the event filters
; U 0528 !
; U 0529 REB [REB_FILE] = 1; ! Hard coded for FILE
; U 0530 !
; U 0531 ! If there is a taker, pass it along
; U 0532 !
; U 0533 if .REB [REB_SINK_FLAGS] neq 0
; U 0534 then
; U 0535 NML$EVENT_RECORDER (.REB);
; 0536 %fi
; L 0537 %if NML$CFG_LOGGING_TRANSMITTER
; 0538 %then
NMLEVT 24-May-1985 13:26:12 TOPS-20 Bliss-16 2A(530) Page 19
X00.22 NML$EVENT_PROCESSOR as EV_PRO 3-Jan-1983 01:22:13 DNET61:<MCB.NML>NMLEVT.BLI.1 (8)
; 0539 !
; 0540 ! This is for the other SINK NODEs
; 0541 !
; 0542 REB [REB_SINK_FLAGS] = 0;
; 0543 !
; 0544 ! Pass if through the event filters
; 0545 ! of SINK NODE 'HOST_TRANSMITTER [TQ_SINK_NODE]'.
; 0546 !
; 0547 REB [REB_FILE] = 1; ! Hard coded for FILE
; 0548 !
; 0549 ! If there is a taker, pass it along
; 0550 !
; 0551 if .REB [REB_SINK_FLAGS] neq 0
; 0552 then
; 0553 begin
; 0554
; 0555 local
; 0556 EB : ref EVENT_BUFFER;
; 0557
; 0558 if (EB = GET_EVENT_BUFFER (.REB)) neqa 0
; 0559 then
; 0560 NML$EQUEUE_INSERT (HOST_TRANSMITTER, .EB);
; 0561
; 0562 end;
; 0563 %fi
; 0564
; 0565 REB [REB_TIME_BLOCK] = .OLD_TB;
; 0566 end; !End of NML$EVENT_PROCESSOR
.GLOBL SS$GTM
.SBTTL EV.PRO NML$EVENT_PROCESSOR as EV_PRO
000000 004167 000000G EV.PRO::JSR R1,$SAVE3 ; 0487
000004 162706 000006 SUB #6,SP
000010 016601 000020 MOV 20(SP),R1 ; REB,* 0516
000014 012702 000016 MOV #16,R2
000020 060102 ADD R1,R2
000022 011203 MOV (R2),R3 ; *,OLD.TB
000024 005046 CLR -(SP) ; 0517
000026 012746 000004 MOV #4,-(SP)
000032 060616 ADD SP,(SP) ; TB,*
000034 004767 000000G JSR PC,SS$GTM
000040 012712 000004 MOV #4,(R2) ; 0518
000044 060612 ADD SP,(R2) ; TB,*
000046 004767 000000G JSR PC,UN.LOCAL ; 0519
000052 010061 000002 MOV R0,2(R1)
000056 012700 000012 MOV #12,R0 ; 0542
000062 060100 ADD R1,R0
000064 005010 CLR (R0)
000066 152710 000002 BISB #2,(R0) ; 0547
NMLEVT 24-May-1985 13:26:12 TOPS-20 Bliss-16 2A(530) Page 20
X00.22 NML$EVENT_PROCESSOR as EV_PRO 3-Jan-1983 01:22:13 DNET61:<MCB.NML>NMLEVT.BLI.1 (8)
000072 005710 TST (R0) ; 0551
000074 001413 BEQ 1$
000076 010116 MOV R1,(SP) ; 0558
000100 004767 000000V JSR PC,GET.EVENT.BUFFER
000104 005700 TST R0 ; EB
000106 001406 BEQ 1$
000110 012716 000000' MOV #HOST.TRANSMITTER,(SP) ; 0560
000114 010046 MOV R0,-(SP) ; EB,*
000116 004767 177170 JSR PC,EQ.INS
000122 005726 TST (SP)+
000124 010312 1$: MOV R3,(R2) ; OLD.TB,* 0565
000126 062706 000012 ADD #12,SP ; 0487
000132 000207 RTS PC
; Routine Size: 46 words, Routine Base: $CODE$ + 0502
; Maximum stack depth per invocation: 11 words
; 0567
NMLEVT 24-May-1985 13:26:12 TOPS-20 Bliss-16 2A(530) Page 21
X00.22 NML$EVENT_RECORDER as EV_REC 3-Jan-1983 01:22:13 DNET61:<MCB.NML>NMLEVT.BLI.1 (9)
; 0568 %global_routine ('NML$EVENT_RECORDER', REB : ref RAW_EVENT_BLOCK) : novalue =
; 0569
; 0570 !++
; 0571 ! FUNCTIONAL DESCRIPTION:
; 0572 !
; 0573 ! This routine dequeues requests to the local node and logs
; 0574 ! them to the appropriate Event Sink.
; 0575 !
; 0576 ! FORMAL PARAMETERS
; 0577 !
; 0578 ! NONE.
; 0579 !
; 0580 ! IMPLICIT INPUTS
; 0581 !
; 0582 ! NML Event request queue.
; 0583 !
; 0584 ! ROUTINE VALUE:
; 0585 !
; 0586 ! NONE.
; 0587 !
; 0588 ! SIDE EFFECTS:
; 0589 !
; 0590 ! None
; 0591 !
; 0592 !--
; 0593
; 0594 begin
; 0595
; 0596 literal
; 0597 LOGGING_STATE = 0,
; 0598 STATE_ON = 0,
; 0599 STATE_OFF = 1,
; 0600 STATE_HOLD = 2;
; 0601
; L 0602 %if NML$CFG_LOGGING_FILE
; U 0603 %then
; U 0604 !
; U 0605 ! Only the FILE sink is supported at present
; U 0606 !
; U 0607
; U 0608 if .REB [REB_FILE] neq 0 ! If directed to FILE
; U 0609 then ! then
; U 0610 begin ! check the STATE.
; U 0611
; U 0612 local
; U 0613 STATE;
; U 0614
; U 0615 if not NML$GET_VDB_PARAMETER (LOGGING_,
; U 0616 LOGGING_FILE_PTR,
; U 0617 LOGGING_STATE,
; U 0618 STATE)
; U 0619 then STATE = STATE_OFF; ! Not defined...
NMLEVT 24-May-1985 13:26:12 TOPS-20 Bliss-16 2A(530) Page 22
X00.22 NML$EVENT_RECORDER as EV_REC 3-Jan-1983 01:22:13 DNET61:<MCB.NML>NMLEVT.BLI.1 (9)
; U 0620
; U 0621 selectone .STATE of
; U 0622 set
; U 0623 [STATE_OFF] : ! Discard.
; U 0624 0;
; U 0625 [otherwise] : ! Send to FILE task.
; U 0626
; U 0627 if (STATE = GET_EVENT_BUFFER (.REB)) neqa 0 ! make a copy
; U 0628 then ! and
; U 0629 NML$EQUEUE_INSERT (FILE_QUEUE, .STATE); ! send to task.
; U 0630
; U 0631 tes;
; U 0632
; U 0633 end;
; 0634 %fi
; L 0635 %if not NML$CFG_LOGGING_RECEIVER
; 0636 %then
; 0637 0 ! To avoid empty compound expression
; 0638 %fi
; 0639 end; !End of NML$EVENT_RECORDER
.SBTTL EV.REC NML$EVENT_RECORDER as EV_REC
000000 000207 EV.REC::RTS PC ; 0568
; Routine Size: 1 word, Routine Base: $CODE$ + 0636
; Maximum stack depth per invocation: 0 words
; 0640
NMLEVT 24-May-1985 13:26:12 TOPS-20 Bliss-16 2A(530) Page 23
X00.22 NML$LOGGING_FILE as LG_FIL 3-Jan-1983 01:22:13 DNET61:<MCB.NML>NMLEVT.BLI.1 (10)
; 0641 %routine ('NML$LOGGING_FILE', TASK, RESOURCE) : novalue =
; 0642
; 0643 !++
; 0644 ! FUNCTIONAL DESCRIPTION:
; 0645 !
; 0646 ! This routine dequeues requests to the local node and logs
; 0647 ! them to the appropriate Event Sink.
; 0648 !
; 0649 ! FORMAL PARAMETERS
; 0650 !
; 0651 ! NONE.
; 0652 !
; 0653 ! IMPLICIT INPUTS
; 0654 !
; 0655 ! NML Event request queue.
; 0656 !
; 0657 ! ROUTINE VALUE:
; 0658 !
; 0659 ! NONE.
; 0660 !
; 0661 ! SIDE EFFECTS:
; 0662 !
; 0663 ! None
; 0664 !
; 0665 !--
; 0666
; 0667 begin
; 0668
; L 0669 %if NML$CFG_LOGGING_FILE
; U 0670 %then
; U 0671
; U 0672 !
; U 0673 ! Top level loop for Event requests
; U 0674 !
; U 0675
; U 0676 while $true do ! Main NML Request processing loop
; U 0677 begin
; U 0678
; U 0679 local
; U 0680 EB : ref EVENT_BUFFER; ! Event buffer
; U 0681
; U 0682 EB = NML$EQUEUE_REMOVE (FILE_QUEUE);
; U 0683 ! RTN_COD = NML$NICE_VERIFY (.REQ) ; ! Verify the Event message syntax
; U 0684
; U 0685 selectone
; U 0686 begin
; U 0687
; U 0688 while $true do
; U 0689 begin
; U 0690
; U 0691 local
; U 0692 STATE;
NMLEVT 24-May-1985 13:26:12 TOPS-20 Bliss-16 2A(530) Page 24
X00.22 NML$LOGGING_FILE as LG_FIL 3-Jan-1983 01:22:13 DNET61:<MCB.NML>NMLEVT.BLI.1 (10)
; U 0693
; U 0694 if not NML$GET_VDB_PARAMETER (LOGGING_,
; U 0695 LOGGING_FILE_PTR,
; U 0696 LOGGING_STATE,
; U 0697 STATE)
; U 0698 then STATE = STATE_OFF;
; U 0699
; U 0700 if .STATE neq STATE_HOLD then exitloop .STATE;
; U 0701
; U 0702 !
; U 0703 ! Wait for state to change
; U 0704 !
; U 0705 NMU$SCHED_SLEEP (10); ! Temporary hack
; U 0706 end
; U 0707
; U 0708 end
; U 0709 of
; U 0710 set
; U 0711 [STATE_OFF]:
; U 0712 NMU$MEMORY_RELEASE (.EB, .EB [EB_ALLOCATION]);
; U 0713 [otherwise] :
; U 0714 begin
; U 0715 %if $TOPS20
; U 0716 %then
; U 0717 !
; U 0718 ! This code does all processing for SYSERR logging under TOPS-20
; U 0719 !
; U 0720 DECLARE_JSYS (GTAD, TIME, SYSGT, SYERR);
; U 0721
; U 0722 field
; U 0723 SYSERR_FIELDS =
; U 0724 set
; U 0725 SY_COD = [0, 27, 9, 0], ! SYSERR Error Code
; U 0726 SY_T20 = [0, 18, 1, 0], ! Bit flagging TOPS-20 Made Entry
; U 0727 SY_VER = [0, 12, 6, 0], ! Header Version
; U 0728 SY_HLN = [0, 9, 3, 0], ! Header Length
; U 0729 SY_LEN = [0, 0, 9, 0], ! Data Length
; U 0730 SY_DTE = [1, 0, 36, 0], ! Date of Entry
; U 0731 SY_UPT = [2, 0, 36, 0], ! System Uptime at Time of Logging
; U 0732 SY_PSN = [3, 0, 36, 0], ! Processor Serial Number
; U 0733 SY_DAT = [4, 0, 0, 0], ! Data portion of Entry
; U 0734 SY_DTL = [4, 0, 36, 0], ! Length (in 8-bit Bytes of
; U 0735 ! remainder of data portion
; U 0736 SY_DTS = [5, 0, 0, 0] ! Event Data String
; U 0737 tes;
; U 0738
; U 0739 literal
; U 0740 SYSERR_HEADER_ALLOCATION = 5,
; U 0741 SYSERR_ERROR_CODE = %O'240';
; U 0742
; U 0743 local
; U 0744 SYSERR_ENTRY : ref block field (SYSERR_FIELDS),
NMLEVT 24-May-1985 13:26:12 TOPS-20 Bliss-16 2A(530) Page 25
X00.22 NML$LOGGING_FILE as LG_FIL 3-Jan-1983 01:22:13 DNET61:<MCB.NML>NMLEVT.BLI.1 (10)
; U 0745 SYSERR_ALLOCATION;
; U 0746
; U 0747 !
; U 0748 ! Allocate SYSERR Entry
; U 0749 !
; U 0750 SYSERR_ALLOCATION = SYSERR_HEADER_ALLOCATION + ((.EB [EB_LENGTH] + 4)/4);
; U 0751 SYSERR_ENTRY = NMU$MEMORY_GET (.SYSERR_ALLOCATION);
; U 0752 SYSERR_ENTRY [SY_COD] = SYSERR_ERROR_CODE;
; U 0753 SYSERR_ENTRY [SY_T20] = 1;
; U 0754 SYSERR_ENTRY [SY_VER] = 1;
; U 0755 SYSERR_ENTRY [SY_HLN] = SYSERR_HEADER_ALLOCATION - 1;
; U 0756 SYSERR_ENTRY [SY_LEN] = ((.EB [EB_LENGTH] + 4)/4) + 1;
; U 0757 $$GTAD (; SYSERR_ENTRY [SY_DTE]);
; U 0758 begin
; U 0759
; U 0760 local
; U 0761 MILLISECONDS;
; U 0762
; U 0763 $$TIME (; MILLISECONDS);
; U 0764 SYSERR_ENTRY [SY_UPT] = .MILLISECONDS/((1000*3600*24)/(1^18));
; U 0765 ! Convert to Days,,Fractions of Days
; U 0766 end;
; U 0767 $$SYSGT (%sixbit'APRID'; SYSERR_ENTRY [SY_PSN]);
; U 0768 SYSERR_ENTRY [SY_DTL] = .EB [EB_LENGTH];
; U 0769 ch$move (.EB [EB_LENGTH], ch$ptr (EB [EB_BUFFER],, 8), ch$ptr (SYSERR_ENTRY [SY_DTS],, 8));
; U 0770 $$SYERR (.SYSERR_ENTRY, .SYSERR_ENTRY [SY_HLN] + .SYSERR_ENTRY [SY_LEN]);
; U 0771 %fi
; U 0772 NMU$MEMORY_RELEASE (.SYSERR_ENTRY, .SYSERR_ALLOCATION);
; U 0773 NMU$MEMORY_RELEASE (.EB, .EB [EB_ALLOCATION]);
; U 0774 end;
; U 0775 tes;
; U 0776
; U 0777 end;
; 0778 %else
; 0779 0 ! To avoid empty compound expression
; 0780 %fi
; 0781 end; !End of NML$LOGGING_FILE
.SBTTL LG.FIL NML$LOGGING_FILE as LG_FIL
000000 000207 LG.FIL: RTS PC ; 0641
; Routine Size: 1 word, Routine Base: $CODE$ + 0640
; Maximum stack depth per invocation: 0 words
; 0782
NMLEVT 24-May-1985 13:26:12 TOPS-20 Bliss-16 2A(530) Page 26
X00.22 NML$TRANSMITTER_QUEUE_GET as EV_GET 3-Jan-1983 01:22:13 DNET61:<MCB.NML>NMLEVT.BLI.1 (11)
; 0783 %global_routine ('NML$TRANSMITTER_QUEUE_GET') =
; 0784
; 0785 !++
; 0786 ! FUNCTIONAL DESCRIPTION:
; 0787 !
; 0788 !
; 0789 ! FORMAL PARAMETERS
; 0790 !
; 0791 ! NONE.
; 0792 !
; 0793 ! IMPLICIT INPUTS
; 0794 !
; 0795 !
; 0796 ! ROUTINE VALUE:
; 0797 !
; 0798 ! NONE.
; 0799 !
; 0800 ! SIDE EFFECTS:
; 0801 !
; 0802 ! None
; 0803 !
; 0804 !--
; 0805
; 0806 begin
; L 0807 %if NML$CFG_LOGGING_TRANSMITTER
; 0808 %then
; 0809 !
; 0810 ! Wait on the HOST queue for an entry to be inserted
; 0811 !
; 0812
; 0813 while NMU$QUEUE_SCAN (HOST_TRANSMITTER, 0, EMPTY_QUEUE_CHECK) eqla 0 do
; 0814 NMU$SCHED_WAIT (HOST_TRANSMITTER [$sub_field (TQ_QUEUE, Q_EVENT)], 0);
; 0815
; 0816 HOST_TRANSMITTER ! Return the queue address
; U 0817 %else
; U 0818 0
; 0819 %fi
; 0820 end; !End of NML$TRANSMITTER_QUEUE_GET
.SBTTL EV.GET NML$TRANSMITTER_QUEUE_GET as EV_GET
000000 012746 000000' EV.GET::
000000 1$: MOV #HOST.TRANSMITTER,-(SP) ; 0813
000004 005046 CLR -(SP)
000006 012746 000000V MOV #EMPTY.QUEUE.CHECK,-(SP)
000012 004767 000000G JSR PC,UQ.SCAN
000016 062706 000006 ADD #6,SP
000022 005700 TST R0
000024 001007 BNE 2$
000026 012746 000006' MOV #HOST.TRANSMITTER+6,-(SP) ; 0814
000032 005046 CLR -(SP)
000034 004767 000000G JSR PC,US.WAIT
NMLEVT 24-May-1985 13:26:12 TOPS-20 Bliss-16 2A(530) Page 27
X00.22 NML$TRANSMITTER_QUEUE_GET as EV_GET 3-Jan-1983 01:22:13 DNET61:<MCB.NML>NMLEVT.BLI.1 (11)
000040 022626 CMP (SP)+,(SP)+
000042 000756 BR 1$ ; 0813
000044 012700 000000' 2$: MOV #HOST.TRANSMITTER,R0 ; 0783
000050 000207 RTS PC
; Routine Size: 21 words, Routine Base: $CODE$ + 0642
; Maximum stack depth per invocation: 4 words
; 0821
NMLEVT 24-May-1985 13:26:12 TOPS-20 Bliss-16 2A(530) Page 28
X00.22 EMPTY_QUEUE_CHECK 3-Jan-1983 01:22:13 DNET61:<MCB.NML>NMLEVT.BLI.1 (12)
; 0822 %routine ('EMPTY_QUEUE_CHECK', ENTRY, DATA) =
; 0823
; 0824 !++
; 0825 ! FUNCTIONAL DESCRIPTION:
; 0826 !
; 0827 !
; 0828 ! FORMAL PARAMETERS
; 0829 !
; 0830 ! NONE.
; 0831 !
; 0832 ! IMPLICIT INPUTS
; 0833 !
; 0834 !
; 0835 ! ROUTINE VALUE:
; 0836 !
; 0837 ! NONE.
; 0838 !
; 0839 ! SIDE EFFECTS:
; 0840 !
; 0841 ! None
; 0842 !
; 0843 !--
; 0844
; 0845 begin
; 0846 .ENTRY
; 0847 end; !End of EMPTY_QUEUE_CHECK
.SBTTL EMPTY.QUEUE.CHECK EMPTY_QUEUE_CHECK
000000 016600 000004 EMPTY.QUEUE.CHECK:
MOV 4(SP),R0 ; ENTRY,* 0822
000004 000207 RTS PC
; Routine Size: 3 words, Routine Base: $CODE$ + 0714
; Maximum stack depth per invocation: 0 words
; 0848
NMLEVT 24-May-1985 13:26:12 TOPS-20 Bliss-16 2A(530) Page 29
X00.22 GET_EVENT_BUFFER 3-Jan-1983 01:22:13 DNET61:<MCB.NML>NMLEVT.BLI.1 (13)
; 0849 %routine ('GET_EVENT_BUFFER', REB : ref RAW_EVENT_BLOCK) =
; 0850
; 0851 !++
; 0852 ! FUNCTIONAL DESCRIPTION:
; 0853 !
; 0854 !
; 0855 ! FORMAL PARAMETERS
; 0856 !
; 0857 ! NONE.
; 0858 !
; 0859 ! IMPLICIT INPUTS
; 0860 !
; 0861 !
; 0862 ! ROUTINE VALUE:
; 0863 !
; 0864 ! NONE.
; 0865 !
; 0866 ! SIDE EFFECTS:
; 0867 !
; 0868 ! None
; 0869 !
; 0870 !--
; 0871
; 0872 begin
; 0873
; 0874 local
; 0875 EB : ref EVENT_BUFFER; ! Event buffer
; 0876
; 0877 begin
; 0878
; 0879 local
; 0880 ALLOCATION;
; 0881
; 0882 ALLOCATION = EVENT_BUFFER_ALLOCATION + ! Event buffer header
; 0883 1 + ! FUNCTION CODE
; 0884 1 + ! SINK FLAGS
; 0885 2 + ! EVENT CODE
; 0886 2 + 2 + 2 + ! EVENT TIME
; 0887 2 + 7 + ! SOURCE NODE
; 0888 2 + max (0, 9, 17) + ! EVENT ENTITY
; 0889 .REB [REB_DATA_LENGTH]; ! EVENT_DATA
; 0890
; 0891 if (EB = NMU$MEMORY_GET (.ALLOCATION)) eqla 0
; 0892 then
; 0893 return 0; ! No memory.
; 0894
; 0895 EB [EB_ALLOCATION] = .ALLOCATION; ! Save allocation length.
; 0896 end;
; 0897
; 0898 begin ! Construct NICE event message
; 0899
; 0900 local
NMLEVT 24-May-1985 13:26:12 TOPS-20 Bliss-16 2A(530) Page 30
X00.22 GET_EVENT_BUFFER 3-Jan-1983 01:22:13 DNET61:<MCB.NML>NMLEVT.BLI.1 (13)
; 0901 OUT_PTR;
; 0902
; 0903 OUT_PTR = ch$ptr (EB [EB_BUFFER],, 8);
; 0904 ch$wchar_a (1, OUT_PTR); ! FUNCTION CODE
; 0905 ch$wchar_a (.REB [REB_SINK_FLAGS], OUT_PTR); ! SINK FLAGS
; 0906 PUTW ((REB [REB_EVENT_CODE]), OUT_PTR); ! EVENT CODE
; 0907 begin ! EVENT TIME
; 0908
; 0909 bind
; 0910 TB = .REB [REB_TIME_BLOCK] : TIME_BLOCK;
; 0911
; L 0912 %if $TOPS20 or $TOPS10
; U 0913 %then
; U 0914 local JULIAN, SECONDS;
; U 0915 DECLARE_JSYS (IDCNV, ODCNV);
; U 0916
; U 0917 $$ODCNV (.TB, 0;,,SECONDS);
; U 0918 SECONDS = .SECONDS <0, 18>; ! Seconds since midnight
; U 0919 begin
; U 0920 bind BASE = JULIAN;
; U 0921 $$IDCNV (1977^18 + 0, 0^18, 0;,BASE); ! Get 1-JAN-77
; U 0922 JULIAN = .TB - .BASE;
; U 0923 JULIAN = .JULIAN <18, 18>; ! days from then to now.
; U 0924 end;
; U 0925 JULIAN = .JULIAN^1; ! Half-days
; U 0926
; U 0927 if .SECONDS geq 12*60*60
; U 0928 then
; U 0929 begin
; U 0930 SECONDS = .SECONDS - 12*60*60;
; U 0931 JULIAN = .JULIAN + 1;
; U 0932 end;
; U 0933
; U 0934 PUTW (JULIAN, OUT_PTR); ! JULIAN HALF DAY
; U 0935 PUTW (SECONDS, OUT_PTR); ! SECOND
; U 0936 PUTB (0, OUT_PTR); ! MILLISECOND
; U 0937 PUTB (1^7, OUT_PTR);
; 0938 %else
; L 0939 %if $MCB
; 0940 %then
; 0941 PUTW ((TB [TIME_JULIAN]), OUT_PTR); ! JULIAN HALF DAY
; 0942 PUTW ((TB [TIME_SECOND]), OUT_PTR); ! SECOND
; 0943 PUTW ((TB [TIME_MILLISECOND]), OUT_PTR); ! MILLISECOND
; U 0944 %else
; U 0945 PUTW (uplit (0), OUT_PTR); ! JULIAN HALF DAY
; U 0946 PUTW (uplit (0), OUT_PTR); ! SECOND
; U 0947 PUTW (uplit (0), OUT_PTR); ! MILLISECOND
; 0948 %fi
; 0949 %fi
; 0950 end;
; 0951 begin ! SOURCE NODE
; 0952
NMLEVT 24-May-1985 13:26:12 TOPS-20 Bliss-16 2A(530) Page 31
X00.22 GET_EVENT_BUFFER 3-Jan-1983 01:22:13 DNET61:<MCB.NML>NMLEVT.BLI.1 (13)
; 0953 local
; 0954 TEMP_PTR;
; 0955
; 0956 TEMP_PTR = .REB [REB_SOURCE_POINTER]; ! Copy node-id in
; 0957 ch$wchar_a (ch$rchar_a (TEMP_PTR), OUT_PTR);
; 0958 ch$wchar_a (ch$rchar_a (TEMP_PTR), OUT_PTR);
; 0959 ! NODE ADDRESS
; 0960 OUT_PTR = ch$move (ch$rchar (.TEMP_PTR) + 1, .TEMP_PTR, .OUT_PTR);
; 0961 ! NODE NAME
; 0962 end;
; 0963 begin ! EVENT ENTITY
; 0964
; 0965 local
; 0966 LENGTH;
; 0967
; 0968 PUTW ((REB [REB_ENTITY_TYPE]), OUT_PTR); ! ENTITY TYPE
; 0969
; 0970 selectone .REB [REB_ENTITY_TYPE] of ! ENTITY ID
; 0971 set
; 0972 [NODE_E] :
; 0973 OUT_PTR = ch$move (2 + 1 + ch$rchar (ch$plus (.REB [REB_ENTITY_POINTER], 2)),
; 0974 .REB [REB_ENTITY_POINTER], .OUT_PTR);
; 0975 [LINE_, CIRCUIT_, MODULE_] :
; 0976 OUT_PTR = ch$move (1 + ch$rchar (.REB [REB_ENTITY_POINTER]),
; 0977 .REB [REB_ENTITY_POINTER], .OUT_PTR);
; 0978 [LOGGING_] :
; 0979 ch$wchar_a (ch$rchar (.REB [REB_ENTITY_POINTER]), OUT_PTR);
; 0980 [otherwise] :
; 0981 0;
; 0982 tes;
; 0983
; 0984 end;
; 0985 begin ! EVENT DATA
; 0986
; 0987 local
; 0988 LENGTH;
; 0989
; 0990 if (LENGTH = .REB [REB_DATA_LENGTH]) neq 0
; 0991 then
; 0992 OUT_PTR = ch$move (.LENGTH, .REB [REB_DATA_POINTER], .OUT_PTR);
; 0993
; 0994 end;
; 0995 EB [EB_LENGTH] = ch$diff (.OUT_PTR, ch$ptr (EB [EB_BUFFER],, 8));
; 0996 ! Insert length of message.
; 0997 end;
; 0998 .EB ! Return address of buffer block.
; 0999 end; !End of GET_EVENT_BUFFER
.SBTTL GET.EVENT.BUFFER GET_EVENT_BUFFER
000000 004167 000000G GET.EVENT.BUFFER:
JSR R1,$SAVE5 ; 0849
NMLEVT 24-May-1985 13:26:12 TOPS-20 Bliss-16 2A(530) Page 32
X00.22 GET_EVENT_BUFFER 3-Jan-1983 01:22:13 DNET61:<MCB.NML>NMLEVT.BLI.1 (13)
000004 016603 000016 MOV 16(SP),R3 ; REB,* 0889
000010 016301 000006 MOV 6(R3),R1 ; *,ALLOCATION 0888
000014 062701 000060 ADD #60,R1 ; *,ALLOCATION
000020 010146 MOV R1,-(SP) ; ALLOCATION,* 0891
000022 004767 000000G JSR PC,UM.GET
000026 005726 TST (SP)+
000030 010002 MOV R0,R2 ; *,EB
000032 001002 BNE 1$
000034 005000 CLR R0 ; 0893
000036 000207 RTS PC
000040 010162 000006 1$: MOV R1,6(R2) ; ALLOCATION,*(EB) 0895
000044 010204 MOV R2,R4 ; EB,* 0903
000046 062704 000012 ADD #12,R4
000052 010405 MOV R4,R5 ; *,OUT.PTR
000054 112725 000001 MOVB #1,(R5)+ ; *,OUT.PTR 0904
000060 116325 000012 MOVB 12(R3),(R5)+ ; *,OUT.PTR 0905
000064 116325 000010 MOVB 10(R3),(R5)+ ; *,OUT.PTR 0906
000070 116325 000011 MOVB 11(R3),(R5)+ ; *,OUT.PTR
000074 016300 000016 MOV 16(R3),R0 ; 0907
000100 111025 MOVB (R0),(R5)+ ; *,OUT.PTR 0941
000102 116025 000001 MOVB 1(R0),(R5)+ ; *,OUT.PTR
000106 116025 000002 MOVB 2(R0),(R5)+ ; *,OUT.PTR 0942
000112 116025 000003 MOVB 3(R0),(R5)+ ; *,OUT.PTR
000116 116025 000004 MOVB 4(R0),(R5)+ ; *,OUT.PTR 0943
000122 116025 000005 MOVB 5(R0),(R5)+ ; *,OUT.PTR
000126 016300 000002 MOV 2(R3),R0 ; *,TEMP.PTR 0956
000132 112025 MOVB (R0)+,(R5)+ ; TEMP.PTR,OUT.PTR 0957
000134 112025 MOVB (R0)+,(R5)+ ; TEMP.PTR,OUT.PTR 0958
000136 005046 CLR -(SP) ; 0960
000140 111016 MOVB (R0),(SP) ; TEMP.PTR,*
000142 005216 INC (SP)
000144 010046 MOV R0,-(SP) ; TEMP.PTR,*
000146 010546 MOV R5,-(SP) ; OUT.PTR,*
000150 004767 000000G JSR PC,BL$MOV
000154 010005 MOV R0,R5 ; *,OUT.PTR
000156 012701 000014 MOV #14,R1 ; 0968
000162 060301 ADD R3,R1
000164 111125 MOVB (R1),(R5)+ ; *,OUT.PTR
000166 116125 000001 MOVB 1(R1),(R5)+ ; *,OUT.PTR
000172 005711 TST (R1) ; 0970
000174 001007 BNE 2$
000176 011300 MOV (R3),R0 ; 0973
000200 005016 CLR (SP)
000202 116016 000002 MOVB 2(R0),(SP)
000206 062716 000003 ADD #3,(SP)
000212 000415 BR 4$ ; 0974
000214 021127 000001 2$: CMP (R1),#1 ; 0970
000220 001406 BEQ 3$
000222 021127 000003 CMP (R1),#3
000226 002416 BLT 5$
000230 021127 000004 CMP (R1),#4
000234 003013 BGT 5$
NMLEVT 24-May-1985 13:26:12 TOPS-20 Bliss-16 2A(530) Page 33
X00.22 GET_EVENT_BUFFER 3-Jan-1983 01:22:13 DNET61:<MCB.NML>NMLEVT.BLI.1 (13)
000236 005016 3$: CLR (SP) ; 0976
000240 117316 000000 MOVB @0(R3),(SP)
000244 005216 INC (SP)
000246 011346 4$: MOV (R3),-(SP) ; 0977
000250 010546 MOV R5,-(SP) ; OUT.PTR,*
000252 004767 000000G JSR PC,BL$MOV
000256 010005 MOV R0,R5 ; *,OUT.PTR 0976
000260 022626 CMP (SP)+,(SP)+
000262 000405 BR 6$ ; 0970
000264 021127 000002 5$: CMP (R1),#2
000270 001002 BNE 6$
000272 117325 000000 MOVB @0(R3),(R5)+ ; *,OUT.PTR 0979
000276 016300 000006 6$: MOV 6(R3),R0 ; *,LENGTH 0990
000302 001410 BEQ 7$
000304 010016 MOV R0,(SP) ; LENGTH,* 0992
000306 016346 000004 MOV 4(R3),-(SP)
000312 010546 MOV R5,-(SP) ; OUT.PTR,*
000314 004767 000000G JSR PC,BL$MOV
000320 010005 MOV R0,R5 ; *,OUT.PTR
000322 022626 CMP (SP)+,(SP)+
000324 010562 000010 7$: MOV R5,10(R2) ; OUT.PTR,*(EB) 0995
000330 160462 000010 SUB R4,10(R2) ; *,*(EB)
000334 062706 000006 ADD #6,SP ; 0872
000340 010200 MOV R2,R0 ; EB,* 0849
000342 000207 RTS PC
; Routine Size: 114 words, Routine Base: $CODE$ + 0722
; Maximum stack depth per invocation: 12 words
; 1000
NMLEVT 24-May-1985 13:26:12 TOPS-20 Bliss-16 2A(530) Page 34
X00.22 GET_LOCAL_EVENT 3-Jan-1983 01:22:13 DNET61:<MCB.NML>NMLEVT.BLI.1 (14)
; 1001 %routine ('GET_LOCAL_EVENT', TASK, RESOURCE) : novalue =
; 1002
; 1003 !++
; 1004 ! FUNCTIONAL DESCRIPTION:
; 1005 !
; 1006 !
; 1007 ! FORMAL PARAMETERS
; 1008 !
; 1009 ! NONE.
; 1010 !
; 1011 ! IMPLICIT INPUTS
; 1012 !
; 1013 !
; 1014 ! ROUTINE VALUE:
; 1015 !
; 1016 ! NONE.
; 1017 !
; 1018 ! SIDE EFFECTS:
; 1019 !
; 1020 ! None
; 1021 !
; 1022 !--
; 1023
; 1024 begin
; 1025
; L 1026 %if $MCB
; 1027 %then
; 1028
; 1029 label
; 1030 PROCESS_MESSAGE;
; 1031
; 1032 literal
; 1033 EVENT_BUFFER_LENGTH = 300,
; 1034 EVENT_BUFFER_SIZE = ch$allocation (EVENT_BUFFER_LENGTH, 8),
; 1035 EVENT_BUFFER_ALLOCATION = EVENT_BUFFER_SIZE*%upval;
; 1036
; 1037 external
; 1038 UN$USER : block [ch$allocation (1 + 16, 8)],
; 1039 UN$PASSWORD : block [ch$allocation (1 + 8, 8)],
; 1040 UN$ACCOUNT : block [ch$allocation (1 + 16, 8)];
; 1041
; 1042 local
; 1043 RAW_BUFFER_POINTER, ! Address of RAW Event Data
; 1044 RAW_COUNT, ! Length of Event Data Read
; 1045 REB : RAW_EVENT_BLOCK; ! Event block
; 1046
; 1047 RAW_BUFFER_POINTER = ch$ptr (NMU$MEMORY_GET (EVENT_BUFFER_ALLOCATION),, 8);
; 1048 ! Get Single RAW Buffer
; 1049 !
; 1050 ! Loop reading Events and copying them to Processed Buffers
; 1051 !
; 1052
NMLEVT 24-May-1985 13:26:12 TOPS-20 Bliss-16 2A(530) Page 35
X00.22 GET_LOCAL_EVENT 3-Jan-1983 01:22:13 DNET61:<MCB.NML>NMLEVT.BLI.1 (14)
; 1053 while $true do
; 1054 PROCESS_MESSAGE:
; 1055 begin
; 1056
; 1057 local
; 1058 IN_PTR; ! Pointer into RAW Event
; 1059
; 1060 !
; 1061 ! Read an Event and format it into the Processed Buffer
; 1062 !
; 1063 IN_PTR = .RAW_BUFFER_POINTER;
; 1064 do begin
; 1065 RAW_COUNT = $NMU_NMX_READ_EVENT (.IN_PTR, EVENT_BUFFER_LENGTH);
; 1066 end
; 1067 until .RAW_COUNT gtr 0;
; 1068 !
; 1069 selectoneu GETB (IN_PTR) of
; 1070 set
; 1071 [0] : ! Access control info
; 1072 begin
; 1073
; 1074 local
; 1075 CNT;
; 1076
; 1077 ! The EXECUTOR MANAGEMENT USER
; 1078
; 1079 CNT = ch$rchar (.IN_PTR) + 1;
; 1080 if .CNT gtr (1 + 16) then leave PROCESS_MESSAGE;
; 1081 ch$move (.CNT, .IN_PTR, ch$ptr (UN$USER,, 8));
; 1082 IN_PTR = ch$plus (.IN_PTR, .CNT);
; 1083
; 1084 ! The EXECUTOR MANAGEMENT PASSWORD
; 1085
; 1086 CNT = ch$rchar (.IN_PTR) + 1;
; 1087 if .CNT gtr (1 + 8) then leave PROCESS_MESSAGE;
; 1088 ch$move (.CNT, .IN_PTR, ch$ptr (UN$PASSWORD,, 8));
; 1089 IN_PTR = ch$plus (.IN_PTR, .CNT);
; 1090
; 1091 ! The EXECUTOR MANAGEMENT ACCOUNT
; 1092
; 1093 CNT = ch$rchar (.IN_PTR) + 1;
; 1094 if .CNT gtr (1 + 16) then leave PROCESS_MESSAGE;
; 1095 ch$move (.CNT, .IN_PTR, ch$ptr (UN$ACCOUNT,, 8));
; 1096 IN_PTR = ch$plus (.IN_PTR, .CNT);
; 1097
; 1098 ! The EXECUTOR IDENTIFICATION
; 1099
; 1100 CNT = ch$rchar (.IN_PTR);
; 1101 if .CNT gtr 32 then leave PROCESS_MESSAGE;
; 1102 NML$SET_VDB_PARAMETER (NODE_E,
; 1103 NMU$NETWORK_LOCAL (),
; 1104 100, ! IDENTIFICATION
NMLEVT 24-May-1985 13:26:12 TOPS-20 Bliss-16 2A(530) Page 36
X00.22 GET_LOCAL_EVENT 3-Jan-1983 01:22:13 DNET61:<MCB.NML>NMLEVT.BLI.1 (14)
; 1105 %ref(.IN_PTR));
; 1106
; 1107 leave PROCESS_MESSAGE;
; 1108 end;
; 1109 [1] : ! Event
; 1110 ; ! (fall into event processing code)
; 1111 [otherwise] : ! Undefined
; 1112 leave PROCESS_MESSAGE;
; 1113 tes;
; 1114 !
; 1115 REB [REB_EVENT_CODE] = GETW (IN_PTR); ! Event Class/Type
; 1116 REB [REB_TIME_BLOCK] = 0;
; 1117
; 1118 selectoneu (REB [REB_ENTITY_TYPE] = GETW (IN_PTR)) of
; 1119 set
; 1120
; 1121 [NODE_E] : ! Node Entity
; 1122 begin
; 1123
; 1124 local
; 1125 LENGTH,
; 1126 TEMP_PTR;
; 1127
; 1128 REB [REB_ENTITY_POINTER] = TEMP_PTR = .RAW_BUFFER_POINTER;
; 1129 ch$wchar_a (ch$rchar_a (IN_PTR), TEMP_PTR);
; 1130 ch$wchar_a (ch$rchar_a (IN_PTR), TEMP_PTR);
; 1131 ! Store Node Address
; 1132 ch$wchar (0, .TEMP_PTR); ! and set for mapping function
; 1133 LENGTH = NODE_ID_BUFFER_LENGTH; ! Maximum Length Node_ID
; 1134 $NML$MAP_NODE_ID (LENGTH, (.RAW_BUFFER_POINTER)); ! Map to Node_Id
; 1135 end;
; 1136
; 1137 [LINE_, CIRCUIT_, MODULE_] : ! Other Entities
; 1138 begin
; 1139
; 1140 local
; 1141 LENGTH;
; 1142
; 1143 REB [REB_ENTITY_POINTER] = .IN_PTR;
; 1144 LENGTH = ch$rchar (.IN_PTR) + 1;
; 1145 IN_PTR = ch$plus (.IN_PTR, .LENGTH);
; 1146 end;
; 1147 [otherwise] : ! No Entity
; 1148 0;
; 1149 tes;
; 1150
; 1151 REB [REB_DATA_POINTER] = .IN_PTR;
; 1152 REB [REB_DATA_LENGTH] = .RAW_COUNT - ch$diff (.IN_PTR, .RAW_BUFFER_POINTER);
; 1153 !
; 1154 ! When we arrive here IN_PTR points at the Event Data portion of the
; 1155 ! Raw Event; OUT_PTR points to where the Event Data will be stored.
; 1156 !
NMLEVT 24-May-1985 13:26:12 TOPS-20 Bliss-16 2A(530) Page 37
X00.22 GET_LOCAL_EVENT 3-Jan-1983 01:22:13 DNET61:<MCB.NML>NMLEVT.BLI.1 (14)
; 1157
; 1158 if .REB [REB_EVENT_CODE] neq ((96 + 5)^6 + 13)
; 1159 then
; 1160 NML$EVENT_PROCESSOR (REB)
; 1161 else
; 1162 NML$DLW_CALL (.REB [REB_ENTITY_POINTER]);
; 1163
; 1164 end;
; 1165
; U 1166 %else
; U 1167 0 ! To avoid empty compound expression
; 1168 %fi
; 1169 end; ! End of GET_LOCAL_EVENT
000072 .PSECT $OWN$, D
000072 IOSB: .BLKW 2
.GLOBL UN$USER, UN$PASSWORD, UN$ACCOUNT
.GLOBL SS$NMX
.SBTTL GET.LOCAL.EVENT GET_LOCAL_EVENT
001266 .PSECT $CODE$, RO
000000 004167 000000G GET.LOCAL.EVENT:
JSR R1,$SAVE4 ; 1001
000004 162706 000024 SUB #24,SP
000010 012746 000454 MOV #454,-(SP) ; 1047
000014 004767 000000G JSR PC,UM.GET
000020 010003 MOV R0,R3 ; *,RAW.BUFFER.POIN
000022 010302 1$: MOV R3,R2 ; RAW.BUFFER.POIN,IN.PTR 1063
000024 012716 001000 2$: MOV #1000,(SP) ; 1065
000030 010246 MOV R2,-(SP) ; IN.PTR,*
000032 012746 000454 MOV #454,-(SP)
000036 004767 000000G JSR PC,SS$NMX
000042 010004 MOV R0,R4 ; *,RAW.COUNT
000044 022626 CMP (SP)+,(SP)+ ; 1064
000046 005704 TST R4 ; RAW.COUNT 1067
000050 003765 BLE 2$
000052 005000 CLR R0 ; 1069
000054 152200 BISB (R2)+,R0 ; IN.PTR,*
000056 005700 TST R0
000060 001104 BNE 7$
000062 005001 CLR R1 ; CNT 1079
000064 151201 BISB (R2),R1 ; IN.PTR,CNT
000066 005201 INC R1 ; CNT
000070 020127 000021 CMP R1,#21 ; CNT,* 1080
000074 003352 BGT 1$
000076 010116 MOV R1,(SP) ; CNT,* 1081
NMLEVT 24-May-1985 13:26:12 TOPS-20 Bliss-16 2A(530) Page 38
X00.22 GET_LOCAL_EVENT 3-Jan-1983 01:22:13 DNET61:<MCB.NML>NMLEVT.BLI.1 (14)
000100 010246 MOV R2,-(SP) ; IN.PTR,*
000102 012746 000000G MOV #UN$USER,-(SP)
000106 004767 000000G JSR PC,BL$MOV
000112 060102 ADD R1,R2 ; CNT,IN.PTR 1082
000114 005001 CLR R1 ; CNT 1086
000116 151201 BISB (R2),R1 ; IN.PTR,CNT
000120 005201 INC R1 ; CNT
000122 020127 000011 CMP R1,#11 ; CNT,* 1087
000126 003402 BLE 3$
000130 022626 CMP (SP)+,(SP)+
000132 000733 BR 1$
000134 010116 3$: MOV R1,(SP) ; CNT,* 1088
000136 010246 MOV R2,-(SP) ; IN.PTR,*
000140 012746 000000G MOV #UN$PASSWORD,-(SP)
000144 004767 000000G JSR PC,BL$MOV
000150 060102 ADD R1,R2 ; CNT,IN.PTR 1089
000152 005001 CLR R1 ; CNT 1093
000154 151201 BISB (R2),R1 ; IN.PTR,CNT
000156 005201 INC R1 ; CNT
000160 020127 000021 CMP R1,#21 ; CNT,* 1094
000164 003403 BLE 5$
000166 062706 000010 ADD #10,SP
000172 000713 4$: BR 1$
000174 010116 5$: MOV R1,(SP) ; CNT,* 1095
000176 010246 MOV R2,-(SP) ; IN.PTR,*
000200 012746 000000G MOV #UN$ACCOUNT,-(SP)
000204 004767 000000G JSR PC,BL$MOV
000210 060102 ADD R1,R2 ; CNT,IN.PTR 1096
000212 005001 CLR R1 ; CNT 1100
000214 151201 BISB (R2),R1 ; IN.PTR,CNT
000216 020127 000040 CMP R1,#40 ; CNT,* 1101
000222 003403 BLE 6$
000224 062706 000014 ADD #14,SP
000230 000674 BR 1$
000232 005016 6$: CLR (SP) ; 1102
000234 004767 000000G JSR PC,UN.LOCAL ; 1103
000240 010046 MOV R0,-(SP) ; 1102
000242 012746 000144 MOV #144,-(SP)
000246 010266 000022 MOV R2,22(SP) ; IN.PTR,* 1105
000252 012746 000024 MOV #24,-(SP)
000256 060616 ADD SP,(SP)
000260 004767 000000G JSR PC,NL.VSP ; 1102
000264 062706 000022 ADD #22,SP ; 1107
000270 000654 BR 1$
000272 020027 000001 7$: CMP R0,#1 ; 1069
000276 001251 BNE 1$
000300 112266 000004 MOVB (R2)+,4(SP) ; IN.PTR,$$GETB.X 1115
000304 112266 000005 MOVB (R2)+,5(SP) ; IN.PTR,$$GETB.X
000310 016666 000004 000016 MOV 4(SP),16(SP) ; $$GETB.X,REB+10
000316 005066 000024 CLR 24(SP) ; REB+16 1116
000322 112266 000004 MOVB (R2)+,4(SP) ; IN.PTR,$$GETB.X 1118
000326 112266 000005 MOVB (R2)+,5(SP) ; IN.PTR,$$GETB.X
NMLEVT 24-May-1985 13:26:12 TOPS-20 Bliss-16 2A(530) Page 39
X00.22 GET_LOCAL_EVENT 3-Jan-1983 01:22:13 DNET61:<MCB.NML>NMLEVT.BLI.1 (14)
000332 016600 000004 MOV 4(SP),R0 ; $$GETB.X,*
000336 010066 000022 MOV R0,22(SP) ; *,REB+14
000342 001034 BNE 8$
000344 010301 MOV R3,R1 ; RAW.BUFFER.POIN,TEMP.PTR 1128
000346 010366 000006 MOV R3,6(SP) ; RAW.BUFFER.POIN,REB
000352 112221 MOVB (R2)+,(R1)+ ; IN.PTR,TEMP.PTR 1129
000354 112221 MOVB (R2)+,(R1)+ ; IN.PTR,TEMP.PTR 1130
000356 105011 CLRB (R1) ; TEMP.PTR 1132
000360 012700 000011 MOV #11,R0 ; *,LENGTH 1133
000364 005046 CLR -(SP) ; 1134
000366 005046 CLR -(SP)
000370 005046 CLR -(SP)
000372 012746 000002 MOV #2,-(SP)
000376 010046 MOV R0,-(SP) ; LENGTH,*
000400 010346 MOV R3,-(SP) ; RAW.BUFFER.POIN,*
000402 005046 CLR -(SP)
000404 012746 000072' MOV #IOSB,-(SP)
000410 012746 000000G MOV #EFN$NS,-(SP)
000414 012746 000000G MOV #LUN$NS,-(SP)
000420 012746 016670 MOV #16670,-(SP)
000424 012746 006003 MOV #6003,-(SP)
000430 104377 EMT 377
000432 000417 BR 10$
000434 020027 000001 8$: CMP R0,#1 ; 1118
000440 001406 BEQ 9$
000442 020027 000003 CMP R0,#3
000446 103411 BLO 10$
000450 020027 000004 CMP R0,#4
000454 101006 BHI 10$
000456 010266 000006 9$: MOV R2,6(SP) ; IN.PTR,REB 1143
000462 005000 CLR R0 ; LENGTH 1144
000464 151200 BISB (R2),R0 ; IN.PTR,LENGTH
000466 005200 INC R0 ; LENGTH
000470 060002 ADD R0,R2 ; LENGTH,IN.PTR 1145
000472 005726 10$: TST (SP)+ ; 1118
000474 010266 000010 MOV R2,10(SP) ; IN.PTR,REB+4 1151
000500 010300 MOV R3,R0 ; RAW.BUFFER.POIN,* 1152
000502 160200 SUB R2,R0 ; IN.PTR,*
000504 060400 ADD R4,R0 ; RAW.COUNT,*
000506 010066 000012 MOV R0,12(SP) ; *,REB+6
000512 026627 000014 014515 CMP 14(SP),#14515 ; REB+10,* 1158
000520 001406 BEQ 11$
000522 012746 000006 MOV #6,-(SP) ; 1160
000526 060616 ADD SP,(SP) ; REB,*
000530 004767 176460 JSR PC,EV.PRO
000534 000616 BR 4$ ; 1158
000536 016646 000004 11$: MOV 4(SP),-(SP) ; REB,* 1162
000542 004767 000000G JSR PC,NW.CAL
000546 000611 BR 4$ ; 1053
; Routine Size: 180 words, Routine Base: $CODE$ + 1266
; Maximum stack depth per invocation: 30 words
; 1170 end ! End of module NMLEVT
NMLEVT 24-May-1985 13:26:12 TOPS-20 Bliss-16 2A(530) Page 40
X00.22 GET_LOCAL_EVENT 3-Jan-1983 01:22:13 DNET61:<MCB.NML>NMLEVT.BLI.1 (14)
; 1171
; 1172 eludom
; OTS external references
.GLOBL $SAVE5, $SAVE4, $SAVE3, $SAVE2
.GLOBL BL$MOV
; PSECT SUMMARY
;
; Psect Name Words Attributes
; $OWN$ 31 RW , D , LCL, REL, CON
; $CODE$ 527 RO , I , LCL, REL, CON
; $PLIT$ 10 RO , D , LCL, REL, CON
; LIBRARY STATISTICS
;
; -------- Symbols -------- Blocks
; File Total Loaded Percent Read
;
; DNET61:<MCB.NML>NMLLIB.L16.2 2718 145 5 0
; 1173 ! Local Modes:
; 1174 ! Mode:Bliss
; 1175 ! Comment Start:!
; 1176 ! Comment Column:40
; 1177 ! Comment Rounding:+1
; 1178 ! Auto Save Mode:2
; 1179 ! End:
; Size: 527 code + 41 data words
; Run Time: 00:12.7
; Elapsed Time: 00:17.4
; Memory Used: 62 pages
; Compilation Complete
ALLOCATION_FAILURES 262
ALLOCATION 880 882# 891 895
B1 216 217
B2 216 218 220
B3 216 221 223
B4 216 224 226
BASE 920# 921 922
CH$ASCIZ 433 444 470 483
CH$WCHAR 461 1132#
CIRCUIT_ 975 1137
CNT 1075 1079# 1080 1081 1082 1086# 1087 1088 1089 1093# 1094 1095
1096 1100# 1101
C_CHAR 208 216# 230#
C_STRING 205# 238
DATA 822
DECLARE_JSYS 720 915
EB 308 327 341 348 361# 364 384 386# 388 556 558# 560
680 682# 712 750 756 768 769 773 875 891# 895# 903
995# 998
EB_ALLOCATION 327 348 712 773 895
EB_BUFFER 341 361 769 903 995
EB_LENGTH 361 750 756 768 769 995
EMPTY_QUEUE_CHECK 192 813
EQ 308 324 331# 333 347# 364 367 386 387# 391 406 407#
408#
EQ_COUNT 324 331 333 347 387 407
EQ_LENGTH 324 333 408
EVENT_BUFFER 308 556 680 875
EVENT_BUFFER_ALLOCATION 882 1035# 1047
EVENT_BUFFER_LENGTH 1033# 1034 1065
EVENT_BUFFER_SIZE 1034# 1035
EVENT_QUEUE 255 308 367 391
FILE_QUEUE 255 482 629 682
FILE_ 237
GETB 1069
GETW 458 1115 1118
GET_EVENT_BUFFER 193 558 627
GET_LOCAL_EVENT 194 433
GTAD 720
HOST_ID 445# 449
HOST_TRANSMITTER 259 445# 448 457 463# 560 813 814 816
IDCNV 915
IN_PTR 1058 1063# 1065 1069 1079 1081 1082# 1086 1088 1089# 1093 1095
1096# 1100 1105 1115 1118 1129 1130 1143# 1144 1145# 1151 1152
JULIAN 914 920 922# 923# 925# 931# 934
LINE_ 975 1137
LNG 338 357# 358
LNKG 453# 456
LOGGING_ 474 478 615 694 978
LOGGING_FILE_PTR 237# 475 479 616 695
LOGGING_NAME 246# 476
LOGGING_NAME_ADR 238# 477
LOGGING_STATE 242# 480 597# 617 696
LOST_EVENTS 261
MILLISECONDS 761 763 764
MODULE_ 975 1137
NML$CFG_LOGGING_FILE 234 253 472 602 669
NML$CFG_LOGGING_RECEIVER 277 467 520 635
NML$CFG_LOGGING_TRANSMITTER 257 273 435 537 807
NML$DLW_CALL 271 1162
NML$EQUEUE_INSERT 560 629
NML$EQUEUE_REMOVE 682
NML$EQUEUE_RESET 448 482
NML$EVENT_MANAGER 188
NML$EVENT_PROCESSOR 305 1160
NML$EVENT_RECEIVER 279 469
NML$EVENT_RECORDER 535
NML$EVENT_TRANSMITTER 275 464
NML$GET_VDB_PARAMETER 284 615 694
NML$LOGGING_FILE 189 483
NML$SET_VDB_PARAMETER 285 474 478 1102
NMLEVT 134#
NMU$MEMORY_GET 751 891 1047
NMU$MEMORY_MANAGER 283
NMU$MEMORY_RELEASE 327 348 712 772 773
NMU$NETWORK_LOCAL 519 1103
NMU$NETWORK_UTILITIES 287
NMU$QUEUE_MANAGER 281
NMU$QUEUE_SCAN 813
NMU$SCHED_CREATE 433 464 469 483
NMU$SCHED_MANAGER 282
NMU$SCHED_SLEEP 705
NMU$SCHED_WAIT 814
NMU$SQUEUE_INSERT 364
NMU$SQUEUE_REMOVE 386
NMU$SQUEUE_RESET 406
NMU$TABLE_ROUTINES 286
NODE_E 972 1102 1121
NODE_ID_BUFFER_LENGTH 449 1133
NO_ENTITY_ 359 360
NUMBER 451 457# 458# 460
ODCNV 915
OLD_TB 513 516# 565
OUT_PTR 901 903# 904 905 906 934 935 936 937 941 942 943
945 946 947 957 958 960# 968 973# 974 976# 977 979
992# 995
PROCESS_MESSAGE 1030 1054 1080 1087 1094 1101 1107 1112
PTR 339 341# 343 344 354 355 356# 357 358# 359 360 361#
451 460 461
PUTB 936 937
PUTW 906 934 935 941 942 943 945 946 947 968
Q_EVENT 814
RAW_BUFFER_POINTER 1043 1047# 1063 1128 1134 1152
RAW_COUNT 1044 1065# 1067 1152
RAW_EVENT_BLOCK 289 487 568 849 1045
REB 289 305 487 516 518# 519# 525# 529# 533 535 542# 547#
551 558 565# 568 608 627 849 889 905 906 910 956
968 970 973 974 976 977 979 990 992 1045 1115# 1116#
1118# 1128# 1143# 1151# 1152# 1158 1160 1162
REB_DATA_LENGTH 889 990 1152
REB_DATA_POINTER 992 1151
REB_ENTITY_POINTER 973 974 976 977 979 1128 1143 1162
REB_ENTITY_TYPE 968 970 1118
REB_EVENT_CODE 906 1115 1158
REB_FILE 529 547 608
REB_SINK_FLAGS 525 533 542 551 905
REB_SOURCE_POINTER 519 956
REB_TIME_BLOCK 516 518 565 910 1116
RESOURCE 641 1001
SECONDS 914 917 918# 927 930# 935
STATE_HOLD 245# 600# 700
STATE_OFF 244# 599# 619 623 698 711
STATE_ON 243# 481 598#
STATE 613 618 619# 621 627# 629 692 697 698# 700
SYERR 720
SYSERR_ALLOCATION 745 750# 751 772
SYSERR_ENTRY 744 751# 752# 753# 754# 755# 756# 757 764# 767 768# 769
770 772
SYSERR_ERROR_CODE 741# 752
SYSERR_FIELDS 723# 744
SYSERR_HEADER_ALLOCATION 740# 750 755
SYSGT 720
SY_COD 725# 752
SY_DAT 733#
SY_DTE 730# 757
SY_DTL 734# 768
SY_DTS 736# 769
SY_HLN 728# 755 770
SY_LEN 729# 756 770
SY_PSN 732# 767
SY_T20 726# 753
SY_UPT 731# 764
SY_VER 727# 754
TASK 641 1001
TB 514 517 518 910# 917 922 941 942 943
TEMP_PTR 954 956# 957 958 960 1126 1128# 1129 1130 1132
TIME 720
TIME_BLOCK 514 910
TIME_CURRENT 517
TIME_JULIAN 941
TIME_MILLISECOND 943
TIME_SECOND 942
TQ_QUEUE 814
TQ_SINK_NODE 445 457
TQ_TRANSMITTER_TASK 463
TRANSMITTER_NAME_PTR 444# 459 464
TRANSMITTER_QUEUE 259
TRANSMITTER_TO_ 440# 444 459
UN$ACCOUNT 1040 1095
UN$PASSWORD 1039 1088
UN$USER 1038 1081
$$GTAD 757
$$IDCNV 921
$$ODCNV 917
$$SYERR 770
$$SYSGT 767
$$TIME 763
$CBDMG 456* 459
$MCB 206 213 269 431 939 1026
$NML$GET_HOST_ID 449
$NML$MAP_NODE_ID 1134
$NMU_NMX_READ_EVENT 1065
$OWN$ 442
$PLIT$ 446
$SUB_FIELD 814
$TOPS10 912
$TOPS20 715 912
$TRUE 676 688 1053
%GLOBAL_ROUTINE 289# 308# 367# 391# 411# 487# 568# 783#
%REMAINING 208 210 231
%ROUTINE 641# 822# 849# 1001#