Trailing-Edge
-
PDP-10 Archives
-
BB-P363B-SM_1985
-
mcb/nml/nmlrcv.lst
There are no other files named nmlrcv.lst in the archive.
24-May-1985 13:25:38 TOPS-20 Bliss-16 2A(530) Page 1
3-Jan-1983 01:54:01 DNET61:<MCB.NML>NMLRCV.BLI.1 (1)
; 0001 ! NET:<PECKHAM.DEVELOPMENT>NMLRCV.BLI.8 25-Jun-82 19:43:17, Edit by PECKHAM
; 0002 !
; 0003 ! Ident 11.
; 0004 ! Reduce NICE_BUFFER_LENGTH from 500 to 300 bytes.
; 0005 ! Define a parameter block so that access control can be passed from
; 0006 ! WAIT_FOR_CONNECT to READ_NICE_REQUEST (also good for code optimization).
; 0007 ! Optimize linkages.
; 0008 !
; 0009 ! NET:<PECKHAM.DEVELOPMENT>NMLRCV.BLI.3 23-Jun-82 11:04:21, Edit by PECKHAM
; 0010 !
; 0011 ! Ident 10.
; 0012 ! Merge QUEUE_REQUEST into READ_NICE_REQUEST so that request block
; 0013 ! can be handled there.
; 0014 ! Set privledged bits on for now, later user info will be checked.
; 0015 ! Fix DEQUEUE_REQUEST to conditionally release memory from request block.
; 0016 !
; 0017 ! <BRANDT.DEVELOPMENT>NMLRCV.BLI.2 7-Jun-82 11:21:45, Edit by BRANDT
; 0018 !
; 0019 ! Ident 09.
; 0020 ! 1) In DEQUEUE_RESPONSE release memory allocated for node_id
; 0021 ! in the request block. Before this edit, this memory was
; 0022 ! released in NML$NICE_EXECUTE. Doing so allowed the memory to
; 0023 ! be reallocated while still being referenced as a node_id.
; 0024 !
; 0025 ! NET:<VOBA.NML.DEVELOPMENT>NMLRCV.BLI.3 30-Mar-82 10:48:02, Edit by VOBA
; 0026 !
; 0027 ! Ident 08.
; 0028 ! Update copyright date and clean up code.
; 0029 !
; 0030 !NET:<DECNET20-V3P1.BASELEVEL-2.SOURCES>NMLRCV.BLI.21 20-Nov-81 13:39:24, Edit by WEBBER
; 0031 !
; 0032 ! Ident 07.
; 0033 ! Fix ident 06 to use only addresses, not pointers, in memory gets and
; 0034 ! retrieves.
; 0035 !
; 0036 !NET:<DECNET20-V3P1.NML>NMLRCV.BLI.2 21-Oct-81 09:49:14, Edit by WEBBER
; 0037 !
; 0038 ! Ident 06.
; 0039 ! Add response buffer and its length as parameters to NETWORK_OPEN.
; 0040 !
; 0041 ! NET:<DECNET20-V3P1.BASELEVEL-2.SOURCES>NMLRCV.BLI.18 2-Oct-81 17:42:49, Edit by GUNN
; 0042 !
; 0043 ! Ident 05.
; 0044 ! Fix typo in code returning $NICE$ERR_IID response code.
; 0045 !
; 0046 ! NET:<DECNET20-V3P1.BASELEVEL-2.SOURCES>NMLRCV.BLI.15 12-Aug-81 12:52:01, Edit by JENNESS
; 0047 !
; 0048 ! Ident 04.
; 0049 ! Fix CHECK_VERSION to properly use the CB_DATA pointer as a pointer
; 0050 ! not as the address of the data buffer.
; 0051 !
; 0052 ! NET:<DECNET20-V3P1.NML>NMLRCV.BLI.2 1-Jun-81 15:14:49, Edit by GUNN
24-May-1985 13:25:38 TOPS-20 Bliss-16 2A(530) Page 2
3-Jan-1983 01:54:01 DNET61:<MCB.NML>NMLRCV.BLI.1 (1)
; 0053 !
; 0054 ! Ident 03.
; 0055 ! Fix problem preventing completion of SHOW KNOWN xxx command to a
; 0056 ! remote node. Make DEQUEUE_RESPONSE not release RB until the command
; 0057 ! processing is complete as indicated by RB_STATE.
; 0058 !
; 0059 ! NET:<DECNET20-V3P1.NML>NMLRCV.BLI.3 3-Mar-81 16:25:05, Edit by GUNN
; 0060 !
; 0061 ! Remove references to RB_NICE_SIZE and RB_DATA_SIZE and replace with
; 0062 ! RB_aaa_ALLOCATION field references.
; 0063 !
; 0064 ! NET:<DECNET20-V3P1.NMU>NMLRCV.BLI.5 3-Feb-81 10:04:32, Edit by JENNESS
; 0065 ! Remove literal definition for NICE_OBJECT (now in NMARCH).
; 0066 ! Remove DEBUG logical link descriptor (NMUNET now creates user name
; 0067 ! descriptor if .135 neq 0).
; 0068 ! Fix access control validation to work properly. NMU$NETWORK_VALIDATE
; 0069 ! returns $true/$false instead of 0/not 0.
; 0070 ! Add error code for 'ACCESS NOT PERMITTED' on connect reject (SC$_ANP).
; 0071 !
NMLRCV -- NICE Remote Message Receiver 24-May-1985 13:25:38 TOPS-20 Bliss-16 2A(530) Page 3
3-Jan-1983 01:54:01 DNET61:<MCB.NML>NMLRCV.BLI.1 (2)
; 0072 %title 'NMLRCV -- NICE Remote Message Receiver'
; 0073 module NMLRCV (
; 0074 ident = 'X03.11'
; 0075 ) =
; 0076 begin
; 0077
; 0078 ! COPYRIGHT (c) 1980, 1981, 1982
; 0079 ! DIGITAL EQUIPMENT CORPORATION
; 0080 ! Maynard, Massachusetts
; 0081 !
; 0082 ! This software is furnished under a license and may be used
; 0083 ! and copied only in accordance with the terms of such license
; 0084 ! and with the inclusion of the above copyright notice. This
; 0085 ! software or any other copies thereof may not be provided or
; 0086 ! otherwise made available to any other person. No title to
; 0087 ! and ownership of the software is hereby transferred.
; 0088 !
; 0089 ! The information in this software is subject to change
; 0090 ! without notice and should not be construed as a commitment
; 0091 ! by DIGITAL EQUIPMENT CORPORATION.
; 0092 !
; 0093 ! DIGITAL assumes no responsibility for the use or reliability
; 0094 ! of its software on equipment which is not supplied by
; 0095 ! DIGITAL.
; 0096 !
; 0097
; 0098 !++
; 0099 ! FACILITY: DECnet-10/20 V3.0 Network Management Layer (NML)
; 0100 !
; 0101 ! ABSTRACT:
; 0102 !
; 0103 ! This module performs the NML NICE remote request receive function.
; 0104 !
; 0105 ! ENVIRONMENT: TOPS-10/20 & MCB/RSX11 User mode under NML
; 0106 !
; 0107 ! AUTHOR: Dale C. Gunn , CREATION DATE: 20-Jan-81
; 0108 !
; 0109 ! MODIFIED BY:
; 0110 !
; 0111 ! , : VERSION
; 0112 ! 01 -
; 0113 !--
NMLRCV NMLRCV -- NICE Remote Message Receiver 24-May-1985 13:25:38 TOPS-20 Bliss-16 2A(530) Page 4
X03.11 3-Jan-1983 01:54:01 DNET61:<MCB.NML>NMLRCV.BLI.1 (3)
; 0114
; 0115 !
; 0116 ! INCLUDE FILES:
; 0117 !
; 0118
; 0119 library 'NMLLIB'; ! All required definitions
; 0120 require 'NMLEXT'; ! NML External routines
; 0226
; 0227 !
; 0228 ! TABLE OF CONTENTS
; 0229 !
; 0230
; L 0231 %if %bliss (bliss16)
; 0232 %then linkage NML_LKG_PB = jsr (register = 5);
; U 0233 %else macro NML_LKG_PB = bliss36c %;
; 0234 %fi
; 0235
; 0236 forward routine
; 0237 NML$RECEIVE_NICE : novalue;
; 0238
; 0239 forward routine
; 0240 WAIT_FOR_CONNECT : NML_LKG_PB, ! Wait for connection to target task
; 0241 CHECK_VERSION : NML_LKG_PB, ! Validate network management version
; 0242 READ_NICE_REQUEST : NML_LKG_PB novalue, ! Read a NICE request message
; 0243 DEQUEUE_REQUEST : novalue; ! Remove completed request from queue
; 0244
; 0245 !
; 0246 ! MACROS:
; 0247 !
; 0248
; 0249 !
; 0250 ! EQUATED SYMBOLS:
; 0251 !
; 0252
; 0253 literal
; 0254 NICE_BUFFER_LENGTH = 300, ! NICE request buffer length in bytes
; 0255 NICE_BUFFER_SIZE = ch$allocation (NICE_BUFFER_LENGTH,8), ! In words
; 0256 NICE_BUFFER_ALLOCATION = NICE_BUFFER_SIZE * %upval; ! In addr units
; 0257
; 0258 !
; 0259 ! Parameter Block
; 0260 !
; 0261
; 0262 $show (fields); ! Turn on XPORT field display
; 0263 $show (literals); ! Turn on XPORT literal display
; 0264
; 0265 $field
; 0266 PARAMETER_FIELDS =
; 0267 set
; L 0268 PB_BASE = [$sub_block (0)],
; %PRINT: [0,0,0,0] (+%O'0')
; L 0269 PB_LINK_HANDLE = [$short_integer],
NMLRCV NMLRCV -- NICE Remote Message Receiver 24-May-1985 13:25:38 TOPS-20 Bliss-16 2A(530) Page 5
X03.11 3-Jan-1983 01:54:01 DNET61:<MCB.NML>NMLRCV.BLI.1 (3)
; %PRINT: [0,0,16,1] (+%O'0')
; L 0270 PB_CBLK = [$address],
; %PRINT: [1,0,16,0] (+%O'2')
; L 0271 PB_OPTD_PTR = [$pointer],
; %PRINT: [2,0,16,0] (+%O'4')
; L 0272 PB_OPTD_CNT = [$short_integer],
; %PRINT: [3,0,16,1] (+%O'6')
; L 0273 PB_ACCESS = [$tiny_integer],
; %PRINT: [4,0,8,1] (+%O'10')
; L 0274 PB_OBJECT = [$byte]
; %PRINT: [4,8,8,0] (+%O'11')
; 0275 tes;
; 0276
; 0277 literal
; L 0278 PARAMETER_BLOCK_SIZE = $field_set_size,
; %PRINT: 5 fullwords
; L 0279 PARAMETER_BLOCK_ALLOCATION = $field_set_units;
; %PRINT: 10 addressable units
; 0280
; 0281 macro
; 0282 PARAMETER_BLOCK = block [PARAMETER_BLOCK_SIZE] field (PARAMETER_FIELDS) %;
; 0283
; 0284 $show (none); ! Turn off XPORT display
; 0285
; 0286 !
; 0287 ! OWN STORAGE:
; 0288 !
; 0289
; 0290 !
; 0291 ! EXTERNAL REFERENCES:
; 0292 !
; 0293
; 0294 external routine
; 0295 NMU$NETWORK_UTILITIES;
; 0296
; 0297 external
; 0298 NMLVER, ! Network Managment version number
; 0299 DECECO, ! Digital ECO number
; 0300 USRECO; ! User ECO number
NMLRCV NMLRCV -- NICE Remote Message Receiver 24-May-1985 13:25:38 TOPS-20 Bliss-16 2A(530) Page 6
X03.11 NML$RECEIVE_NICE as NL_RCV 3-Jan-1983 01:54:01 DNET61:<MCB.NML>NMLRCV.BLI.1 (4)
; 0301 %global_routine ('NML$RECEIVE_NICE', TASK, RESOURCE) : novalue =
; 0302
; 0303 !++
; 0304 ! FUNCTIONAL DESCRIPTION:
; 0305 !
; 0306 ! This routine is the top level of the Network Management
; 0307 ! NICE request listener. The listener is responsible for
; 0308 ! accepting connections from remote NMLs, verifying their
; 0309 ! privilege to perform NM functions based on access control
; 0310 ! information provided with the connection.
; 0311 !
; 0312 ! FORMAL PARAMETERS
; 0313 !
; 0314 ! TASK - Address of task block for this task
; 0315 ! RESOURCE - Address of cell for this task to use as
; 0316 ! a resource variable.
; 0317 !
; 0318 ! IMPLICIT INPUTS
; 0319 !
; 0320 ! NONE.
; 0321 !
; 0322 ! ROUTINE VALUE:
; 0323 !
; 0324 ! NONE.
; 0325 !
; 0326 ! SIDE EFFECTS:
; 0327 !
; 0328 ! NONE.
; 0329 !
; 0330 !--
; 0331
; 0332 begin
; 0333
; 0334 local
; 0335 PB : PARAMETER_BLOCK,
; 0336 PBA,
; 0337 BUFFER_PTR, ! Pointer to acceptance data buffer
; 0338 BUFFER : ch$sequence (3,8); ! Acceptance data buffer, NM Version
; 0339
; 0340 !
; 0341 ! Put our Network Management version number into the buffer
; 0342 ! to send as the optional data on a link connect acceptance.
; 0343 !
; 0344
; 0345 PB [PB_OBJECT] = NICE_OBJECT;
; 0346 PB [PB_OPTD_PTR] = ch$ptr (BUFFER,, 8);
; 0347 BUFFER_PTR = .PB [PB_OPTD_PTR]; ! Point to connect accept buffer
; 0348 PUTB (.NMLVER, BUFFER_PTR); ! Store NM major version
; 0349 PUTB (.DECECO, BUFFER_PTR); ! Store our minor (ECO) version
; 0350 PUTB (.USRECO, BUFFER_PTR); ! Store customer ECO number
; 0351 PB [PB_OPTD_CNT] = ch$diff (.BUFFER_PTR, .PB [PB_OPTD_PTR]);
; 0352
NMLRCV NMLRCV -- NICE Remote Message Receiver 24-May-1985 13:25:38 TOPS-20 Bliss-16 2A(530) Page 7
X03.11 NML$RECEIVE_NICE as NL_RCV 3-Jan-1983 01:54:01 DNET61:<MCB.NML>NMLRCV.BLI.1 (4)
; 0353 !
; 0354 ! Loop forever, wait for link connected, read requests until disconnected.
; 0355 !
; 0356
; 0357 PBA = PB [PB_BASE]; ! For BLISS-16 optimization
; 0358
; 0359 while $TRUE
; 0360 do begin
; 0361 WAIT_FOR_CONNECT (.PBA);
; 0362 READ_NICE_REQUEST (.PBA);
; 0363 NMU$NETWORK_CLOSE (.PB [PB_LINK_HANDLE], 0, 0);
; 0364 end;
; 0365
; 0366 end; ! End of NML$RECEIVE_NICE
.TITLE NMLRCV NMLRCV -- NICE Remote Message Receiver
.IDENT /X03.11/
.GLOBL US.CREATE, 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, UQ.RESET, UQ.INSERT
.GLOBL UQ.REMOVE, UQ.EXTRACT, UQ.LENGTH
.GLOBL UQ.SCAN, UQ.SEXTRACT, NL.INIT
.GLOBL NL.RENTER, NL.REMOVE, NL.FINISH
.GLOBL UN.INIT, UN.LOCAL, UN.OPEN, UN.ACCEPT
.GLOBL UN.REJECT, UN.READ, UN.WRITE, UN.ABORT
.GLOBL UN.CLOSE, UN.STATUS, UN.VALIDATE
.GLOBL NMLVER, DECECO, USRECO
.SBTTL NL.RCV NML$RECEIVE_NICE as NL_RCV
000000 .PSECT $CODE$, RO
000000 010546 NL.RCV::MOV R5,-(SP) ; 0301
000002 162706 000016 SUB #16,SP
000006 112766 000023 000015 MOVB #23,15(SP) ; *,PB+10 0345
000014 010666 000010 MOV SP,10(SP) ; BUFFER,PB+4 0346
000020 010600 MOV SP,R0 ; PB+4,BUFFER.PTR 0347
000022 116720 000000G MOVB NMLVER,(R0)+ ; *,BUFFER.PTR 0348
000026 116720 000000G MOVB DECECO,(R0)+ ; *,BUFFER.PTR 0349
000032 116720 000000G MOVB USRECO,(R0)+ ; *,BUFFER.PTR 0350
000036 010066 000012 MOV R0,12(SP) ; BUFFER.PTR,PB+6 0351
000042 160666 000012 SUB SP,12(SP) ; PB+4,PB+6
000046 012705 000004 MOV #4,R5 ; *,PBA 0357
000052 060605 ADD SP,R5 ; PB,PBA
000054 004767 000000V 1$: JSR PC,WAIT.FOR.CONNECT ; 0361
000060 004767 000000V JSR PC,READ.NICE.REQUEST ; 0362
NMLRCV NMLRCV -- NICE Remote Message Receiver 24-May-1985 13:25:38 TOPS-20 Bliss-16 2A(530) Page 8
X03.11 NML$RECEIVE_NICE as NL_RCV 3-Jan-1983 01:54:01 DNET61:<MCB.NML>NMLRCV.BLI.1 (4)
000064 016646 000004 MOV 4(SP),-(SP) ; PB,* 0363
000070 005046 CLR -(SP)
000072 005046 CLR -(SP)
000074 004767 000000G JSR PC,UN.CLOSE
000100 062706 000006 ADD #6,SP ; 0360
000104 000763 BR 1$ ; 0359
; Routine Size: 35 words, Routine Base: $CODE$ + 0000
; Maximum stack depth per invocation: 12 words
NMLRCV NMLRCV -- NICE Remote Message Receiver 24-May-1985 13:25:38 TOPS-20 Bliss-16 2A(530) Page 9
X03.11 WAIT_FOR_CONNECT 3-Jan-1983 01:54:01 DNET61:<MCB.NML>NMLRCV.BLI.1 (5)
; 0367 %routine ('WAIT_FOR_CONNECT', PB : ref PARAMETER_BLOCK) : NML_LKG_PB =
; 0368
; 0369 !++
; 0370 ! FUNCTIONAL DESCRIPTION:
; 0371 !
; 0372 ! This routine opens a target link for connection by
; 0373 ! another task. When a connect is attempted the user
; 0374 ! access rights are checked and the source task's version
; 0375 ! number is checked. If all checks are ok, then the
; 0376 ! link is accepted (sending the optional acceptance data)
; 0377 ! and the LINK_ID is returned. If any check fails,
; 0378 ! a reject is sent with the appropriate error code.
; 0379 !
; 0380 ! FORMAL PARAMETERS
; 0381 !
; 0382 ! PB - Parameter block
; 0383 !
; 0384 ! IMPLICIT INPUTS
; 0385 !
; 0386 ! NONE.
; 0387 !
; 0388 ! ROUTINE VALUE:
; 0389 !
; 0390 ! The LINK_ID of the opened link.
; 0391 !
; 0392 ! SIDE EFFECTS:
; 0393 !
; 0394 ! NONE.
; 0395 !
; 0396 !--
; 0397
; 0398 begin
; 0399
; 0400 local
; 0401 CBLK: CONNECT_BLOCK; ! Link connection block
; 0402
; 0403 !
; 0404 ! Set the object code and clear the task name and descriptor.
; 0405 !
; 0406
; 0407 PB [PB_CBLK] = CBLK;
; 0408 CBLK[CB_OBJECT] = .PB [PB_OBJECT];
; 0409 CBLK[CB_TASK_LENGTH] = 0;
; 0410 CBLK[CB_DESCRIPTOR_LENGTH] = 0;
; 0411 CBLK[CB_HOST_LENGTH] = 0;
; 0412 CBLK[CB_USERID_LENGTH] = 0;
; 0413 CBLK[CB_PASSWORD_LENGTH] = 0;
; 0414 CBLK[CB_ACCOUNT_LENGTH] = 0;
; 0415 CBLK[CB_DATA_LENGTH] = 0;
; 0416
; 0417 while $true ! Loop until the link is connected
; 0418 do begin
NMLRCV NMLRCV -- NICE Remote Message Receiver 24-May-1985 13:25:38 TOPS-20 Bliss-16 2A(530) Page 10
X03.11 WAIT_FOR_CONNECT 3-Jan-1983 01:54:01 DNET61:<MCB.NML>NMLRCV.BLI.1 (5)
; 0419
; 0420 local
; 0421 REASON; ! Link rejection reason
; 0422
; 0423 REASON = 0;
; 0424 PB [PB_LINK_HANDLE] = NMU$NETWORK_OPEN (TARGET_LINK, CBLK, 0, 0, 0);
; 0425
; 0426 !
; 0427 ! Check for user access and version number ok
; 0428 !
; 0429
; 0430 if (.PB [PB_LINK_HANDLE] gtr 0)
; 0431 and ((REASON = CHECK_VERSION (PB [PB_BASE])) eql 0)
; 0432 then begin
; 0433 PB [PB_ACCESS] = NMU$NETWORK_VALIDATE (CBLK);
; 0434 NMU$NETWORK_ACCEPT (.PB [PB_LINK_HANDLE], .PB [PB_OPTD_CNT], .PB [PB_OPTD_PTR]);
; 0435 exitloop;
; 0436 end
; 0437 else begin
; 0438 local REJECT_BUFFER, REJECT_PTR;
; 0439
; 0440 REJECT_PTR = ch$ptr (REJECT_BUFFER,,8);
; 0441 ch$wchar_a (.REASON, REJECT_PTR);
; 0442 NMU$NETWORK_REJECT (.PB [PB_LINK_HANDLE],
; 0443 SC$_ANP,
; 0444 1,
; 0445 ch$ptr (REJECT_BUFFER,,8));
; 0446 NMU$NETWORK_CLOSE (.PB [PB_LINK_HANDLE], 0, 0);
; 0447 end;
; 0448 end;
; 0449 !
; 0450 ! Return handle (id) of link that was opened and accepted.
; 0451 !
; 0452
; 0453 return .PB [PB_LINK_HANDLE];
; 0454 end; ! End of WAIT_FOR_CONNECT
.SBTTL WAIT.FOR.CONNECT WAIT_FOR_CONNECT
000000 010146 WAIT.FOR.CONNECT:
MOV R1,-(SP) ; 0367
000002 162706 000230 SUB #230,SP
000006 011765 000002 MOV (PC),2(R5) ; *,*(PB) 0407
000012 060665 000002 ADD SP,2(R5) ; CBLK,*(PB)
000016 116566 000011 000006 MOVB 11(R5),6(SP) ; *(PB),CBLK+4 0408
000024 105066 000007 CLRB 7(SP) ; CBLK+4
000030 005066 000012 CLR 12(SP) ; CBLK+10 0409
000034 005066 000036 CLR 36(SP) ; CBLK+34 0410
000040 005066 000004 CLR 4(SP) ; CBLK+2 0411
000044 005066 000016 CLR 16(SP) ; CBLK+14 0412
000050 005066 000032 CLR 32(SP) ; CBLK+30 0413
000054 005066 000026 CLR 26(SP) ; CBLK+24 0414
NMLRCV NMLRCV -- NICE Remote Message Receiver 24-May-1985 13:25:38 TOPS-20 Bliss-16 2A(530) Page 11
X03.11 WAIT_FOR_CONNECT 3-Jan-1983 01:54:01 DNET61:<MCB.NML>NMLRCV.BLI.1 (5)
000060 005066 000022 CLR 22(SP) ; CBLK+20 0415
000064 005001 1$: CLR R1 ; REASON 0423
000066 012746 000001 MOV #1,-(SP) ; 0424
000072 012746 000006 MOV #6,-(SP)
000076 060616 ADD SP,(SP) ; CBLK,*
000100 005046 CLR -(SP)
000102 005046 CLR -(SP)
000104 005046 CLR -(SP)
000106 004767 000000G JSR PC,UN.OPEN
000112 010015 MOV R0,(R5) ; *,PB
000114 003425 BLE 2$ ; 0430
000116 004767 000000V JSR PC,CHECK.VERSION ; 0431
000122 010001 MOV R0,R1 ; *,REASON
000124 001021 BNE 2$
000126 012716 000014 MOV #14,(SP) ; 0433
000132 060616 ADD SP,(SP) ; CBLK,*
000134 004767 000000G JSR PC,UN.VALIDATE
000140 110065 000010 MOVB R0,10(R5) ; *,*(PB)
000144 011516 MOV (R5),(SP) ; PB,* 0434
000146 016546 000006 MOV 6(R5),-(SP) ; *(PB),*
000152 016546 000004 MOV 4(R5),-(SP) ; *(PB),*
000156 004767 000000G JSR PC,UN.ACCEPT
000162 062706 000016 ADD #16,SP ; 0435
000166 000426 BR 3$
000170 012700 000012 2$: MOV #12,R0 ; *,REJECT.PTR 0440
000174 060600 ADD SP,R0 ; REJECT.BUFFER,REJECT.PTR
000176 110120 MOVB R1,(R0)+ ; REASON,REJECT.PTR 0441
000200 011516 MOV (R5),(SP) ; PB,* 0442
000202 012746 000042 MOV #42,-(SP)
000206 012746 000001 MOV #1,-(SP)
000212 012746 000020 MOV #20,-(SP) ; 0445
000216 060616 ADD SP,(SP) ; REJECT.BUFFER,*
000220 004767 000000G JSR PC,UN.REJECT ; 0442
000224 011516 MOV (R5),(SP) ; PB,* 0446
000226 005046 CLR -(SP)
000230 005046 CLR -(SP)
000232 004767 000000G JSR PC,UN.CLOSE
000236 062706 000024 ADD #24,SP ; 0418
000242 000710 BR 1$ ; 0417
000244 011500 3$: MOV (R5),R0 ; PB,* 0398
000246 062706 000230 ADD #230,SP ; 0367
000252 012601 MOV (SP)+,R1
000254 000207 RTS PC
; Routine Size: 87 words, Routine Base: $CODE$ + 0106
; Maximum stack depth per invocation: 88 words
NMLRCV NMLRCV -- NICE Remote Message Receiver 24-May-1985 13:25:38 TOPS-20 Bliss-16 2A(530) Page 12
X03.11 CHECK_VERSION 3-Jan-1983 01:54:01 DNET61:<MCB.NML>NMLRCV.BLI.1 (6)
; 0455 %routine ('CHECK_VERSION', PB : ref PARAMETER_BLOCK) : NML_LKG_PB =
; 0456
; 0457 !++
; 0458 ! FUNCTIONAL DESCRIPTION:
; 0459 !
; 0460 ! This routine checks to see if the Network Management
; 0461 ! version match. If they don't, an error code is returned.
; 0462 !
; 0463 ! FORMAL PARAMETERS
; 0464 !
; 0465 ! PB - Parameter block
; 0466 !
; 0467 ! IMPLICIT INPUTS
; 0468 !
; 0469 ! NONE.
; 0470 !
; 0471 ! ROUTINE VALUE:
; 0472 !
; 0473 ! Zero if ok, a non-zero error code if failed test
; 0474 !
; 0475 ! SIDE EFFECTS:
; 0476 !
; 0477 ! NONE.
; 0478 !
; 0479 !--
; 0480
; 0481 begin
; 0482
; 0483 bind
; 0484 CBLK = .PB [PB_CBLK] : CONNECT_BLOCK;
; 0485
; 0486 local
; 0487 DATA_PTR,
; 0488 VERSION;
; 0489
; 0490 !
; 0491 ! Create pointer to data supplied with connect request
; 0492 !
; 0493
; 0494 DATA_PTR = .CBLK[CB_DATA];
; 0495
; 0496 !
; 0497 ! Check for enough data available. If not, return
; 0498 ! Invalid Identification error.
; 0499 !
; 0500
; C 0501 %( N.B. - If no version number is provided then assume 2.0.0 and
; 0502 continue with checking. )%
; 0503
; 0504 if .CBLK[CB_DATA_LENGTH] lss 3
; L 0505 then return $NICE$ERR_IID ! Is this the right code to return ??
; %PRINT: Invalid identification
NMLRCV NMLRCV -- NICE Remote Message Receiver 24-May-1985 13:25:38 TOPS-20 Bliss-16 2A(530) Page 13
X03.11 CHECK_VERSION 3-Jan-1983 01:54:01 DNET61:<MCB.NML>NMLRCV.BLI.1 (6)
; 0506 else begin
; 0507
; 0508 !
; 0509 ! Check version number against ours, if it is older
; 0510 ! it is incompatible with us.
; 0511 !
; 0512
; 0513 VERSION = GETB (DATA_PTR);
; 0514 if .VERSION lss .NMLVER
; L 0515 then return $NICE$ERR_IMV
; %PRINT: Incompatible Management version
; 0516 else begin
; 0517
; 0518 !
; 0519 ! Check the Digital ECO number, if it is non-zero,
; 0520 ! it is incompatible with us.
; 0521 !
; 0522 ! VERSION = GETB (DATA_PTR);
; 0523 !
; 0524 ! if .VERSION gtr 0
; 0525 ! then return NICE$_IMV
; 0526 ! else return 0
; 0527 !
; 0528 ! For now accept any 2.x.y version of Network Management
; 0529 !
; 0530
; 0531 return 0;
; 0532 end
; 0533 end
; 0534
; 0535 end; ! End of CHECK_VERSION
.SBTTL CHECK.VERSION CHECK_VERSION
000000 010146 CHECK.VERSION:
MOV R1,-(SP) ; 0455
000002 016500 000002 MOV 2(R5),R0 ; *(PB),* 0494
000006 016001 000016 MOV 16(R0),R1 ; *,DATA.PTR
000012 026027 000020 000003 CMP 20(R0),#3 ; 0504
000020 002003 BGE 1$
000022 012700 177767 MOV #-11,R0
000026 000411 BR 3$
000030 005000 1$: CLR R0 ; VERSION 0513
000032 152100 BISB (R1)+,R0 ; DATA.PTR,VERSION
000034 020067 000000G CMP R0,NMLVER ; VERSION,* 0514
000040 002003 BGE 2$
000042 012700 177771 MOV #-7,R0
000046 000401 BR 3$
000050 005000 2$: CLR R0
000052 012601 3$: MOV (SP)+,R1 ; 0455
000054 000207 RTS PC
; Routine Size: 23 words, Routine Base: $CODE$ + 0364
NMLRCV NMLRCV -- NICE Remote Message Receiver 24-May-1985 13:25:38 TOPS-20 Bliss-16 2A(530) Page 14
X03.11 CHECK_VERSION 3-Jan-1983 01:54:01 DNET61:<MCB.NML>NMLRCV.BLI.1 (6)
; Maximum stack depth per invocation: 2 words
NMLRCV NMLRCV -- NICE Remote Message Receiver 24-May-1985 13:25:38 TOPS-20 Bliss-16 2A(530) Page 15
X03.11 READ_NICE_REQUEST 3-Jan-1983 01:54:01 DNET61:<MCB.NML>NMLRCV.BLI.1 (7)
; 0536 %routine ('READ_NICE_REQUEST', PB : ref PARAMETER_BLOCK) : NML_LKG_PB novalue =
; 0537
; 0538 !++
; 0539 ! FUNCTIONAL DESCRIPTION:
; 0540 !
; 0541 ! This routine performs the NICE request receive function on
; 0542 ! a logical link that has already been opened. The looping
; 0543 ! continues until the task at the other end of the link closes
; 0544 ! it (or some other nefarious glitch takes it down).
; 0545 !
; 0546 ! FORMAL PARAMETERS
; 0547 !
; 0548 ! PB - Parameter block
; 0549 !
; 0550 ! IMPLICIT INPUTS
; 0551 !
; 0552 ! NONE.
; 0553 !
; 0554 ! ROUTINE VALUE:
; 0555 !
; 0556 ! NONE.
; 0557 !
; 0558 ! SIDE EFFECTS:
; 0559 !
; 0560 ! NONE.
; 0561 !
; 0562 !--
; 0563
; 0564 begin
; 0565
; 0566 while $true ! Loop through reading NICE requests
; 0567 do begin ! as long as link stays up.
; 0568
; 0569 local
; 0570 BYTE_COUNT, ! Received NICE request message length
; 0571 REQ : ref REQUEST_BLOCK;
; 0572
; 0573 !
; 0574 ! Allocate storage for NICE request block
; 0575 !
; 0576
; 0577 REQ = NMU$MEMORY_GET (REQUEST_BLOCK_ALLOCATION);
; 0578 REQ[RB_EXECUTOR] = 0; ! Initialize to process locally
; 0579 REQ[RB_DATA] = .PB [PB_LINK_HANDLE]; ! Save link id
; 0580 REQ[RB_DATA_ALLOCATION] = 0; ! No block allocated
; 0581
; 0582 REQ[RB_PRV_READ] = $true; ! Set privledges.
; 0583
; 0584 if .PB [PB_ACCESS] gtr 0
; 0585 then
; 0586 begin
; 0587 REQ[RB_PRV_SYSTEM] = $true;
NMLRCV NMLRCV -- NICE Remote Message Receiver 24-May-1985 13:25:38 TOPS-20 Bliss-16 2A(530) Page 16
X03.11 READ_NICE_REQUEST 3-Jan-1983 01:54:01 DNET61:<MCB.NML>NMLRCV.BLI.1 (7)
; 0588 REQ[RB_PRV_SERVICE] = $true;
; 0589 REQ[RB_PRV_TEST] = $true;
; 0590 REQ[RB_PRV_CHANGE] = $true;
; 0591 end;
; 0592
; 0593 ! Get a buffer for the NICE message and store its address
; 0594
; 0595 REQ[RB_NICE_ALLOCATION] = NICE_BUFFER_ALLOCATION; ! Units allocated
; 0596 REQ[RB_NICE] = NMU$MEMORY_GET (.REQ[RB_NICE_ALLOCATION]);
; 0597 REQ[RB_NICE_POINTER] = ch$ptr (.REQ[RB_NICE],0,8);
; 0598
; 0599 ! Attempt to read a NICE request message
; 0600
; 0601 BYTE_COUNT = NMU$NETWORK_READ (.PB [PB_LINK_HANDLE],
; 0602 NICE_BUFFER_LENGTH,
; 0603 .REQ[RB_NICE_POINTER]);
; 0604
; 0605 ! Check if we received a message, or read completed for some
; 0606 ! other reason. (Maybe the link was disconnected.)
; 0607
; 0608 if .BYTE_COUNT gtr 0 ! Put the NICE request on the queue
; 0609 then begin ! to be processed.
; 0610 REQ[RB_NICE_LENGTH] = .BYTE_COUNT;
; 0611 REQ[RB_COMPLETION] = DEQUEUE_REQUEST; ! Completion routine
; 0612
; 0613 !
; 0614 ! Enter the request into the NICE request queue.
; 0615 !
; 0616
; 0617 NML$REQUEST_ENTER (.REQ); ! Enter request in queue
; 0618 end
; 0619 else begin
; 0620
; 0621 ! The link has been disconnected. Release the NICE buffer and
; 0622 ! and and indicate no longer connected.
; 0623
; 0624 REQ[RB_STATE] = RB$DONE;
; 0625 DEQUEUE_REQUEST (.REQ);
; 0626 exitloop;
; 0627 end;
; 0628 end;
; 0629
; 0630 end; ! End of READ_NICE_REQUEST
.SBTTL READ.NICE.REQUEST READ_NICE_REQUEST
000000 010146 READ.NICE.REQUEST:
MOV R1,-(SP) ; 0536
000002 012746 000124 1$: MOV #124,-(SP) ; 0577
000006 004767 000000G JSR PC,UM.GET
000012 010001 MOV R0,R1 ; *,REQ
000014 005061 000040 CLR 40(R1) ; *(REQ) 0578
NMLRCV NMLRCV -- NICE Remote Message Receiver 24-May-1985 13:25:38 TOPS-20 Bliss-16 2A(530) Page 17
X03.11 READ_NICE_REQUEST 3-Jan-1983 01:54:01 DNET61:<MCB.NML>NMLRCV.BLI.1 (7)
000020 011561 000046 MOV (R5),46(R1) ; PB,*(REQ) 0579
000024 005061 000050 CLR 50(R1) ; *(REQ) 0580
000030 012700 000076 MOV #76,R0 ; 0582
000034 060100 ADD R1,R0 ; REQ,*
000036 052710 020000 BIS #20000,(R0)
000042 105765 000010 TSTB 10(R5) ; *(PB) 0584
000046 003402 BLE 2$
000050 052710 017000 BIS #17000,(R0) ; 0590
000054 012761 000454 000032 2$: MOV #454,32(R1) ; *,*(REQ) 0595
000062 012716 000454 MOV #454,(SP) ; 0596
000066 004767 000000G JSR PC,UM.GET
000072 010061 000024 MOV R0,24(R1) ; *,*(REQ)
000076 010061 000066 MOV R0,66(R1) ; *,*(REQ) 0597
000102 011516 MOV (R5),(SP) ; PB,* 0601
000104 012746 000454 MOV #454,-(SP)
000110 010046 MOV R0,-(SP)
000112 004767 000000G JSR PC,UN.READ
000116 005700 TST R0 ; BYTE.COUNT 0608
000120 003411 BLE 3$
000122 010061 000030 MOV R0,30(R1) ; BYTE.COUNT,*(REQ) 0610
000126 012761 000000V 000044 MOV #DEQUEUE.REQUEST,44(R1) ; *,*(REQ) 0611
000134 010116 MOV R1,(SP) ; REQ,* 0617
000136 004767 000000G JSR PC,NL.RENTER
000142 000411 BR 4$ ; 0608
000144 012761 000003 000022 3$: MOV #3,22(R1) ; *,*(REQ) 0624
000152 010116 MOV R1,(SP) ; REQ,* 0625
000154 004767 000000V JSR PC,DEQUEUE.REQUEST
000160 062706 000006 ADD #6,SP ; 0626
000164 000403 BR 5$
000166 062706 000006 4$: ADD #6,SP ; 0567
000172 000703 BR 1$ ; 0566
000174 012601 5$: MOV (SP)+,R1 ; 0536
000176 000207 RTS PC
; Routine Size: 64 words, Routine Base: $CODE$ + 0442
; Maximum stack depth per invocation: 5 words
NMLRCV NMLRCV -- NICE Remote Message Receiver 24-May-1985 13:25:38 TOPS-20 Bliss-16 2A(530) Page 18
X03.11 DEQUEUE_REQUEST 3-Jan-1983 01:54:01 DNET61:<MCB.NML>NMLRCV.BLI.1 (8)
; 0631 %routine ('DEQUEUE_REQUEST', REQ) : novalue =
; 0632
; 0633 !++
; 0634 ! FUNCTIONAL DESCRIPTION:
; 0635 !
; 0636 ! This routine handles the completion processing of remote NICE
; 0637 ! requests when called by the NML request queue manager. It transmits
; 0638 ! the NICE repsonse message back to the requestor and releases
; 0639 ! all resources obtained when the request was created.
; 0640 !
; 0641 ! FORMAL PARAMETERS
; 0642 !
; 0643 ! REQ - Address of the NML Request Block.
; 0644 !
; 0645 ! IMPLICIT INPUTS
; 0646 !
; 0647 ! NONE.
; 0648 !
; 0649 ! ROUTINE VALUE:
; 0650 !
; 0651 ! NONE.
; 0652 !
; 0653 ! SIDE EFFECTS:
; 0654 !
; 0655 ! NONE.
; 0656 !
; 0657 !--
; 0658
; 0659 begin
; 0660
; 0661 map
; 0662 REQ: ref REQUEST_BLOCK;
; 0663
; 0664 if .REQ[RB_RESPONSE] neq 0
; 0665 then begin
; 0666
; 0667 !
; 0668 ! Attempt to transmit the NICE response message back to requestor.
; 0669 !
; 0670
; 0671 NMU$NETWORK_WRITE (.REQ[RB_DATA], ! Contains the link id
; 0672 $TRUE, ! Complete message
; 0673 .REQ[RB_RESPONSE_LENGTH], ! Message length in bytes
; 0674 ch$ptr (.REQ[RB_RESPONSE],,8)); ! NICE response pointer
; 0675 end;
; 0676
; 0677 !
; 0678 ! Release all memory resources when done.
; 0679 !
; 0680
; 0681 if .REQ[RB_STATE] eql RB$DONE
; 0682 then begin
NMLRCV NMLRCV -- NICE Remote Message Receiver 24-May-1985 13:25:38 TOPS-20 Bliss-16 2A(530) Page 19
X03.11 DEQUEUE_REQUEST 3-Jan-1983 01:54:01 DNET61:<MCB.NML>NMLRCV.BLI.1 (8)
; 0683 if .REQ[RB_NICE_ENTITY_ADR] neq 0 ! Release node id buffer
; 0684 then NMU$MEMORY_RELEASE (.REQ[RB_NICE_ENTITY_ADR],
; 0685 NODE_ID_BUFFER_ALLOCATION);
; 0686 if .REQ[RB_NICE] neq 0
; 0687 then NMU$MEMORY_RELEASE (.REQ[RB_NICE], .REQ[RB_NICE_ALLOCATION]);
; 0688 if .REQ[RB_RESPONSE] neq 0
; 0689 then NMU$MEMORY_RELEASE (.REQ[RB_RESPONSE], .REQ[RB_RESPONSE_ALLOCATION]);
; 0690 NMU$MEMORY_RELEASE (.REQ, REQUEST_BLOCK_ALLOCATION);
; 0691 end;
; 0692
; 0693 end; ! End of DEQUEUE_REQUEST
.SBTTL DEQUEUE.REQUEST DEQUEUE_REQUEST
000000 004167 000000G DEQUEUE.REQUEST:
JSR R1,$SAVE3 ; 0631
000004 016601 000012 MOV 12(SP),R1 ; REQ,* 0664
000010 016102 000026 MOV 26(R1),R2
000014 005003 CLR R3
000016 005702 TST R2
000020 001414 BEQ 1$
000022 005203 INC R3
000024 016146 000046 MOV 46(R1),-(SP) ; 0671
000030 012746 000001 MOV #1,-(SP)
000034 016146 000034 MOV 34(R1),-(SP)
000040 010246 MOV R2,-(SP)
000042 004767 000000G JSR PC,UN.WRITE
000046 062706 000010 ADD #10,SP ; 0665
000052 026127 000022 000003 1$: CMP 22(R1),#3 ; 0681
000060 001040 BNE 5$
000062 016100 000100 MOV 100(R1),R0 ; 0683
000066 001406 BEQ 2$
000070 010046 MOV R0,-(SP) ; 0684
000072 012746 000012 MOV #12,-(SP)
000076 004767 000000G JSR PC,UM.RELEASE
000102 022626 CMP (SP)+,(SP)+
000104 016100 000024 2$: MOV 24(R1),R0 ; 0686
000110 001406 BEQ 3$
000112 010046 MOV R0,-(SP) ; 0687
000114 016146 000032 MOV 32(R1),-(SP)
000120 004767 000000G JSR PC,UM.RELEASE
000124 022626 CMP (SP)+,(SP)+
000126 006003 3$: ROR R3 ; 0688
000130 103006 BCC 4$
000132 010246 MOV R2,-(SP) ; 0689
000134 016146 000036 MOV 36(R1),-(SP)
000140 004767 000000G JSR PC,UM.RELEASE
000144 022626 CMP (SP)+,(SP)+
000146 010146 4$: MOV R1,-(SP) ; 0690
000150 012746 000124 MOV #124,-(SP)
000154 004767 000000G JSR PC,UM.RELEASE
000160 022626 CMP (SP)+,(SP)+ ; 0682
NMLRCV NMLRCV -- NICE Remote Message Receiver 24-May-1985 13:25:38 TOPS-20 Bliss-16 2A(530) Page 20
X03.11 DEQUEUE_REQUEST 3-Jan-1983 01:54:01 DNET61:<MCB.NML>NMLRCV.BLI.1 (8)
000162 000207 5$: RTS PC ; 0631
; Routine Size: 58 words, Routine Base: $CODE$ + 0642
; Maximum stack depth per invocation: 9 words
; 0694 end ! End of Module NMLRCV
; 0695 eludom
; OTS external references
.GLOBL $SAVE3
; PSECT SUMMARY
;
; Psect Name Words Attributes
; $CODE$ 267 RO , I , LCL, REL, CON
; LIBRARY STATISTICS
;
; -------- Symbols -------- Blocks
; File Total Loaded Percent Read
;
; DNET61:<MCB.NML>NMLLIB.L16.2 2718 180 6 0
; 0696 ! Local Modes:
; 0697 ! Mode:BLISS
; 0698 ! Auto Save Mode:2
; 0699 ! Comment Column:40
; 0700 ! Comment Rounding:+1
; 0701 ! End:
; Size: 267 code + 0 data words
; Run Time: 00:08.2
; Elapsed Time: 00:12.5
; Memory Used: 44 pages
; Compilation Complete
BLISS16 231
BUFFER 338 346
BUFFER_PTR 337 347# 348 349 350 351
BYTE_COUNT 570 601# 608 610
CBLK 401 407 408# 409# 410# 411# 412# 413# 414# 415# 424 433
484# 494 504
CB_ACCOUNT_LENGTH 414
CB_DATA 494
CB_DATA_LENGTH 415 504
CB_DESCRIPTOR_LENGTH 410
CB_HOST_LENGTH 411
CB_OBJECT 408
CB_PASSWORD_LENGTH 413
CB_TASK_LENGTH 409
CB_USERID_LENGTH 412
CH$SEQUENCE 338
CHECK_VERSION 241 431
CONNECT_BLOCK 401 484
DATA_PTR 487 494# 513
DECECO 299 349
DEQUEUE_REQUEST 243 611 625
DUMMY 200+ 202+ 203+
FIELDS 262
GETB 513
LITERALS 263
NICE_BUFFER_ALLOCATION 256# 595
NICE_BUFFER_LENGTH 254# 255 602
NICE_BUFFER_SIZE 255# 256
NICE_OBJECT 345
NML$RECEIVE_NICE 237
NML$REQUEST_ENTER 617
NML$REQUEST_MANAGER 216+
NMLRCV 73#
NMLVER 298 348 514
NML_LKG_PB 232# 233# 240 241 242 367# 455# 536#
NMU$MEMORY_GET 577 596
NMU$MEMORY_MANAGER 214+
NMU$MEMORY_RELEASE 684 687 689 690
NMU$NETWORK_ACCEPT 434
NMU$NETWORK_CLOSE 363 446
NMU$NETWORK_OPEN 424
NMU$NETWORK_READ 601
NMU$NETWORK_REJECT 442
NMU$NETWORK_UTILITIES 295*
NMU$NETWORK_VALIDATE 433
NMU$NETWORK_WRITE 671
NMU$QUEUE_MANAGER 215+
NMU$SCHED_MANAGER 213+*
NODE_ID_BUFFER_ALLOCATION 685
NONE 284
PARAMETER_BLOCK_ALLOCATION 279#
PARAMETER_BLOCK_SIZE 278# 282
PARAMETER_BLOCK 282# 335 367 455 536
PARAMETER_FIELDS 266# 282
PB 335 345# 346# 347 351# 357 363 367 407# 408 424# 430
431 433# 434 442 446 453 455 484 536 579 584 601
PBA 336 357# 361 362
PB_ACCESS 273# 433 584
PB_BASE 268# 357 431
PB_CBLK 270# 407 484
PB_LINK_HANDLE 269# 363 424 430 434 442 446 453 579 601
PB_OBJECT 274# 345 408
PB_OPTD_CNT 272# 351 434
PB_OPTD_PTR 271# 346 347 351 434
PUTB 348 349 350
RB$DONE 624 681
RB_COMPLETION 611
RB_DATA 579 671
RB_DATA_ALLOCATION 580
RB_EXECUTOR 578
RB_NICE 596 597 686 687
RB_NICE_ALLOCATION 595 596 687
RB_NICE_ENTITY_ADR 683 684
RB_NICE_LENGTH 610
RB_NICE_POINTER 597 603
RB_PRV_CHANGE 590
RB_PRV_READ 582
RB_PRV_SERVICE 588
RB_PRV_SYSTEM 587
RB_PRV_TEST 589
RB_RESPONSE 664 674 688 689
RB_RESPONSE_ALLOCATION 689
RB_RESPONSE_LENGTH 673
RB_STATE 624 681
READ_NICE_REQUEST 242 362
REASON 421 423# 431# 441
REJECT_BUFFER 438 440 445
REJECT_PTR 438 440# 441
REQ 571 577# 578# 579# 580# 582# 587# 588# 589# 590# 595# 596#
597# 603 610# 611# 617 624# 625 631 662 664 671 673
674 681 683 684 686 687 688 689 690
REQUEST_BLOCK 571 662
REQUEST_BLOCK_ALLOCATION 577 690
RESOURCE 301
SC$_ANP 443
TARGET_LINK 424
TASK 301
TASK_INFO 188+
USRECO 300 350
VERSION 488 513# 514
WAIT_FOR_CONNECT 240 361
$ADDRESS 270
$BYTE 274
$FALSE 189+
$FIELD 265
$FIELD_SET_SIZE 278
$FIELD_SET_UNITS 279
$INCOMPLETE$ 200+#
$INTERNAL_ERROR$ 185+#
$NICE$ERR_IID 505
$NICE$ERR_IMV 515
$NICE$ERR_OPF 205+
$POINTER 271
$SHORT_INTEGER 269 272
$SHOW 262 263 284
$SUB_BLOCK 268
$TINY_INTEGER 273
$TRUE 359 417 566 582 587 588 589 590 672
%GLOBAL_ROUTINE 301#
%REMAINING 188+
%ROUTINE 367 455 536 631#