Trailing-Edge
-
PDP-10 Archives
-
BB-R595B-SM_11-9-85
-
mcb/sc/scsub.lst
There is 1 other file named scsub.lst in the archive. Click here to see a list.
SCSUB 25-Jan-1983 10:20:59 TOPS-20 Bliss-16 2A(530) Page 1
30-Dec-1982 20:59:22 NETPKG:<SC>SCSUB.BLI.11 (1)
; 0001 module SCSUB ( ! Session Control Subroutines
; 0002 ident = 'X01250'
; 0003 ) =
; 0004 begin
; 0005
; 0006 !
; 0007 ! COPYRIGHT (c) 1980, 1981, 1982
; 0008 ! DIGITAL EQUIPMENT CORPORATION
; 0009 ! Maynard, Massachusetts
; 0010 !
; 0011 ! This software is furnished under a license and may be used
; 0012 ! and copied only in accordance with the terms of such license
; 0013 ! and with the inclusion of the above copyright notice. This
; 0014 ! software or any other copies thereof may not be provided or
; 0015 ! otherwise made available to any other person. No title to
; 0016 ! and ownership of the software is hereby transferred.
; 0017 !
; 0018 ! The information in this software is subject to change
; 0019 ! without notice and should not be construed as a commitment
; 0020 ! by DIGITAL EQUIPMENT CORPORATION.
; 0021 !
; 0022 ! DIGITAL assumes no responsibility for the use or reliability
; 0023 ! of its software on equipment which is not supplied by
; 0024 ! DIGITAL.
; 0025 !
; 0026
; 0027 !++
; 0028 !
; 0029 ! FACILITY: Session Control
; 0030 !
; 0031 ! ABSTRACT: Support subroutines for the MCB Session Control
; 0032 !
; 0033 ! ENVIRONMENT: MCB
; 0034 !
; 0035 ! AUTHOR: Buren Hoffman CREATION DATE: 24-Jun-80
; 0036 !
; 0037 ! MODIFIED BY:
; 0038 ! X01010 Changed code to use $byt_ptr macro in place of the
; 0039 ! ch$ptr macro.
; 0040 ! X01020 Fixed mapping problem in CONBKI.
; 0041 ! X01030 Provided error recording byte pointer in CONBKI.
; 0042 ! X01040 Fixed improper reference to byte value in CONBKI, and
; 0043 ! corrected dot bug in FINDOB.
; 0044 ! X01050 Incorporated I$OPN routine.
; 0045 ! X01060 Fixed logic problems in CONBKI and CONBKO.
; 0046 ! X01070 CONBKI was storing PIX in wrong location.
; 0047 ! X01080 Fixed error where buffer length was not being set
; 0048 ! on incoming connects.
; 0049 ! X01090 Install new FINDOB routine to allow mapping of named
; 0050 ! processes on incoming connects.
; 0051 ! X01100 Removed old external reference to previous mapping table.
; 0052 ! X01110 Fixed mapping bug in new FINDOB routine.
SCSUB 25-Jan-1983 10:20:59 TOPS-20 Bliss-16 2A(530) Page 2
X01250 30-Dec-1982 20:59:22 NETPKG:<SC>SCSUB.BLI.11 (1)
; 0053 ! X01120 CONBKI wasn't releasing memory on error condition.
; 0054 ! X01130 Fixed mapping bug in CONBKI.
; 0055 ! X01140 Improved documentation, and added info on SIGNAL_STOPs
; 0056 ! X01150 Bias was not being set for connect block buffer sent to user
; 0057 ! X01160 Mods to support new Network Management interface.
; 0058 ! X01170 Use new Comm/Exec to process linkage (.CRDAT for database)
; 0059 ! X01180 Updated to use library calls, instead of requires.
; 0060 ! X01190 Fixed bug in decimal to ascii conversion (CNVDA$).
; 0061 ! X01200 Put routines into alphabetical order
; 0062 ! X01210 Changed STKCCB to pass along user-provided chain of CCBs.
; 0063 ! X01220 Cleaned up node-finding in FINDND
; 0064 ! X01230 Cleanup of CNVAD$ routine
; 0065 ! X01240 Optimization work
; 0066 ! x01250 add range check code to FINDND
; 0067 !--
SCSUB 25-Jan-1983 10:20:59 TOPS-20 Bliss-16 2A(530) Page 3
X01250 30-Dec-1982 20:59:22 NETPKG:<SC>SCSUB.BLI.11 (2)
; 0068 !
; 0069 ! INCLUDE FILES:
; 0070 !
; 0071 library 'SCPRM'; ! Our parameter and macro definitions
; 0072 library 'MCB:MCBLIB';
; 0073 library 'MCB:RSXLIB';
; 0074 library 'MCB:XPORTX';
; 0075 library 'MCB:SCSYS';
; 0076
; 0077 require 'NSP:NSINFO';
; 0189
; 0190 !
; 0191 ! TABLE OF CONTENTS:
; 0192 !
; 0193 forward routine
; 0194 CNVAD$, ! Convert ASCII to decimal
; 0195 CNVDA$: novalue, ! Convert decimal to ASCII
; 0196 CONBKI, ! Do connect data translation
; 0197 CONBKO, ! ...
; 0198 DO_RCP: linkage_ccb novalue, ! Do RCP processing
; 0199 DO_XME: linkage_ccb novalue, ! Do XME processing
; 0200 DST_SRC_I, ! Validate dest/src object descriptors
; 0201 DST_SRC_O, ! (same, except for outgoing)
; 0202 FINDLL, ! Find available logical link
; 0203 FINDND, ! Find node address
; 0204 FINDOB, ! Find specified object type
; 0205 I$CLS: novalue, ! Close a port
; 0206 I$OPN: novalue, ! Open a port
; 0207 STKCCB: novalue, ! Stack CCBs and set C_BUF
; 0208 STSMAP; ! Map from NSP to SC status
; 0209
; 0210 !
; 0211 ! MACROS:
; 0212 !
; 0213 !
; 0214 ! EQUATED SYMBOLS:
; 0215 !
; 0216 literal ! MENU word in connect message
; 0217 U_INFO = 1, ! USRID, PASSWD, and ACCNT info
; 0218 U_DATA = 2; ! Optional data
; 0219
; 0220 !
; 0221 ! OWN STORAGE:
; 0222 !
; 0223
; 0224 !
; 0225 ! EXTERNAL REFERENCES:
; 0226 !
SCSUB 25-Jan-1983 10:20:59 TOPS-20 Bliss-16 2A(530) Page 4
X01250 30-Dec-1982 20:59:22 NETPKG:<SC>SCSUB.BLI.11 (3)
; 0227 global routine CNVAD$ (PTR , LEN) =
; 0228
; 0229 !++
; 0230 ! FUNCTIONAL DESCRIPTION:
; 0231 ! This routine converts a decimal ASCII field to binary.
; 0232 ! If a non-numeric character, other than a blank or null
; 0233 ! is found, zero is returned. A blank or null terminates
; 0234 ! the conversion.
; 0235 !
; 0236 ! FORMAL PARAMETERS:
; 0237 ! PTR = String pointer to the field
; 0238 ! LEN = Length of the field
; 0239 !
; 0240 ! IMPLICIT INPUTS:
; 0241 ! None
; 0242 !
; 0243 ! ROUTINE VALUE:
; 0244 ! Numeric value, or zero if non-numeric
; 0245 !
; 0246 ! COMPLETION CODES:
; 0247 ! SIDE EFFECTS:
; 0248 ! None
; 0249 !--
; 0250
; 0251 begin
; 0252 local
; 0253 DIGIT, VALUE;
; 0254 register
; 0255 P;
; 0256
; 0257 VALUE = 0;
; 0258 P = .PTR;
; 0259
; 0260 incr I from 1 to .LEN do
; 0261 begin
; 0262 DIGIT = ch$rchar_a (P);
; 0263 if (.DIGIT eql 0) or (.DIGIT eql %c' ') then return .VALUE;
; 0264 if (.DIGIT geq %c'0') and (.DIGIT leq %c'9')
; 0265 then VALUE = (.VALUE * 10) + .DIGIT - %c'0'
; 0266 else return 0
; 0267 end;
; 0268
; 0269 return .VALUE
; 0270 end;
.TITLE SCSUB
.IDENT /X01250/
.SBTTL CNVAD$
000000 .PSECT $CODE$, RO
SCSUB 25-Jan-1983 10:20:59 TOPS-20 Bliss-16 2A(530) Page 5
X01250 30-Dec-1982 20:59:22 NETPKG:<SC>SCSUB.BLI.11 (3)
000000 004167 000000G CNVAD$::JSR R1,$SAVE4 ; 0227
000004 005004 CLR R4 ; VALUE 0257
000006 016600 000016 MOV 16(SP),R0 ; PTR,P 0258
000012 005003 CLR R3 ; I 0260
000014 000424 BR 2$
000016 005002 1$: CLR R2 ; DIGIT 0262
000020 152002 BISB (R0)+,R2 ; P,DIGIT
000022 005702 TST R2 ; DIGIT 0263
000024 001424 BEQ 3$
000026 020227 000040 CMP R2,#40 ; DIGIT,*
000032 001421 BEQ 3$
000034 020227 000060 CMP R2,#60 ; DIGIT,* 0264
000040 002420 BLT 4$
000042 020227 000071 CMP R2,#71 ; DIGIT,*
000046 003015 BGT 4$
000050 010401 MOV R4,R1 ; VALUE,* 0265
000052 070127 000012 MUL #12,R1
000056 060201 ADD R2,R1 ; DIGIT,*
000060 010104 MOV R1,R4 ; *,VALUE
000062 162704 000060 SUB #60,R4 ; *,VALUE
000066 005203 2$: INC R3 ; I 0260
000070 020366 000014 CMP R3,14(SP) ; I,LEN
000074 003750 BLE 1$
000076 010400 3$: MOV R4,R0 ; VALUE,* 0251
000100 000207 RTS PC
000102 005000 4$: CLR R0 ; 0227
000104 000207 RTS PC
; Routine Size: 35 words, Routine Base: $CODE$ + 0000
; Maximum stack depth per invocation: 6 words
SCSUB 25-Jan-1983 10:20:59 TOPS-20 Bliss-16 2A(530) Page 6
X01250 30-Dec-1982 20:59:22 NETPKG:<SC>SCSUB.BLI.11 (4)
; 0271 global routine CNVDA$ (NUM, PTR): novalue =
; 0272
; 0273 !++
; 0274 ! FUNCTIONAL DESCRIPTION:
; 0275 ! This routine converts a decimal integer to ASCII.
; 0276 !
; 0277 ! FORMAL PARAMETERS:
; 0278 ! NUM = Decimal positive integer
; 0279 ! PTR = Address of string pointer
; 0280 !
; 0281 ! IMPLICIT INPUTS:
; 0282 ! None
; 0283 !
; 0284 ! ROUTINE VALUE:
; 0285 ! COMPLETION CODES:
; 0286 ! None
; 0287 !
; 0288 ! SIDE EFFECTS:
; 0289 ! None
; 0290 !--
; 0291
; 0292 begin
; 0293 local
; 0294 DIGIT;
; 0295
; 0296 DIGIT = (.NUM mod 10) + %c'0';
; 0297 NUM = .NUM / 10;
; 0298 if .NUM gtr 0 then CNVDA$ (.NUM, .PTR);
; 0299 ch$wchar_a (.DIGIT, .PTR)
; 0300 end;
.SBTTL CNVDA$
000000 004167 000000G CNVDA$::JSR R1,$SAVE2 ; 0271
000004 016601 000012 MOV 12(SP),R1 ; NUM,* 0296
000010 006700 SXT R0
000012 071027 000012 DIV #12,R0
000016 010102 MOV R1,R2 ; *,DIGIT
000020 062702 000060 ADD #60,R2 ; *,DIGIT
000024 016601 000012 MOV 12(SP),R1 ; NUM,* 0297
000030 006700 SXT R0
000032 071027 000012 DIV #12,R0
000036 010066 000012 MOV R0,12(SP) ; *,NUM
000042 003406 BLE 1$ ; 0298
000044 010046 MOV R0,-(SP)
000046 016646 000012 MOV 12(SP),-(SP) ; PTR,*
000052 004767 177722 JSR PC,CNVDA$
000056 022626 CMP (SP)+,(SP)+
000060 017600 000010 1$: MOV @10(SP),R0 ; PTR,* 0299
000064 110210 MOVB R2,(R0) ; DIGIT,*
000066 005276 000010 INC @10(SP) ; PTR
000072 000207 RTS PC ; 0271
SCSUB 25-Jan-1983 10:20:59 TOPS-20 Bliss-16 2A(530) Page 7
X01250 30-Dec-1982 20:59:22 NETPKG:<SC>SCSUB.BLI.11 (4)
; Routine Size: 30 words, Routine Base: $CODE$ + 0106
; Maximum stack depth per invocation: 6 words
SCSUB 25-Jan-1983 10:20:59 TOPS-20 Bliss-16 2A(530) Page 8
X01250 30-Dec-1982 20:59:22 NETPKG:<SC>SCSUB.BLI.11 (5)
; 0301 global routine CONBKI (CCB, LCCB, LNK) =
; 0302
; 0303 !++
; 0304 ! FUNCTIONAL DESCRIPTION:
; 0305 ! Process incoming connect message.
; 0306 !
; 0307 ! FORMAL PARAMETERS:
; 0308 ! CCB CCB which owns received message
; 0309 ! LCCB CCB which owns connect block
; 0310 ! LNK Logical link block in use
; 0311 !
; 0312 ! IMPLICIT INPUTS:
; 0313 ! LLT mapped
; 0314 !
; 0315 ! IMPLICIT OUTPUTS:
; 0316 ! Connect block built in LCCB [C_BUF]
; 0317 ! LNK [C_PIX] set for destination process
; 0318 !
; 0319 ! ROUTINE VALUE:
; 0320 ! True, if successful
; 0321 ! False, if failure
; 0322 !
; 0323 ! COMPLETION CODES:
; 0324 ! LCCB [C_PRM1] set for error xmission
; 0325 !
; 0326 ! SIDE EFFECTS:
; 0327 ! None
; 0328 !--
; 0329 begin
; 0330 $sc_get_data_base (SCDB);
; 0331 map
; 0332 CCB: ref block field (C_FIELDS),
; 0333 LCCB: ref block field (C_FIELDS),
; 0334 LNK: ref block field (LLT_FIELDS);
; 0335 local
; 0336 PTR,
; 0337 EPTR,
; 0338 ERR,
; 0339 MENU;
; 0340 bind
; 0341 CB = LCCB [C_ADDR]: ref block field (CB_FIELDS),
; 0342 NMT = SCDB [SC_NMT_ADDR]: ref blockvector [, NMT_SIZE] field (NMT_FIELDS);
; 0343 label
; 0344 CBE;
; 0345
; 0346 EPTR = byt$ptr (LCCB [C_PRM1]); ! This is where to write code
; 0347 if not $MCB_GET_DSR (CB_SIZE*bytes_word, CB) ! Get connect block memory
; 0348 then
; 0349 begin ! No luck, so grouse a bit
; 0350 byt$short_string (uplit (-S_ERES), EPTR);
; 0351 return false
; 0352 end;
SCSUB 25-Jan-1983 10:20:59 TOPS-20 Bliss-16 2A(530) Page 9
X01250 30-Dec-1982 20:59:22 NETPKG:<SC>SCSUB.BLI.11 (5)
; 0353
; 0354 LCCB [C_BIAS] = 0;
; 0355 ch$fill (0, CB_SIZE*bytes_word, .CB); ! Clear block to zeroes
; 0356 MAP$ (.SCDB [SC_NMT_BIAS]); ! Look at node mapping table
; 0357 PTR = byt$ptr (NMT [.CCB [C_PRM1], NMT_NAME]); ! Examine subject name
; 0358 if ch$rchar (.PTR) neq 0 ! If a name is defined,
; 0359 then ch$move (6, .PTR, byt$ptr (CB [CB_NODE])) ! then move it to CB
; 0360 else
; 0361 begin
; 0362 PTR = byt$ptr (CB [CB_NODE]); ! Undefined, concoct a
; 0363 CNVDA$ (.CCB [C_PRM1], PTR); ! name from number
; 0364 ch$fill (%c' ', 6 - ch$diff (.PTR, byt$ptr (CB [CB_NODE])), .PTR)
; 0365 end;
; 0366
; 0367 MAP$ (.CCB [C_BIAS]); ! Look at connect message
; 0368 PTR = .CCB [C_ADDR]; ! ...
; 0369
; 0370 if not (DST_SRC_I (CB [CB_DFMT], PTR) and DST_SRC_I (CB [CB_SFMT], PTR))
; 0371 then ERR = -S_EIOF
; 0372 else ERR = CBE:
; 0373 begin
; 0374 MENU = ch$rchar_a (PTR); ! Get menu byte
; 0375
; 0376 if (.MENU and U_INFO) neq 0
; 0377 then
; 0378 begin
; 0379 if (CB [CB_RQDL] = ch$rchar_a (PTR)) gtr 16
; 0380 then leave CBE with -S_ECBE;
; 0381 ch$move (.CB [CB_RQDL], .PTR, CB [CB_RQID]);
; 0382 PTR = ch$plus (.PTR, .CB [CB_RQDL]);
; 0383 if (CB [CB_PASL] = ch$rchar_a (PTR)) gtr 8
; 0384 then leave CBE with -S_ECBE;
; 0385 ch$move (.CB [CB_PASL], .PTR, CB [CB_PASW]);
; 0386 PTR = ch$plus (.PTR, .CB [CB_PASL]);
; 0387 if (CB [CB_ACTL] = ch$rchar_a (PTR)) gtr 16
; 0388 then leave CBE with -S_ECBE;
; 0389 ch$move (.CB [CB_ACTL], .PTR, CB [CB_ACNT]);
; 0390 PTR = ch$plus (.PTR, .CB [CB_ACTL])
; 0391 end;
; 0392
; 0393 if (.MENU and U_DATA) neq 0
; 0394 then
; 0395 begin
; 0396 if (CB [CB_OPDL] = ch$rchar_a (PTR)) gtr 16
; 0397 then leave CBE with -S_ECBE;
; 0398 ch$move (.CB [CB_OPDL], .PTR, CB [CB_OPTD]);
; 0399 PTR = ch$plus (.PTR, .CB [CB_OPDL])
; 0400 end;
; 0401
; 0402 S_SSUC
; 0403 end;
; 0404
SCSUB 25-Jan-1983 10:20:59 TOPS-20 Bliss-16 2A(530) Page 10
X01250 30-Dec-1982 20:59:22 NETPKG:<SC>SCSUB.BLI.11 (5)
; 0405 MAP$ (.SCDB [SC_LLT_BIAS]); ! Back to original mapping
; 0406
; 0407 if .ERR eql S_SSUC
; 0408 then
; 0409 begin
; 0410 local
; 0411 PIX;
; 0412 if not FINDOB (CB [CB_DFMT], PIX)
; 0413 then ERR = -S_EURO else LNK [L_PIX] = .PIX
; 0414 end;
; 0415
; 0416 byt$short_string (ERR, EPTR); ! Record the error code
; 0417
; 0418 if .ERR eql S_SSUC
; 0419 then
; 0420 begin
; 0421 LCCB [C_CNT] = CB_SIZE*bytes_word; ! Set connect block length
; 0422 return true
; 0423 end
; 0424 else
; 0425 begin
; 0426 $MCB_RETURN_DSR (CB_SIZE*bytes_word, .CB);
; 0427 return false
; 0428 end
; 0429 end;
000000 .PSECT $PLIT$, RO , D
000000 000001 P.AAA: .WORD 1
.GLOBL .CRDAT, $DSRGT, KISAR6, $DSRRT
.SBTTL CONBKI
000202 .PSECT $CODE$, RO
000000 004167 000000G CONBKI::JSR R1,$SAVE5 ; 0301
000004 162706 000006 SUB #6,SP
000010 016704 000002G MOV .CRDAT+2,R4 ; 0329
000014 016605 000026 MOV 26(SP),R5 ; LCCB,* 0341
000020 062705 000020 ADD #20,R5
000024 016646 000026 MOV 26(SP),-(SP) ; LCCB,EPTR 0346
000030 062716 000024 ADD #24,(SP) ; *,EPTR
000034 012701 000156 MOV #156,R1 ; 0347
000040 004767 000000G JSR PC,$DSRGT
000044 103402 BCS 1$
000046 010015 MOV R0,(R5) ; $MCB$R0,*
000050 000413 BR 2$
000052 016700 000000' 1$: MOV P.AAA,R0 ; *,NUM 0350
000056 110076 000000 MOVB R0,@0(SP) ; NUM,EPTR
SCSUB 25-Jan-1983 10:20:59 TOPS-20 Bliss-16 2A(530) Page 11
X01250 30-Dec-1982 20:59:22 NETPKG:<SC>SCSUB.BLI.11 (5)
000062 005216 INC (SP) ; EPTR
000064 000300 SWAB R0 ; NUM
000066 110076 000000 MOVB R0,@0(SP) ; NUM,EPTR
000072 005216 INC (SP) ; EPTR
000074 000167 001046 JMP 19$ ; 0349
000100 016600 000030 2$: MOV 30(SP),R0 ; LCCB,* 0354
000104 005060 000016 CLR 16(R0)
000110 005046 CLR -(SP) ; 0355
000112 012746 000156 MOV #156,-(SP)
000116 011546 MOV (R5),-(SP)
000120 004767 000000G JSR PC,BL$FIL
000124 016467 000050 000000G MOV 50(R4),KISAR6 ; 0356
000132 016602 000040 MOV 40(SP),R2 ; CCB,* 0357
000136 016201 000024 MOV 24(R2),R1
000142 070127 000014 MUL #14,R1
000146 066401 000052 ADD 52(R4),R1
000152 010166 000014 MOV R1,14(SP) ; *,PTR
000156 005266 000014 INC 14(SP) ; PTR
000162 016600 000014 MOV 14(SP),R0 ; PTR,* 0358
000166 105710 TSTB (R0)
000170 001407 BEQ 3$
000172 012716 000006 MOV #6,(SP) ; 0359
000176 010046 MOV R0,-(SP)
000200 011546 MOV (R5),-(SP)
000202 004767 000000G JSR PC,BL$MOV
000206 000426 BR 4$ ; 0358
000210 011566 000014 3$: MOV (R5),14(SP) ; *,PTR 0362
000214 016216 000024 MOV 24(R2),(SP) ; 0363
000220 012746 000016 MOV #16,-(SP)
000224 060616 ADD SP,(SP) ; PTR,*
000226 004767 177452 JSR PC,CNVDA$
000232 012716 000040 MOV #40,(SP) ; 0364
000236 011500 MOV (R5),R0
000240 166600 000016 SUB 16(SP),R0 ; PTR,*
000244 010046 MOV R0,-(SP)
000246 062716 000006 ADD #6,(SP)
000252 016646 000020 MOV 20(SP),-(SP) ; PTR,*
000256 004767 000000G JSR PC,BL$FIL
000262 005726 TST (SP)+ ; 0361
000264 016267 000016 000000G 4$: MOV 16(R2),KISAR6 ; 0367
000272 016266 000020 000020 MOV 20(R2),20(SP) ; *,PTR 0368
000300 011566 000014 MOV (R5),14(SP) ; 0370
000304 062766 000006 000014 ADD #6,14(SP)
000312 016616 000014 MOV 14(SP),(SP)
000316 012746 000022 MOV #22,-(SP)
000322 060616 ADD SP,(SP) ; PTR,*
000324 004767 000000V JSR PC,DST.SRC.I
000330 005726 TST (SP)+
000332 006000 ROR R0
000334 103013 BCC 5$
000336 011516 MOV (R5),(SP)
000340 062716 000032 ADD #32,(SP)
SCSUB 25-Jan-1983 10:20:59 TOPS-20 Bliss-16 2A(530) Page 12
X01250 30-Dec-1982 20:59:22 NETPKG:<SC>SCSUB.BLI.11 (5)
000344 012746 000022 MOV #22,-(SP)
000350 060616 ADD SP,(SP) ; PTR,*
000352 004767 000000V JSR PC,DST.SRC.I
000356 005726 TST (SP)+
000360 006000 ROR R0
000362 103403 BLO 6$
000364 012701 000005 5$: MOV #5,R1 ; *,ERR 0371
000370 000563 BR 11$ ; 0370
000372 005266 000020 6$: INC 20(SP) ; PTR 0374
000376 016600 000020 MOV 20(SP),R0 ; PTR,*
000402 005003 CLR R3 ; MENU
000404 156003 177777 BISB -1(R0),R3 ; *,MENU
000410 032703 000001 BIT #1,R3 ; *,MENU 0376
000414 001525 BEQ 9$
000416 011500 MOV (R5),R0 ; 0379
000420 012702 000056 MOV #56,R2
000424 060002 ADD R0,R2
000426 005266 000020 INC 20(SP) ; PTR
000432 016600 000020 MOV 20(SP),R0 ; PTR,*
000436 116012 177777 MOVB -1(R0),(R2)
000442 105062 000001 CLRB 1(R2)
000446 021227 000020 CMP (R2),#20
000452 003130 BGT 10$ ; 0380
000454 011216 MOV (R2),(SP) ; 0381
000456 010046 MOV R0,-(SP) ; PTR,*
000460 011546 MOV (R5),-(SP)
000462 062716 000060 ADD #60,(SP)
000466 004767 000000G JSR PC,BL$MOV
000472 061266 000024 ADD (R2),24(SP) ; *,PTR 0382
000476 011500 MOV (R5),R0 ; 0383
000500 012702 000100 MOV #100,R2
000504 060002 ADD R0,R2
000506 005266 000024 INC 24(SP) ; PTR
000512 016600 000024 MOV 24(SP),R0 ; PTR,*
000516 116012 177777 MOVB -1(R0),(R2)
000522 105062 000001 CLRB 1(R2)
000526 021227 000010 CMP (R2),#10
000532 003404 BLE 7$
000534 012701 000014 MOV #14,R1 ; *,ERR 0384
000540 022626 CMP (SP)+,(SP)+
000542 000514 BR 14$
000544 011216 7$: MOV (R2),(SP) ; 0385
000546 016646 000024 MOV 24(SP),-(SP) ; PTR,*
000552 011546 MOV (R5),-(SP)
000554 062716 000102 ADD #102,(SP)
000560 004767 000000G JSR PC,BL$MOV
000564 061266 000030 ADD (R2),30(SP) ; *,PTR 0386
000570 011500 MOV (R5),R0 ; 0387
000572 012702 000112 MOV #112,R2
000576 060002 ADD R0,R2
000600 005266 000030 INC 30(SP) ; PTR
000604 016600 000030 MOV 30(SP),R0 ; PTR,*
SCSUB 25-Jan-1983 10:20:59 TOPS-20 Bliss-16 2A(530) Page 13
X01250 30-Dec-1982 20:59:22 NETPKG:<SC>SCSUB.BLI.11 (5)
000610 116012 177777 MOVB -1(R0),(R2)
000614 105062 000001 CLRB 1(R2)
000620 021227 000020 CMP (R2),#20
000624 003405 BLE 8$
000626 012701 000014 MOV #14,R1 ; *,ERR 0388
000632 062706 000010 ADD #10,SP
000636 000456 BR 14$
000640 011216 8$: MOV (R2),(SP) ; 0389
000642 016646 000030 MOV 30(SP),-(SP) ; PTR,*
000646 011546 MOV (R5),-(SP)
000650 062716 000114 ADD #114,(SP)
000654 004767 000000G JSR PC,BL$MOV
000660 061266 000034 ADD (R2),34(SP) ; *,PTR 0390
000664 062706 000014 ADD #14,SP ; 0378
000670 032703 000002 9$: BIT #2,R3 ; *,MENU 0393
000674 001435 BEQ 13$
000676 011500 MOV (R5),R0 ; 0396
000700 012703 000134 MOV #134,R3
000704 060003 ADD R0,R3
000706 005266 000020 INC 20(SP) ; PTR
000712 016600 000020 MOV 20(SP),R0 ; PTR,*
000716 116013 177777 MOVB -1(R0),(R3)
000722 105063 000001 CLRB 1(R3)
000726 021327 000020 CMP (R3),#20
000732 003403 BLE 12$
000734 012701 000014 10$: MOV #14,R1 ; *,ERR 0397
000740 000415 11$: BR 14$
000742 011316 12$: MOV (R3),(SP) ; 0398
000744 016646 000020 MOV 20(SP),-(SP) ; PTR,*
000750 011546 MOV (R5),-(SP)
000752 062716 000136 ADD #136,(SP)
000756 004767 000000G JSR PC,BL$MOV
000762 061366 000024 ADD (R3),24(SP) ; *,PTR 0399
000766 022626 CMP (SP)+,(SP)+ ; 0395
000770 012701 000001 13$: MOV #1,R1 ; *,ERR 0372
000774 016467 000044 000000G 14$: MOV 44(R4),KISAR6 ; 0405
001002 020127 000001 CMP R1,#1 ; ERR,* 0407
001006 001022 BNE 16$
001010 016616 000014 MOV 14(SP),(SP) ; 0412
001014 012746 000020 MOV #20,-(SP)
001020 060616 ADD SP,(SP) ; PIX,*
001022 004767 000000V JSR PC,FINDOB
001026 005726 TST (SP)+
001030 006000 ROR R0
001032 103403 BLO 15$
001034 012701 000004 MOV #4,R1 ; *,ERR 0413
001040 000405 BR 16$ ; 0412
001042 016600 000040 15$: MOV 40(SP),R0 ; LNK,* 0413
001046 116660 000016 000005 MOVB 16(SP),5(R0) ; PIX,*
001054 010100 16$: MOV R1,R0 ; ERR,NUM 0416
001056 110076 000012 MOVB R0,@12(SP) ; NUM,EPTR
001062 005266 000012 INC 12(SP) ; EPTR
SCSUB 25-Jan-1983 10:20:59 TOPS-20 Bliss-16 2A(530) Page 14
X01250 30-Dec-1982 20:59:22 NETPKG:<SC>SCSUB.BLI.11 (5)
001066 000300 SWAB R0 ; NUM
001070 110076 000012 MOVB R0,@12(SP) ; NUM,EPTR
001074 005266 000012 INC 12(SP) ; EPTR
001100 005301 DEC R1 ; ERR 0418
001102 001010 BNE 17$
001104 016600 000042 MOV 42(SP),R0 ; LCCB,* 0421
001110 012760 000156 000022 MOV #156,22(R0)
001116 012700 000001 MOV #1,R0 ; 0418
001122 000406 BR 18$
001124 011500 17$: MOV (R5),R0 ; 0426
001126 012701 000156 MOV #156,R1
001132 004767 000000G JSR PC,$DSRRT
001136 005000 CLR R0 ; 0418
001140 062706 000012 18$: ADD #12,SP ; 0301
001144 000401 BR 20$ ; 0329
001146 005000 19$: CLR R0 ; 0301
001150 062706 000010 20$: ADD #10,SP
001154 000207 RTS PC
; Routine Size: 311 words, Routine Base: $CODE$ + 0202
; Maximum stack depth per invocation: 22 words
SCSUB 25-Jan-1983 10:20:59 TOPS-20 Bliss-16 2A(530) Page 15
X01250 30-Dec-1982 20:59:22 NETPKG:<SC>SCSUB.BLI.11 (6)
; 0430 global routine CONBKO (CCB, LCCB) =
; 0431
; 0432 !++
; 0433 ! FUNCTIONAL DESCRIPTION:
; 0434 ! Translates connect block to protocol form, in buffer
; 0435 !
; 0436 ! FORMAL PARAMETERS:
; 0437 ! CCB CCB which owns connect block
; 0438 ! LCCB CCB which owns xmit buffer
; 0439 !
; 0440 ! IMPLICIT INPUTS:
; 0441 ! None
; 0442 !
; 0443 ! IMPLICIT OUTPUTS:
; 0444 ! Connect message built in LCCB [C_BUF]
; 0445 !
; 0446 ! ROUTINE VALUE:
; 0447 ! True, if successful
; 0448 ! False, if failure
; 0449 !
; 0450 ! COMPLETION CODES:
; 0451 ! CCB [C_STS] set for error
; 0452 !
; 0453 ! SIDE EFFECTS:
; 0454 ! None
; 0455 !--
; 0456 begin
; 0457 $sc_get_data_base (SCDB);
; 0458 map CCB: ref block field (C_FIELDS),
; 0459 LCCB: ref block field (C_FIELDS);
; 0460 local
; 0461 PTR, ! Dest buffer pointer
; 0462 MENU, ! Message word to construct
; 0463 CB: ref block field (CB_FIELDS),! The connect block
; 0464 SAV_MAP;
; 0465 label CB_PARSE;
; 0466
; 0467 if not $MCB_GET_DSR (CB_SIZE*bytes_word, CB) ! Memory to copy connect block
; 0468 then
; 0469 begin
; 0470 CCB [C_STS] = S_ERES; ! Not enuf memory !!
; 0471 return false
; 0472 end;
; 0473
; 0474 SMAP$ (SAV_MAP); ! Save current mapping
; 0475 MAP$ (.CCB [C_BIAS]); ! Map to user connect block and copy it
; 0476 ch$move (CB_SIZE*bytes_word, .CCB [C_ADDR], byt$ptr (.CB));
; 0477 MAP$ (.LCCB [C_BIAS]); ! Map to connect message buffer
; 0478 PTR = .LCCB [C_ADDR]; ! Point to buffer
; 0479
; 0480 CCB [C_STS] = CB_PARSE:
; 0481 begin
SCSUB 25-Jan-1983 10:20:59 TOPS-20 Bliss-16 2A(530) Page 16
X01250 30-Dec-1982 20:59:22 NETPKG:<SC>SCSUB.BLI.11 (6)
; 0482
; 0483 ! Check destination & source specs, and copy to msg buffer
; 0484 if not (DST_SRC_O(CB [CB_DFMT], PTR) and DST_SRC_O(CB [CB_SFMT], PTR))
; 0485 then leave CB_PARSE with S_EIOF;
; 0486
; 0487 MENU = 0; ! See what rest of message contains
; 0488 if .CB [CB_RQDL] neq 0 then MENU = U_INFO; ! We have ID
; 0489 if .CB [CB_OPDL] neq 0 then MENU = .MENU or U_DATA; ! and data
; 0490 ch$wchar_a (.MENU, PTR); ! Write menu
; 0491
; 0492 if (.MENU and U_INFO) neq 0
; 0493 then
; 0494 begin
; 0495 ch$wchar_a (.CB [CB_RQDL], PTR);
; 0496 PTR = ch$move (.CB [CB_RQDL], byt$ptr (CB [CB_RQID]), .PTR);
; 0497 ch$wchar_a (.CB [CB_PASL], PTR);
; 0498 PTR = ch$move (.CB [CB_PASL], byt$ptr (CB [CB_PASW]), .PTR);
; 0499 ch$wchar_a (.CB [CB_ACTL], PTR);
; 0500 PTR = ch$move (.CB [CB_ACTL], byt$ptr (CB [CB_ACNT]), .PTR)
; 0501 end;
; 0502
; 0503 if (.MENU and U_DATA) neq 0
; 0504 then
; 0505 begin
; 0506 ch$wchar_a (.CB [CB_OPDL], PTR);
; 0507 PTR = ch$move (.CB [CB_OPDL], byt$ptr (CB [CB_OPTD]), .PTR)
; 0508 end;
; 0509
; 0510 LCCB [C_CNT] = ch$diff (.PTR, .LCCB [C_ADDR]);
; 0511 S_SSUC
; 0512 end;
; 0513
; 0514 $MCB_RETURN_DSR (CB_SIZE*bytes_word, .CB); ! Recover memory
; 0515 MAP$ (.SAV_MAP); ! Finally restore mapping
; 0516
; 0517 if .CCB [C_STS] geq 0
; 0518 then return true
; 0519 else return false
; 0520 end;
.SBTTL CONBKO
000000 004167 000000G CONBKO::JSR R1,$SAVE5 ; 0430
000004 024646 CMP -(SP),-(SP)
000006 012701 000156 MOV #156,R1 ; 0467
000012 004767 000000G JSR PC,$DSRGT
000016 103402 BCS 1$
000020 010003 MOV R0,R3 ; $MCB$R0,CB
000022 000407 BR 2$
000024 016600 000024 1$: MOV 24(SP),R0 ; CCB,* 0470
000030 012760 177777 000014 MOV #-1,14(R0)
000036 000167 000476 JMP 12$ ; 0469
SCSUB 25-Jan-1983 10:20:59 TOPS-20 Bliss-16 2A(530) Page 17
X01250 30-Dec-1982 20:59:22 NETPKG:<SC>SCSUB.BLI.11 (6)
000042 016716 000000G 2$: MOV KISAR6,(SP) ; *,SAV.MAP 0474
000046 016604 000024 MOV 24(SP),R4 ; CCB,* 0475
000052 016467 000016 000000G MOV 16(R4),KISAR6
000060 012746 000156 MOV #156,-(SP) ; 0476
000064 016446 000020 MOV 20(R4),-(SP)
000070 010346 MOV R3,-(SP) ; CB,*
000072 004767 000000G JSR PC,BL$MOV
000076 016602 000030 MOV 30(SP),R2 ; LCCB,* 0477
000102 016267 000016 000000G MOV 16(R2),KISAR6
000110 016266 000020 000010 MOV 20(R2),10(SP) ; *,PTR 0478
000116 010316 MOV R3,(SP) ; CB,* 0484
000120 062716 000006 ADD #6,(SP)
000124 012746 000012 MOV #12,-(SP)
000130 060616 ADD SP,(SP) ; PTR,*
000132 004767 000000V JSR PC,DST.SRC.O
000136 005726 TST (SP)+
000140 006000 ROR R0
000142 103013 BCC 3$
000144 010316 MOV R3,(SP) ; CB,*
000146 062716 000032 ADD #32,(SP)
000152 012746 000012 MOV #12,-(SP)
000156 060616 ADD SP,(SP) ; PTR,*
000160 004767 000000V JSR PC,DST.SRC.O
000164 005726 TST (SP)+
000166 006000 ROR R0
000170 103403 BLO 4$
000172 012700 177773 3$: MOV #-5,R0 ; 0485
000176 000534 BR 9$
000200 005001 4$: CLR R1 ; MENU 0487
000202 016300 000056 MOV 56(R3),R0 ; *(CB),* 0488
000206 001402 BEQ 5$
000210 012701 000001 MOV #1,R1 ; *,MENU
000214 012705 000134 5$: MOV #134,R5 ; 0489
000220 060305 ADD R3,R5 ; CB,*
000222 005715 TST (R5)
000224 001402 BEQ 6$
000226 052701 000002 BIS #2,R1 ; *,MENU
000232 110176 000010 6$: MOVB R1,@10(SP) ; MENU,PTR 0490
000236 005266 000010 INC 10(SP) ; PTR
000242 032701 000001 BIT #1,R1 ; *,MENU 0492
000246 001456 BEQ 7$
000250 110076 000010 MOVB R0,@10(SP) ; *,PTR 0495
000254 005266 000010 INC 10(SP) ; PTR
000260 010016 MOV R0,(SP) ; 0496
000262 010346 MOV R3,-(SP) ; CB,*
000264 062716 000060 ADD #60,(SP)
000270 016646 000012 MOV 12(SP),-(SP) ; PTR,*
000274 004767 000000G JSR PC,BL$MOV
000300 010066 000014 MOV R0,14(SP) ; *,PTR
000304 116310 000100 MOVB 100(R3),(R0) ; *(CB),PTR 0497
000310 005266 000014 INC 14(SP) ; PTR
000314 016316 000100 MOV 100(R3),(SP) ; *(CB),* 0498
SCSUB 25-Jan-1983 10:20:59 TOPS-20 Bliss-16 2A(530) Page 18
X01250 30-Dec-1982 20:59:22 NETPKG:<SC>SCSUB.BLI.11 (6)
000320 010346 MOV R3,-(SP) ; CB,*
000322 062716 000102 ADD #102,(SP)
000326 016646 000016 MOV 16(SP),-(SP) ; PTR,*
000332 004767 000000G JSR PC,BL$MOV
000336 010066 000020 MOV R0,20(SP) ; *,PTR
000342 116310 000112 MOVB 112(R3),(R0) ; *(CB),PTR 0499
000346 005266 000020 INC 20(SP) ; PTR
000352 016316 000112 MOV 112(R3),(SP) ; *(CB),* 0500
000356 010346 MOV R3,-(SP) ; CB,*
000360 062716 000114 ADD #114,(SP)
000364 016646 000022 MOV 22(SP),-(SP) ; PTR,*
000370 004767 000000G JSR PC,BL$MOV
000374 010066 000024 MOV R0,24(SP) ; *,PTR
000400 062706 000014 ADD #14,SP ; 0494
000404 032701 000002 7$: BIT #2,R1 ; *,MENU 0503
000410 001417 BEQ 8$
000412 111576 000010 MOVB (R5),@10(SP) ; *,PTR 0506
000416 005266 000010 INC 10(SP) ; PTR
000422 011516 MOV (R5),(SP) ; 0507
000424 010346 MOV R3,-(SP) ; CB,*
000426 062716 000136 ADD #136,(SP)
000432 016646 000012 MOV 12(SP),-(SP) ; PTR,*
000436 004767 000000G JSR PC,BL$MOV
000442 010066 000014 MOV R0,14(SP) ; *,PTR
000446 022626 CMP (SP)+,(SP)+ ; 0505
000450 016662 000010 000022 8$: MOV 10(SP),22(R2) ; PTR,* 0510
000456 166262 000020 000022 SUB 20(R2),22(R2)
000464 012700 000001 MOV #1,R0 ; 0480
000470 010064 000014 9$: MOV R0,14(R4)
000474 010300 MOV R3,R0 ; CB,* 0514
000476 012701 000156 MOV #156,R1
000502 004767 000000G JSR PC,$DSRRT
000506 016667 000006 000000G MOV 6(SP),KISAR6 ; SAV.MAP,* 0515
000514 005764 000014 TST 14(R4) ; 0517
000520 002403 BLT 10$
000522 012700 000001 MOV #1,R0
000526 000401 BR 11$
000530 005000 10$: CLR R0
000532 062706 000006 11$: ADD #6,SP ; 0430
000536 000401 BR 13$ ; 0456
000540 005000 12$: CLR R0 ; 0430
000542 022626 13$: CMP (SP)+,(SP)+
000544 000207 RTS PC
; Routine Size: 179 words, Routine Base: $CODE$ + 1360
; Maximum stack depth per invocation: 18 words
SCSUB 25-Jan-1983 10:20:59 TOPS-20 Bliss-16 2A(530) Page 19
X01250 30-Dec-1982 20:59:22 NETPKG:<SC>SCSUB.BLI.11 (7)
; 0521 global routine DO_RCP (CCB, MODIFIER, LNK): linkage_ccb novalue =
; 0522
; 0523 !++
; 0524 ! FUNCTIONAL DESCRIPTION:
; 0525 ! Do RCP processing
; 0526 !
; 0527 ! FORMAL PARAMETERS:
; 0528 ! CCB CCB address
; 0529 ! MODIFIER RCP modifier
; 0530 ! LNK LNK address
; 0531 !
; 0532 ! IMPLICIT INPUTS:
; 0533 ! LLT mapped
; 0534 !
; 0535 ! IMPLICIT OUTPUTS:
; 0536 ! CCB scheduled
; 0537 !
; 0538 ! ROUTINE VALUE:
; 0539 ! COMPLETION CODES:
; 0540 ! None
; 0541 !
; 0542 ! SIDE EFFECTS:
; 0543 ! None
; 0544 !--
; 0545 begin
; 0546 $sc_get_data_base (SCDB);
; 0547 map CCB: ref block field (C_FIELDS),
; 0548 LNK: ref block field (LLT_FIELDS);
; 0549
; 0550 CCB [C_FNC] = FC_RCP;
; 0551 CCB [C_MOD] = .MODIFIER;
; 0552 CCB [C_PIX] = .LNK [L_PIX];
; 0553 CCB [C_LIX] = .LNK [L_LLA];
; 0554 CCB [$sub_field (C_PRM1, LO_BYTE)] = .LNK [L_ULA];
; 0555 $MCB_SCHEDULE_CCB (.CCB)
; 0556 end;
.GLOBL $SCHED
.SBTTL DO.RCP
000000 010446 DO.RCP::MOV R4,-(SP) ; 0521
000002 112764 000016 000012 MOVB #16,12(R4) ; *,*(CCB) 0550
000010 116664 000006 000013 MOVB 6(SP),13(R4) ; MODIFIER,*(CCB) 0551
000016 016600 000004 MOV 4(SP),R0 ; LNK,* 0552
000022 116064 000005 000011 MOVB 5(R0),11(R4) ; *,*(CCB)
000030 116064 000003 000010 MOVB 3(R0),10(R4) ; *,*(CCB) 0553
000036 116064 000002 000024 MOVB 2(R0),24(R4) ; *,*(CCB) 0554
000044 004767 000000G JSR PC,$SCHED ; 0555
000050 012604 MOV (SP)+,R4 ; 0521
000052 000207 RTS PC
SCSUB 25-Jan-1983 10:20:59 TOPS-20 Bliss-16 2A(530) Page 20
X01250 30-Dec-1982 20:59:22 NETPKG:<SC>SCSUB.BLI.11 (7)
; Routine Size: 22 words, Routine Base: $CODE$ + 2126
; Maximum stack depth per invocation: 2 words
SCSUB 25-Jan-1983 10:20:59 TOPS-20 Bliss-16 2A(530) Page 21
X01250 30-Dec-1982 20:59:22 NETPKG:<SC>SCSUB.BLI.11 (8)
; 0557 global routine DO_XME (CCB, MODIFIER, LNK): linkage_ccb novalue =
; 0558
; 0559 !++
; 0560 ! FUNCTIONAL DESCRIPTION:
; 0561 ! Do XME processing
; 0562 !
; 0563 ! FORMAL PARAMETERS:
; 0564 ! CCB CCB address
; 0565 ! MODIFIER RCP modifier
; 0566 ! LNK LNK address
; 0567 !
; 0568 ! IMPLICIT INPUTS:
; 0569 ! LLT mapped
; 0570 !
; 0571 ! IMPLICIT OUTPUTS:
; 0572 ! CCB scheduled
; 0573 !
; 0574 ! ROUTINE VALUE:
; 0575 ! COMPLETION CODES:
; 0576 ! None
; 0577 !
; 0578 ! SIDE EFFECTS:
; 0579 ! None
; 0580 !--
; 0581 begin
; 0582 $sc_get_data_base (SCDB);
; 0583 map CCB: ref block field (C_FIELDS),
; 0584 LNK: ref block field (LLT_FIELDS);
; 0585
; 0586 CCB [C_FNC] = FC_XME;
; 0587 CCB [C_MOD] = .MODIFIER;
; 0588 CCB [C_PIX] = .SCDB [SC_NSPIX];
; 0589 CCB [C_LIX] = .LNK [L_PID];
; 0590 $MCB_SCHEDULE_CCB (.CCB)
; 0591 end;
.SBTTL DO.XME
000000 010446 DO.XME::MOV R4,-(SP) ; 0557
000002 112764 000002 000012 MOVB #2,12(R4) ; *,*(CCB) 0586
000010 116664 000006 000013 MOVB 6(SP),13(R4) ; MODIFIER,*(CCB) 0587
000016 016700 000002G MOV .CRDAT+2,R0 ; 0588
000022 116064 000002 000011 MOVB 2(R0),11(R4) ; *,*(CCB)
000030 016600 000004 MOV 4(SP),R0 ; LNK,* 0589
000034 116064 000004 000010 MOVB 4(R0),10(R4) ; *,*(CCB)
000042 004767 000000G JSR PC,$SCHED ; 0590
000046 012604 MOV (SP)+,R4 ; 0557
000050 000207 RTS PC
; Routine Size: 21 words, Routine Base: $CODE$ + 2202
; Maximum stack depth per invocation: 2 words
SCSUB 25-Jan-1983 10:20:59 TOPS-20 Bliss-16 2A(530) Page 22
X01250 30-Dec-1982 20:59:22 NETPKG:<SC>SCSUB.BLI.11 (9)
; 0592 global routine DST_SRC_I (BLK, PTR) =
; 0593
; 0594 !++
; 0595 ! FUNCTIONAL DESCRIPTION:
; 0596 ! This routine transcribes source and destination
; 0597 ! specifications from the message indicated by PTR
; 0598 ! to the connect block segment identified by BLK.
; 0599 ! The descriptors are also validated for correct format.
; 0600 !
; 0601 ! FORMAL PARAMETERS:
; 0602 ! BLK DST/SRC block address
; 0603 ! PTR Buffer pointer address
; 0604 !
; 0605 ! IMPLICIT INPUTS:
; 0606 ! None
; 0607 !
; 0608 ! IMPLICIT OUTPUTS:
; 0609 ! PTR is updated
; 0610 !
; 0611 ! ROUTINE VALUE:
; 0612 ! True is success, else False
; 0613 !
; 0614 ! COMPLETION CODES:
; 0615 ! None
; 0616 !
; 0617 ! SIDE EFFECTS:
; 0618 ! None
; 0619 !--
; 0620
; 0621 begin
; 0622 map BLK: ref block field (CBSD_FIELDS);
; 0623 bind
; 0624 P = .PTR;
; 0625
; 0626 BLK [CB_FMT] = ch$rchar_a (P); ! Get Format Code
; 0627 BLK [CB_OBJ] = ch$rchar_a (P); ! Get Object Type
; 0628
; 0629 case .BLK [CB_FMT] from 0 to 2 of
; 0630 set
; 0631
; 0632 [0]:
; 0633 if .BLK [CB_OBJ] eql 0
; 0634 then return false;
; 0635
; 0636 [1]:
; 0637 begin
; 0638 if (.BLK [CB_OBJ] neq 0) or
; 0639 ((BLK [CB_LEN] = ch$rchar_a (P)) eql 0) or
; 0640 (.BLK [CB_LEN] gtr 16)
; 0641 then
; 0642 return false
; 0643 else
SCSUB 25-Jan-1983 10:20:59 TOPS-20 Bliss-16 2A(530) Page 23
X01250 30-Dec-1982 20:59:22 NETPKG:<SC>SCSUB.BLI.11 (9)
; 0644 begin
; 0645 ch$move (.BLK [CB_LEN], .P, byt$ptr (BLK [CB_NAM]));
; 0646 P = ch$plus (.P, .BLK [CB_LEN])
; 0647 end
; 0648 end;
; 0649
; 0650 [2]:
; 0651 begin
; 0652 if .BLK [CB_OBJ] neq 0 then return false;
; 0653 ch$move (4, .P, byt$ptr (BLK [CB_GRP]));
; 0654 P = ch$plus (.P, 4);
; 0655 if ((BLK [CB_LN2] = ch$rchar_a (P)) eql 0) or
; 0656 (.BLK [CB_LN2] gtr 12)
; 0657 then return false;
; 0658 ch$move (.BLK [CB_LN2], .P, byt$ptr (BLK [CB_NM2]));
; 0659 P = ch$plus (.P, .BLK [CB_LN2])
; 0660 end;
; 0661
; 0662 [inrange, outrange]:
; 0663 return false;
; 0664
; 0665 tes;
; 0666
; 0667 return true
; 0668 end;
.SBTTL DST.SRC.I
000000 004167 000000G DST.SRC.I::
JSR R1,$SAVE3 ; 0592
000004 016603 000012 MOV 12(SP),R3 ; PTR,* 0621
000010 016602 000014 MOV 14(SP),R2 ; BLK,* 0626
000014 005213 INC (R3)
000016 011300 MOV (R3),R0
000020 116012 177777 MOVB -1(R0),(R2)
000024 005213 INC (R3) ; 0627
000026 011300 MOV (R3),R0
000030 116062 177777 000001 MOVB -1(R0),1(R2)
000036 005000 CLR R0 ; 0629
000040 151200 BISB (R2),R0
000042 020027 000002 CMP R0,#2
000046 101120 BHI 8$
000050 006300 ASL R0
000052 066007 000002' ADD P.AAB(R0),PC ; Case dispatch
000056 000514 1$: BR 8$ ; 0663
000060 105762 000001 2$: TSTB 1(R2) ; 0633
000064 001106 BNE 7$
000066 000510 BR 8$ ; 0634
000070 105762 000001 3$: TSTB 1(R2) ; 0638
000074 001105 BNE 8$
000076 005213 INC (R3) ; 0639
000100 011300 MOV (R3),R0
SCSUB 25-Jan-1983 10:20:59 TOPS-20 Bliss-16 2A(530) Page 24
X01250 30-Dec-1982 20:59:22 NETPKG:<SC>SCSUB.BLI.11 (9)
000102 116062 177777 000002 MOVB -1(R0),2(R2)
000110 105062 000003 CLRB 3(R2)
000114 005762 000002 TST 2(R2)
000120 001473 BEQ 8$
000122 026227 000002 000020 CMP 2(R2),#20 ; 0640
000130 003067 BGT 8$ ; 0642
000132 016246 000002 MOV 2(R2),-(SP) ; 0645
000136 010046 MOV R0,-(SP)
000140 012746 000004 MOV #4,-(SP)
000144 060216 ADD R2,(SP)
000146 004767 000000G JSR PC,BL$MOV
000152 066213 000002 ADD 2(R2),(R3) ; 0646
000156 062706 000006 ADD #6,SP ; 0644
000162 000447 BR 7$ ; 0629
000164 105762 000001 4$: TSTB 1(R2) ; 0652
000170 001047 BNE 8$
000172 012746 000004 MOV #4,-(SP) ; 0653
000176 011346 MOV (R3),-(SP)
000200 012746 000002 MOV #2,-(SP)
000204 060216 ADD R2,(SP)
000206 004767 000000G JSR PC,BL$MOV
000212 012701 000006 MOV #6,R1 ; 0655
000216 060201 ADD R2,R1
000220 062713 000005 ADD #5,(R3)
000224 011300 MOV (R3),R0
000226 116011 177777 MOVB -1(R0),(R1)
000232 105061 000001 CLRB 1(R1)
000236 005711 TST (R1)
000240 001403 BEQ 5$
000242 021127 000014 CMP (R1),#14 ; 0656
000246 003403 BLE 6$
000250 062706 000006 5$: ADD #6,SP ; 0657
000254 000415 BR 8$
000256 011116 6$: MOV (R1),(SP) ; 0658
000260 011346 MOV (R3),-(SP)
000262 012746 000010 MOV #10,-(SP)
000266 060216 ADD R2,(SP)
000270 004767 000000G JSR PC,BL$MOV
000274 061113 ADD (R1),(R3) ; 0659
000276 062706 000012 ADD #12,SP ; 0651
000302 012700 000001 7$: MOV #1,R0 ; 0621
000306 000207 RTS PC
000310 005000 8$: CLR R0 ; 0592
000312 000207 RTS PC
; Routine Size: 102 words, Routine Base: $CODE$ + 2254
; Maximum stack depth per invocation: 10 words
000002 .PSECT $PLIT$, RO , D
P.AAB: ; CASE Table for DST.SRC.I+0052 0629
SCSUB 25-Jan-1983 10:20:59 TOPS-20 Bliss-16 2A(530) Page 25
X01250 30-Dec-1982 20:59:22 NETPKG:<SC>SCSUB.BLI.11 (9)
000002 000002 .WORD 2 ; [2$]
000004 000012 .WORD 12 ; [3$]
000006 000106 .WORD 106 ; [4$]
; 0669
SCSUB 25-Jan-1983 10:20:59 TOPS-20 Bliss-16 2A(530) Page 26
X01250 30-Dec-1982 20:59:22 NETPKG:<SC>SCSUB.BLI.11 (10)
; 0670 routine DST_SRC_O (BLK, PTR) =
; 0671
; 0672 !++
; 0673 ! FUNCTIONAL DESCRIPTION:
; 0674 ! This routine validates the destination or source object
; 0675 ! specification in a connect block, and copies it to the
; 0676 ! buffer.
; 0677 !
; 0678 ! FORMAL PARAMETERS:
; 0679 ! BLK DST/SRC block address
; 0680 ! PTR Buffer pointer address
; 0681 !
; 0682 ! IMPLICIT INPUTS:
; 0683 ! None
; 0684 !
; 0685 ! IMPLICIT OUTPUTS:
; 0686 ! PTR is updated
; 0687 !
; 0688 ! ROUTINE VALUE:
; 0689 ! COMPLETION CODES:
; 0690 ! True is success, else False
; 0691 !
; 0692 ! SIDE EFFECTS:
; 0693 ! None
; 0694 !--
; 0695 begin
; 0696 map BLK: ref block field (CBSD_FIELDS);
; 0697 local
; 0698 LEN,
; 0699 DAT;
; 0700 bind
; 0701 P = .PTR;
; 0702
; 0703 ch$wchar_a (.BLK [CB_FMT], P);
; 0704 ch$wchar_a (.BLK [CB_OBJ], P);
; 0705
; 0706 case .BLK [CB_FMT] from 0 to 2 of
; 0707 set
; 0708
; 0709 [0]:
; 0710 if .BLK [CB_OBJ] eql 0
; 0711 then return false
; 0712 else return true;
; 0713
; 0714 [1]:
; 0715 begin
; 0716 if (.BLK [CB_OBJ] neq 0) or (.BLK [CB_LEN] eql 0)
; 0717 then return false;
; 0718 LEN = .BLK [CB_LEN];
; 0719 DAT = BLK [CB_NAM]
; 0720 end;
; 0721
SCSUB 25-Jan-1983 10:20:59 TOPS-20 Bliss-16 2A(530) Page 27
X01250 30-Dec-1982 20:59:22 NETPKG:<SC>SCSUB.BLI.11 (10)
; 0722 [2]:
; 0723 begin
; 0724 if .BLK [CB_OBJ] neq 0 then return false;
; 0725 P = ch$move (4, byt$ptr (BLK [CB_DES]), .P);
; 0726 LEN = .BLK [CB_LN2];
; 0727 DAT = BLK [CB_NM2]
; 0728 end;
; 0729
; 0730 [inrange, outrange]:
; 0731 return false;
; 0732
; 0733 tes;
; 0734
; 0735 P = ch$move (1, byt$ptr (LEN), .P);
; 0736 P = ch$move (.LEN, byt$ptr (.DAT), .P);
; 0737 return true
; 0738 end;
.SBTTL DST.SRC.O
002570 .PSECT $CODE$, RO
000000 004167 000000G DST.SRC.O:
JSR R1,$SAVE3 ; 0670
000004 005746 TST -(SP)
000006 016602 000014 MOV 14(SP),R2 ; PTR,* 0695
000012 016603 000016 MOV 16(SP),R3 ; BLK,* 0703
000016 111372 000000 MOVB (R3),@0(R2)
000022 005212 INC (R2)
000024 116372 000001 000000 MOVB 1(R3),@0(R2) ; 0704
000032 005212 INC (R2)
000034 005000 CLR R0 ; 0706
000036 151300 BISB (R3),R0
000040 020027 000002 CMP R0,#2
000044 101075 BHI 7$
000046 006300 ASL R0
000050 066007 000010' ADD P.AAC(R0),PC ; Case dispatch
000054 000471 1$: BR 7$ ; 0731
000056 105763 000001 2$: TSTB 1(R3) ; 0710
000062 001063 BNE 6$
000064 000465 BR 7$ ; 0706
000066 105763 000001 3$: TSTB 1(R3) ; 0716
000072 001062 BNE 7$
000074 005763 000002 TST 2(R3)
000100 001457 BEQ 7$ ; 0717
000102 016316 000002 MOV 2(R3),(SP) ; *,LEN 0718
000106 012701 000004 MOV #4,R1 ; *,DAT 0719
000112 060301 ADD R3,R1 ; *,DAT
000114 000424 BR 5$ ; 0706
000116 105763 000001 4$: TSTB 1(R3) ; 0724
000122 001046 BNE 7$
000124 012746 000004 MOV #4,-(SP) ; 0725
SCSUB 25-Jan-1983 10:20:59 TOPS-20 Bliss-16 2A(530) Page 28
X01250 30-Dec-1982 20:59:22 NETPKG:<SC>SCSUB.BLI.11 (10)
000130 012746 000002 MOV #2,-(SP)
000134 060316 ADD R3,(SP)
000136 011246 MOV (R2),-(SP)
000140 004767 000000G JSR PC,BL$MOV
000144 010012 MOV R0,(R2)
000146 016366 000006 000006 MOV 6(R3),6(SP) ; *,LEN 0726
000154 012701 000010 MOV #10,R1 ; *,DAT 0727
000160 060301 ADD R3,R1 ; *,DAT
000162 062706 000006 ADD #6,SP ; 0723
000166 012746 000001 5$: MOV #1,-(SP) ; 0735
000172 012746 000004 MOV #4,-(SP)
000176 060616 ADD SP,(SP) ; LEN,*
000200 011246 MOV (R2),-(SP)
000202 004767 000000G JSR PC,BL$MOV
000206 010012 MOV R0,(R2)
000210 016616 000006 MOV 6(SP),(SP) ; LEN,* 0736
000214 010146 MOV R1,-(SP) ; DAT,*
000216 010046 MOV R0,-(SP)
000220 004767 000000G JSR PC,BL$MOV
000224 010012 MOV R0,(R2)
000226 062706 000012 ADD #12,SP ; 0670
000232 012700 000001 6$: MOV #1,R0 ; 0695
000236 000401 BR 8$
000240 005000 7$: CLR R0 ; 0670
000242 005726 8$: TST (SP)+
000244 000207 RTS PC
; Routine Size: 83 words, Routine Base: $CODE$ + 2570
; Maximum stack depth per invocation: 11 words
000010 .PSECT $PLIT$, RO , D
P.AAC: ; CASE Table for DST.SRC.O+0050 0706
000010 000002 .WORD 2 ; [2$]
000012 000012 .WORD 12 ; [3$]
000014 000042 .WORD 42 ; [4$]
SCSUB 25-Jan-1983 10:20:59 TOPS-20 Bliss-16 2A(530) Page 29
X01250 30-Dec-1982 20:59:22 NETPKG:<SC>SCSUB.BLI.11 (11)
; 0739 global routine FINDLL (LL) =
; 0740
; 0741 !++
; 0742 ! FUNCTIONAL DESCRIPTION:
; 0743 ! Locate an available logical link, and return its index
; 0744 ! in LL.
; 0745 !
; 0746 ! FORMAL PARAMETERS:
; 0747 ! LL Word to receive logical link index
; 0748 !
; 0749 ! IMPLICIT INPUTS:
; 0750 ! LLT mapped
; 0751 !
; 0752 ! IMPLICIT OUTPUTS:
; 0753 ! LL block is initialized
; 0754 !
; 0755 ! ROUTINE VALUE:
; 0756 ! true = logical link found
; 0757 ! false = logical link not found
; 0758 !
; 0759 ! SIDE EFFECTS:
; 0760 ! None
; 0761 !--
; 0762 begin
; 0763 $sc_get_data_base (SCDB);
; 0764 bind
; 0765 LLT = SCDB [SC_LLT_ADDR]: ref blockvector [,L_SIZE] field (LLT_FIELDS);
; 0766
; 0767 .LL =
; 0768 begin
; 0769 incr L from 0 to .SCDB [SC_LINKS]-1 do
; 0770 begin
; 0771 bind
; 0772 LNK = LLT [.L, L_TOP]: block field (LLT_FIELDS);
; 0773
; 0774 if (.LNK [L_STATE] eql ST_OFF) and (.LNK [L_FLAGS] eql 0)
; 0775 then
; 0776 begin
; 0777 ch$fill (0, L_SIZE*bytes_word, byt$ptr (LNK));
; 0778 LNK [L_FLAGS] = 0;
; 0779 LNK [L_I_TAIL] = LNK [L_I_HEAD];
; 0780 LNK [L_O_TAIL] = LNK [L_O_HEAD];
; 0781 LNK [L_N_TAIL] = LNK [L_N_HEAD];
; 0782 LNK [L_LLA] = .L;
; 0783 exitloop .L
; 0784 end
; 0785 end
; 0786 end;
; 0787
; 0788 if ..LL eql -1
; 0789 then false
; 0790 else true
SCSUB 25-Jan-1983 10:20:59 TOPS-20 Bliss-16 2A(530) Page 30
X01250 30-Dec-1982 20:59:22 NETPKG:<SC>SCSUB.BLI.11 (11)
; 0791 end;
.SBTTL FINDLL
003036 .PSECT $CODE$, RO
000000 004167 000000G FINDLL::JSR R1,$SAVE4 ; 0739
000004 016704 000002G MOV .CRDAT+2,R4 ; 0765
000010 062704 000046 ADD #46,R4
000014 016703 000002G MOV .CRDAT+2,R3 ; 0769
000020 005002 CLR R2 ; L
000022 000447 BR 3$
000024 010201 1$: MOV R2,R1 ; L,* 0772
000026 070127 000032 MUL #32,R1
000032 061401 ADD (R4),R1
000034 105711 TSTB (R1) ; 0774
000036 001040 BNE 2$
000040 105761 000001 TSTB 1(R1)
000044 001035 BNE 2$
000046 005046 CLR -(SP) ; 0777
000050 012746 000032 MOV #32,-(SP)
000054 010146 MOV R1,-(SP)
000056 004767 000000G JSR PC,BL$FIL
000062 105061 000001 CLRB 1(R1) ; 0778
000066 012761 000016 000020 MOV #16,20(R1) ; 0779
000074 060161 000020 ADD R1,20(R1)
000100 012761 000022 000024 MOV #22,24(R1) ; 0780
000106 060161 000024 ADD R1,24(R1)
000112 012761 000026 000030 MOV #26,30(R1) ; 0781
000120 060161 000030 ADD R1,30(R1)
000124 110261 000003 MOVB R2,3(R1) ; L,* 0782
000130 010201 MOV R2,R1 ; L,* 0783
000132 062706 000006 ADD #6,SP
000136 000406 BR 4$
000140 005202 2$: INC R2 ; L 0769
000142 020263 000016 3$: CMP R2,16(R3) ; L,*
000146 002726 BLT 1$
000150 012701 177777 MOV #-1,R1 ; 0768
000154 010176 000014 4$: MOV R1,@14(SP) ; *,LL 0767
000160 020127 177777 CMP R1,#-1 ; LL,* 0788
000164 001002 BNE 5$
000166 005000 CLR R0
000170 000207 RTS PC
000172 012700 000001 5$: MOV #1,R0
000176 000207 RTS PC ; 0739
; Routine Size: 64 words, Routine Base: $CODE$ + 3036
; Maximum stack depth per invocation: 9 words
SCSUB 25-Jan-1983 10:20:59 TOPS-20 Bliss-16 2A(530) Page 31
X01250 30-Dec-1982 20:59:22 NETPKG:<SC>SCSUB.BLI.11 (12)
; 0792 global routine FINDND (CCB, LNK) =
; 0793
; 0794 !++
; 0795 ! FUNCTIONAL DESCRIPTION:
; 0796 ! Determine address of node specified in connect block.
; 0797 !
; 0798 ! FORMAL PARAMETERS:
; 0799 ! CCB CCB pointing to connect block
; 0800 ! LNK Link block address
; 0801 !
; 0802 ! IMPLICIT INPUTS:
; 0803 ! LLT mapped
; 0804 !
; 0805 ! IMPLICIT OUTPUTS:
; 0806 ! LNK [L_RNA] = remote node address
; 0807 ! LNK [L_CHN] = channel #
; 0808 !
; 0809 ! ROUTINE VALUE:
; 0810 ! true = Node address determined
; 0811 ! false = Node address not determined
; 0812 !
; 0813 ! SIDE EFFECTS:
; 0814 ! None
; 0815 !--
; 0816 begin
; 0817 $sc_get_data_base (SCDB);
; 0818 map
; 0819 CCB: ref block field (C_FIELDS),
; 0820 LNK: ref block field (LLT_FIELDS);
; 0821 local
; 0822 REMOTE_NODE_ADDR,
; 0823 CHANNEL_NUMBER,
; 0824 CH,
; 0825 LEN,
; 0826 PTR,
; 0827 NODE: vector [byt$allocation (6)];
; 0828 bind
; 0829 NMT = SCDB [SC_NMT_ADDR]: ref blockvector [ , NMT_SIZE] field (NMT_FIELDS);
; 0830
; 0831 MFBF$S (6, .CCB [C_BIAS], .CCB [C_ADDR], byt$ptr (NODE));
; 0832
; 0833 PTR = byt$ptr (NODE);
; 0834 LEN = 0; ! Calc length of name
; 0835 incr I from 1 to 6 do
; 0836 if (CH = ch$rchar_a (PTR)) eql %c' ' or .CH eql 0
; 0837 then exitloop
; 0838 else LEN = .LEN + 1;
; 0839
; 0840 LNK [L_CHN] = 0; ! Assume not loopnode
; 0841 if (LNK [L_RNA] = CNVAD$ (byt$ptr (NODE), .LEN)) neq 0
; 0842 then if (.LNK[L_RNA] gtru .SCDB[SC_NODES])
; 0843 then return false
SCSUB 25-Jan-1983 10:20:59 TOPS-20 Bliss-16 2A(530) Page 32
X01250 30-Dec-1982 20:59:22 NETPKG:<SC>SCSUB.BLI.11 (12)
; 0844 else return true;
; 0845
; 0846 PTR = byt$ptr (NODE);
; 0847 incr I from 1 to 6 do ! Do the shift to uppercase
; 0848 begin
; 0849 if (CH = ch$rchar (.PTR)) geq %c'a' and .CH leq %c'z'
; 0850 then CH = .CH - (%c'a' - %c'A');
; 0851 ch$wchar_a (.CH, PTR)
; 0852 end;
; 0853
; 0854 if .LEN eql 0
; 0855 then
; 0856 begin
; 0857 LNK [L_RNA] = .SCDB [SC_LADDR];
; 0858 return true
; 0859 end;
; 0860
; 0861 MAP$ (.SCDB [SC_NMT_BIAS]);
; 0862 REMOTE_NODE_ADDR = CHANNEL_NUMBER = 0;
; 0863
; 0864 incr N from 0 to .SCDB [SC_NODES] + .SCDB [SC_LOOPS] - 1 do
; 0865 begin
; 0866 if ch$eql (.LEN, byt$ptr (NODE), .NMT [.N, NMT_NAML], byt$ptr (NMT [.N, NMT_NAME]), 0)
; 0867 then
; 0868 begin
; 0869 if .N lss .SCDB [SC_NODES]
; 0870 then
; 0871 REMOTE_NODE_ADDR = .NMT [.N, NMT_ADDR]
; 0872 else
; 0873 CHANNEL_NUMBER = .NMT [.N, NMT_CHAN];
; 0874 exitloop
; 0875 end
; 0876 end;
; 0877
; 0878 MAP$ (.SCDB [SC_LLT_BIAS]);
; 0879 LNK [L_RNA] = .REMOTE_NODE_ADDR;
; 0880 LNK [L_CHN] = .CHANNEL_NUMBER;
; 0881 if (.REMOTE_NODE_ADDR + .CHANNEL_NUMBER) neq 0 then return true else false
; 0882 end;
.GLOBL $MVFBF
.SBTTL FINDND
000000 004167 000000G FINDND::JSR R1,$SAVE5 ; 0792
000004 162706 000020 SUB #20,SP
000010 016766 000002G 000006 MOV .CRDAT+2,6(SP) ; 0816
000016 016600 000040 MOV 40(SP),R0 ; CCB,* 0831
000022 016046 000016 MOV 16(R0),-(SP)
000026 016046 000020 MOV 20(R0),-(SP)
000032 012702 000016 MOV #16,R2
SCSUB 25-Jan-1983 10:20:59 TOPS-20 Bliss-16 2A(530) Page 33
X01250 30-Dec-1982 20:59:22 NETPKG:<SC>SCSUB.BLI.11 (12)
000036 060602 ADD SP,R2 ; NODE,*
000040 012703 000006 MOV #6,R3
000044 004767 000000G JSR PC,$MVFBF
000050 012701 000016 MOV #16,R1 ; *,PTR 0833
000054 060601 ADD SP,R1 ; NODE,PTR
000056 005066 000010 CLR 10(SP) ; LEN 0834
000062 012700 000001 MOV #1,R0 ; *,I 0835
000066 005002 1$: CLR R2 ; CH 0836
000070 152102 BISB (R1)+,R2 ; PTR,CH
000072 020227 000040 CMP R2,#40 ; CH,*
000076 001410 BEQ 2$
000100 005702 TST R2 ; CH
000102 001406 BEQ 2$ ; 0837
000104 005266 000010 INC 10(SP) ; LEN 0838
000110 005200 INC R0 ; I 0835
000112 020027 000006 CMP R0,#6 ; I,*
000116 003763 BLE 1$
000120 016666 000042 000004 2$: MOV 42(SP),4(SP) ; LNK,* 0840
000126 016600 000004 MOV 4(SP),R0
000132 005060 000010 CLR 10(R0)
000136 012766 000006 000014 MOV #6,14(SP) ; 0841
000144 060066 000014 ADD R0,14(SP)
000150 012716 000016 MOV #16,(SP)
000154 060616 ADD SP,(SP) ; NODE,*
000156 016646 000010 MOV 10(SP),-(SP) ; LEN,*
000162 004767 174354 JSR PC,CNVAD$
000166 005726 TST (SP)+
000170 010076 000014 MOV R0,@14(SP)
000174 001411 BEQ 3$
000176 016600 000012 MOV 12(SP),R0 ; 0842
000202 027660 000014 000020 CMP @14(SP),20(R0)
000210 101163 BHI 13$ ; 0841
000212 012700 000001 MOV #1,R0
000216 000561 BR 14$
000220 012701 000016 3$: MOV #16,R1 ; *,PTR 0846
000224 060601 ADD SP,R1 ; NODE,PTR
000226 012700 000001 MOV #1,R0 ; *,I 0847
000232 005002 4$: CLR R2 ; CH 0849
000234 151102 BISB (R1),R2 ; PTR,CH
000236 020227 000141 CMP R2,#141 ; CH,*
000242 002405 BLT 5$
000244 020227 000172 CMP R2,#172 ; CH,*
000250 003002 BGT 5$
000252 162702 000040 SUB #40,R2 ; *,CH 0850
000256 110221 5$: MOVB R2,(R1)+ ; CH,PTR 0851
000260 005200 INC R0 ; I 0847
000262 020027 000006 CMP R0,#6 ; I,*
000266 003761 BLE 4$
000270 005766 000010 TST 10(SP) ; LEN 0854
000274 001006 BNE 6$
000276 016600 000012 MOV 12(SP),R0 ; 0857
000302 016076 000010 000014 MOV 10(R0),@14(SP)
SCSUB 25-Jan-1983 10:20:59 TOPS-20 Bliss-16 2A(530) Page 34
X01250 30-Dec-1982 20:59:22 NETPKG:<SC>SCSUB.BLI.11 (12)
000310 000517 BR 12$ ; 0854
000312 016600 000012 6$: MOV 12(SP),R0 ; 0861
000316 016067 000050 000000G MOV 50(R0),KISAR6
000324 005004 CLR R4 ; CHANNEL.NUMBER 0862
000326 005005 CLR R5 ; REMOTE.NODE.ADD
000330 010001 MOV R0,R1 ; 0864
000332 016100 000020 MOV 20(R1),R0
000336 016601 000012 MOV 12(SP),R1
000342 066100 000022 ADD 22(R1),R0
000346 010066 000006 MOV R0,6(SP)
000352 005001 CLR R1 ; N
000354 000454 BR 10$
000356 016616 000010 7$: MOV 10(SP),(SP) ; LEN,* 0866
000362 012746 000020 MOV #20,-(SP)
000366 060616 ADD SP,(SP) ; NODE,*
000370 016600 000014 MOV 14(SP),R0
000374 016002 000052 MOV 52(R0),R2
000400 010103 MOV R1,R3 ; N,*
000402 070327 000014 MUL #14,R3
000406 010300 MOV R3,R0
000410 060200 ADD R2,R0
000412 105710 TSTB (R0)
000414 006746 SXT -(SP)
000416 111016 MOVB (R0),(SP)
000420 012746 000001 MOV #1,-(SP)
000424 060016 ADD R0,(SP)
000426 005046 CLR -(SP)
000430 004767 000000G JSR PC,BL$EQL
000434 062706 000010 ADD #10,SP
000440 006000 ROR R0
000442 103020 BCC 9$
000444 016600 000012 MOV 12(SP),R0 ; 0869
000450 020160 000020 CMP R1,20(R0) ; N,*
000454 002005 BGE 8$
000456 010300 MOV R3,R0 ; 0871
000460 060200 ADD R2,R0
000462 016005 000010 MOV 10(R0),R5 ; *,REMOTE.NODE.ADD
000466 000412 BR 11$ ; 0869
000470 010300 8$: MOV R3,R0 ; 0873
000472 060200 ADD R2,R0
000474 005004 CLR R4 ; CHANNEL.NUMBER
000476 156004 000007 BISB 7(R0),R4 ; *,CHANNEL.NUMBER
000502 000404 BR 11$ ; 0874
000504 005201 9$: INC R1 ; N 0864
000506 020166 000006 10$: CMP R1,6(SP) ; N,*
000512 002721 BLT 7$
000514 016600 000012 11$: MOV 12(SP),R0 ; 0878
000520 016067 000044 000000G MOV 44(R0),KISAR6
000526 010576 000014 MOV R5,@14(SP) ; REMOTE.NODE.ADD,* 0879
000532 016600 000004 MOV 4(SP),R0 ; 0880
000536 010460 000010 MOV R4,10(R0) ; CHANNEL.NUMBER,*
000542 010400 MOV R4,R0 ; CHANNEL.NUMBER,* 0881
SCSUB 25-Jan-1983 10:20:59 TOPS-20 Bliss-16 2A(530) Page 35
X01250 30-Dec-1982 20:59:22 NETPKG:<SC>SCSUB.BLI.11 (12)
000544 060500 ADD R5,R0 ; REMOTE.NODE.ADD,*
000546 001404 BEQ 13$
000550 022626 12$: CMP (SP)+,(SP)+
000552 012700 000001 MOV #1,R0
000556 000402 BR 15$
000560 005000 13$: CLR R0
000562 022626 14$: CMP (SP)+,(SP)+ ; 0816
000564 062706 000020 15$: ADD #20,SP ; 0792
000570 000207 RTS PC
; Routine Size: 189 words, Routine Base: $CODE$ + 3236
; Maximum stack depth per invocation: 21 words
SCSUB 25-Jan-1983 10:20:59 TOPS-20 Bliss-16 2A(530) Page 36
X01250 30-Dec-1982 20:59:22 NETPKG:<SC>SCSUB.BLI.11 (13)
; 0883 routine FINDOB (DST, PIX) =
; 0884
; 0885 !++
; 0886 ! FUNCTIONAL DESCRIPTION:
; 0887 ! Locate object type, and return process index
; 0888 !
; 0889 ! FORMAL PARAMETERS:
; 0890 ! DST Destination portion of connect block
; 0891 ! PIX Place to return process index
; 0892 !
; 0893 ! IMPLICIT INPUTS:
; 0894 ! Connect block format checking already performed.
; 0895 !
; 0896 ! IMPLICIT OUTPUTS:
; 0897 ! None
; 0898 !
; 0899 ! ROUTINE VALUE:
; 0900 ! True if object found
; 0901 ! False if object not found
; 0902 !
; 0903 ! COMPLETION CODES:
; 0904 ! None
; 0905 !
; 0906 ! SIDE EFFECTS:
; 0907 ! None
; 0908 !--
; 0909 begin
; 0910 $sc_get_data_base (SCDB);
; 0911 map DST: ref block field (CBSD_FIELDS);
; 0912 local
; 0913 SAV_MAP,
; 0914 PROC_NAM,
; 0915 NAM_LEN,
; 0916 NAM_PTR,
; 0917 NAME: vector [byt$allocation (6)];
; 0918 bind
; 0919 OTN = SCDB [SC_OTN_ADDR]: ref blockvector [,OTN_SIZE] field (OTN_FIELDS),
; 0920 ONP = SCDB [SC_ONP_ADDR]: ref blockvector [,ONP_SIZE] field (ONP_FIELDS);
; 0921
; 0922 SMAP$ (SAV_MAP);
; 0923 case .DST [CB_FMT] from 0 to 2 of
; 0924 set
; 0925
; 0926 [0]: ! Format 0
; 0927 begin
; 0928 MAP$ (.SCDB [SC_OTN_BIAS]); ! Set to object table map
; 0929 NAM_LEN = 0; ! Be pessimistic
; 0930 incr I from 0 to .SCDB [SC_OTN_LEN]-1 do
; 0931 begin
; 0932 if .DST [CB_OBJ] eql .OTN [.I, OTN_TYPE]
; 0933 then
; 0934 begin
SCSUB 25-Jan-1983 10:20:59 TOPS-20 Bliss-16 2A(530) Page 37
X01250 30-Dec-1982 20:59:22 NETPKG:<SC>SCSUB.BLI.11 (13)
; 0935 NAM_PTR = byt$ptr (NAME); ! Copy name to local store
; 0936 ch$move (6, byt$ptr (OTN [.I, OTN_NAME]), .NAM_PTR);
; 0937 NAM_LEN = .OTN [.I, OTN_NLEN];
; 0938 exitloop
; 0939 end
; 0940 end;
; 0941
; 0942 if .NAM_LEN eql 0
; 0943 then
; 0944 begin
; 0945 MAP$ (.SAV_MAP); ! Restore mapping
; 0946 return false ! and bomb
; 0947 end
; 0948 end;
; 0949
; 0950 [1]: ! Format 1
; 0951 begin
; 0952 NAM_PTR = byt$ptr (DST [CB_NAM]);
; 0953 NAM_LEN = .DST [CB_LEN]
; 0954 end;
; 0955
; 0956 [2]: ! Format 2
; 0957 begin
; 0958 NAM_PTR = byt$ptr (DST [CB_NM2]);
; 0959 NAM_LEN = .DST [CB_LN2]
; 0960 end;
; 0961 tes;
; 0962
; 0963 MAP$ (.SCDB [SC_ONP_BIAS]); ! Now look at object-to-process table
; 0964 PROC_NAM = 0; ! Again, be a pessimist
; 0965
; 0966 incr I from 0 to .SCDB [SC_ONP_LEN]-1 do
; 0967 begin
; 0968 if ch$eql (.NAM_LEN, .NAM_PTR, .ONP [.I, ONP_NLEN], byt$ptr (ONP [.I, ONP_NAME]), %c'.')
; 0969 then
; 0970 begin
; 0971 PROC_NAM = .ONP [.I, ONP_PROC]; ! Set selected process name
; 0972 exitloop
; 0973 end
; 0974 end;
; 0975
; 0976 MAP$ (.SAV_MAP); ! Restore mapping
; 0977 if .PROC_NAM eql 0 then PROC_NAM = ! Default to SCX
; 0978 %if %bliss (bliss36) %then %rad50_10 'SCX' %else %rad50_11 'SCX' %fi;
; 0979 PDVID$ (.PROC_NAM, .PIX) ! Locate the PIX
; 0980 end;
.GLOBL P.DTGT, $CALLI
.SBTTL FINDOB
SCSUB 25-Jan-1983 10:20:59 TOPS-20 Bliss-16 2A(530) Page 38
X01250 30-Dec-1982 20:59:22 NETPKG:<SC>SCSUB.BLI.11 (13)
000000 004167 000000G FINDOB: JSR R1,$SAVE5 ; 0883
000004 162706 000012 SUB #12,SP
000010 016704 000002G MOV .CRDAT+2,R4 ; 0909
000014 016746 000000G MOV KISAR6,-(SP) ; *,SAV.MAP 0922
000020 016646 000034 MOV 34(SP),-(SP) ; DST,* 0923
000024 005000 CLR R0
000026 157600 000000 BISB @0(SP),R0
000032 006300 ASL R0
000034 066007 000016' ADD P.AAD(R0),PC ; Case dispatch
000040 016467 000034 000000G 1$: MOV 34(R4),KISAR6 ; 0928
000046 005005 CLR R5 ; NAM.LEN 0929
000050 005002 CLR R2 ; I 0930
000052 000450 BR 4$
000054 010200 2$: MOV R2,R0 ; I,* 0932
000056 072027 000003 ASH #3,R0
000062 010001 MOV R0,R1
000064 010103 MOV R1,R3
000066 066403 000036 ADD 36(R4),R3
000072 111346 MOVB (R3),-(SP)
000074 105066 000001 CLRB 1(SP)
000100 017600 000002 MOV @2(SP),R0
000104 105000 CLRB R0
000106 000300 SWAB R0
000110 020026 CMP R0,(SP)+
000112 001027 BNE 3$
000114 012766 000010 000004 MOV #10,4(SP) ; *,NAM.PTR 0935
000122 060666 000004 ADD SP,4(SP) ; NAME,NAM.PTR
000126 012746 000006 MOV #6,-(SP) ; 0936
000132 010100 MOV R1,R0
000134 066400 000036 ADD 36(R4),R0
000140 010046 MOV R0,-(SP)
000142 062716 000002 ADD #2,(SP)
000146 016646 000010 MOV 10(SP),-(SP) ; NAM.PTR,*
000152 004767 000000G JSR PC,BL$MOV
000156 005005 CLR R5 ; NAM.LEN 0937
000160 156305 000001 BISB 1(R3),R5 ; *,NAM.LEN
000164 062706 000006 ADD #6,SP ; 0938
000170 000404 BR 5$
000172 005202 3$: INC R2 ; I 0930
000174 020264 000030 4$: CMP R2,30(R4) ; I,*
000200 002725 BLT 2$
000202 005705 5$: TST R5 ; NAM.LEN 0942
000204 001026 BNE 8$
000206 016667 000002 000000G MOV 2(SP),KISAR6 ; SAV.MAP,* 0945
000214 005000 CLR R0 ; 0944
000216 000524 BR 15$
000220 012700 000004 6$: MOV #4,R0 ; 0952
000224 061600 ADD (SP),R0
000226 010066 000004 MOV R0,4(SP) ; *,NAM.PTR
000232 011600 MOV (SP),R0 ; 0953
000234 016005 000002 MOV 2(R0),R5 ; *,NAM.LEN
000240 000410 BR 8$ ; 0923
SCSUB 25-Jan-1983 10:20:59 TOPS-20 Bliss-16 2A(530) Page 39
X01250 30-Dec-1982 20:59:22 NETPKG:<SC>SCSUB.BLI.11 (13)
000242 012700 000010 7$: MOV #10,R0 ; 0958
000246 061600 ADD (SP),R0
000250 010066 000004 MOV R0,4(SP) ; *,NAM.PTR
000254 011600 MOV (SP),R0 ; 0959
000256 016005 000006 MOV 6(R0),R5 ; *,NAM.LEN
000262 016467 000040 000000G 8$: MOV 40(R4),KISAR6 ; 0963
000270 005003 CLR R3 ; PROC.NAM 0964
000272 005002 CLR R2 ; I 0966
000274 000435 BR 11$
000276 010546 9$: MOV R5,-(SP) ; NAM.LEN,* 0968
000300 016646 000006 MOV 6(SP),-(SP) ; NAM.PTR,*
000304 010201 MOV R2,R1 ; I,*
000306 070127 000012 MUL #12,R1
000312 010100 MOV R1,R0
000314 066400 000042 ADD 42(R4),R0
000320 005046 CLR -(SP)
000322 111016 MOVB (R0),(SP)
000324 012746 000001 MOV #1,-(SP)
000330 060016 ADD R0,(SP)
000332 012746 000056 MOV #56,-(SP)
000336 004767 000000G JSR PC,BL$EQL
000342 062706 000012 ADD #12,SP
000346 006000 ROR R0
000350 103006 BCC 10$
000352 010100 MOV R1,R0 ; 0971
000354 066400 000042 ADD 42(R4),R0
000360 016003 000010 MOV 10(R0),R3 ; *,PROC.NAM
000364 000404 BR 12$ ; 0972
000366 005202 10$: INC R2 ; I 0966
000370 020264 000032 11$: CMP R2,32(R4) ; I,*
000374 002740 BLT 9$
000376 016667 000002 000000G 12$: MOV 2(SP),KISAR6 ; SAV.MAP,* 0976
000404 005703 TST R3 ; PROC.NAM 0977
000406 001002 BNE 13$
000410 012703 073520 MOV #73520,R3 ; *,PROC.NAM
000414 012746 000010 13$: MOV #10,-(SP) ; 0979
000420 060616 ADD SP,(SP) ; $MCB$MY.INDEX,*
000422 010346 MOV R3,-(SP) ; PROC.NAM,*
000424 012746 000002 MOV #2,-(SP)
000430 012746 000000G MOV #P.DTGT,-(SP)
000434 004767 000000G JSR PC,$CALLI
000440 062706 000010 ADD #10,SP
000444 010001 MOV R0,R1 ; *,$MCB$STATUS
000446 006000 ROR R0
000450 103002 BCC 14$
000452 016602 000006 MOV 6(SP),R2 ; $MCB$MY.INDEX,$MCB$HANDLE
000456 010100 14$: MOV R1,R0 ; $MCB$STATUS,$MCB$STATUS
000460 006001 ROR R1 ; $MCB$STATUS
000462 103002 BCC 15$
000464 010276 000034 MOV R2,@34(SP) ; $MCB$HANDLE,PIX
000470 062706 000016 15$: ADD #16,SP ; 0883
000474 000207 RTS PC
SCSUB 25-Jan-1983 10:20:59 TOPS-20 Bliss-16 2A(530) Page 40
X01250 30-Dec-1982 20:59:22 NETPKG:<SC>SCSUB.BLI.11 (13)
; Routine Size: 159 words, Routine Base: $CODE$ + 4030
; Maximum stack depth per invocation: 19 words
000016 .PSECT $PLIT$, RO , D
P.AAD: ; CASE Table for FINDOB+0034 0923
000016 000000 .WORD 0 ; [1$]
000020 000160 .WORD 160 ; [6$]
000022 000202 .WORD 202 ; [7$]
SCSUB 25-Jan-1983 10:20:59 TOPS-20 Bliss-16 2A(530) Page 41
X01250 30-Dec-1982 20:59:22 NETPKG:<SC>SCSUB.BLI.11 (14)
; 0981 global routine I$CLS (LNK): novalue =
; 0982
; 0983 !++
; 0984 ! FUNCTIONAL DESCRIPTION:
; 0985 ! Issue a close on the specified link to NSP.
; 0986 !
; 0987 ! FORMAL PARAMETERS:
; 0988 ! LNK Link data base address
; 0989 !
; 0990 ! IMPLICIT INPUTS:
; 0991 ! None
; 0992 !
; 0993 ! IMPLICIT OUTPUTS:
; 0994 ! None
; 0995 !
; 0996 ! ROUTINE VALUE:
; 0997 ! COMPLETION CODES:
; 0998 ! None
; 0999 !
; 1000 ! SIDE EFFECTS:
; 1001 ! None
; 1002 !--
; 1003 begin
; 1004 $sc_get_data_base (SCDB);
; 1005 map LNK: ref block field (LLT_FIELDS);
; 1006 local
; 1007 CCB: ref block field (C_FIELDS);
; 1008
; 1009 if .LNK [L_STATE] eql ST_CLI then return; ! If close started, then return
; 1010 LNK [LL_CLSI] = true; ! Ok, we are fixing to start
; 1011 if CCBGT$ (CCB)
; 1012 then
; 1013 begin
; 1014 $SC_DO_XME (.CCB, N_PCLS, .LNK);
; 1015 LNK [L_STATE] = ST_CLI ! Now we've done it
; 1016 end
; 1017 else
; 1018 begin
; 1019 LNK [LL_KLOK] = true; ! Request clock service
; 1020 LNK [L_TIMER] = 1; ! ...
; 1021 SCDB [SCF_KLOK] = true ! ...
; 1022 end
; 1023 end;
.GLOBL $CCBGT
.SBTTL I$CLS
004526 .PSECT $CODE$, RO
000000 004167 000000G I$CLS:: JSR R1,$SAVE4 ; 0981
SCSUB 25-Jan-1983 10:20:59 TOPS-20 Bliss-16 2A(530) Page 42
X01250 30-Dec-1982 20:59:22 NETPKG:<SC>SCSUB.BLI.11 (14)
000004 016702 000002G MOV .CRDAT+2,R2 ; 1003
000010 016601 000014 MOV 14(SP),R1 ; LNK,* 1009
000014 121127 000010 CMPB (R1),#10
000020 001425 BEQ 2$
000022 052711 001000 BIS #1000,(R1) ; 1010
000026 004767 000000G JSR PC,$CCBGT ; 1011
000032 103411 BCS 1$
000034 012746 000004 MOV #4,-(SP) ; 1014
000040 010146 MOV R1,-(SP)
000042 004767 175406 JSR PC,DO.XME
000046 112711 000010 MOVB #10,(R1) ; 1015
000052 022626 CMP (SP)+,(SP)+ ; 1013
000054 000207 RTS PC ; 1011
000056 052711 010000 1$: BIS #10000,(R1) ; 1019
000062 012761 000001 000012 MOV #1,12(R1) ; 1020
000070 052712 002000 BIS #2000,(R2) ; 1021
000074 000207 2$: RTS PC ; 0981
; Routine Size: 31 words, Routine Base: $CODE$ + 4526
; Maximum stack depth per invocation: 8 words
SCSUB 25-Jan-1983 10:20:59 TOPS-20 Bliss-16 2A(530) Page 43
X01250 30-Dec-1982 20:59:22 NETPKG:<SC>SCSUB.BLI.11 (15)
; 1024 global routine I$OPN: novalue =
; 1025
; 1026 !++
; 1027 ! FUNCTIONAL DESCRIPTION:
; 1028 ! Open an NSP port if one is needed.
; 1029 !
; 1030 ! FORMAL PARAMETERS:
; 1031 ! None
; 1032 !
; 1033 ! IMPLICIT INPUTS:
; 1034 ! None
; 1035 !
; 1036 ! IMPLICIT OUTPUTS:
; 1037 ! None
; 1038 !
; 1039 ! ROUTINE VALUE:
; 1040 ! COMPLETION CODES:
; 1041 ! None
; 1042 !
; 1043 ! SIDE EFFECTS:
; 1044 ! None
; 1045 !--
; 1046 begin
; 1047 $sc_get_data_base (SCDB);
; 1048 local
; 1049 LL,
; 1050 SAV_MAP,
; 1051 CCB: ref block field (C_FIELDS);
; 1052 bind
; 1053 LLT = SCDB [SC_LLT_ADDR]: ref blockvector [,L_SIZE] field (LLT_FIELDS);
; 1054
; 1055 if (not .SCDB [SCF_OPEN]) and (.SCDB [SC_IPORT] lss .SCDB [SC_RPORT])
; 1056 then
; 1057 begin
; 1058 if not CCBGT$ (CCB) then return;
; 1059 SMAP$ (SAV_MAP);
; 1060 MAP$ (.SCDB [SC_LLT_BIAS]);
; 1061 if FINDLL (LL)
; 1062 then
; 1063 begin
; 1064 bind
; 1065 LNK = LLT [.LL, L_TOP]: block field (LLT_FIELDS);
; 1066
; 1067 CCB [C_PRM1] = LLT [.LL, L_TOP];
; 1068 $SC_DO_XME (.CCB, N_POPN, LNK [L_TOP]);
; 1069 LNK [LL_BUSY] = true;
; 1070 LNK [L_STATE] = ST_OI;
; 1071 SCDB [SCF_OPEN] = true
; 1072 end
; 1073 else
; 1074 CCBRT$ (.CCB);
; 1075
SCSUB 25-Jan-1983 10:20:59 TOPS-20 Bliss-16 2A(530) Page 44
X01250 30-Dec-1982 20:59:22 NETPKG:<SC>SCSUB.BLI.11 (15)
; 1076 MAP$ (.SAV_MAP)
; 1077 end
; 1078 end;
.GLOBL $CCBRT
.SBTTL I$OPN
000000 004167 000000G I$OPN:: JSR R1,$SAVE4 ; 1024
000004 005746 TST -(SP)
000006 016702 000002G MOV .CRDAT+2,R2 ; 1046
000012 032712 004000 BIT #4000,(R2) ; 1055
000016 001054 BNE 3$
000020 126262 000006 000007 CMPB 6(R2),7(R2)
000026 103050 BHIS 3$
000030 004767 000000G JSR PC,$CCBGT ; 1058
000034 103445 BCS 3$
000036 016703 000000G MOV KISAR6,R3 ; *,SAV.MAP 1059
000042 016267 000044 000000G MOV 44(R2),KISAR6 ; 1060
000050 012746 000002 MOV #2,-(SP) ; 1061
000054 060616 ADD SP,(SP) ; LL,*
000056 004767 176130 JSR PC,FINDLL
000062 005726 TST (SP)+
000064 006000 ROR R0
000066 103024 BCC 1$
000070 011601 MOV (SP),R1 ; LL,* 1065
000072 070127 000032 MUL #32,R1
000076 066201 000046 ADD 46(R2),R1
000102 010164 000024 MOV R1,24(R4) ; *,*(CCB) 1067
000106 012746 000002 MOV #2,-(SP) ; 1068
000112 010146 MOV R1,-(SP)
000114 004767 175236 JSR PC,DO.XME
000120 052711 004000 BIS #4000,(R1) ; 1069
000124 112711 000003 MOVB #3,(R1) ; 1070
000130 052712 004000 BIS #4000,(R2) ; 1071
000134 022626 CMP (SP)+,(SP)+ ; 1063
000136 000402 BR 2$ ; 1061
000140 004767 000000G 1$: JSR PC,$CCBRT ; 1074
000144 010367 000000G 2$: MOV R3,KISAR6 ; SAV.MAP,* 1076
000150 005726 3$: TST (SP)+ ; 1024
000152 000207 RTS PC
; Routine Size: 54 words, Routine Base: $CODE$ + 4624
; Maximum stack depth per invocation: 9 words
SCSUB 25-Jan-1983 10:20:59 TOPS-20 Bliss-16 2A(530) Page 45
X01250 30-Dec-1982 20:59:22 NETPKG:<SC>SCSUB.BLI.11 (16)
; 1079 global routine STKCCB (NCCB, OCCB): novalue =
; 1080
; 1081 !++
; 1082 ! FUNCTIONAL DESCRIPTION:
; 1083 ! Performs stacking of NCCB onto OCCB, and transfers
; 1084 ! buffer pointers.
; 1085 !
; 1086 ! FORMAL PARAMETERS:
; 1087 ! NCCB New top-level CCB
; 1088 ! OCCB Old instigator CCB
; 1089 !
; 1090 ! IMPLICIT INPUTS:
; 1091 ! None
; 1092 !
; 1093 ! IMPLICIT OUTPUTS:
; 1094 ! None
; 1095 !
; 1096 ! ROUTINE VALUE:
; 1097 ! COMPLETION CODES:
; 1098 ! None
; 1099 !
; 1100 ! SIDE EFFECTS:
; 1101 ! None
; 1102 !--
; 1103 begin
; 1104 map
; 1105 NCCB: ref block field (C_FIELDS),
; 1106 OCCB: ref block field (C_FIELDS);
; 1107
; 1108 NCCB [C_STK] = .OCCB; ! Point to originator CCB
; 1109 NCCB [C_CHN] = .OCCB [C_CHN]; ! Copy chain info
; 1110 NCCB [C_BIAS] = .OCCB [C_BIAS]; ! Copy buffer info
; 1111 NCCB [C_ADDR] = .OCCB [C_ADDR]; ! ...
; 1112 NCCB [C_CNT] = .OCCB [C_CNT] ! ...
; 1113 end;
.SBTTL STKCCB
000000 010146 STKCCB::MOV R1,-(SP) ; 1079
000002 016601 000006 MOV 6(SP),R1 ; NCCB,* 1108
000006 016600 000004 MOV 4(SP),R0 ; OCCB,*
000012 010061 000004 MOV R0,4(R1)
000016 016061 000002 000002 MOV 2(R0),2(R1) ; 1109
000024 016061 000016 000016 MOV 16(R0),16(R1) ; 1110
000032 016061 000020 000020 MOV 20(R0),20(R1) ; 1111
000040 016061 000022 000022 MOV 22(R0),22(R1) ; 1112
000046 012601 MOV (SP)+,R1 ; 1079
000050 000207 RTS PC
; Routine Size: 21 words, Routine Base: $CODE$ + 5000
; Maximum stack depth per invocation: 2 words
SCSUB 25-Jan-1983 10:20:59 TOPS-20 Bliss-16 2A(530) Page 46
X01250 30-Dec-1982 20:59:22 NETPKG:<SC>SCSUB.BLI.11 (17)
; 1114 global routine STSMAP (CODE) =
; 1115
; 1116 !++
; 1117 ! FUNCTIONAL DESCRIPTION:
; 1118 ! Map from NSP error code to SC error code
; 1119 !
; 1120 ! FORMAL PARAMETERS:
; 1121 ! CODE The NSP error code
; 1122 !
; 1123 ! IMPLICIT INPUTS:
; 1124 ! None
; 1125 !
; 1126 ! IMPLICIT OUTPUTS:
; 1127 ! None
; 1128 !
; 1129 ! ROUTINE VALUE:
; 1130 ! SC code value
; 1131 !
; 1132 ! COMPLETION CODES:
; 1133 ! None
; 1134 !
; 1135 ! SIDE EFFECTS:
; 1136 ! None
; 1137 !--
; 1138 begin
; 1139 macro
; 1140 C (NSP_CODE, SC_CODE) = ((NSP_CODE - N$LO)^1, SC_CODE) %;
; 1141 bind
; P 1142 STATUS_MAP = TABLE$ (S_EERR, (N$HI - N$LO)^1,
; P 1143 C (N$SSUC, S_SSUC),
; P 1144 C (N$SACC, S_SSUC),
; P 1145 C (N$SREJ, S_ERBO),
; P 1146 C (N$ERES, S_ERES),
; P 1147 C (N$ECON, S_ENUR),
; P 1148 C (N$ESTE, S_EERR),
; P 1149 C (N$EOPN, S_ERES),
; P 1150 C (N$EABR, S_EABS),
; P 1151 C (N$ETMI, S_EERR),
; P 1152 C (N$ERMO, S_EIDM),
; P 1153 C (N$ELST, S_ELST),
; P 1154 C (N$EMTL, S_EMTL),
; P 1155 C (N$ECLS, S_EABL),
; P 1156 C (N$EABL, S_EABO),
; 1157 C (N$ENUR, S_ENUR)): vector;
; 1158
; 1159 .STATUS_MAP [.CODE - N$LO]
; 1160 end;
000024 .PSECT $PLIT$, RO , D
000024 177763 P.AAE: .WORD -15
SCSUB 25-Jan-1983 10:20:59 TOPS-20 Bliss-16 2A(530) Page 47
X01250 30-Dec-1982 20:59:22 NETPKG:<SC>SCSUB.BLI.11 (17)
000026 177763 .WORD -15
000030 177767 .WORD -11
000032 177731 .WORD -47
000034 177755 .WORD -23
000036 177757 .WORD -21
000040 177761 .WORD -17
000042 177762 .WORD -16
000044 177763 .WORD -15
000046 177771 .WORD -7
000050 177777 .WORD -1
000052 177763 .WORD -15
000054 177731 .WORD -47
000056 177777 .WORD -1
000060 177763 .WORD -15
000062 000001 .WORD 1
000064 000001 .WORD 1
000066 177754 .WORD -24
000024' STATUS.MAP= P.AAE
.SBTTL STSMAP
005052 .PSECT $CODE$, RO
000000 016600 000002 STSMAP::MOV 2(SP),R0 ; CODE,* 1159
000004 006300 ASL R0
000006 016000 000060' MOV STATUS.MAP+34(R0),R0 ; 1114
000012 000207 RTS PC
; Routine Size: 6 words, Routine Base: $CODE$ + 5052
; Maximum stack depth per invocation: 0 words
; 1161
; 1162 end
; 1163 eludom
; OTS external references
.GLOBL $SAVE5, $SAVE4, $SAVE3, $SAVE2
.GLOBL BL$EQL, BL$FIL, BL$MOV
; PSECT SUMMARY
;
; Psect Name Words Attributes
; $CODE$ 1307 RO , I , LCL, REL, CON
; $PLIT$ 28 RO , D , LCL, REL, CON
SCSUB 25-Jan-1983 10:20:59 TOPS-20 Bliss-16 2A(530) Page 48
X01250 30-Dec-1982 20:59:22 NETPKG:<SC>SCSUB.BLI.11 (17)
; LIBRARY STATISTICS
;
; -------- Symbols -------- Blocks
; File Total Loaded Percent Read
;
; NETPKG:<SC>SCPRM.L16.4 262 91 34 0
; NETPKG:<MCB>MCBLIB.L16.15 372 52 13 0
; NETPKG:<MCB>RSXLIB.L16.13 317 0 0 0
; NETPKG:<MCB>XPORTX.L16.15 599 7 1 0
; NETPKG:<MCB>SCSYS.L16.13 113 54 47 0
; 1164
; Size: 1307 code + 28 data words
; Run Time: 00:32.9
; Elapsed Time: 01:57.2
; Memory Used: 56 pages
; Compilation Complete