Google
 

Trailing-Edge - PDP-10 Archives - BB-R595B-SM_11-9-85 - mcb/utilities/rqlcb.lst
There is 1 other file named rqlcb.lst in the archive. Click here to see a list.
								12-Apr-1985 07:09:27	TOPS-20 Bliss-36 4A(225)	    Page   1
								30-Dec-1982 17:57:14	DNET61:<DECNET.UTILITIES>RQLCB.BLI.1 (1)

;   0001  0	
;   0002  0	MODULE RQLCB (					!Dynamic core allocation routines.
;   0003  0			IDENT = '001000',
;   0004  0			LANGUAGE (BLISS16, BLISS36) %BLISS36 (, ENTRY ($RLCB, $RQCB))
;   0005  0			) =
;   0006  1	BEGIN
;   0007  1	!
;   0008  1	!                    COPYRIGHT (c) 1980, 1981, 1982
;   0009  1	!                    DIGITAL EQUIPMENT CORPORATION
;   0010  1	!                        Maynard, Massachusetts
;   0011  1	!
;   0012  1	!     This software is furnished under a license and may  be  used
;   0013  1	!     and copied only in accordance with the terms of such license
;   0014  1	!     and with the inclusion of the above copyright notice.   This
;   0015  1	!     software  or any other copies thereof may not be provided or
;   0016  1	!     otherwise made available to any other person.  No  title  to
;   0017  1	!     and ownership of the software is hereby transferred.
;   0018  1	!
;   0019  1	!     The information  in  this  software  is  subject  to  change
;   0020  1	!     without  notice  and should not be construed as a commitment
;   0021  1	!     by DIGITAL EQUIPMENT CORPORATION.
;   0022  1	!
;   0023  1	!     DIGITAL assumes no responsibility for the use or reliability
;   0024  1	!     of  its  software  on  equipment  which  is  not supplied by
;   0025  1	!     DIGITAL.
;   0026  1	!
;   0027  1	
;   0028  1	!++
;   0029  1	! FACILITY:
;   0030  1	!
;   0031  1	! ABSTRACT:
;   0032  1	!
;   0033  1	!
;   0034  1	! ENVIRONMENT:
;   0035  1	!
;   0036  1	! AUTHOR:	, CREATION DATE:
;   0037  1	!
;   0038  1	! MODIFIED BY:
;   0039  1	!
;   0040  1	! 	, : VERSION
;   0041  1	! 01	-
;   0042  1	!--
;   0043  1	
;   0044  1	!
;   0045  1	! TABLE OF CONTENTS:
;   0046  1	!
;   0047  1	
;   0048  1	FORWARD ROUTINE
;   0049  1	    $RLCB : NOVALUE,				!Release core block.
;   0050  1	    $RQCB;					!Request core block.
;   0051  1	
;   0052  1	!
RQLCB								12-Apr-1985 07:09:27	TOPS-20 Bliss-36 4A(225)	    Page   2
001000								30-Dec-1982 17:57:14	DNET61:<DECNET.UTILITIES>RQLCB.BLI.1 (1)

;   0053  1	! INCLUDE FILES:
;   0054  1	!
;   0055  1	!
;   0056  1	! MACROS:
;   0057  1	!
;   0058  1	!
;   0059  1	! EQUATED SYMBOLS:
;   0060  1	!
;   0061  1	!
;   0062  1	! OWN STORAGE:
;   0063  1	!
;   0064  1	!
;   0065  1	! EXTERNAL REFERENCES:
;   0066  1	!
;   0067  1	
RQLCB								12-Apr-1985 07:09:27	TOPS-20 Bliss-36 4A(225)	    Page   3
001000								30-Dec-1982 17:57:14	DNET61:<DECNET.UTILITIES>RQLCB.BLI.1 (2)

