Trailing-Edge
-
PDP-10 Archives
-
BB-P363B-SM_1985
-
mcb/mcb/mcblib.lst
There are no other files named mcblib.lst in the archive.
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 1
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (1)
; 0001 ! [Beginning of MCBLIB]
; 0002 !
; 0003 ! COPYRIGHT (c) 1980, 1981, 1982
; 0004 ! DIGITAL EQUIPMENT CORPORATION
; 0005 ! Maynard, Massachusetts
; 0006 !
; 0007 ! This software is furnished under a license and may be used
; 0008 ! and copied only in accordance with the terms of such license
; 0009 ! and with the inclusion of the above copyright notice. This
; 0010 ! software or any other copies thereof may not be provided or
; 0011 ! otherwise made available to any other person. No title to
; 0012 ! and ownership of the software is hereby transferred.
; 0013 !
; 0014 ! The information in this software is subject to change
; 0015 ! without notice and should not be construed as a commitment
; 0016 ! by DIGITAL EQUIPMENT CORPORATION.
; 0017 !
; 0018 ! DIGITAL assumes no responsibility for the use or reliability
; 0019 ! of its software on equipment which is not supplied by
; 0020 ! DIGITAL.
; 0021 !
; 0022
; 0023 !++
; 0024 ! FACILITY: MCB User's Library
; 0025 !
; 0026 ! ABSTRACT:
; 0027 !
; 0028 ! This file contains the macros and structure definitions
; 0029 ! necessary to a process for operation within MCB.
; 0030 !
; 0031 ! ENVIRONMENT:
; 0032 !
; 0033 ! AUTHOR: Alan D. Peckham, CREATION DATE: 13-March-1980
; 0034 !
; 0035 ! MODIFIED BY:
; 0036 !
; 0037 ! , : VERSION
; 0038 ! 01 -
; 0039 ! 03 - Use status definition macro from MCBSTS.
; 0040 ! 04 - Change PHDR$ macro to use OWN psect instead of PLIT.
; 0041 ! 05 - Correct RSX_UCB_SCB_IOP linkage.
; 0042 ! 06 - Add $MCB_EXCEPTION
; 0043 ! 07 - Begin MCB V3.2 changeover.
; 0044 ! 08 - Fix LINKAGE MCB_INTERRUPT to preserve register 0.
; 0045 ! 09 - Fix all linkages to routines which do not affect register 0.
; 0046 ! CEX auxilliary routines called through CALL$C.
; 0047 ! 10 - Registers not saved in EXRQN$.
; 0048 ! 11 - Add CE_UDR (transmitter underrun).
; 0049 ! 12 - Change CALL$C to CALL$I.
; 0050 ! 13 - Add synonyms and make some values global.
; 0051 ! 14 - Add interrupt inhibit/enable and table lookup services.
; 0052 ! 15 - Fix $RSX_GET_TCB to check for no task situation.
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 2
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (1)
; 0053 ! 18 - Fix CALL$L to declare routine name if not already declared.
; 0054 !--
; 0055
; 0056 literal
; 0057 MCB$K_VERSION = 3,
; 0058 MCB$K_LEVEL = 2, ! Updated on each data structure change
; 0059 MCB$K_EDIT = 18; ! Updated on each edit
; 0060
; 0061 %if %bliss (bliss16) %then
; 0062 literal
; 0063 LIB$V0 = %rad50_11 '032',
; 0064 LIB$V1 = %rad50_11 '180';
; 0065 %fi
; 0066
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 3
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; 0067 !
; 0068 ! Synonyms
; 0069 !
; 0070
; 0071 macro
; 0072 MCB$K_SET_EXCEPTION = %name ('E.XVST') %,
; 0073 MCB$K_SET_PROCESS = %name ('P.DTST') %,
; 0074 MCB$K_CLEAR_PROCESS = %name ('P.DTCL') %,
; 0075 MCB$K_GET_PROCESS_INDEX = %name ('P.DTGT') %,
; 0076 MCB$K_GET_PROCESS_NAME = %name ('P.NMGT') %,
; 0077 MCB$K_SET_PROCESS_NAME = %name ('P.NMST') %,
; 0078 MCB$K_CLEAR_PROCESS_NAME = %name ('P.NMCL') %,
; 0079 MCB$K_SET_VECTOR = %name ('V.ECST') %,
; 0080 MCB$K_CLEAR_VECTOR = %name ('V.ECCL') %,
; 0081 MCB$K_GET_LINE_NAME = %name ('S.NMGT') %,
; 0082 MCB$K_SET_LINE_PROCESSES = %name ('S.LTST') %,
; 0083 MCB$K_GET_LINE_PROCESSES = %name ('S.LTGT') %,
; 0084 MCB$K_GET_DEVICE_NAME = %name ('D.NMGT') %;
; 0085
; 0086 !
; 0087 ! Signal handling
; 0088 !
; 0089
; 0090 field
; 0091 CONDIT_FIELDS =
; 0092 set
; 0093 STS$V_SEVERITY = [0, 0, 3, 0], ! Severity field
; 0094 STS$V_SUCCESS = [0, 0, 1, 0], ! Success field
; 0095 STS$V_COND_ID = [0, 3, 13, 0], ! Identity field
; 0096 STS$V_CUST_DEF = [0, 15, 1, 0] ! Customer definition field
; 0097 tes;
; 0098
; 0099 macro
; 0100 CONDITION_VALUE = block [1] field (CONDIT_FIELDS) %;
; 0101
; 0102 literal
; 0103 STS$K_SUCCESS = 1, ! Success
; 0104 STS$K_INFO = 3, ! Information
; 0105 STS$K_WARNING = 0, ! Warning
; 0106 STS$K_ERROR = 2, ! Error
; 0107 STS$K_SEVERE = 4; ! Severe error
; 0108
; 0109 keywordmacro
; 0110 STS$VALUE (
; 0111 SEVERITY = STS$K_SEVERE, ! default is severe error
; 0112 CODE, ! no default
; M 0113 CUST_DEF = 1^15 ) = ! default is user definition
; M 0114 (SEVERITY and 7) or
; M 0115 (CODE and %o'17777')^3 or
; M 0116 (if CUST_DEF neq 0
; M 0117 then 1^15
; 0118 else 0) %;
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 4
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; 0119
; 0120 macro
; M 0121 STS$MATCH (A, B) =
; 0122 (((A) and %o'177770') eql ((B) and %o'177770')) %;
; 0123
; 0124 !
; 0125 ! MCB Completion Code Definitions
; 0126 !
; 0127
; 0128 REQUIRE 'MCB:MCBSTS';
; 0290
; 0291 macro
; M 0292 $MCB$CODES [CODE_SET] =
; 0293 $MCB$CODE (%remove (CODE_SET)) %,
; M 0294 $MCB$CODE (NAM, LVL, COD, TXT) [] =
; 0295 NAM = STS$VALUE (SEVERITY = LVL, CODE = COD, CUST_DEF = 0) %;
; 0296
; 0297 literal
; 0298 $MCB$CODES ($MCB_STATUS, $RSX_STATUS);
; 0299
; 0300 literal
; 0301 $MCB$CODE (MCB$K_STATUS_MAX, 7, $MCB$NEXT_CODE - 1, 'Highest MCB status'),
; 0302 $MCB$CODE (RSX$K_STATUS_MAX, 7, $RSX$NEXT_CODE - 1, 'Highest RSX status');
; 0303
; 0304 undeclare
; 0305 %quote $MCB$CODES,
; 0306 %quote $MCB$CODE;
; 0307
; L 0308 %IF %BLISS (BLISS16)
; 0309 %THEN %(BLISS16)%
; 0310
; 0311 MACRO
; M 0312 DECLARE_SEVERITY (prefix) [level] =
; M 0313 %IF NOT %DECLARED (%NAME ('$', prefix, '$cond_code'))
; M 0314 %THEN
; M 0315 COMPILETIME %NAME ('$', prefix, '$cond_code') = 0;
; M 0316 %ELSE
; M 0317 %ASSIGN (%NAME ('$', prefix, '$cond_code'), 0)
; M 0318 %FI
; M 0319 MACRO
; M 0320 %NAME ('$', prefix, '_', level) (code_name, optional_text) =
; M 0321 LITERAL code_name =
; M 0322 STS$VALUE (
; M 0323 CODE = %NAME ('$', prefix, '$cond_code'),
; M 0324 SEVERITY = %NAME ('STS$K_', level),
; M 0325 CUST_DEF = 1);
; M 0326 %ASSIGN (%NAME ('$', prefix, '$cond_code'), %NAME ('$', prefix, '$cond_code') + 1 )
; 0327 %QUOTE % %;
; 0328
; 0329 %FI %(BLISS16)%
; 0330
; 0331 !
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 5
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; 0332 ! Linkages
; 0333 !
; 0334
; L 0335 %IF %BLISS (BLISS16)
; 0336 %THEN %(BLISS16)%
; 0337
; 0338 LINKAGE
; 0339
; 0340 !
; 0341 ! Routine invoked through synchronous calls
; 0342 !
; 0343
; 0344 CALL$ = CALL;
; 0345
; 0346 %FI %(BLISS16)%
; 0347
; 0348 !
; 0349 ! Synchronous calls
; 0350 !
; 0351
; L 0352 %IF %BLISS (BLISS16)
; 0353 %THEN %(BLISS16)%
; 0354
; 0355 macro
; 0356
; 0357 !
; 0358 ! Invoke old BLISS synchronous routine in extension process
; 0359 !
; 0360
; M 0361 CALL$B (ARG) =
; M 0362 %inform ('Now using CALL$E for extension process calling...')
; 0363 %quote CALL$E (ARG, %remaining) %,
; 0364
; 0365 !
; 0366 ! Invoke synchronous routine in the CEX process
; 0367 !
; 0368
; M 0369 CALL$I (INDEX) =
; M 0370 begin
; M 0371
; M 0372 external literal
; M 0373 INDEX;
; M 0374
; M 0375 external routine
; M 0376 $CALLI;
; M 0377
; M 0378 %if %null (%remaining)
; M 0379 %then
; M 0380 $CALLI ($MCB$REVERSE (INDEX, 0))
; M 0381 %else
; M 0382 $CALLI ($MCB$REVERSE (INDEX, %length - 1, %remaining))
; M 0383 %fi
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 6
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; M 0384
; 0385 end %,
; 0386
; 0387 !
; 0388 ! Invoke synchronous routine in extension process
; 0389 !
; 0390
; M 0391 CALL$E (ADR, PIX) =
; M 0392 begin
; M 0393
; M 0394 external routine
; M 0395 %if not %declared (ADR) %then ADR, %fi
; M 0396 $CALLE;
; M 0397
; M 0398 %if %null (%remaining)
; M 0399 %then
; M 0400 $CALLE ($MCB$REVERSE (PIX, ADR, 0))
; M 0401 %else
; M 0402 $CALLE ($MCB$REVERSE (PIX, ADR, %length - 2, %remaining))
; M 0403 %fi
; M 0404
; 0405 end %,
; 0406
; 0407 !
; 0408 ! Invoke synchronous routine in local process
; 0409 !
; 0410
; M 0411 CALL$L (ADR) =
; M 0412 begin
; M 0413 %if not %declared (ADR) %then external routine ADR; %fi
; M 0414 fortran (ADR, %remaining)
; 0415 end %,
; 0416
; 0417 !
; 0418 ! Invoke synchronous routine in other process
; 0419 !
; 0420
; M 0421 CALL$P (ADR, PIX) =
; M 0422 begin
; M 0423
; M 0424 external routine
; M 0425 %if not %declared (ADR) %then ADR, %fi
; M 0426 $CALLP;
; M 0427
; M 0428 %if %null (%remaining)
; M 0429 %then
; M 0430 $CALLP ($MCB$REVERSE (PIX, ADR, 0))
; M 0431 %else
; M 0432 $CALLP ($MCB$REVERSE (PIX, ADR, %length - 2, %remaining))
; M 0433 %fi
; M 0434
; 0435 end %,
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 7
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; M 0436 $MCB$REVERSE (ARG) [] =
; M 0437 %if not %null (%remaining) %then $MCB$REVERSE (%remaining), %fi
; 0438 ARG %;
; 0439 ;
; 0440
; 0441 %FI %(BLISS16)%
; 0442
; 0443 !
; 0444 ! Buffer move calls
; 0445 !
; 0446
; L 0447 %IF %BLISS (BLISS16)
; 0448 %THEN %(BLISS16)%
; 0449
; 0450 MACRO
; 0451
; 0452 !
; 0453 ! Move from mapped buffer
; 0454 !
; 0455
; L 0456 %if %variant eql 0
; 0457 %then
; 0458
; M 0459 MFBF$S (lng, from_bias, from_adr, begin_adr, end_adr) =
; M 0460 BEGIN
; M 0461
; M 0462 LINKAGE
; M 0463 MV_LINKAGE = JSR (STANDARD, STANDARD, REGISTER = 2, REGISTER = 3)
; M 0464 : preserve (0) nopreserve (2, 3);
; M 0465
; M 0466 EXTERNAL ROUTINE
; M 0467 $MVFBF : MV_LINKAGE NOVALUE;
; M 0468
; M 0469 %IF NOT %NULL (end_adr) %THEN GLOBAL REGISTER R2 = 2; %FI
; M 0470
; M 0471 $MVFBF (from_bias, from_adr, begin_adr, lng)
; M 0472
; M 0473 %IF NOT %NULL (end_adr) %THEN ; end_adr = .R2 %FI
; M 0474
; 0475 END %,
; 0476
; U 0477 %else
; U 0478
; U 0479 MFBF$S (lng, from_bias, from_adr, begin_adr, end_adr) =
; U 0480 BEGIN
; U 0481
; U 0482 LINKAGE
; U 0483 MV_LINKAGE = JSR (STANDARD, STANDARD, REGISTER = 2, REGISTER = 3; REGISTER = 2)
; U 0484 : preserve (0) nopreserve (2, 3);
; U 0485
; U 0486 EXTERNAL ROUTINE
; U 0487 $MVFBF : MV_LINKAGE NOVALUE;
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 8
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; U 0488
; U 0489 $MVFBF (from_bias, from_adr, begin_adr, lng; end_adr)
; U 0490 END %,
; U 0491
; 0492 %fi
; 0493
; 0494 !
; 0495 ! Move to mapped buffer
; 0496 !
; 0497
; L 0498 %if %variant eql 0
; 0499 %then
; 0500
; M 0501 MTBF$S (lng, begin_adr, to_bias, to_adr, end_adr) =
; M 0502 BEGIN
; M 0503
; M 0504 LINKAGE
; M 0505 MV_LINKAGE = JSR (STANDARD, STANDARD, REGISTER = 2, REGISTER = 3)
; M 0506 : preserve (0) nopreserve (2, 3);
; M 0507
; M 0508 EXTERNAL ROUTINE
; M 0509 $MVTBF : MV_LINKAGE NOVALUE;
; M 0510
; M 0511 %IF NOT %NULL (end_adr) %THEN GLOBAL REGISTER R2 = 2; %FI
; M 0512
; M 0513 $MVTBF (to_bias, to_adr, begin_adr, lng)
; M 0514
; M 0515 %IF NOT %NULL (end_adr) %THEN ; end_adr = .R2 %FI
; M 0516
; 0517 END %,
; 0518
; U 0519 %else
; U 0520
; U 0521 MTBF$S (lng, begin_adr, to_bias, to_adr, end_adr) =
; U 0522 BEGIN
; U 0523
; U 0524 LINKAGE
; U 0525 MV_LINKAGE = JSR (STANDARD, STANDARD, REGISTER = 2, REGISTER = 3; REGISTER = 2)
; U 0526 : preserve (0) nopreserve (3);
; U 0527
; U 0528 EXTERNAL ROUTINE
; U 0529 $MVTBF : MV_LINKAGE NOVALUE;
; U 0530
; U 0531 $MVTBF (to_bias, to_adr, begin_adr, lng; end_adr)
; U 0532 END %,
; U 0533
; 0534 %fi
; 0535
; 0536 !
; 0537 ! Map a buffer
; 0538 !
; 0539
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 9
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; M 0540 MAP$ (bias) =
; M 0541 BEGIN
; M 0542
; M 0543 EXTERNAL
; M 0544 KISAR6 : volatile;
; M 0545
; M 0546 KISAR6 = bias
; 0547 END %,
; 0548
; 0549 !
; 0550 ! Return the current mapping bias
; 0551 !
; 0552
; M 0553 SMAP$ (var) =
; M 0554 BEGIN
; M 0555
; M 0556 EXTERNAL
; M 0557 KISAR6 : volatile;
; M 0558
; M 0559 var = .KISAR6
; 0560 END %;
; 0561
; 0562 %FI %(BLISS16)%
; 0563
; 0564 !
; 0565 ! Create a process header
; 0566 !
; 0567
; L 0568 %IF %BLISS (BLISS16)
; 0569 %THEN %(BLISS16)%
; 0570
; 0571 macro
; M 0572 PHDR$ (NAM, LLC, DLC, DDM, INT1, INT2, INT3) =
; 0573 %inform ('Please use the $MCB_PROCESS macro') %;
; 0574
; 0575 keywordmacro
; 0576 $MCB_PROCESS (
; 0577 CEX_DISPATCH = 0,
; 0578 DDM_DISPATCH = %name ('.DSPCR'),
; 0579 DLC_DISPATCH = %name ('.DSPCR'),
; 0580 LLC_DISPATCH = %name ('.DSPCR'),
; 0581 NAME,
; 0582 RSX_DISPATCH = 0,
; M 0583 SIGNAL_HANDLER = 0) =
; M 0584
; M 0585 %if %null (NAME)
; M 0586 %then %errormacro ('Process name not supplied')
; M 0587 %fi
; M 0588
; M 0589 %if not %identical (CEX_DISPATCH, 0) and not %identical (NAME, CEX)
; M 0590 %then %errormacro ('CEX_DISPATCH only to be used by CEX process')
; M 0591 %fi
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 10
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; M 0592
; M 0593 psect
; M 0594 own = %name (' ');
; M 0595
; M 0596 external
; M 0597 %if %identical (LLC_DISPATCH, %name ('.DSPCR'))
; M 0598 or %identical (DLC_DISPATCH, %name ('.DSPCR'))
; M 0599 or %identical (DDM_DISPATCH, %name ('.DSPCR'))
; M 0600 %then
; M 0601 %name ('.DSPCR'),
; M 0602 %fi
; M 0603 MCB$V0, MCB$V1;
; M 0604
; M 0605 own
; M 0606 HEADER : vector [16] initial (
; M 0607 %rad50_11 %string (NAME), 3 + 1^8, 0, 0,
; M 0608 SIGNAL_HANDLER, LLC_DISPATCH, DLC_DISPATCH, DDM_DISPATCH,
; M 0609 MCB$V0, MCB$V1, LIB$V0, LIB$V1,
; M 0610 1^8 + 1^9, RSX_DISPATCH, CEX_DISPATCH, 0);
; M 0611
; M 0612 undeclare
; M 0613 HEADER;
; M 0614
; M 0615 psect
; 0616 own = $OWN$; %;
; 0617
; 0618 %FI %(BLISS16)%
; 0619
; 0620 !
; 0621 ! Create a RSX driver header
; 0622 !
; 0623
; L 0624 %if %bliss (bliss16)
; 0625 %then %(BLISS16)%
; 0626
; 0627 keywordmacro
; 0628 $RSX_DRIVER (
; 0629 DISPATCH,
; M 0630 NAME) =
; M 0631
; M 0632 %if %null (NAME)
; M 0633 %then %errormacro ('Driver name not supplied')
; M 0634 %fi
; M 0635
; M 0636 global bind
; 0637 %name ('$', NAME, 'TBL') = DISPATCH; %;
; 0638
; 0639 %fi %(bliss16)%
; 0640
; 0641 !
; 0642 ! CCB definitions
; 0643 !
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 11
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; 0644
; 0645 FIELD
; 0646 C_fields =
; 0647 SET
; 0648 C_LNK = [0, 0, 16, 0],
; 0649 C_CHN = [1, 0, 16, 0],
; 0650 C_STK = [2, 0, 16, 0],
; 0651 C_OWN = [3, 0, 8, 0],
; 0652 C_LIX = [4, 0, 8, 0],
; 0653 C_LIN = [4, 0, 8, 0],
; 0654 C_PIX = [4, 8, 8, 0],
; 0655 C_FNC = [5, 0, 8, 0],
; 0656 C_MOD = [5, 8, 8, 0],
; 0657 C_STS = [6, 0, 16, 1],
; 0658 C_BUF = [7, 0, 16, 0],
; 0659 C_BIAS = [7, 0, 16, 0],
; 0660 C_ADDR = [8, 0, 16, 0],
; 0661 C_CNT = [9, 0, 16, 0],
; 0662 C_PRM = [10, 0, 16, 0],
; 0663 C_PRM1 = [10, 0, 16, 0],
; 0664 C_PRM2 = [11, 0, 16, 0],
; 0665 C_PRM3 = [12, 0, 16, 0],
; 0666 C_PRM4 = [13, 0, 16, 0],
; 0667 C_PRM5 = [14, 0, 16, 0]
; 0668 TES;
; 0669
; 0670 LITERAL
; 0671 FC_AST = 0*2,
; 0672 FC_XME = 1*2,
; 0673 FC_RCE = 2*2,
; 0674 FC_KIL = 3*2,
; 0675 FC_CTL = 4*2,
; 0676 FC_TIM = 5*2,
; 0677 FC_XCP = 6*2,
; 0678 FC_RCP = 7*2,
; 0679 FC_KCP = 8*2,
; 0680 FC_CCP = 9*2,
; 0681 FC_SYS = FC_TIM;
; 0682
; 0683 LITERAL
; 0684 FD_AST = 0*2,
; 0685
; 0686 FD_XME = 0*2,
; 0687
; 0688 FM_DAT = 0*2,
; 0689 FM_RTN = 1*2,
; 0690 FD_RCE = 2*2,
; 0691
; 0692 FM_KIL = 0*2,
; 0693 FM_CRA = 1*2,
; 0694 FM_XKL = 2*2,
; 0695 FD_KIL = 2*2,
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 12
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; 0696
; 0697 FM_STR = 1*2,
; 0698 FM_STP = 2*2,
; 0699 FM_NM = 3*2,
; 0700 FM_SET = 5*2,
; 0701 FM_GET = 6*2,
; 0702 FD_CTL = 6*2,
; 0703
; 0704 FM_STM = 0*2,
; 0705 FM_LTM = 1*2,
; 0706 FD_TIM = 5*2,
; 0707
; 0708 FD_XCP = FD_XME,
; 0709
; 0710 FM_SYN = 2*2,
; 0711 FD_RCP = FD_RCE,
; 0712
; 0713 FD_KCP = FD_KIL,
; 0714
; 0715 FD_CCP = FD_CTL,
; 0716
; 0717 FM_PWF = 2*2,
; 0718 FM_PIN = 3*2,
; 0719 FM_CCB = 4*2,
; 0720 FM_RDB = 5*2,
; 0721 FD_SYS = FD_TIM;
; 0722
; 0723 literal
; 0724 CS_SUC = 0^3 + 1, ! Success
; 0725
; 0726 CE_ABO = -1^3 + 0, ! Operation aborted
; 0727 CE_ERR = -2^3 + 0, ! General error
; 0728 CE_MOP = -3^3 + 0, ! MOP message received
; 0729 CE_SRC = -4^3 + 0, ! Start received
; 0730 CE_RTE = -5^3 + 0, ! Receive error threshold
; 0731 CE_NTE = -6^3 + 0, ! NAK error threshold
; 0732 CE_TMO = -7^3 + 0, ! REP threshold error
; 0733
; 0734 CE_BUF = -16^3 + 0, ! Buffer allocation failure
; 0735 CE_DCR = -17^3 + 0, ! Data CRC error
; 0736 CE_HFE = -18^3 + 0, ! Header format error
; 0737 CE_MTL = -19^3 + 0, ! Message too long
; 0738 CE_ROV = -20^3 + 0, ! Receiver overrun
; 0739 CE_DEV = -21^3 + 2, ! Hard device error
; 0740 CE_DIS = -22^3 + 0, ! Disconnect detected
; 0741 CE_UDR = -23^3 + 0; ! Transmitter underrun
; 0742
; 0743 !
; 0744 ! Timer block definitions
; 0745 !
; 0746
; 0747 FIELD
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 13
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; 0748 T_fields =
; 0749 SET
; 0750 T_PIX = [1, 8, 8, 0],
; 0751 T_IDN = [2, 0, 16, 0],
; 0752 T_TIM = [7, 0, 16, 0]
; 0753 TES;
; 0754
; 0755 literal
; 0756 T_LENGTH = 9;
; 0757
; 0758 !
; 0759 ! MCB interface linkages and macros
; 0760 !
; 0761
; L 0762 %IF %BLISS (BLISS16)
; 0763 %THEN %(BLISS16)%
; 0764
; 0765 LINKAGE
; 0766 RSX_UCB = JSR (REGISTER = 5) : NOPRESERVE (0, 1, 2, 3, 4, 5),
; 0767 RSX_UCB_SCB_IOP = JSR (REGISTER = 5, REGISTER = 4, REGISTER = 1) : NOPRESERVE (0, 1, 2, 3, 4, 5),
; 0768 MCB_ = JSR : NOPRESERVE (0, 1, 2, 3, 4, 5),
; 0769 MCB_CCB = JSR (REGISTER = 4) : NOPRESERVE (0, 1, 2, 3, 4, 5),
; 0770 MCB_CCB_MOD = JSR (REGISTER = 4, REGISTER = 3) : NOPRESERVE (0, 1, 2, 3, 4, 5),
; 0771 MCB_DB = JSR (REGISTER = 5) : NOPRESERVE (0, 1, 2, 3, 4, 5),
; 0772 MCB_DB_CCB = JSR (REGISTER = 5, REGISTER = 4) : NOPRESERVE (0, 1, 2, 3, 4, 5),
; 0773 MCB_DB_CCB_MOD = JSR (REGISTER = 5, REGISTER = 4, REGISTER = 3) : NOPRESERVE (0, 1, 2, 3, 4, 5),
; 0774 MCB_DB_MOD = JSR (REGISTER = 5, REGISTER = 3) : NOPRESERVE (0, 1, 2, 3, 4, 5),
; 0775 MCB_INTERRUPT = JSR (REGISTER = 5) : PRESERVE (0, 1, 2, 3) NOPRESERVE (4, 5),
; 0776 MCB_MOD = JSR (REGISTER = 3) : NOPRESERVE (0, 1, 2, 3, 4, 5),
; 0777 LINKAGE_CCB = JSR (REGISTER = 4),
; 0778 LINKAGE_CCB_MOD = JSR (REGISTER = 4, REGISTER = 3),
; 0779 LINKAGE_DB = JSR (REGISTER = 5),
; 0780 LINKAGE_DB_CCB = JSR (REGISTER = 5, REGISTER = 4),
; 0781 LINKAGE_DB_CCB_MOD = JSR (REGISTER = 5, REGISTER = 4, REGISTER = 3),
; 0782 LINKAGE_DB_MOD = JSR (REGISTER = 5, REGISTER = 3),
; 0783 LINKAGE_MOD = JSR (REGISTER = 3);
; 0784
; 0785 %FI %(BLISS16)%
; 0786
; L 0787 %IF %BLISS (BLISS16)
; 0788 %THEN %(BLISS16)%
; 0789
; 0790 MACRO
; 0791
; 0792 !
; 0793 ! Dispatch from a MCB dispatch sub-table
; 0794 !
; 0795
; M 0796 DISPATCH$ (idx, disp, args, lnkg) =
; M 0797 %IF %NULL (lnkg) %THEN BLISS %ELSE lnkg %FI
; 0798 (.(disp + idx), %REMOVE (args)) %,
; 0799
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 14
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; 0800 !
; 0801 ! Create a dispatch table
; 0802 !
; 0803
; M 0804 TABLE$ (default, top) =
; 0805 UPLIT ($MCB$TABLE_A (0, default, MAX (top, $MCB$TABLE_M (%REMAINING)), %REMAINING)) %,
; M 0806 $MCB$TABLE_A (offset, default, maximum_offset) [] =
; M 0807 $MCB$TABLE_C (offset, default, %REMAINING)
; M 0808 %IF offset LSS maximum_offset
; M 0809 %THEN , $MCB$TABLE_A (offset + 2, default, maximum_offset, %REMAINING)
; 0810 %FI %,
; M 0811 $MCB$TABLE_C (offset, default, entry) [] =
; M 0812 %IF offset EQL $MCB$TABLE_offset (%REMOVE (entry))
; M 0813 %THEN
; M 0814 %IF %NULL ($MCB$TABLE_address (%REMOVE (entry)))
; M 0815 %THEN default
; M 0816 %ELSE $MCB$TABLE_address (%REMOVE (entry))
; M 0817 %FI
; M 0818 %ELSE
; M 0819 %IF NOT %NULL (%REMAINING)
; M 0820 %THEN $MCB$TABLE_C (offset, default, %REMAINING)
; M 0821 %ELSE default
; M 0822 %FI
; 0823 %FI%,
; M 0824 $MCB$TABLE_M [entry] =
; 0825 $MCB$TABLE_offset (%REMOVE (entry)) %,
; M 0826 $MCB$TABLE_offset (offset, address) =
; 0827 offset %,
; M 0828 $MCB$TABLE_address (offset, address) =
; 0829 address %,
; 0830
; 0831 !
; 0832 ! Create a vector
; 0833 !
; 0834
; M 0835 VECTOR$ (default, top) =
; 0836 UPLIT ($MCB$VECTOR_A (0, default, MAX (top, $MCB$TABLE_M (%REMAINING)), %REMAINING)) %,
; M 0837 $MCB$VECTOR_A (offset, default, maximum_offset) [] =
; M 0838 $MCB$TABLE_C (offset, default, %REMAINING)
; M 0839 %IF offset LSS maximum_offset
; M 0840 %THEN , $MCB$VECTOR_A (offset + 1, default, maximum_offset, %REMAINING)
; 0841 %FI %;
; 0842
; 0843 %FI %(BLISS16)%
; 0844
; L 0845 %IF %BLISS (BLISS16)
; 0846 %THEN %(BLISS16)%
; 0847
; 0848 MACRO
; 0849
; 0850 CCBGT$ = $MCB_GET_CCB %,
; 0851
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 15
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; 0852 CCBRT$ = $MCB_RETURN_CCB %,
; 0853
; 0854 CMQIF$ = $MCB_STACK_CCB %,
; 0855
; 0856 CMQIN$ = $MCB_QUEUE_CCB %,
; 0857
; 0858 CMQRM$ = $MCB_DEQUEUE_CCB %,
; 0859
; 0860 CNSTM$ = $MCB_CANCEL_SHORT_TIMER %,
; 0861
; M 0862 CNV22$ (BIAS, ADDRESS, LOW, HIGH) =
; 0863 $MCB_CONVERT_TO_22_BIT_ADDRESS ((BIAS, ADDRESS), LOW, HIGH) %,
; 0864
; 0865 !
; 0866 !
; 0867 !
; 0868
; M 0869 DDAST$ (index, status) =
; M 0870 BEGIN
; M 0871
; M 0872 LINKAGE
; M 0873 DDAST_LINKAGE = JSR (REGISTER = 3, REGISTER = 2) : PRESERVE (0) NOPRESERVE (3, 4) CLEARSTACK VALUECBIT;
; M 0874
; M 0875 EXTERNAL ROUTINE
; M 0876 $DDAST : DDAST_LINKAGE;
; M 0877
; M 0878 ! Note: Cbit clear = FALSE = success
; M 0879
; M 0880 IF NOT $DDAST (status, index)
; M 0881 THEN
; M 0882 MCB$_NORMAL
; M 0883 ELSE
; M 0884 MCB$_NO_CCB
; M 0885
; 0886 END %,
; 0887
; 0888 !
; 0889 !
; 0890 !
; 0891
; M 0892 DDCCP$ (ccb, status) =
; M 0893 BEGIN
; M 0894
; M 0895 LINKAGE
; M 0896 DDCCP_LINKAGE = JSR (REGISTER = 4, REGISTER = 3) : PRESERVE (0) NOPRESERVE (3, 4);
; M 0897
; M 0898 EXTERNAL ROUTINE
; M 0899 $DDCCP : DDCCP_LINKAGE NOVALUE;
; M 0900
; M 0901 $DDCCP (ccb, status);
; 0902 END %,
; 0903
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 16
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; 0904 !
; 0905 !
; 0906 !
; 0907
; M 0908 DDKCP$ (ccb, status) =
; M 0909 BEGIN
; M 0910
; M 0911 LINKAGE
; M 0912 DDKCP_LINKAGE = JSR (REGISTER = 4, REGISTER = 3) : PRESERVE (0) NOPRESERVE (3, 4);
; M 0913
; M 0914 EXTERNAL ROUTINE
; M 0915 $DDKCP : DDKCP_LINKAGE NOVALUE;
; M 0916
; M 0917 $DDKCP (ccb, status);
; 0918 END %,
; 0919
; 0920 !
; 0921 !
; 0922 !
; 0923
; L 0924 %if %variant eql 0
; 0925 %then
; 0926
; M 0927 DDMDB$ (index, db) =
; M 0928 BEGIN
; M 0929
; M 0930 LINKAGE
; M 0931 DDMDB_LINKAGE = JSR (REGISTER = 5) : PRESERVE (0) NOPRESERVE (5);
; M 0932
; M 0933 EXTERNAL ROUTINE
; M 0934 $DDMDB : DDMDB_LINKAGE NOVALUE;
; M 0935
; M 0936 GLOBAL REGISTER
; M 0937 R5 = 5;
; M 0938
; M 0939 $DDMDB (index);
; M 0940 %IF NOT %NULL (db) %THEN db = .R5; %FI
; 0941 END %,
; 0942
; U 0943 %else
; U 0944
; U 0945 DDMDB$ (index, db) =
; U 0946 BEGIN
; U 0947
; U 0948 LINKAGE
; U 0949 DDMDB_LINKAGE = JSR (REGISTER = 5; REGISTER = 5) : PRESERVE (0);
; U 0950
; U 0951 EXTERNAL ROUTINE
; U 0952 $DDMDB : DDMDB_LINKAGE NOVALUE;
; U 0953
; U 0954 $DDMDB (index; db);
; U 0955 END %,
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 17
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; U 0956
; 0957 %fi
; 0958
; 0959 !
; 0960 !
; 0961 !
; 0962
; M 0963 DDRCP$ (ccb, status) =
; M 0964 BEGIN
; M 0965
; M 0966 LINKAGE
; M 0967 DDRCP_LINKAGE = JSR (REGISTER = 4, REGISTER = 3) : PRESERVE (0) NOPRESERVE (3, 4);
; M 0968
; M 0969 EXTERNAL ROUTINE
; M 0970 $DDRCP : DDRCP_LINKAGE NOVALUE;
; M 0971
; M 0972 $DDRCP (ccb, status);
; 0973 END %,
; 0974
; 0975 !
; 0976 !
; 0977 !
; 0978
; M 0979 DDXCP$ (ccb, status) =
; M 0980 BEGIN
; M 0981
; M 0982 LINKAGE
; M 0983 DDXCP_LINKAGE = JSR (REGISTER = 4, REGISTER = 3) : PRESERVE (0) NOPRESERVE (3, 4);
; M 0984
; M 0985 EXTERNAL ROUTINE
; M 0986 $DDXCP : DDXCP_LINKAGE NOVALUE;
; M 0987
; M 0988 $DDXCP (ccb, status);
; 0989 END %,
; 0990
; 0991 !
; 0992 !
; 0993 !
; 0994
; M 0995 DLAST$ (index, status) =
; M 0996 BEGIN
; M 0997
; M 0998 LINKAGE
; M 0999 DLAST_LINKAGE = JSR (REGISTER = 3, REGISTER = 2) : PRESERVE (0) NOPRESERVE (3, 4) CLEARSTACK VALUECBIT;
; M 1000
; M 1001 EXTERNAL ROUTINE
; M 1002 $DLAST : DLAST_LINKAGE;
; M 1003
; M 1004 ! Note: Cbit clear = FALSE = success
; M 1005
; M 1006 IF NOT $DLAST (status, index)
; M 1007 THEN
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 18
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; M 1008 MCB$_NORMAL
; M 1009 ELSE
; M 1010 MCB$_NO_CCB
; M 1011
; 1012 END %,
; 1013
; 1014 !
; 1015 !
; 1016 !
; 1017
; M 1018 DLCCP$ (ccb, status) =
; M 1019 BEGIN
; M 1020
; M 1021 LINKAGE
; M 1022 DLCCP_LINKAGE = JSR (REGISTER = 4, REGISTER = 3) : PRESERVE (0) NOPRESERVE (3, 4);
; M 1023
; M 1024 EXTERNAL ROUTINE
; M 1025 $DLCCP : DLCCP_LINKAGE NOVALUE;
; M 1026
; M 1027 $DLCCP (ccb, status);
; 1028 END %,
; 1029
; 1030 !
; 1031 !
; 1032 !
; 1033
; L 1034 %if %variant eql 0
; 1035 %then
; 1036
; M 1037 DLCDB$ (index, db) =
; M 1038 BEGIN
; M 1039
; M 1040 LINKAGE
; M 1041 DLCDB_LINKAGE = JSR (REGISTER = 5) : PRESERVE (0) NOPRESERVE (5);
; M 1042
; M 1043 EXTERNAL ROUTINE
; M 1044 $DLCDB : DLCDB_LINKAGE NOVALUE;
; M 1045
; M 1046 GLOBAL REGISTER
; M 1047 R5 = 5;
; M 1048
; M 1049 $DLCDB (index);
; M 1050 %IF NOT %NULL (db) %THEN db = .R5; %FI
; 1051 END %,
; 1052
; U 1053 %else
; U 1054
; U 1055 DLCDB$ (index, db) =
; U 1056 BEGIN
; U 1057
; U 1058 LINKAGE
; U 1059 DLCDB_LINKAGE = JSR (REGISTER = 5; REGISTER = 5) : PRESERVE (0);
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 19
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; U 1060
; U 1061 EXTERNAL ROUTINE
; U 1062 $DLCDB : DLCDB_LINKAGE NOVALUE;
; U 1063
; U 1064 $DLCDB (index; db);
; U 1065 END %,
; U 1066
; 1067 %fi
; 1068
; 1069 !
; 1070 !
; 1071 !
; 1072
; M 1073 DLGET$ (ccb) =
; M 1074 BEGIN
; M 1075
; M 1076 LINKAGE
; M 1077 DLGET_LINKAGE = JSR (REGISTER = 4) : PRESERVE (0) NOPRESERVE (4);
; M 1078
; M 1079 EXTERNAL ROUTINE
; M 1080 $DLGET : DLGET_LINKAGE NOVALUE;
; M 1081
; M 1082 $DLGET (ccb);
; 1083 END %,
; 1084
; 1085 !
; 1086 !
; 1087 !
; 1088
; M 1089 DLRCE$ (ccb) =
; M 1090 BEGIN
; M 1091
; M 1092 LINKAGE
; M 1093 DLRCE_LINKAGE = JSR (REGISTER = 4) : PRESERVE (0) NOPRESERVE (4);
; M 1094
; M 1095 EXTERNAL ROUTINE
; M 1096 $DLRCE : DLRCE_LINKAGE NOVALUE;
; M 1097
; M 1098 $DLRCE (ccb);
; 1099 END %,
; 1100
; 1101 !
; 1102 !
; 1103 !
; 1104
; M 1105 DLRCP$ (ccb, status) =
; M 1106 BEGIN
; M 1107
; M 1108 LINKAGE
; M 1109 DLRCP_LINKAGE = JSR (REGISTER = 4, REGISTER = 3) : PRESERVE (0) NOPRESERVE (3, 4);
; M 1110
; M 1111 EXTERNAL ROUTINE
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 20
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; M 1112 $DLRCP : DLRCP_LINKAGE NOVALUE;
; M 1113
; M 1114 $DLRCP (ccb, status);
; 1115 END %,
; 1116
; 1117 !
; 1118 !
; 1119 !
; 1120
; M 1121 DLSET$ (ccb) =
; M 1122 BEGIN
; M 1123
; M 1124 LINKAGE
; M 1125 DLSET_LINKAGE = JSR (REGISTER = 4) : PRESERVE (0) NOPRESERVE (4);
; M 1126
; M 1127 EXTERNAL ROUTINE
; M 1128 $DLSET : DLSET_LINKAGE NOVALUE;
; M 1129
; M 1130 $DLSET (ccb);
; 1131 END %,
; 1132
; 1133 DLSTM$ = $MCB_START_SHORT_TIMER %,
; 1134
; 1135 !
; 1136 !
; 1137 !
; 1138
; M 1139 DLSTP$ (ccb) =
; M 1140 BEGIN
; M 1141
; M 1142 LINKAGE
; M 1143 DLSTP_LINKAGE = JSR (REGISTER = 4) : PRESERVE (0) NOPRESERVE (4);
; M 1144
; M 1145 EXTERNAL ROUTINE
; M 1146 $DLSTP : DLSTP_LINKAGE NOVALUE;
; M 1147
; M 1148 $DLSTP (ccb);
; 1149 END %,
; 1150
; 1151 !
; 1152 !
; 1153 !
; 1154
; M 1155 DLSTR$ (ccb) =
; M 1156 BEGIN
; M 1157
; M 1158 LINKAGE
; M 1159 DLSTR_LINKAGE = JSR (REGISTER = 4) : PRESERVE (0) NOPRESERVE (4);
; M 1160
; M 1161 EXTERNAL ROUTINE
; M 1162 $DLSTR : DLSTR_LINKAGE NOVALUE;
; M 1163
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 21
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; M 1164 $DLSTR (ccb);
; 1165 END %,
; 1166
; 1167 !
; 1168 !
; 1169 !
; 1170
; M 1171 DLXCP$ (ccb, status) =
; M 1172 BEGIN
; M 1173
; M 1174 LINKAGE
; M 1175 DLXCP_LINKAGE = JSR (REGISTER = 4, REGISTER = 3) : PRESERVE (0) NOPRESERVE (3, 4);
; M 1176
; M 1177 EXTERNAL ROUTINE
; M 1178 $DLXCP : DLXCP_LINKAGE NOVALUE;
; M 1179
; M 1180 $DLXCP (ccb, status);
; 1181 END %,
; 1182
; 1183 !
; 1184 !
; 1185 !
; 1186
; M 1187 DLXME$ (ccb) =
; M 1188 BEGIN
; M 1189
; M 1190 LINKAGE
; M 1191 DLXME_LINKAGE = JSR (REGISTER = 4) : PRESERVE (0) NOPRESERVE (4);
; M 1192
; M 1193 EXTERNAL ROUTINE
; M 1194 $DLXME : DLXME_LINKAGE NOVALUE;
; M 1195
; M 1196 $DLXME (ccb);
; 1197 END %,
; 1198
; M 1199 GTPRC$ (CCB) =
; M 1200 begin
; M 1201
; M 1202 bind
; M 1203 $MCB$CCB = CCB : block field (C_FIELDS);
; M 1204
; M 1205 $MCB_GET_LINE_PROCESSES (.$MCB$CCB [C_LIX], $MCB$CCB [C_PRM1])
; 1206 end %,
; 1207
; M 1208 LDBGT$ (ccb) =
; M 1209 begin
; M 1210
; M 1211 local
; M 1212 $MCB$SAV_MAP,
; M 1213 $MCB$STS;
; M 1214
; M 1215 external
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 22
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; M 1216 MCB$GW_RDB_SIZE;
; M 1217
; M 1218
; M 1219 SMAP$ ($MCB$SAV_MAP);
; M 1220 $MCB$STS = $MCB_GET_CCB_AND_BUFFER (.MCB$GW_RDB_SIZE, ccb);
; M 1221 MAP$ (.$MCB$SAV_MAP);
; M 1222 .$MCB$STS
; 1223 end %,
; 1224
; M 1225 LDBRT$ (ccb) =
; M 1226 begin
; M 1227
; M 1228 local
; M 1229 $MCB$SAV_MAP;
; M 1230
; M 1231 external
; M 1232 MCB$GW_RDB_SIZE;
; M 1233
; M 1234 SMAP$ ($MCB$SAV_MAP);
; M 1235 $MCB_RETURN_CCB_AND_BUFFER (.MCB$GW_RDB_SIZE, ccb);
; M 1236 MAP$ (.$MCB$SAV_MAP);
; 1237 end %,
; 1238
; M 1239 LLCDB$ (db) =
; M 1240 begin
; M 1241
; M 1242 external
; M 1243 MCB$GAW_PROCESS_DATA_BASE : vector [2];
; M 1244
; M 1245 MAP$ (.MCB$GAW_PROCESS_DATA_BASE [0]);
; M 1246 db = .MCB$GAW_PROCESS_DATA_BASE [1]
; 1247 end %,
; 1248
; 1249 LLCRS$ = $MCB_SCHEDULE_CCB %,
; 1250
; 1251 !
; 1252 !
; 1253 !
; 1254
; M 1255 LLLTM$ (dummy) =
; M 1256 BEGIN
; M 1257
; M 1258 EXTERNAL ROUTINE
; M 1259 $LLLTM : NOVALUE;
; M 1260
; M 1261 $LLLTM ();
; 1262 END %,
; 1263
; 1264 MCB$ = $MCB_RSX_TO_MCB %,
; 1265
; M 1266 PDVID$ (NAME, INDEX) =
; M 1267 begin
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 23
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; M 1268
; M 1269 local
; M 1270 $MCB$HANDLE,
; M 1271 $MCB$STATUS;
; M 1272
; M 1273 if ($MCB$STATUS = $MCB_GET_PROCESS_HANDLE (NAME, $MCB$HANDLE))
; M 1274 then
; M 1275 INDEX = .$MCB$HANDLE;
; M 1276
; M 1277 .$MCB$STATUS
; 1278 end %,
; 1279
; 1280 !
; 1281 !
; 1282 !
; 1283
; M 1284 PDVNM$ (INDEX, NAME) =
; M 1285 begin
; M 1286
; M 1287 local
; M 1288 $MCB$NAME,
; M 1289 $MCB$STATUS;
; M 1290
; M 1291 if ($MCB$STATUS = CALL$I (MCB$K_GET_PROCESS_NAME, INDEX, $MCB$NAME))
; M 1292 then
; M 1293 NAME = .$MCB$NAME;
; M 1294
; M 1295 .$MCB$STATUS
; 1296 end %,
; 1297
; 1298 RDBCN$ = $MCB_CANCEL_RDB_REQUEST %,
; 1299
; 1300 RDBGT$ = $MCB_GET_RDB %,
; 1301
; 1302 RDBRQ$ = $MCB_REQUEST_RDB %,
; 1303
; 1304 RDBRT$ = $MCB_RETURN_RDB %,
; 1305
; 1306 RND$ = $MCB_GET_RANDOM_NUMBER %,
; 1307
; 1308 RSX$ = $MCB_MCB_TO_RSX %,
; 1309
; 1310 SYNCH$ = $MCB_SYNCHRONIZE %,
; 1311
; 1312 $MCB_EXCEPTION = $MCB_SET_EXCEPTION %;
; 1313
; 1314 macro
; 1315 MCB$GAW_PROCESS_DATA_BASE = %name ('.CRDAT') %,
; 1316
; 1317 MCB$GA_LOGGING_BUFFER = %name ('.LOGPT') %,
; 1318
; 1319 MCB$GA_PROCESS_DISPATCH = %name ('.CRDSP') %,
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 24
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; 1320
; 1321 MCB$GW_PROCESS_HANDLE = %name ('.CRPIX') %,
; 1322
; 1323 MCB$GW_PROCESS_WINDOW = %name ('KISAR5') %,
; 1324
; 1325 MCB$GW_DATA_WINDOW = %name ('KISAR6') %,
; 1326
; 1327 MCB$GW_RDB_SIZE = %name ('.RDBSZ') %,
; 1328
; 1329 $MCB$BUFFER_ADDRESS (BIAS, ADDRESS) = ADDRESS %,
; 1330
; 1331 $MCB$BUFFER_BIAS (BIAS, ADDRESS) = BIAS %,
; 1332
; 1333 !
; 1334 !
; 1335 !
; 1336
; M 1337 $MCB_CANCEL_CCB_REQUEST (DUMMY) =
; M 1338 begin
; M 1339
; M 1340 external routine
; M 1341 $CCBCN : novalue;
; M 1342
; M 1343 $CCBCN ();
; 1344 end %,
; 1345
; 1346 !
; 1347 !
; 1348 !
; 1349
; M 1350 $MCB_CANCEL_RDB_REQUEST (DUMMY) =
; M 1351 begin
; M 1352
; M 1353 external routine
; M 1354 $RDBCN : novalue;
; M 1355
; M 1356 $RDBCN ();
; 1357 end %,
; 1358
; 1359 !
; 1360 !
; 1361 !
; 1362
; M 1363 $MCB_CANCEL_SHORT_TIMER (TIMER_BLOCK) =
; M 1364 begin
; M 1365
; M 1366 linkage
; M 1367 $MCB$LINKAGE_TIMER = jsr (register = 4) : PRESERVE (0);
; M 1368
; M 1369 external routine
; M 1370 $STMCN : $MCB$LINKAGE_TIMER novalue;
; M 1371
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 25
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; M 1372 $STMCN (TIMER_BLOCK);
; 1373 end %,
; 1374
; 1375 !
; 1376 !
; 1377 !
; 1378
; M 1379 $MCB_CLEAR_PROCESS (DUMMY) =
; 1380 CALL$I (MCB$K_CLEAR_PROCESS) %,
; 1381
; 1382 !
; 1383 !
; 1384 !
; 1385
; M 1386 $MCB_CLEAR_PROCESS_NAME (NAME) =
; 1387 CALL$I (MCB$K_CLEAR_PROCESS_NAME, NAME) %,
; 1388
; 1389 !
; 1390 !
; 1391 !
; 1392
; M 1393 $MCB_CLEAR_VECTOR (VECTOR) =
; 1394 CALL$I (MCB$K_CLEAR_VECTOR, VECTOR) %,
; 1395
; 1396 !
; 1397 !
; 1398 !
; 1399
; M 1400 $MCB_CONVERT_FROM_UBA_ADDRESS (LOW, HIGH, ADDRESS) =
; M 1401 begin
; M 1402
; M 1403 linkage
; M 1404 $MCB$LINKAGE_HIGH_LOW = jsr (register = 0, register = 1)
; M 1405 : nopreserve (1);
; M 1406
; M 1407 external routine
; M 1408 $VIR18 : $MCB$LINKAGE_HIGH_LOW;
; M 1409
; M 1410 %if not %null (ADDRESS) %then ADDRESS = %fi
; M 1411 $VIR18 (HIGH, LOW)
; 1412 end %,
; 1413
; 1414 !
; 1415 !
; 1416 !
; 1417
; L 1418 %if %variant eql 0
; 1419 %then
; 1420
; M 1421 $MCB_CONVERT_TO_22_BIT_ADDRESS (BUFFER, LOW, HIGH) =
; M 1422 %if not %identical (BUFFER, (%remove (BUFFER)))
; M 1423 %then %errormacro ('Buffer bias/address must be parenthesized') %fi
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 26
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; M 1424 begin
; M 1425
; M 1426 linkage
; M 1427 $MCB$LINKAGE_BIAS_ADDRESS = jsr (register = 2, register = 3)
; M 1428 : preserve (0) nopreserve (2, 3);
; M 1429
; M 1430 external routine
; M 1431 $CNV22 : $MCB$LINKAGE_BIAS_ADDRESS novalue;
; M 1432
; M 1433 global register
; M 1434 $MCB$R3 = 3,
; M 1435 $MCB$R2 = 2;
; M 1436
; M 1437 $CNV22 (%remove (BUFFER));
; M 1438 %if not %null (LOW) %then LOW = .$MCB$R3; %fi
; M 1439 %if not %null (HIGH) %then HIGH = .$MCB$R2; %fi
; 1440 end %,
; 1441
; U 1442 %else
; U 1443
; U 1444 $MCB_CONVERT_TO_22_BIT_ADDRESS (BUFFER, LOW, HIGH) =
; U 1445 %if not %identical (BUFFER, (%remove (BUFFER)))
; U 1446 %then %errormacro ('Buffer bias/address must be parenthesized') %fi
; U 1447 begin
; U 1448
; U 1449 linkage
; U 1450 $MCB$LINKAGE_BIAS_ADDRESS = jsr (register = 2, register = 3; register = 3, register = 2)
; U 1451 : preserve (0);
; U 1452
; U 1453 external routine
; U 1454 $CNV22 : $MCB$LINKAGE_BIAS_ADDRESS novalue;
; U 1455
; U 1456 $CNV22 (%remove (BUFFER); LOW, HIGH);
; U 1457 end %,
; U 1458
; 1459 %fi
; 1460
; 1461 !
; 1462 !
; 1463 !
; 1464
; L 1465 %if %variant eql 0
; 1466 %then
; 1467
; M 1468 $MCB_CONVERT_TO_UBA_ADDRESS (BUFFER, LOW, HIGH) =
; M 1469 %if not %identical (BUFFER, (%remove (BUFFER)))
; M 1470 %then %errormacro ('Buffer bias/address must be parenthesized') %fi
; M 1471 begin
; M 1472
; M 1473 linkage
; M 1474 $MCB$LINKAGE_BIAS_ADDRESS = jsr (register = 2, register = 3)
; M 1475 : preserve (0) nopreserve (2, 3);
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 27
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; M 1476
; M 1477 external routine
; M 1478 $PHY18 : $MCB$LINKAGE_BIAS_ADDRESS novalue;
; M 1479
; M 1480 global register
; M 1481 $MCB$R3 = 3,
; M 1482 $MCB$R2 = 2;
; M 1483
; M 1484 $PHY18 (%remove (BUFFER));
; M 1485 %if not %null (LOW) %then LOW = .$MCB$R3; %fi
; M 1486 %if not %null (HIGH) %then HIGH = .$MCB$R2; %fi
; 1487 end %,
; 1488
; U 1489 %else
; U 1490
; U 1491 $MCB_CONVERT_TO_UBA_ADDRESS (BUFFER, LOW, HIGH) =
; U 1492 %if not %identical (BUFFER, (%remove (BUFFER)))
; U 1493 %then %errormacro ('Buffer bias/address must be parenthesized') %fi
; U 1494 begin
; U 1495
; U 1496 linkage
; U 1497 $MCB$LINKAGE_BIAS_ADDRESS = jsr (register = 2, register = 3; register = 3, register = 2)
; U 1498 : preserve (0);
; U 1499
; U 1500 external routine
; U 1501 $PHY18 : $MCB$LINKAGE_BIAS_ADDRESS novalue;
; U 1502
; U 1503 $PHY18 (%remove (BUFFER); LOW, HIGH);
; U 1504 end %,
; U 1505
; 1506 %fi
; 1507
; 1508 !
; 1509 !
; 1510 !
; 1511
; M 1512 $MCB_COPY_CHAIN_TO_BUFFER (CCB, TO_BUFFER) =
; M 1513 begin
; M 1514
; M 1515 linkage
; M 1516 $MCB$LINKAGE_CCB = jsr (register = 4);
; M 1517
; M 1518 external routine
; M 1519 $CPTBF : $MCB$LINKAGE_CCB;
; M 1520
; M 1521 $CPTBF (CCB, %remove (TO_BUFFER))
; 1522 end %,
; 1523
; 1524 !
; 1525 ! Remove a CCB from a queue
; 1526 !
; 1527
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 28
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; L 1528 %if %variant eql 0
; 1529 %then
; 1530
; M 1531 $MCB_DEQUEUE_CCB (QUEUE, CCB) =
; M 1532 begin
; M 1533
; M 1534 linkage
; M 1535 $MCB$LINKAGE_QUEUE_CCB = jsr (register = 3) : PRESERVE (0) nopreserve (4) clearstack valuecbit;
; M 1536
; M 1537 external routine
; M 1538 $CMQRM : $MCB$LINKAGE_QUEUE_CCB;
; M 1539
; M 1540 global register
; M 1541 $MCB$R4 = 4;
; M 1542
; M 1543 ! Note: Cbit clear = FALSE = success
; M 1544
; M 1545 if not $CMQRM (QUEUE)
; M 1546 then
; M 1547 begin
; M 1548 CCB = .$MCB$R4;
; M 1549 MCB$_NORMAL
; M 1550 end
; M 1551 else
; M 1552 MCB$_QUEUE_EMPTY
; M 1553
; 1554 end %,
; 1555
; U 1556 %else %if %variant eql 1
; U 1557 %then
; U 1558
; U 1559 $MCB_DEQUEUE_CCB (QUEUE, CCB) =
; U 1560 begin
; U 1561
; U 1562 linkage
; U 1563 $MCB$LINKAGE_QUEUE_CCB = jsr (register = 3; register = 4) : PRESERVE (0) clearstack valuecbit;
; U 1564
; U 1565 external routine
; U 1566 $CMQRM : $MCB$LINKAGE_QUEUE_CCB;
; U 1567
; U 1568 ! Note: Cbit clear = FALSE = success
; U 1569
; U 1570 if not $CMQRM (QUEUE; CCB)
; U 1571 then
; U 1572 MCB$_NORMAL
; U 1573 else
; U 1574 MCB$_QUEUE_EMPTY
; U 1575
; U 1576 end %,
; U 1577
; U 1578 %else
; U 1579
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 29
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; U 1580 $MCB_DEQUEUE_CCB (QUEUE, CCB) =
; U 1581 begin
; U 1582
; U 1583 linkage
; U 1584 $MCB$LINKAGE_QUEUE_CCB = jsr (register = 3; register = 4) : preserve (0) clearstack valuecbit;
; U 1585
; U 1586 register
; U 1587 $MCB$R4 = 4;
; U 1588
; U 1589 external routine
; U 1590 $CMQRM : $MCB$LINKAGE_QUEUE_CCB;
; U 1591
; U 1592 ! Note: Cbit clear = FALSE = success
; U 1593
; U 1594 if not $CMQRM (QUEUE; $MCB$R4)
; U 1595 then
; U 1596 begin
; U 1597 CCB = .$MCB$R4;
; U 1598 MCB$_NORMAL
; U 1599 end
; U 1600 else
; U 1601 MCB$_QUEUE_EMPTY
; U 1602
; U 1603 end %,
; U 1604
; 1605 %fi %fi
; 1606
; 1607 !
; 1608 !
; 1609 !
; 1610
; M 1611 $MCB_DISABLE_INTERRUPT (VECTOR) =
; M 1612 begin
; M 1613
; M 1614 linkage
; M 1615 $MCB$LINKAGE_VECTOR = jsr (register = 0);
; M 1616
; M 1617 external routine
; M 1618 $INTDS : $MCB$LINKAGE_VECTOR novalue;
; M 1619
; M 1620 $INTDS (VECTOR)
; 1621 end %,
; 1622
; 1623 !
; 1624 !
; 1625 !
; 1626
; M 1627 $MCB_DISABLE_LONG_TIMER (DUMMY) =
; M 1628 begin
; M 1629
; M 1630 external routine
; M 1631 $LTMDS : novalue;
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 30
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; M 1632
; M 1633 $LTMDS ()
; 1634 end %,
; 1635
; 1636 !
; 1637 !
; 1638 !
; 1639
; M 1640 $MCB_ENABLE_INTERRUPT (VECTOR) =
; M 1641 begin
; M 1642
; M 1643 linkage
; M 1644 $MCB$LINKAGE_VECTOR = jsr (register = 0);
; M 1645
; M 1646 external routine
; M 1647 $INTEN : $MCB$LINKAGE_VECTOR novalue;
; M 1648
; M 1649 $INTEN (VECTOR)
; 1650 end %,
; 1651
; 1652 !
; 1653 !
; 1654 !
; 1655
; M 1656 $MCB_ENABLE_LONG_TIMER (DUMMY) =
; M 1657 begin
; M 1658
; M 1659 external routine
; M 1660 $LTMEN : novalue;
; M 1661
; M 1662 $LTMEN ()
; 1663 end %,
; 1664
; 1665 !
; 1666 ! Get a buffer
; 1667 !
; 1668
; M 1669 $MCB_GET_BUFFER (LENGTH, ADDRESS) =
; 1670 $MCB_GET_CORE (LENGTH, ADDRESS) %,
; 1671
; 1672 !
; 1673 ! Get a CCB
; 1674 !
; 1675
; L 1676 %if %variant eql 0
; 1677 %then
; 1678
; M 1679 $MCB_GET_CCB (CCB) =
; M 1680 begin
; M 1681
; M 1682 linkage
; M 1683 $MCB$LINKAGE_CCB = jsr : preserve (0) nopreserve (4) clearstack valuecbit;
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 31
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; M 1684
; M 1685 external routine
; M 1686 $CCBGT : $MCB$LINKAGE_CCB;
; M 1687
; M 1688 global register
; M 1689 $MCB$R4 = 4;
; M 1690
; M 1691 ! Note: Cbit clear = FALSE = success
; M 1692
; M 1693 if not $CCBGT ()
; M 1694 then
; M 1695 begin
; M 1696 CCB = .$MCB$R4;
; M 1697 MCB$_NORMAL
; M 1698 end
; M 1699 else
; M 1700 MCB$_NO_CCB
; M 1701
; 1702 end %,
; 1703
; U 1704 %else %if %variant eql 1
; U 1705 %then
; U 1706
; U 1707 $MCB_GET_CCB (CCB) =
; U 1708 begin
; U 1709
; U 1710 linkage
; U 1711 $MCB$LINKAGE_CCB = jsr (; register = 4) : preserve (0) clearstack valuecbit;
; U 1712
; U 1713 external routine
; U 1714 $CCBGT : $MCB$LINKAGE_CCB;
; U 1715
; U 1716 ! Note: Cbit clear = FALSE = success
; U 1717
; U 1718 if not $CCBGT (; CCB)
; U 1719 then
; U 1720 MCB$_NORMAL
; U 1721 else
; U 1722 MCB$_NO_CCB
; U 1723
; U 1724 end %,
; U 1725
; U 1726 %else
; U 1727
; U 1728 $MCB_GET_CCB (CCB) =
; U 1729 begin
; U 1730
; U 1731 linkage
; U 1732 $MCB$LINKAGE_CCB = jsr (; register = 4) : preserve (0) clearstack valuecbit;
; U 1733
; U 1734 register
; U 1735 $MCB$R4 = 4;
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 32
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; U 1736
; U 1737 external routine
; U 1738 $CCBGT : $MCB$LINKAGE_CCB;
; U 1739
; U 1740 ! Note: Cbit clear = FALSE = success
; U 1741
; U 1742 if not $CCBGT (; $MCB$R4)
; U 1743 then
; U 1744 begin
; U 1745 CCB = .$MCB$R4;
; U 1746 MCB$_NORMAL
; U 1747 end
; U 1748 else
; U 1749 MCB$_NO_CCB
; U 1750
; U 1751 end %,
; U 1752
; 1753 %fi %fi
; 1754
; 1755 !
; 1756 !
; 1757 !
; 1758
; L 1759 %if %variant eql 0
; 1760 %then
; 1761
; M 1762 $MCB_GET_CCB_AND_BUFFER (LENGTH, CCB) =
; M 1763 begin
; M 1764
; M 1765 linkage
; M 1766 $MCB$LINKAGE_LENGTH_CCB = jsr (register = 1) : preserve (0) nopreserve (4) clearstack valuecbit;
; M 1767
; M 1768 external routine
; M 1769 $CBBGT : $MCB$LINKAGE_LENGTH_CCB;
; M 1770
; M 1771 global register
; M 1772 $MCB$R4 = 4;
; M 1773
; M 1774 ! Note: Cbit clear = FALSE = success
; M 1775
; M 1776 if not $CBBGT (LENGTH)
; M 1777 then
; M 1778 begin
; M 1779 CCB = .$MCB$R4;
; M 1780 MCB$_NORMAL
; M 1781 end
; M 1782 else
; M 1783 MCB$_NO_CSB
; M 1784
; 1785 end %,
; 1786
; U 1787 %else %if %variant eql 1
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 33
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; U 1788 %then
; U 1789
; U 1790 $MCB_GET_CCB_AND_BUFFER (LENGTH, CCB) =
; U 1791 begin
; U 1792
; U 1793 linkage
; U 1794 $MCB$LINKAGE_LENGTH_CCB = jsr (register = 1; register = 4) : preserve (0) clearstack valuecbit;
; U 1795
; U 1796 external routine
; U 1797 $CBBGT : $MCB$LINKAGE_LENGTH_CCB;
; U 1798
; U 1799 ! Note: Cbit clear = FALSE = success
; U 1800
; U 1801 if not $CBBGT (LENGTH; CCB)
; U 1802 then
; U 1803 MCB$_NORMAL
; U 1804 else
; U 1805 MCB$_NO_CSB
; U 1806
; U 1807 end %,
; U 1808
; U 1809 %else
; U 1810
; U 1811 $MCB_GET_CCB_AND_BUFFER (LENGTH, CCB) =
; U 1812 begin
; U 1813
; U 1814 linkage
; U 1815 $MCB$LINKAGE_LENGTH_CCB = jsr (register = 1; register = 4) : preserve (0) clearstack valuecbit;
; U 1816
; U 1817 register
; U 1818 $MCB$R4 = 4;
; U 1819
; U 1820 external routine
; U 1821 $CBBGT : $MCB$LINKAGE_LENGTH_CCB;
; U 1822
; U 1823 ! Note: Cbit clear = FALSE = success
; U 1824
; U 1825 if not $CBBGT (LENGTH; $MCB$R4)
; U 1826 then
; U 1827 begin
; U 1828 CCB = .$MCB$R4;
; U 1829 MCB$_NORMAL
; U 1830 end
; U 1831 else
; U 1832 MCB$_NO_CSB
; U 1833
; U 1834 end %,
; U 1835
; 1836 %fi %fi
; 1837
; 1838 !
; 1839 !
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 34
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; 1840 !
; 1841
; L 1842 %if %variant eql 0
; 1843 %then
; 1844
; M 1845 $MCB_GET_CORE (LENGTH, ADDRESS) =
; M 1846 begin
; M 1847
; M 1848 linkage
; M 1849 $MCB$LINKAGE_LENGTH_ADDRESS = jsr (register = 1) : nopreserve (0) clearstack valuecbit;
; M 1850
; M 1851 external routine
; M 1852 $CORGT : $MCB$LINKAGE_LENGTH_ADDRESS;
; M 1853
; M 1854 global register
; M 1855 $MCB$R0 = 0;
; M 1856
; M 1857 ! Note: Cbit clear = FALSE = success
; M 1858
; M 1859 if not $CORGT (LENGTH)
; M 1860 then
; M 1861 begin
; M 1862 ADDRESS = .$MCB$R0;
; M 1863 MCB$_NORMAL
; M 1864 end
; M 1865 else
; M 1866 MCB$_NO_CORE
; M 1867
; 1868 end %,
; 1869
; U 1870 %else %if %variant eql 1
; U 1871 %then
; U 1872
; U 1873 $MCB_GET_CORE (LENGTH, ADDRESS) =
; U 1874 begin
; U 1875
; U 1876 linkage
; U 1877 $MCB$LINKAGE_LENGTH_ADDRESS = jsr (register = 1; register = 0) : clearstack valuecbit;
; U 1878
; U 1879 external routine
; U 1880 $CORGT : $MCB$LINKAGE_LENGTH_ADDRESS;
; U 1881
; U 1882 ! Note: Cbit clear = FALSE = success
; U 1883
; U 1884 if not $CORGT (LENGTH; ADDRESS)
; U 1885 then
; U 1886 MCB$_NORMAL
; U 1887 else
; U 1888 MCB$_NO_CORE
; U 1889
; U 1890 end %,
; U 1891
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 35
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; U 1892 %else
; U 1893
; U 1894 $MCB_GET_CORE (LENGTH, ADDRESS) =
; U 1895 begin
; U 1896
; U 1897 linkage
; U 1898 $MCB$LINKAGE_LENGTH_ADDRESS = jsr (register = 1; register = 0) : clearstack valuecbit;
; U 1899
; U 1900 register
; U 1901 $MCB$R0 = 0;
; U 1902
; U 1903 external routine
; U 1904 $CORGT : $MCB$LINKAGE_LENGTH_ADDRESS;
; U 1905
; U 1906 ! Note: Cbit clear = FALSE = success
; U 1907
; U 1908 if not $CORGT (LENGTH; $MCB$R0)
; U 1909 then
; U 1910 begin
; U 1911 ADDRESS = .$MCB$R0;
; U 1912 MCB$_NORMAL
; U 1913 end
; U 1914 else
; U 1915 MCB$_NO_CORE
; U 1916
; U 1917 end %,
; U 1918
; 1919 %fi %fi
; 1920
; 1921 !
; 1922 !
; 1923 !
; 1924
; M 1925 $MCB_GET_DEVICE_NAME (LIX, BUF) =
; 1926 CALL$I (MCB$K_GET_DEVICE_NAME, LIX, BUF) %,
; 1927
; 1928 !
; 1929 !
; 1930 !
; 1931
; L 1932 %if %variant eql 0
; 1933 %then
; 1934
; M 1935 $MCB_GET_DSR (LENGTH, ADDRESS) =
; M 1936 begin
; M 1937
; M 1938 linkage
; M 1939 $MCB$LINKAGE_LENGTH = jsr (register = 1) : nopreserve (0, 1) clearstack valuecbit;
; M 1940
; M 1941 external routine
; M 1942 $DSRGT : $MCB$LINKAGE_LENGTH;
; M 1943
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 36
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; M 1944 global register
; M 1945 $MCB$R0 = 0,
; M 1946 $MCB$R1 = 1;
; M 1947
; M 1948 ! Note: Cbit clear = FALSE = success
; M 1949
; M 1950 if not $DSRGT (LENGTH)
; M 1951 then
; M 1952 begin
; M 1953 ADDRESS = .$MCB$R0;
; M 1954 RSX$_NORMAL
; M 1955 end
; M 1956 else
; M 1957 RSX$_NO_MEMORY
; M 1958
; 1959 end %,
; 1960
; U 1961 %else %if %variant eql 1
; U 1962 %then
; U 1963
; U 1964 $MCB_GET_DSR (LENGTH, ADDRESS) =
; U 1965 begin
; U 1966
; U 1967 linkage
; U 1968 $MCB$LINKAGE_LENGTH_ADDRESS = jsr (register = 1; register = 0) :
; U 1969 clearstack valuecbit;
; U 1970
; U 1971 external routine
; U 1972 $DSRGT : $MCB$LINKAGE_LENGTH_ADDRESS;
; U 1973
; U 1974 ! Note: Cbit clear = FALSE = success
; U 1975
; U 1976 if not $DSRGT (LENGTH; ADDRESS)
; U 1977 then
; U 1978 RSX$_NORMAL
; U 1979 else
; U 1980 RSX$_NO_MEMORY
; U 1981
; U 1982 end %,
; U 1983
; U 1984 %else
; U 1985
; U 1986 $MCB_GET_DSR (LENGTH, ADDRESS) =
; U 1987 begin
; U 1988
; U 1989 linkage
; U 1990 $MCB$LINKAGE_LENGTH_ADDRESS = jsr (register = 1; register = 0) :
; U 1991 clearstack valuecbit;
; U 1992
; U 1993 register
; U 1994 $MCB$R0 = 0;
; U 1995
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 37
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; U 1996 external routine
; U 1997 $DSRGT : $MCB$LINKAGE_LENGTH_ADDRESS;
; U 1998
; U 1999 ! Note: Cbit clear = FALSE = success
; U 2000
; U 2001 if not $DSRGT (LENGTH; $MCB$R0)
; U 2002 then
; U 2003 begin
; U 2004 ADDRESS = .$MCB$R0;
; U 2005 RSX$_NORMAL
; U 2006 end
; U 2007 else
; U 2008 RSX$_NO_MEMORY
; U 2009
; U 2010 end %,
; U 2011
; 2012 %fi %fi
; 2013
; 2014 !
; 2015 !
; 2016 !
; 2017
; M 2018 $MCB_GET_EXTENSION_HANDLE (NAME, INDEX) =
; M 2019 begin
; M 2020
; M 2021 local
; M 2022 $MCB$MY_INDEX,
; M 2023 $MCB$STATUS;
; M 2024
; M 2025 if ($MCB$STATUS = CALL$I (MCB$K_GET_PROCESS_INDEX, NAME, $MCB$MY_INDEX))
; M 2026 then
; M 2027 INDEX = .$MCB$MY_INDEX;
; M 2028
; M 2029 .$MCB$STATUS
; 2030 end %,
; 2031
; 2032 !
; 2033 !
; 2034 !
; 2035
; M 2036 $MCB_GET_LINE_PROCESSES (LIX, BUF) =
; 2037 CALL$I (MCB$K_GET_LINE_PROCESSES, LIX, BUF) %,
; 2038
; 2039 !
; 2040 !
; 2041 !
; 2042
; M 2043 $MCB_GET_PROCESS_HANDLE (NAME, INDEX) =
; M 2044 begin
; M 2045
; M 2046 local
; M 2047 $MCB$MY_INDEX,
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 38
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; M 2048 $MCB$STATUS;
; M 2049
; M 2050 if ($MCB$STATUS = CALL$I (MCB$K_GET_PROCESS_INDEX, NAME, $MCB$MY_INDEX))
; M 2051 then
; M 2052 INDEX = .$MCB$MY_INDEX;
; M 2053
; M 2054 .$MCB$STATUS
; 2055 end %,
; 2056
; 2057 !
; 2058 !
; 2059 !
; 2060
; M 2061 $MCB_GET_RANDOM_NUMBER (MAX) =
; M 2062 begin
; M 2063
; M 2064 linkage
; M 2065 $MCB$LINKAGE_NUM = jsr (register = 0);
; M 2066
; M 2067 external routine
; M 2068 $RND : $MCB$LINKAGE_NUM;
; M 2069
; M 2070 $RND (MAX)
; 2071 end %,
; 2072
; 2073 !
; 2074 !
; 2075 !
; 2076
; L 2077 %if %variant eql 0
; 2078 %then
; 2079
; M 2080 $MCB_GET_RDB (CCB) =
; M 2081 begin
; M 2082
; M 2083 linkage
; M 2084 $MCB$LINKAGE_CCB = jsr : preserve (0) nopreserve (4) clearstack valuecbit;
; M 2085
; M 2086 external routine
; M 2087 $RDBGT : $MCB$LINKAGE_CCB;
; M 2088
; M 2089 global register
; M 2090 $MCB$R4 = 4;
; M 2091
; M 2092 ! Note: Cbit clear = FALSE = success
; M 2093
; M 2094 if not $RDBGT ()
; M 2095 then
; M 2096 begin
; M 2097 CCB = .$MCB$R4;
; M 2098 MCB$_NORMAL
; M 2099 end
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 39
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; M 2100 else
; M 2101 MCB$_NO_RDB
; M 2102
; 2103 end %,
; 2104
; U 2105 %else %if %variant eql 1
; U 2106 %then
; U 2107
; U 2108 $MCB_GET_RDB (CCB) =
; U 2109 begin
; U 2110
; U 2111 linkage
; U 2112 $MCB$LINKAGE_CCB = jsr (; register = 4) : preserve (0) clearstack valuecbit;
; U 2113
; U 2114 external routine
; U 2115 $RDBGT : $MCB$LINKAGE_CCB;
; U 2116
; U 2117 ! Note: Cbit clear = FALSE = success
; U 2118
; U 2119 if not $RDBGT (; CCB)
; U 2120 then
; U 2121 MCB$_NORMAL
; U 2122 else
; U 2123 MCB$_NO_RDB
; U 2124
; U 2125 end %,
; U 2126
; U 2127 %else
; U 2128
; U 2129 $MCB_GET_RDB (CCB) =
; U 2130 begin
; U 2131
; U 2132 linkage
; U 2133 $MCB$LINKAGE_CCB = jsr (; register = 4) : preserve (0) clearstack valuecbit;
; U 2134
; U 2135 register
; U 2136 $MCB$R4 = 4;
; U 2137
; U 2138 external routine
; U 2139 $RDBGT : $MCB$LINKAGE_CCB;
; U 2140
; U 2141 ! Note: Cbit clear = FALSE = success
; U 2142
; U 2143 if not $RDBGT (; $MCB$R4)
; U 2144 then
; U 2145 begin
; U 2146 CCB = .$MCB$R4;
; U 2147 MCB$_NORMAL
; U 2148 end
; U 2149 else
; U 2150 MCB$_NO_RDB
; U 2151
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 40
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; U 2152 end %,
; U 2153
; 2154 %fi %fi
; 2155
; 2156 !
; 2157 !
; 2158 !
; 2159
; M 2160 $MCB_INITIALIZE_QUEUE (QUEUE) =
; M 2161 begin
; M 2162
; M 2163 bind
; M 2164 $MCB$HIS_QUEUE = QUEUE : vector [2];
; M 2165
; M 2166 $MCB$HIS_QUEUE [0] = 0;
; M 2167 $MCB$HIS_QUEUE [1] = $MCB$HIS_QUEUE [0];
; 2168 end %,
; 2169
; 2170 !
; 2171 !
; 2172 !
; 2173
; M 2174 $MCB_MATCH_COND (STATUS, PLIT_VECTOR) =
; M 2175 begin
; M 2176
; M 2177 linkage
; M 2178 $MCB$LINKAGE_STS_VEC = jsr (register = 1, register = 0);
; M 2179
; M 2180 external routine
; M 2181 $IDSTS : $MCB$LINKAGE_STS_VEC;
; M 2182
; M 2183 $IDSTS (STATUS, PLIT_VECTOR)
; 2184 end %,
; 2185
; 2186 !
; 2187 !
; 2188 !
; 2189
; M 2190 $MCB_MATCH_VALUE (VALUE, PLIT_VECTOR) =
; M 2191 begin
; M 2192
; M 2193 linkage
; M 2194 $MCB$LINKAGE_VAL_VEC = jsr (register = 1, register = 0);
; M 2195
; M 2196 external routine
; M 2197 $IDVAL : $MCB$LINKAGE_VAL_VEC;
; M 2198
; M 2199 $IDVAL (VALUE, PLIT_VECTOR)
; 2200 end %,
; 2201
; 2202 !
; 2203 !
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 41
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; 2204 !
; 2205
; L 2206 %if %variant eql 0
; 2207 %then
; 2208
; M 2209 $MCB_MCB_TO_RSX (LLC_DB, UCB) =
; M 2210 begin
; M 2211
; M 2212 linkage
; M 2213 $MCB$LINKAGE_UCB = jsr : preserve (0) nopreserve (5);
; M 2214
; M 2215 external routine
; M 2216 $RSX : $MCB$LINKAGE_UCB novalue;
; M 2217
; M 2218 global register
; M 2219 $MCB$R5 = 5;
; M 2220
; M 2221 $RSX ();
; M 2222 %if not %null (UCB) %then UCB = .$MCB$R5; %fi
; 2223 end %,
; 2224
; U 2225 %else
; U 2226
; U 2227 $MCB_MCB_TO_RSX (LLC_DB, UCB) =
; U 2228 begin
; U 2229
; U 2230 linkage
; U 2231 $MCB$LINKAGE_UCB = jsr (; register = 5) : preserve (0);
; U 2232
; U 2233 external routine
; U 2234 $RSX : $MCB$LINKAGE_UCB novalue;
; U 2235
; U 2236 $RSX (; UCB);
; U 2237 end %,
; U 2238
; 2239 %fi
; 2240
; 2241 !
; 2242 ! Move to mapped buffer
; 2243 !
; 2244
; M 2245 $MCB_MOVE_BUFFER_TO_BUFFER (LNG, FROM_BUFFER, TO_BUFFER) =
; M 2246 %if %identical (FROM_BUFFER, (%remove (FROM_BUFFER))) and
; M 2247 %identical (TO_BUFFER, (%remove (TO_BUFFER)))
; M 2248 %then %errormacro ('Cannot move from unmapped to unmapped buffer') %fi
; M 2249 %if not %identical (FROM_BUFFER, (%remove (FROM_BUFFER))) and
; M 2250 not %identical (TO_BUFFER, (%remove (TO_BUFFER)))
; M 2251 %then ch$move (LNG, FROM_BUFFER, TO_BUFFER) %exitmacro %fi
; M 2252 begin
; M 2253
; M 2254 linkage
; M 2255 $MCB$LINKAGE_ADDR_LNG = jsr (register = 2, register = 3) : preserve (0) nopreserve (2, 3);
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 42
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; M 2256
; M 2257 external routine
; M 2258 %if %identical (FROM_BUFFER, (%remove (FROM_BUFFER)))
; M 2259 %then $MVFBF %else $MVTBF %fi : $MCB$LINKAGE_ADDR_LNG novalue;
; M 2260
; M 2261 %if %identical (FROM_BUFFER, (%remove (FROM_BUFFER)))
; M 2262 %then $MVFBF (TO_BUFFER, LNG, %remove (FROM_BUFFER))
; M 2263 %else $MVTBF (FROM_BUFFER, LNG, %remove (TO_BUFFER))
; M 2264 %fi
; 2265 end %,
; 2266
; 2267 !
; 2268 !
; 2269 !
; 2270
; M 2271 $MCB_PAUSE (SYNCH_BLOCK, ADDRESS) =
; M 2272 begin
; M 2273
; M 2274 linkage
; M 2275 $MCB$LINKAGE_SBLK = jsr (register = 4) : preserve (0) nopreserve (4);
; M 2276
; M 2277 external routine
; M 2278 $PAUSE : $MCB$LINKAGE_SBLK novalue;
; M 2279
; M 2280 block [SYNCH_BLOCK, 2, 0, %bpaddr, 0] = ADDRESS;
; M 2281 $PAUSE (SYNCH_BLOCK);
; 2282 end %,
; 2283
; 2284 !
; 2285 ! Queue a CCB on a queue
; 2286 !
; 2287
; M 2288 $MCB_QUEUE_CCB (QUEUE, CCB) =
; M 2289 begin
; M 2290
; M 2291 linkage
; M 2292 $MCB$LINKAGE_QUEUE_CCB = jsr (register = 4, register = 3) : preserve (0);
; M 2293
; M 2294 external routine
; M 2295 $CMQIN : $MCB$LINKAGE_QUEUE_CCB novalue;
; M 2296
; M 2297 $CMQIN (CCB, QUEUE);
; 2298 end %,
; 2299
; 2300 !
; 2301 !
; 2302 !
; 2303
; M 2304 $MCB_REQUEST_CCB (DUMMY) =
; M 2305 begin
; M 2306
; M 2307 external routine
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 43
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; M 2308 $CCBRQ : novalue;
; M 2309
; M 2310 $CCBRQ ();
; 2311 end %,
; 2312
; 2313 !
; 2314 !
; 2315 !
; 2316
; M 2317 $MCB_REQUEST_RDB (DUMMY) =
; M 2318 begin
; M 2319
; M 2320 external routine
; M 2321 $RDBRQ : novalue;
; M 2322
; M 2323 $RDBRQ ();
; 2324 end %,
; 2325
; 2326 !
; 2327 !
; 2328 !
; 2329
; M 2330 $MCB_RETURN_BUFFER (LENGTH, ADDRESS) =
; 2331 $MCB_RETURN_CORE (LENGTH, ADDRESS) %,
; 2332
; 2333 !
; 2334 ! Return a CCB
; 2335 !
; 2336
; M 2337 $MCB_RETURN_CCB (CCB) =
; M 2338 begin
; M 2339
; M 2340 linkage
; M 2341 $MCB$LINKAGE_CCB = jsr (register = 4) : preserve (0) nopreserve (4);
; M 2342
; M 2343 external routine
; M 2344 $CCBRT : $MCB$LINKAGE_CCB novalue;
; M 2345
; M 2346 $CCBRT (CCB);
; 2347 end %,
; 2348
; 2349 !
; 2350 !
; 2351 !
; 2352
; M 2353 $MCB_RETURN_CCB_AND_BUFFER (LENGTH, CCB) =
; M 2354 begin
; M 2355
; M 2356 linkage
; M 2357 $MCB$LINKAGE_LENGTH_CCB = jsr (register = 1, register = 4) : preserve (0) nopreserve (4);
; M 2358
; M 2359 external routine
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 44
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; M 2360 $CBBRT : $MCB$LINKAGE_LENGTH_CCB novalue;
; M 2361
; M 2362 $CBBRT (LENGTH, CCB);
; 2363 end %,
; 2364
; 2365 !
; 2366 !
; 2367 !
; 2368
; M 2369 $MCB_RETURN_CORE (LENGTH, ADDRESS) =
; M 2370 begin
; M 2371
; M 2372 linkage
; M 2373 $MCB$LINKAGE_LENGTH_ADDRESS = jsr (register = 1, register = 0) : nopreserve (0, 1);
; M 2374
; M 2375 external routine
; M 2376 $CORRT : $MCB$LINKAGE_LENGTH_ADDRESS novalue;
; M 2377
; M 2378 $CORRT (LENGTH, ADDRESS);
; 2379 end %,
; 2380
; 2381 !
; 2382 !
; 2383 !
; 2384
; M 2385 $MCB_RETURN_DSR (LENGTH, ADDRESS) =
; M 2386 begin
; M 2387
; M 2388 linkage
; M 2389 $MCB$LINKAGE_ADDRESS_LENGTH = jsr (register = 0, register = 1) : nopreserve (0, 1);
; M 2390
; M 2391 external routine
; M 2392 $DSRRT : $MCB$LINKAGE_ADDRESS_LENGTH novalue;
; M 2393
; M 2394 $DSRRT (ADDRESS, LENGTH);
; 2395 end %,
; 2396
; 2397 !
; 2398 !
; 2399 !
; 2400
; M 2401 $MCB_RETURN_RDB (CCB) =
; M 2402 begin
; M 2403
; M 2404 linkage
; M 2405 $MCB$LINKAGE_CCB = jsr (register = 4) : preserve (0) nopreserve (4);
; M 2406
; M 2407 external routine
; M 2408 $RDBRT : $MCB$LINKAGE_CCB novalue;
; M 2409
; M 2410 $RDBRT (CCB);
; 2411 end %,
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 45
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; 2412
; 2413 !
; 2414 !
; 2415 !
; 2416
; L 2417 %if %variant eql 0
; 2418 %then
; 2419
; M 2420 $MCB_RSX_TO_MCB (UCB, LLC_DB) =
; M 2421 begin
; M 2422
; M 2423 linkage
; M 2424 $MCB$LINKAGE_UCB_DB = jsr (register = 5) : preserve (0) nopreserve (5);
; M 2425
; M 2426 external routine
; M 2427 $MCB : $MCB$LINKAGE_UCB_DB novalue;
; M 2428
; M 2429 global register
; M 2430 $MCB$R5 = 5;
; M 2431
; M 2432 $MCB (UCB);
; M 2433 %if not %null (LLC_DB) %then LLC_DB = .$MCB$R5; %fi
; 2434 end %,
; 2435
; U 2436 %else
; U 2437
; U 2438 $MCB_RSX_TO_MCB (UCB, LLC_DB) =
; U 2439 begin
; U 2440
; U 2441 linkage
; U 2442 $MCB$LINKAGE_UCB_DB = jsr (register = 5; register = 5) : preserve (0);
; U 2443
; U 2444 external routine
; U 2445 $MCB : $MCB$LINKAGE_UCB_DB novalue;
; U 2446
; U 2447 $MCB (UCB; LLC_DB)
; U 2448 end %,
; U 2449
; 2450 %fi
; 2451
; 2452 !
; 2453 !
; 2454 !
; 2455
; M 2456 $MCB_SCHEDULE_CCB (CCB) =
; M 2457 begin
; M 2458
; M 2459 linkage
; M 2460 $MCB$LINKAGE_CCB = jsr (register = 4) : preserve (0) nopreserve (4);
; M 2461
; M 2462 external routine
; M 2463 $SCHED : $MCB$LINKAGE_CCB novalue;
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 46
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; M 2464
; M 2465 $SCHED (CCB);
; 2466 end %,
; 2467
; 2468 !
; 2469 ! Setup an Exception Vector
; 2470 !
; 2471
; M 2472 $MCB_SET_EXCEPTION (TYPE, NEW, OLD) =
; M 2473 CALL$I (MCB$K_SET_EXCEPTION, TYPE, NEW,
; 2474 %if not %null (OLD) %then OLD %else 0 %fi) %,
; 2475
; 2476 !
; 2477 !
; 2478 !
; 2479
; M 2480 $MCB_SET_LINE_PROCESSES (LIX, BUF) =
; 2481 CALL$I (MCB$K_SET_LINE_PROCESSES, LIX, BUF) %,
; 2482
; 2483 !
; 2484 !
; 2485 !
; 2486
; M 2487 $MCB_SET_PROCESS (NAME, INDEX) =
; M 2488 begin
; M 2489
; M 2490 local
; M 2491 $MCB$MY_INDEX,
; M 2492 $MCB$STATUS;
; M 2493
; M 2494 if ($MCB$STATUS = CALL$I (MCB$K_SET_PROCESS, $MCB$MY_INDEX
; M 2495 %if not %null (NAME) %then , NAME %fi))
; M 2496 then
; M 2497 INDEX = .$MCB$MY_INDEX;
; M 2498
; M 2499 .$MCB$STATUS
; 2500 end %,
; 2501
; 2502 !
; 2503 !
; 2504 !
; 2505
; M 2506 $MCB_SET_PROCESS_NAME (NAME) =
; 2507 CALL$I (MCB$K_SET_PROCESS_NAME, NAME) %,
; 2508
; 2509 !
; 2510 !
; 2511 !
; 2512
; M 2513 $MCB_SET_VECTOR (VECTOR, DISPATCH, PRIORITY) =
; 2514 CALL$I (MCB$K_SET_VECTOR, VECTOR, DISPATCH, PRIORITY) %,
; 2515
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 47
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; 2516 !
; 2517 ! Stack a CCB on a queue
; 2518 !
; 2519
; M 2520 $MCB_STACK_CCB (QUEUE, CCB) =
; M 2521 begin
; M 2522
; M 2523 linkage
; M 2524 $MCB$LINKAGE_QUEUE_CCB = jsr (register = 4, register = 3) : preserve (0);
; M 2525
; M 2526 external routine
; M 2527 $CMQIF : $MCB$LINKAGE_QUEUE_CCB novalue;
; M 2528
; M 2529 $CMQIF (CCB, QUEUE);
; 2530 end %,
; 2531
; 2532 !
; 2533 !
; 2534 !
; 2535
; M 2536 $MCB_START_SHORT_TIMER (TIMER_BLOCK) =
; M 2537 begin
; M 2538
; M 2539 linkage
; M 2540 $MCB$LINKAGE_TIMER = jsr (register = 4) : preserve (0);
; M 2541
; M 2542 external routine
; M 2543 $STMRQ : $MCB$LINKAGE_TIMER novalue;
; M 2544
; M 2545 $STMRQ (TIMER_BLOCK);
; 2546 end %,
; 2547
; 2548 !
; 2549 !
; 2550 !
; 2551
; M 2552 $MCB_SYNCHRONIZE (SYNCH_BLOCK, ADDRESS) =
; M 2553 begin
; M 2554
; M 2555 linkage
; M 2556 $MCB$LINKAGE_SBLK = jsr (register = 4) : preserve (0) nopreserve (4);
; M 2557
; M 2558 external routine
; M 2559 $SYNCH : $MCB$LINKAGE_SBLK novalue;
; M 2560
; M 2561 block [SYNCH_BLOCK, 2, 0, %bpaddr, 0] = ADDRESS;
; M 2562 $SYNCH (SYNCH_BLOCK);
; 2563 end %;
; 2564
; 2565 %FI %(BLISS16)%
; 2566
; L 2567 %IF %BLISS (BLISS16)
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 48
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; 2568 %THEN %(BLISS16)%
; 2569
; 2570 !
; 2571 ! RSX interface macros
; 2572 !
; 2573
; 2574 MACRO
; 2575
; 2576 !
; 2577 !
; 2578 !
; 2579
; M 2580 ACHCK$ (ADDRESS, LENGTH) =
; 2581 $RSX_VALIDATE_BUFFER (LENGTH, ADDRESS) %,
; 2582
; 2583 !
; 2584 !
; 2585 !
; 2586
; M 2587 ACHKB$ (ADDRESS, LENGTH) =
; M 2588 begin
; M 2589
; M 2590 linkage
; M 2591 $RSX$LINKAGE_ADDRESS_LENGTH = jsr (register = 0, register = 1)
; M 2592 : nopreserve (1, 2) clearstack valuecbit;
; M 2593
; M 2594 external routine
; M 2595 $ACHKB : $RSX$LINKAGE_ADDRESS_LENGTH;
; M 2596
; M 2597 ! Note: Cbit clear = FALSE = success
; M 2598
; M 2599 if not $ACHKB (ADDRESS, LENGTH)
; M 2600 then
; M 2601 RSX$_NORMAL
; M 2602 else
; M 2603 RSX$_INVALID_ADDRESS
; M 2604
; 2605 end %,
; 2606
; 2607 !
; 2608 !
; 2609 !
; 2610
; 2611 ALOCB$ = $RSX_GET_DSR %,
; 2612
; 2613 !
; 2614 !
; 2615 !
; 2616
; M 2617 DEACB$ (ADDRESS, LENGTH) =
; 2618 $RSX_RETURN_DSR (LENGTH, ADDRESS) %,
; 2619
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 49
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; 2620 !
; 2621 !
; 2622 !
; 2623
; 2624 GTPKT$ = $MCB_GET_IOP %,
; 2625
; 2626 !
; 2627 !
; 2628 !
; 2629
; L 2630 %if %variant eql 0
; 2631 %then
; 2632
; M 2633 IOALT$ (UCB, STATUS, IOP) =
; M 2634 begin
; M 2635
; M 2636 linkage
; M 2637 $RSX$LINKAGE_UCB_STATUS = jsr (register = 5, register = 0)
; M 2638 : nopreserve (0, 1, 2, 3, 4);
; M 2639
; M 2640 external routine
; M 2641 $IOALT : $RSX$LINKAGE_UCB_STATUS novalue;
; M 2642
; M 2643 global register
; M 2644 $RSX$R3 = 3;
; M 2645
; M 2646 $IOALT (UCB, STATUS);
; M 2647 %if not %null (IOP) %then IOP = .$RSX$R3; %fi
; 2648 end %,
; 2649
; U 2650 %else
; U 2651
; U 2652 IOALT$ (UCB, STATUS, IOP) =
; U 2653 begin
; U 2654
; U 2655 linkage
; U 2656 $RSX$LINKAGE_UCB_STATUS = jsr (register = 5, register = 0; register = 3)
; U 2657 : nopreserve (0, 1, 2, 3, 4);
; U 2658
; U 2659 external routine
; U 2660 $IOALT : $RSX$LINKAGE_UCB_STATUS novalue;
; U 2661
; U 2662 $IOALT (UCB, STATUS; IOP)
; U 2663 end %,
; U 2664
; 2665 %fi
; 2666
; 2667 !
; 2668 !
; 2669 !
; 2670
; L 2671 %if %variant eql 0
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 50
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; 2672 %then
; 2673
; M 2674 IODON$ (UCB, STATUS, COUNT, IOP) =
; M 2675 begin
; M 2676
; M 2677 linkage
; M 2678 $RSX$LINKAGE_UCB_STATUS_COUNT = jsr (register = 5, register = 0, register = 1)
; M 2679 : nopreserve (0, 1, 2, 3, 4);
; M 2680
; M 2681 external routine
; M 2682 $IODON : $RSX$LINKAGE_UCB_STATUS_COUNT novalue;
; M 2683
; M 2684 global register
; M 2685 $RSX$R3 = 3;
; M 2686
; M 2687 $IODON (UCB, STATUS, COUNT);
; M 2688 %if not %null (IOP) %then IOP = .$RSX$R3; %fi
; 2689 end %,
; 2690
; U 2691 %else
; U 2692
; U 2693 IODON$ (UCB, STATUS, COUNT, IOP) =
; U 2694 begin
; U 2695
; U 2696 linkage
; U 2697 $RSX$LINKAGE_UCB_STATUS_COUNT = jsr (register = 5, register = 0, register = 1; register = 3)
; U 2698 : nopreserve (0, 1, 2, 3, 4);
; U 2699
; U 2700 external routine
; U 2701 $IODON : $RSX$LINKAGE_UCB_STATUS_COUNT novalue;
; U 2702
; U 2703 $IODON (UCB, STATUS, COUNT; IOP)
; U 2704 end %,
; U 2705
; 2706 %fi
; 2707
; 2708 !
; 2709 !
; 2710 !
; 2711
; M 2712 IOFIN$ (UCB, IOP, STATUS, COUNT) =
; M 2713 begin
; M 2714
; M 2715 linkage
; M 2716 $RSX$LINKAGE_UCB_IOP_STS_CNT = jsr (register = 5, register = 3, register = 0, register = 1)
; M 2717 : nopreserve (0, 1, 2, 3, 4);
; M 2718
; M 2719 external routine
; M 2720 $IOFIN : $RSX$LINKAGE_UCB_IOP_STS_CNT novalue;
; M 2721
; M 2722 $IOFIN (UCB, IOP, STATUS, COUNT);
; 2723 end %,
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 51
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; 2724
; 2725 !
; 2726 !
; 2727 !
; 2728
; M 2729 QINSP$ (LIST_HEAD, ENTRY) =
; M 2730 begin
; M 2731
; M 2732 linkage
; M 2733 $RSX$LINKAGE_QUEUE_ENTRY = jsr (register = 0, register = 1)
; M 2734 : nopreserve (2, 3);
; M 2735
; M 2736 external routine
; M 2737 $QINSP : $RSX$LINKAGE_QUEUE_ENTRY novalue;
; M 2738
; M 2739 $QINSP (LIST_HEAD, ENTRY);
; 2740 end %,
; 2741
; 2742 !
; 2743 !
; 2744 !
; 2745
; L 2746 %if %variant eql 0
; 2747 %then
; 2748
; M 2749 QRMVF$ (LIST_HEAD, ENTRY) =
; M 2750 begin
; M 2751
; M 2752 linkage
; M 2753 $RSX$LINKAGE_QUEUE = jsr (register = 0)
; M 2754 : nopreserve (1, 2, 3) clearstack valuecbit;
; M 2755
; M 2756 external routine
; M 2757 $QRMVF : $RSX$LINKAGE_QUEUE;
; M 2758
; M 2759 global register
; M 2760 $RSX$R1 = 1;
; M 2761
; M 2762 ! Note: Cbit clear = FALSE = success
; M 2763
; M 2764 if not $QRMVF (LIST_HEAD)
; M 2765 then
; M 2766 begin
; M 2767 ENTRY = .$RSX$R1;
; M 2768 RSX$_NORMAL
; M 2769 else
; M 2770 else
; M 2771 RSX$_QUEUE_EMPTY
; M 2772
; 2773 end %,
; 2774
; U 2775 %else %if %variant eql 1
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 52
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; U 2776 %then
; U 2777
; U 2778 QRMVF$ (LIST_HEAD, ENTRY) =
; U 2779 begin
; U 2780
; U 2781 linkage
; U 2782 $RSX$LINKAGE_QUEUE = jsr (register = 0; register = 1)
; U 2783 : nopreserve (2, 3) clearstack valuecbit;
; U 2784
; U 2785 external routine
; U 2786 $QRMVF : $RSX$LINKAGE_QUEUE;
; U 2787
; U 2788 ! Note: Cbit clear = FALSE = success
; U 2789
; U 2790 if not $QRMVF (LIST_HEAD; ENTRY)
; U 2791 then
; U 2792 RSX$_NORMAL
; U 2793 else
; U 2794 RSX$_QUEUE_EMPTY
; U 2795
; U 2796 end %,
; U 2797
; U 2798 %else
; U 2799
; U 2800 QRMVF$ (LIST_HEAD, ENTRY) =
; U 2801 begin
; U 2802
; U 2803 linkage
; U 2804 $RSX$LINKAGE_QUEUE = jsr (register = 0; register = 1)
; U 2805 : nopreserve (2, 3) clearstack valuecbit;
; U 2806
; U 2807 register
; U 2808 $RSX$R1 = 1;
; U 2809
; U 2810 external routine
; U 2811 $QRMVF : $RSX$LINKAGE_QUEUE;
; U 2812
; U 2813 ! Note: Cbit clear = FALSE = success
; U 2814
; U 2815 if not $QRMVF (LIST_HEAD; $RSX$R1)
; U 2816 then
; U 2817 begin
; U 2818 ENTRY = .$RSX$R1;
; U 2819 RSX$_NORMAL
; U 2820 end
; U 2821 else
; U 2822 RSX$_QUEUE_EMPTY
; U 2823
; U 2824 end %,
; U 2825
; 2826 %fi %fi
; 2827
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 53
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; 2828 !
; 2829 !
; 2830 !
; 2831
; 2832 RELOC$ = $RSX_CONVERT_TO_BIAS_ADDRESS %,
; 2833
; 2834 !
; 2835 !
; 2836 !
; 2837
; M 2838 EXRQN$ (TCB) =
; M 2839 begin
; M 2840
; M 2841 linkage
; M 2842 $RSX$LINKAGE_TCB = jsr (register = 0) : nopreserve (0, 1, 2, 3);
; M 2843
; M 2844 external routine
; M 2845 $EXRQN : $RSX$LINKAGE_TCB novalue;
; M 2846
; M 2847 $EXRQN (TCB);
; 2848 end %,
; 2849
; 2850 !
; 2851 !
; 2852 !
; 2853
; M 2854 QASTT$ (TCB, AST) =
; M 2855 begin
; M 2856
; M 2857 linkage
; M 2858 $RSX$LINKAGE_TCB_AST = jsr (register = 0, register = 1)
; M 2859 : nopreserve (0, 2, 3);
; M 2860
; M 2861 external routine
; M 2862 $QASTT : $RSX$LINKAGE_TCB_AST novalue;
; M 2863
; M 2864 $QASTT (TCB, AST);
; 2865 end %,
; 2866
; 2867 !
; 2868 !
; 2869 !
; 2870
; M 2871 TSKRT$ (tcb, uic) =
; M 2872 begin
; M 2873
; M 2874 linkage
; M 2875 $RSX$LINKAGE_TCB_UIC = jsr (register = 0, register = 1) : nopreserve (0, 1, 2, 3)
; M 2876 clearstack valuecbit;
; M 2877
; M 2878 external routine
; M 2879 $TSKRT: $RSX$LINKAGE_TCB_UIC;
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 54
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; M 2880
; M 2881 ! Note: Cbit clear = FALSE = success
; M 2882
; M 2883 if not $TSKRT (tcb, uic)
; M 2884 then
; M 2885 RSX$_NORMAL
; M 2886 else
; M 2887 RSX$_NO_TASK
; M 2888
; 2889 end %,
; 2890
; L 2891 %if %variant eql 0
; 2892 %then
; 2893
; M 2894 $RSX_CONVERT_TO_BIAS_ADDRESS (USER_ADDRESS, BIAS, ADDRESS) =
; M 2895 begin
; M 2896
; M 2897 linkage
; M 2898 $RSX$LINKAGE_ADDRESS = jsr (register = 0) : nopreserve (1, 2);
; M 2899
; M 2900 external routine
; M 2901 $RELOC : $RSX$LINKAGE_ADDRESS novalue;
; M 2902
; M 2903 global register
; M 2904 $RSX$R1 = 1,
; M 2905 $RSX$R2 = 2;
; M 2906
; M 2907 $RELOC (USER_ADDRESS);
; M 2908 BIAS = .$RSX$R1;
; M 2909 ADDRESS = .$RSX$R2;
; 2910 end %,
; 2911
; U 2912 %else
; U 2913
; U 2914 $RSX_CONVERT_TO_BIAS_ADDRESS (USER_ADDRESS, BIAS, ADDRESS) =
; U 2915 begin
; U 2916
; U 2917 linkage
; U 2918 $RSX$LINKAGE_ADDRESS = jsr (register = 0; register = 1, register = 2);
; U 2919
; U 2920 external routine
; U 2921 $RELOC : $RSX$LINKAGE_ADDRESS novalue;
; U 2922
; U 2923 $RELOC (USER_ADDRESS; BIAS, ADDRESS)
; U 2924 end %,
; U 2925
; 2926 %fi
; 2927
; L 2928 %if %variant eql 0
; 2929 %then
; 2930
; M 2931 $RSX_GET_DSR (LENGTH, ADDRESS, ALLOCATED_LENGTH) =
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 55
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; M 2932 begin
; M 2933
; M 2934 linkage
; M 2935 $RSX$LINKAGE_LENGTH = jsr (register = 1) : nopreserve (0, 1, 2) clearstack valuecbit;
; M 2936
; M 2937 external routine
; M 2938 $ALOCB : $RSX$LINKAGE_LENGTH;
; M 2939
; M 2940 global register
; M 2941 $RSX$R0 = 0,
; M 2942 $RSX$R1 = 1;
; M 2943
; M 2944 ! Note: Cbit clear = FALSE = success
; M 2945
; M 2946 if not $ALOCB (LENGTH)
; M 2947 then
; M 2948 begin
; M 2949 ADDRESS = .$RSX$R0;
; M 2950 %if not %null (ALLOCATED_LENGTH)
; M 2951 %then ALLOCATED_LENGTH = .$RSX$R1; %fi
; M 2952 RSX$_NORMAL
; M 2953 end
; M 2954 else
; M 2955 RSX$_NO_MEMORY
; M 2956
; 2957 end %,
; 2958
; U 2959 %else %if %variant eql 1
; U 2960 %then
; U 2961
; U 2962 $RSX_GET_DSR (LENGTH, ADDRESS, ALLOCATED_LENGTH) =
; U 2963 begin
; U 2964
; U 2965 linkage
; U 2966 $RSX$LINKAGE_LENGTH = jsr (register = 1; register = 0, register = 1) :
; U 2967 nopreserve (0, 1, 2) clearstack valuecbit;
; U 2968
; U 2969 external routine
; U 2970 $ALOCB : $RSX$LINKAGE_LENGTH;
; U 2971
; U 2972 ! Note: Cbit clear = FALSE = success
; U 2973
; U 2974 if not $ALOCB (LENGTH; ADDRESS, ALLOCATED_LENGTH)
; U 2975 then
; U 2976 RSX$_NORMAL
; U 2977 else
; U 2978 RSX$_NO_MEMORY
; U 2979
; U 2980 end %,
; U 2981
; U 2982 %else
; U 2983
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 56
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; U 2984 $RSX_GET_DSR (LENGTH, ADDRESS, ALLOCATED_LENGTH) =
; U 2985 begin
; U 2986
; U 2987 linkage
; U 2988 $RSX$LINKAGE_LENGTH = jsr (register = 1; register = 0, register = 1) :
; U 2989 nopreserve (0, 1, 2) clearstack valuecbit;
; U 2990
; U 2991 register
; U 2992 $RSX$R1 = 1,
; U 2993 $RSX$R0 = 0;
; U 2994
; U 2995 external routine
; U 2996 $ALOCB : $RSX$LINKAGE_LENGTH;
; U 2997
; U 2998 ! Note: Cbit clear = FALSE = success
; U 2999
; U 3000 if not $ALOCB (LENGTH; $RSX$R0, $RSX$R1)
; U 3001 then
; U 3002 begin
; U 3003 ADDRESS = .$RSX$R0;
; U 3004 %if not %null (ALLOCATED_LENGTH)
; U 3005 %then ALLOCATED_LENGTH = .$RSX$R1; %fi
; U 3006 RSX$_NORMAL
; U 3007 end
; U 3008 else
; U 3009 RSX$_NO_MEMORY
; U 3010
; U 3011 end %,
; U 3012
; 3013 %fi %fi
; 3014
; L 3015 %if %variant eql 0
; 3016 %then
; 3017
; M 3018 $RSX_ACCEPT_IOP (OLD_UCB, IOP, UNIT, CONTROLLER, SCB, NEW_UCB) =
; M 3019 begin
; M 3020
; M 3021 linkage
; M 3022 $RSX$LINKAGE_UCB = jsr (register = 5) : nopreserve (1, 2, 3, 4, 5) clearstack valuecbit;
; M 3023
; M 3024 external routine
; M 3025 $GTPKT : $RSX$LINKAGE_UCB;
; M 3026
; M 3027 global register
; M 3028 $RSX$R1 = 1,
; M 3029 $RSX$R2 = 2,
; M 3030 $RSX$R3 = 3,
; M 3031 $RSX$R4 = 4,
; M 3032 $RSX$R5 = 5;
; M 3033
; M 3034 ! Note: Cbit clear = FALSE = success
; M 3035
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 57
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; M 3036 if not $GTPKT (OLD_UCB)
; M 3037 then
; M 3038 begin
; M 3039 %if not %null (IOP) %then IOP = .$RSX$R1; %fi
; M 3040 %if not %null (UNIT) %then UNIT = .$RSX$R2; %fi
; M 3041 %if not %null (CONTROLLER) %then CONTROLLER = .$RSX$R3; %fi
; M 3042 %if not %null (SCB) %then SCB = .$RSX$R4; %fi
; M 3043 %if not %null (NEW_UCB) %then NEW_UCB = .$RSX$R5; %fi
; M 3044 RSX$_NORMAL
; M 3045 end
; M 3046 else
; M 3047 RSX$_NO_PACKET
; M 3048
; 3049 end %,
; 3050
; U 3051 %else %if %variant eql 1
; U 3052 %then
; U 3053
; U 3054 $RSX_ACCEPT_IOP (OLD_UCB, IOP, UNIT, CONTROLLER, SCB, NEW_UCB) =
; U 3055 begin
; U 3056
; U 3057 linkage
; U 3058 $RSX$LINKAGE_UCB = jsr (register = 5; register = 1, register = 2,
; U 3059 register = 3, register = 4, register = 5) : clearstack valuecbit;
; U 3060
; U 3061 external routine
; U 3062 $GTPKT : $RSX$LINKAGE_UCB;
; U 3063
; U 3064 ! Note: Cbit clear = FALSE = success
; U 3065
; U 3066 if not $GTPKT (OLD_UCB; IOP, UNIT, CONTROLLER, SCB, NEW_UCB)
; U 3067 then
; U 3068 RSX$_NORMAL
; U 3069 else
; U 3070 RSX$_NO_PACKET
; U 3071
; U 3072 end %,
; U 3073
; U 3074 %else
; U 3075
; U 3076 $RSX_ACCEPT_IOP (OLD_UCB, IOP, UNIT, CONTROLLER, SCB, NEW_UCB) =
; U 3077 begin
; U 3078
; U 3079 linkage
; U 3080 $RSX$LINKAGE_UCB = jsr (register = 5; register = 1, register = 2,
; U 3081 register = 3, register = 4, register = 5) : clearstack valuecbit;
; U 3082
; U 3083 register
; U 3084 $RSX$R1 = 1,
; U 3085 $RSX$R2 = 2,
; U 3086 $RSX$R3 = 3,
; U 3087 $RSX$R4 = 4,
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 58
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; U 3088 $RSX$R5 = 5;
; U 3089
; U 3090 external routine
; U 3091 $GTPKT : $RSX$LINKAGE_UCB;
; U 3092
; U 3093 ! Note: Cbit clear = FALSE = success
; U 3094
; U 3095 if not $GTPKT (OLD_UCB; $RSX$R1, $RSX$R2, $RSX$R3, $RSX$R4, $RSX$R5)
; U 3096 then
; U 3097 begin
; U 3098 %if not %null (IOP) %then IOP = .$RSX$R1; %fi
; U 3099 %if not %null (UNIT) %then UNIT = .$RSX$R2; %fi
; U 3100 %if not %null (CONTROLLER) %then CONTROLLER = .$RSX$R3; %fi
; U 3101 %if not %null (SCB) %then SCB = .$RSX$R4; %fi
; U 3102 %if not %null (NEW_UCB) %then NEW_UCB = .$RSX$R5; %fi
; U 3103 RSX$_NORMAL
; U 3104 end
; U 3105 else
; U 3106 RSX$_NO_PACKET
; U 3107
; U 3108 end %,
; U 3109
; 3110 %fi %fi
; 3111
; L 3112 %if %variant eql 0
; 3113 %then
; 3114
; M 3115 $RSX_GET_TCB (NAME, TCB) =
; M 3116 begin
; M 3117
; M 3118 linkage
; M 3119 $RSX$LINKAGE_NAME = jsr (register = 3) : nopreserve (0) clearstack valuecbit;
; M 3120
; M 3121 external routine
; M 3122 $SRSTD : $RSX$LINKAGE_NAME;
; M 3123
; M 3124 external
; M 3125 $TSKHD : ref vector;
; M 3126
; M 3127 global register
; M 3128 $RSX$R0 = 0;
; M 3129
; M 3130 ! Note: Cbit clear = FALSE = success
; M 3131
; M 3132 if .$TSKHD [12] eqla 0
; M 3133 then
; M 3134 RSX$_NO_TASK
; M 3135 else
; M 3136
; M 3137 if $SRSTD (NAME)
; M 3138 then
; M 3139 RSX$_NO_TASK
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 59
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; M 3140 else
; M 3141 begin
; M 3142 TCB = .$RSX$R0;
; M 3143 RSX$_NORMAL
; M 3144 end
; M 3145
; 3146 end %,
; 3147
; U 3148 %else %if %variant eql 1
; U 3149 %then
; U 3150
; U 3151 $RSX_GET_TCB (NAME, TCB) =
; U 3152 begin
; U 3153
; U 3154 linkage
; U 3155 $RSX$LINKAGE_NAME = jsr (register = 3; register = 0) : clearstack valuecbit;
; U 3156
; U 3157 external routine
; U 3158 $SRSTD : $RSX$LINKAGE_NAME;
; U 3159
; U 3160 ! Note: Cbit clear = FALSE = success
; U 3161
; U 3162 if not $SRSTD (NAME; TCB)
; U 3163 then
; U 3164 RSX$_NORMAL
; U 3165 else
; U 3166 RSX$_NO_TASK
; U 3167
; U 3168 end %,
; U 3169
; U 3170 %else
; U 3171
; U 3172 $RSX_GET_TCB (NAME, TCB) =
; U 3173 begin
; U 3174
; U 3175 linkage
; U 3176 $RSX$LINKAGE_NAME = jsr (register = 3; register = 0) : clearstack valuecbit;
; U 3177
; U 3178 register
; U 3179 $RSX$R0 = 0;
; U 3180
; U 3181 external routine
; U 3182 $SRSTD : $RSX$LINKAGE_NAME;
; U 3183
; U 3184 ! Note: Cbit clear = FALSE = success
; U 3185
; U 3186 if not $SRSTD (NAME; $RSX$R0)
; U 3187 then
; U 3188 begin
; U 3189 TCB = .$RSX$R0;
; U 3190 RSX$_NORMAL
; U 3191 end
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 60
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; U 3192 else
; U 3193 RSX$_NO_TASK
; U 3194
; U 3195 end %,
; U 3196
; 3197 %fi %fi
; 3198
; M 3199 $RSX_REQUEST_TASK (TCB, UIC) =
; M 3200 begin
; M 3201
; M 3202 linkage
; M 3203 $RSX$LINKAGE_TCB = jsr (register = 0) : nopreserve (0, 1, 2, 3),
; M 3204 $RSX$LINKAGE_TCB_UIC = jsr (register = 0, register = 1) : nopreserve (0, 1, 2, 3);
; M 3205
; M 3206 external routine
; M 3207 %if %null (UIC)
; M 3208 %then $EXRQN : $RSX$LINKAGE_TCB
; M 3209 %else $TSKRT : $RSX$LINKAGE_TCB_UIC
; M 3210 %fi;
; M 3211
; M 3212
; M 3213 ! Note: Cbit clear = FALSE = success
; M 3214
; M 3215 if not
; M 3216 %if %null (UIC)
; M 3217 %then $EXRQN (TCB)
; M 3218 %else $TSKRT (TCB, UIC)
; M 3219 %fi
; M 3220 then
; M 3221 RSX$_NORMAL
; M 3222 else
; M 3223 RSX$_NO_TASK
; M 3224
; 3225 end %,
; 3226
; M 3227 $RSX_RETURN_DSR (LENGTH, ADDRESS) =
; M 3228 begin
; M 3229
; M 3230 linkage
; M 3231 $RSX$LINKAGE_ADDRESS_LENGTH = jsr (register = 0, register = 1) : nopreserve (0, 1, 2, 3);
; M 3232
; M 3233 external routine
; M 3234 $DEACB : $RSX$LINKAGE_ADDRESS_LENGTH novalue;
; M 3235
; M 3236 $DEACB (ADDRESS, LENGTH);
; 3237 end %,
; 3238
; M 3239 $RSX_FINISH_IOP (UCB, IOP, STATUS, COUNT) =
; M 3240 begin
; M 3241
; M 3242 linkage
; M 3243 $RSX$LINKAGE_UCB_STS = jsr (register = 5, register = 0)
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 61
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; M 3244 : nopreserve (0, 1, 2, 3, 4),
; M 3245 $RSX$LINKAGE_UCB_STS_CNT = jsr (register = 5, register = 0, register = 1)
; M 3246 : nopreserve (0, 1, 2, 3, 4),
; M 3247 $RSX$LINKAGE_UCB_STS_CNT_IOP = jsr (register = 5, register = 0, register = 1, register = 3)
; M 3248 : nopreserve (0, 1, 2, 3, 4);
; M 3249
; M 3250 external routine
; M 3251 %if %null (COUNT, IOP)
; M 3252 %then $IOALT : $RSX$LINKAGE_UCB_STS
; M 3253 %else %if %null (COUNT)
; M 3254 %then $IODON : $RSX$LINKAGE_UCB_STS_CNT
; M 3255 %else $IOFIN : $RSX$LINKAGE_UCB_STS_CNT_IOP
; M 3256 %fi %fi novalue;
; M 3257
; M 3258 %if %null (COUNT, IOP)
; M 3259 %then $IOALT (UCB, STATUS)
; M 3260 %else %if %null (COUNT)
; M 3261 %then $IODON (UCB, STATUS, COUNT)
; M 3262 %else $IOFIN (UCB, STATUS, COUNT, IOP)
; M 3263 %fi %fi;
; 3264 end %,
; 3265
; M 3266 $RSX_SCHEDULE_AST (TCB, AST_BLOCK) =
; M 3267 begin
; M 3268
; M 3269 linkage
; M 3270 $RSX$LINKAGE_TCB_AST = jsr (register = 0, register = 1) : nopreserve (0, 2, 3);
; M 3271
; M 3272 external routine
; M 3273 $QASTT : $RSX$LINKAGE_TCB_AST novalue;
; M 3274
; M 3275 $QASTT (TCB, AST_BLOCK);
; 3276 end %,
; 3277
; M 3278 $RSX_VALIDATE_BUFFER (length, address) =
; M 3279 begin
; M 3280
; M 3281 linkage
; M 3282 $RSX$LINKAGE_ADDRESS_LENGTH = jsr (register = 0, register = 1)
; M 3283 : nopreserve (1, 2) clearstack valuecbit;
; M 3284
; M 3285 external routine
; M 3286 $ACHCK : $RSX$LINKAGE_ADDRESS_LENGTH;
; M 3287
; M 3288 ! Note: Cbit clear = FALSE = success
; M 3289
; M 3290 if not $ACHCK (ADDRESS, LENGTH)
; M 3291 then
; M 3292 RSX$_NORMAL
; M 3293 else
; M 3294 RSX$_INVALID_ADDRESS
; M 3295
24-Jan-1983 10:38:27 TOPS-20 Bliss-16 2A(530) Page 62
30-Dec-1982 17:16:25 NETPKG:<MCB>MCBLIB.R16.7 (2)
; 3296 end %;
; 3297
; 3298 %FI %(BLISS16)%
; 3299
; 3300 !
; 3301 ! [End of MCBLIB]
; Run Time: 00:13.2
; Elapsed Time: 00:17.5
; Memory Used: 33 pages
; Library Precompilation Complete