cdc:nos2.source:nam5871:nprlb
Table of Contents
NPRLB
Table Of Contents
- [00006] PRGM NPRLB
- [00057] PROC ABORT
- [00058] PROC MRELS
- [00059] PROC OMSG
- [00060] PROC XTRACE
Source Code
- NPRLB.txt
- *DECK NPRLB
- USETEXT NIPDEF
- USETEXT PARAMS
- USETEXT PIT
- USETEXT PRUBUFF
- PRGM NPRLB;
- STARTIMS ;
- #
- *1DC
- * 1. PROC NAME AUTHOR DATE
- * NPRLB E. GEE 85/05/04
- *
- * 2. FUNCTIONAL DISCRIPTION.
- * RELEASE ALL FREE PRU BUFFERS BELONGING TO A PARTICULAR PIP
- * AND OF A PARTICULAR SIZE.
- *
- * 3. METHOD USED.
- * LOOP THROUGH PRU BUFFER FREE CHAIN RELEASING EACH PRU
- * BUFFER.
- *
- * 4. INPUT PARAMS.
- * PARAMS1 PRU BUFFER SIZE
- * PARAMS2 PIT ENTRY INDEX
- *
- * 5. EXIT PARAMS.
- * NONE.
- *
- * 6. COMMON DECKS AND SYMPL TEXTS USED.
- * NIPDEF CONSTANT DEFINITIONS
- * PARAMS BUFFER FOR PASSING PARAMS TO PRIMARY OVLS
- * PIT PIP INTERFACE TABLE TEMPLATE
- * PRUBUFF PRU BUFFER TEMPLATE
- *
- * 7. ROUTINES CALLED:
- * ABORT ABORT NIP
- * MRELS RETURN BUFFER TO FREE CHAIN
- * OMSG ISSUE DAYFILE MESSAGE
- * XTRACE TRACE PROCEDURE CALL.
- *
- * 8. DAYFILE MESSAGES OR OTHER IMPORTANT INFORMATION.
- *
- * * NPRLB - PRU BUFFERS NOT IN CHAIN. *
- *
- * THIS PROGRAM IS A SECONDARY OVERLAY LOADED BY SUBROUTINE
- * OVLCALL. WHEN EXECUTION HAS COMPLETED, A JUMP IS MADE TO
- * LOCATION RJMAIN TO RETURN TO THE CALLING PROGRAM.
- *
- * W A R N I N G - THIS PROGRAM CANNOT EXCEED THE SECONDARY
- * OVERLAY BUFFER SIZE MINUS 5 (360B WORDS).
- *
- * THIS OVERLAY IS CALLED BY XCHKCET.
- #
- STOPIMS;
- XREF
- BEGIN
- PROC ABORT; # ABORT NIP #
- PROC MRELS; # RETURN BUFFER #
- PROC OMSG; # ISSUE DAYFILE MESSAGE #
- PROC XTRACE; # TRACE PROCEDURE CALL #
- LABEL RJMAIN; # RETURN ADDRESS IN OVLCALL #
- END
- #
- INTERNAL VARIABLES
- #
- ITEM I; # INDUCTION VARIABLE #
- ITEM TEMP1; # ADDR OF NEXT PRU BUF IN CHAIN #
- ARRAY ABTMSG S(4); # ABORT NIP DAYFILE MESSAGE #
- BEGIN
- ITEM ABTMSG1 C(0,00,34)=[" NPRLB - PRU BUFFERS NOT IN CHAIN."];
- ITEM ABTMSGE U(3,24,36)=[0];
- END
- BASED ARRAY PRUNIPWD S(1); # TEMPLATE FOR NIP WORD IN PIT #
- BEGIN
- ITEM PRUNIPMFB U(0,00,06); # MINIMUM NO OF PRU BUFS #
- ITEM PRUNIPMAB U(0,06,06); # MAXIMUM NO OF PRU BUFS #
- ITEM PRUNIPNCA U(0,12,12); # CURRENT NO OF BUFFERS ASSIGNED#
- ITEM PRUNIPNC U(0,24,12); # CURRENT NO OF PRU CONNECTIONS #
- ITEM PRUNIPFPB U(0,42,18); # ADR OF FIRST BUF IN FREE CHAIN#
- END
- #**********************************************************************#
- CONTROL EJECT;
- BEGIN # BEGIN NPRLB #
- CONTROL IFEQ DEBUG,1;
- XTRACE("NPRLB");
- CONTROL FI;
- P<PRUNIPWD> = LOC(PITW5[PARAMS2]) - 1;
- #
- RELEASE ALL BUFFERS OF SIZE PARAMS1 AND LARGER
- #
- FOR I = PARAMS1 STEP 1 UNTIL MAXPRU
- DO # RELEASE ALL PRU BUFS IN CHAIN #
- BEGIN
- P<PRUBUFF> = PRUNIPFPB[I]; # FIRST BUFFER IN CHAIN #
- TEMP1 = PRUBDLFP[0]; # ADDR OF NEXT BUFFER IN CHAIN #
- #
- RELEASE ALL BUFFERS IN FREE CHAIN
- #
- FOR I=I WHILE P<PRUBUFF> NQ 0
- DO # RELEASE UNTIL END OF CHAIN #
- BEGIN
- MRELS(P<PRUBUFF>); # RELEASE THIS BUFFER #
- PRUNIPNCA[I] = PRUNIPNCA[I] - 1; # DECRE NO OF PRU BUFFERS #
- P<PRUBUFF> = TEMP1; # ADDR OF NEXT BUFFER IN CHAIN #
- TEMP1 = PRUBDLFP[0]; # ADDR OF NEW NEXT BUF IN CHAIN #
- END
- IF PRUNIPNCA[I] EQ 0
- THEN # RELEASED LAST BUFFER #
- BEGIN
- PRUNIPFPB[I] = 0; # CLEAR BUFFER POINTER #
- END
- ELSE # NOT ALL PRU BUFFERS IN CHAIN #
- BEGIN
- OMSG(ABTMSG,0); # ISSUE DAYFILE MESSAGE #
- ABORT(0,0); # ABORT NIP #
- END
- END
- GOTO RJMAIN; # RETURN TO CALLING PROGRAM #
- END # END NPRLB #
- TERM
cdc/nos2.source/nam5871/nprlb.txt ยท Last modified: 2023/08/05 17:22 by Site Administrator