;   0068  1	GLOBAL ROUTINE $RLCB (LIST_HEAD, BLOCK_ADDRESS, BLOCK_LENGTH) : NOVALUE =
;   0069  1	
;   0070  1	!++
;   0071  1	! FUNCTIONAL DESCRIPTION:
;   0072  1	!
;   0073  1	!
;   0074  1	! FORMAL PARAMETERS:
;   0075  1	!
;   0076  1	!	NONE
;   0077  1	!
;   0078  1	! IMPLICIT INPUTS:
;   0079  1	!
;   0080  1	!	NONE
;   0081  1	!
;   0082  1	! IMPLICIT OUTPUTS:
;   0083  1	!
;   0084  1	!	NONE
;   0085  1	!
;   0086  1	! ROUTINE VALUE:
;   0087  1	!
;   0088  1	!	NONE
;   0089  1	!
;   0090  1	! SIDE EFFECTS:
;   0091  1	!
;   0092  1	!	NONE
;   0093  1	!
;   0094  1	!--
;   0095  1	
;   0096  2	    BEGIN
;   0097  2	
;   0098  2	    MAP
;   0099  2		LIST_HEAD : REF VECTOR [2],
;   0100  2		BLOCK_ADDRESS : REF VECTOR;
;   0101  2	
;   0102  2	    LOCAL
;   0103  2		LNG,
;   0104  2		ADR : REF VECTOR,
;   0105  2		NEXT : REF VECTOR;
;   0106  2	
;   0107  2	    IF (LNG = (.BLOCK_LENGTH + 1 AND NOT 1)) GTR 0
;   0108  2	    THEN
;   0109  3		BEGIN
;   0110  3		ADR = .LIST_HEAD;
;   0111  3	
;   0112  3		WHILE (NEXT = .ADR [0]) NEQ 0 DO
;   0113  3	
;   0114  3		    IF .BLOCK_ADDRESS LSSA .NEXT THEN EXITLOOP ELSE ADR = .NEXT;
;   0115  3	
;   0116  3		BLOCK_ADDRESS [1] = .LNG;
;   0117  3		BLOCK_ADDRESS [0] = .NEXT;
;   0118  3		ADR [0] = .BLOCK_ADDRESS;
;   0119  3	
RQLCB								12-Apr-1985 07:09:27	TOPS-20 Bliss-36 4A(225)	    Page   4
001000								30-Dec-1982 17:57:14	DNET61:<DECNET.UTILITIES>RQLCB.BLI.1 (2)

;   0120  3		IF .BLOCK_ADDRESS + .BLOCK_ADDRESS [1] EQLA .NEXT
;   0121  3		THEN
;   0122  4		    BEGIN
;   0123  4		    BLOCK_ADDRESS [1] = .BLOCK_ADDRESS [1] + .NEXT [1];
;   0124  4		    BLOCK_ADDRESS [0] = .NEXT [0];
;   0125  3		    END;
;   0126  3	
;   0127  3		IF .ADR + .ADR [1] EQLA .BLOCK_ADDRESS
;   0128  3		THEN
;   0129  4		    BEGIN
;   0130  4		    ADR [1] = .ADR [1] + .BLOCK_ADDRESS [1];
;   0131  4		    ADR [0] = .BLOCK_ADDRESS [0];
;   0132  3		    END;
;   0133  3	
;   0134  2		END;
;   0135  2	
;   0136  1	    END;					!End of $RLCB


	TITLE	RQLCB
	TWOSEG


	ENTRY	$RLCB, $RQCB


	.REQUEST  SYS:B362LB.REL


AC0=	0
AC1=	1
AC2=	2
AC3=	3
AC4=	4
AC5=	5
AC6=	6
AC7=	7
AC10=	10
AC11=	11
AC12=	12
AC13=	13
AC14=	14
FP=	15
AC16=	16
SP=	17


	RELOC	400000				;					400000'
$RLCB:: MOVE	AC1,-1(SP)			; AC1,BLOCK_LENGTH			400000' 200 01 0 17 777777		0107
	AOS	AC4,AC1				; LNG,AC1				400001' 350 04 0 00 000001
	TRZ	AC4,1				; LNG,1					400002' 620 04 0 00 000001
	JUMPLE	AC4,L.4				; LNG,L.4				400003' 323 04 0 00 400037'
