*DECK MSETPTR USETEXT NIPDEF USETEXT PIT USETEXT PRUBUFF PRGM MSETPTR; # SET BACKWARD PTRS IN PRU CHAIN# STARTIMS; # *1DC MSETPTR * * 1. PROC NAME AUTHOR DATE * MSETPTR E. GEE 85/04/02 * * 2. FUNCTIONAL DESCRIPTION * SET UP BACKWARD POINTERS IN THE PRU BUFFERS FOR GARBAGE * COLLECTION. * * 3. METHOD USED * CALL MSETIL TO SET NIP/PIP INTERLOCK. * LOOP TO PROCESS EACH PIT ENTRY. * IF PIT ENTRY IN USE, * LOOP TO PROCESS EACH PRU BUFFER SIZE, * IF PRU BUFFERS EXISTS, * SET UP BACKWARD POINTERS IN THE PRU BUFFER. * * 4. ENTRY PARAMETERS * NONE * * 5. EXIT PARAMETERS * NONE * * 6. COMDECKS CALLED * NIPDEF NIP CONSTANT DEFINITIONS * PIT PIP INTERFACE TABLE * PRUBUFF PRU BUFFER TEMPLATE * * 7. ROUTINES AND OVERLAYS CALLED * MSETIL SET NIP/PIP INTERLOCK * XTRACE TRACE CALLS * * 8. DAYFILE MESSAGES AND OTHER IMPORTANT INFORMATION * * THIS PROGRAM IS A PRIMARY 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 PRIMARY * OVERLAY BUFFER SIZE MINUS 5 (560B WORDS). * * THIS OVERLAY IS CALLED BY XEXEC. * # STOPIMS; XREF BEGIN PROC MSETIL; # SET NIP/PIP INTERLOCK # PROC XTRACE; # RECORD TRACES # LABEL RJMAIN; # RETURN ADDRESS IN OVLCALL # END # INTERNAL VARIABLES # ITEM I; # INDUCTION VARIABLE # ITEM J; # INDUCTION VARIABLE # ITEM BACKPRU; # ADDR OF PREV PRU BUF IN CHAIN # ITEM PITIDX; # PIT ENTRY INDEX # 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 MSETPTR # CONTROL IFEQ DEBUG,1; XTRACE("MSETP"); CONTROL FI; MSETIL(0); # SET NIP/PIP INTERLOCK # FOR I = 1 STEP 1 UNTIL MAXPIP DO # PROCESS EACH PIT ENTRY # BEGIN IF PITPUF[I] THEN # PIT ENTRY IS IN USE # BEGIN P = LOC(PITFPB1[I]); # ADDR OF PRU BUF POINTER WORD# FOR J = 0 STEP 1 UNTIL MAXPRU-1 DO # PROCESS EACH PRU BUFFER SIZE # BEGIN BACKPRU = LOC(PRUNIPFPB[J]); # ADDR OF PTR WORD IN PIT ENT# P = PRUNIPFPB[J]; # ADDR OF 1ST PRU BUF IN CHAIN # FOR J=J WHILE P NQ 0 DO # PROCESS EACH PRU BUF IN CHAIN # BEGIN PRUBBACK[0] = BACKPRU; # SET UP BACKWARD CHAIN PTR # BACKPRU = P; # ADDR OF THIS PRU BUFFER # P = PRUBDLFP[0]; # ADDR OF 1ST PRU BUF IN CHAIN# END END END END GOTO RJMAIN; # RETURN TO CALLING PROGRAM # END TERM