RQLCB								12-Apr-1985 07:09:27	TOPS-20 Bliss-36 4A(225)	    Page   5
001000								30-Dec-1982 17:57:14	DNET61:<DECNET.UTILITIES>RQLCB.BLI.1 (2)

	MOVE	AC2,-3(SP)			; ADR,LIST_HEAD				400004' 200 02 0 17 777775		0110
	MOVE	AC1,-2(SP)			; AC1,BLOCK_ADDRESS			400005' 200 01 0 17 777776		0114
L.1:	MOVE	AC3,0(AC2)			; NEXT,0(ADR)				400006' 200 03 0 02 000000		0112
	JUMPE	AC3,L.2				; NEXT,L.2				400007' 322 03 0 00 400014'
	CAMGE	AC1,AC3				; AC1,NEXT				400010' 315 01 0 00 000003		0114
	JRST	L.2				; L.2					400011' 254 00 0 00 400014'
	MOVE	AC2,AC3				; ADR,NEXT				400012' 200 02 0 00 000003
	JRST	L.1				; L.1					400013' 254 00 0 00 400006'		0112
L.2:	MOVEM	AC4,1(AC1)			; LNG,1(AC1)				400014' 202 04 0 01 000001		0116
	MOVEM	AC3,0(AC1)			; NEXT,0(AC1)				400015' 202 03 0 01 000000		0117
	MOVEM	AC1,0(AC2)			; AC1,0(ADR)				400016' 202 01 0 02 000000		0118
	MOVE	AC4,AC1				; AC4,AC1				400017' 200 04 0 00 000001		0120
	ADD	AC4,1(AC1)			; AC4,1(AC1)				400020' 270 04 0 01 000001
	CAME	AC4,AC3				; AC4,NEXT				400021' 312 04 0 00 000003
	JRST	L.3				; L.3					400022' 254 00 0 00 400027'
	MOVE	AC4,1(AC3)			; AC4,1(NEXT)				400023' 200 04 0 03 000001		0123
	ADDM	AC4,1(AC1)			; AC4,1(AC1)				400024' 272 04 0 01 000001
	MOVE	AC4,0(AC3)			; AC4,0(NEXT)				400025' 200 04 0 03 000000		0124
	MOVEM	AC4,0(AC1)			; AC4,0(AC1)				400026' 202 04 0 01 000000
L.3:	MOVE	AC3,AC2				; AC3,ADR				400027' 200 03 0 00 000002		0127
	ADD	AC3,1(AC2)			; AC3,1(ADR)				400030' 270 03 0 02 000001
	CAME	AC3,AC1				; AC3,AC1				400031' 312 03 0 00 000001
	POPJ	SP,				; SP,					400032' 263 17 0 00 000000
	MOVE	AC3,1(AC1)			; AC3,1(AC1)				400033' 200 03 0 01 000001		0130
	ADDM	AC3,1(AC2)			; AC3,1(ADR)				400034' 272 03 0 02 000001
	MOVE	AC3,0(AC1)			; AC3,0(AC1)				400035' 200 03 0 01 000000		0131
	MOVEM	AC3,0(AC2)			; AC3,0(ADR)				400036' 202 03 0 02 000000
L.4:	POPJ	SP,				; SP,					400037' 263 17 0 00 000000		0068

; Routine Size:  32 words


;   0137  1	
RQLCB								12-Apr-1985 07:09:27	TOPS-20 Bliss-36 4A(225)	    Page   6
001000								30-Dec-1982 17:57:14	DNET61:<DECNET.UTILITIES>RQLCB.BLI.1 (3)

;   0138  1	GLOBAL ROUTINE $RQCB (LIST_HEAD, BLOCK_LENGTH) =
;   0139  1	
;   0140  1	!++
;   0141  1	! FUNCTIONAL DESCRIPTION:
;   0142  1	!
;   0143  1	!
;   0144  1	! FORMAL PARAMETERS:
;   0145  1	!
;   0146  1	!	NONE
;   0147  1	!
;   0148  1	! IMPLICIT INPUTS:
;   0149  1	!
;   0150  1	!	NONE
;   0151  1	!
;   0152  1	! IMPLICIT OUTPUTS:
;   0153  1	!
;   0154  1	!	NONE
;   0155  1	!
;   0156  1	! ROUTINE VALUE:
;   0157  1	!
;   0158  1	!	NONE
;   0159  1	!
;   0160  1	! SIDE EFFECTS:
;   0161  1	!
;   0162  1	!	NONE
;   0163  1	!
;   0164  1	!--
;   0165  1	
;   0166  2	    BEGIN
;   0167  2	
;   0168  2	    MAP
;   0169  2		LIST_HEAD : REF VECTOR [2];
;   0170  2	
;   0171  2	    LOCAL
;   0172  2		LNG,
;   0173  2		ADR : REF VECTOR,
;   0174  2		NEXT : REF VECTOR,
;   0175  2		LINK_TO_BEST : REF VECTOR;
;   0176  2	
;   0177  2	    IF (LNG = (ABS (.BLOCK_LENGTH) + 1 AND NOT 1)) NEQ 0
;   0178  2	    THEN
;   0179  3		BEGIN
;   0180  3		LINK_TO_BEST = 0;
;   0181  3		ADR = .LIST_HEAD;
;   0182  3	
;   0183  3		WHILE (NEXT = .ADR [0]) NEQ 0 DO
;   0184  3	
;   0185  3		    IF .LNG LEQA .NEXT [1]
;   0186  3		    THEN
;   0187  4			BEGIN
;   0188  4	
;   0189  4			IF .BLOCK_LENGTH GTR 0
RQLCB								12-Apr-1985 07:09:27	TOPS-20 Bliss-36 4A(225)	    Page   7
001000								30-Dec-1982 17:57:14	DNET61:<DECNET.UTILITIES>RQLCB.BLI.1 (3)

;   0190  4			THEN
;   0191  5			    LINK_TO_BEST = (IF .LINK_TO_BEST EQL 0 THEN .ADR ELSE IF .NEXT [1] LSSA .LINK_TO_BEST [1]
;   0192  5				THEN .ADR ELSE .LINK_TO_BEST)
;   0193  4			ELSE
;   0194  5			    EXITLOOP (LINK_TO_BEST = .ADR)
;   0195  5	
;   0196  4			END
;   0197  3		    ELSE
;   0198  3			ADR = .NEXT;
;   0199  3	
;   0200  3		IF .LINK_TO_BEST NEQ 0
;   0201  3		THEN
;   0202  4		    BEGIN
;   0203  4		    ADR = .LINK_TO_BEST [0];
;   0204  4	
;   0205  4		    IF (ADR [1] = .ADR [1] - .LNG) NEQ 0
;   0206  4		    THEN
;   0207  4			ADR [.ADR [1]]
;   0208  4		    ELSE
;   0209  5			BEGIN
;   0210  5			LINK_TO_BEST [0] = .ADR [0];
;   0211  5			.ADR
;   0212  5			END
;   0213  5	
;   0214  4		    END
;   0215  3		ELSE
;   0216  3		    -1
;   0217  3	
;   0218  3		END
;   0219  2	    ELSE
;   0220  2		-1
;   0221  2	
;   0222  1	    END;					!End of $RQCB


$RQCB:: PUSH	SP,AC16				; SP,AC16				400040' 261 17 0 00 000016		0138
	MOVE	AC4,-2(SP)			; AC4,BLOCK_LENGTH			400041' 200 04 0 17 777776		0177
	MOVM	AC1,AC4				; AC1,AC4				400042' 214 01 0 00 000004
	AOS	AC5,AC1				; LNG,AC1				400043' 350 05 0 00 000001
	TRZ	AC5,1				; LNG,1					400044' 620 05 0 00 000001
	JUMPE	AC5,L.11			; LNG,L.11				400045' 322 05 0 00 400104'
	SETZ	AC3,				; LINK_TO_BEST,				400046' 400 03 0 00 000000		0180
	MOVE	AC1,-3(SP)			; ADR,LIST_HEAD				400047' 200 01 0 17 777775		0181
L.5:	MOVE	AC2,0(AC1)			; NEXT,0(ADR)				400050' 200 02 0 01 000000		0183
	JUMPE	AC2,L.9				; NEXT,L.9				400051' 322 02 0 00 400067'
	CAMLE	AC5,1(AC2)			; LNG,1(NEXT)				400052' 313 05 0 02 000001		0185
	JRST	L.8				; L.8					400053' 254 00 0 00 400065'
	JUMPLE	AC4,L.7				; AC4,L.7				400054' 323 04 0 00 400063'		0189
	JUMPE	AC3,L.6				; LINK_TO_BEST,L.6			400055' 322 03 0 00 400061'		0191
	MOVE	AC16,1(AC2)			; AC16,1(NEXT)				400056' 200 16 0 02 000001
	CAML	AC16,1(AC3)			; AC16,1(LINK_TO_BEST)			400057' 311 16 0 03 000001
	JRST	L.5				; L.5					400060' 254 00 0 00 400050'
RQLCB								12-Apr-1985 07:09:27	TOPS-20 Bliss-36 4A(225)	    Page   8
001000								30-Dec-1982 17:57:14	DNET61:<DECNET.UTILITIES>RQLCB.BLI.1 (3)

L.6:	MOVE	AC3,AC1				; LINK_TO_BEST,ADR			400061' 200 03 0 00 000001
	JRST	L.5				; L.5					400062' 254 00 0 00 400050'
L.7:	MOVE	AC3,AC1				; LINK_TO_BEST,ADR			400063' 200 03 0 00 000001		0194
	JRST	L.9				; L.9					400064' 254 00 0 00 400067'
L.8:	MOVE	AC1,AC2				; ADR,NEXT				400065' 200 01 0 00 000002		0198
	JRST	L.5				; L.5					400066' 254 00 0 00 400050'		0183
L.9:	JUMPE	AC3,L.11			; LINK_TO_BEST,L.11			400067' 322 03 0 00 400104'		0200
	MOVE	AC1,0(AC3)			; ADR,0(LINK_TO_BEST)			400070' 200 01 0 03 000000		0203
	MOVN	AC2,AC5				; AC2,LNG				400071' 210 02 0 00 000005		0205
	ADDM	AC2,1(AC1)			; AC2,1(ADR)				400072' 272 02 0 01 000001
	SKIPN	1(AC1)				; 1(ADR)				400073' 336 00 0 01 000001
	JRST	L.10				; L.10					400074' 254 00 0 00 400101'
	MOVE	AC2,AC1				; AC2,ADR				400075' 200 02 0 00 000001		0207
	ADD	AC2,1(AC1)			; AC2,1(ADR)				400076' 270 02 0 01 000001
	MOVE	AC1,AC2				; AC1,AC2				400077' 200 01 0 00 000002
	JRST	L.12				; L.12					400100' 254 00 0 00 400105'
L.10:	MOVE	AC2,0(AC1)			; AC2,0(ADR)				400101' 200 02 0 01 000000		0210
	MOVEM	AC2,0(AC3)			; AC2,0(LINK_TO_BEST)			400102' 202 02 0 03 000000
	JRST	L.12				; L.12					400103' 254 00 0 00 400105'		0200
L.11:	SETO	AC1,				; AC1,					400104' 474 01 0 00 000000		0166
L.12:	POP	SP,AC16				; SP,AC16				400105' 262 17 0 00 000016		0138
	POPJ	SP,				; SP,					400106' 263 17 0 00 000000

; Routine Size:  39 words


;   0223  1	
;   0224  1	END						!End of module
;   0225  1	
;   0226  0	ELUDOM




; Low  segment length:       0 words
; High segment length:      71 words





; Size:		71 code + 0 data words
; Run Time:	   00:01.6
; Elapsed Time:	   00:01.8
; Lines/CPU Min:    8620
; Lexemes/CPU-Min: 34405
; Memory Used:	8 pages
; Compilation Complete