*DECK NRPWL USETEXT NIPDEF USETEXT OVERLAY USETEXT PARAMP USETEXT PCNB USETEXT PWL PRGM NRPWL; # RELEASE A PROCESSED WORKLIST # STARTIMS; # *1DC NRPWL * * 1. PROC NAME AUTHOR DATE * NRPWL J.C. LEE 80/04/01 * * 2. FUNCTIONAL DESCRIPTION. * RELEASE A PROCESSED PRU WORKLIST * * 3. METHOD USED * CHECK IF THE SPECIFIED WORKLIST PRIORITY LEVEL IS VALID * CHECK IF CURRENT WORKLIST HAS BEEN PROCESSED BY PIP * RELEASE CURRENT PRU WORKLIST QUEUED TO QCB * CLEAR PWL-PROCESSED BIT IN QCB * RELEASE PRU WORKLIST IN INBOUND BUFFER * * 4. ENTRY PARAMETERS. * PARAMP1 PWL ADDRESS * PARAMP2 PRU-QCB ADDRESS * * 5. EXIT PARAMETERS. * PARAMP4 NONZERO IF WORKLIST RELEASE REQUEST IS BAD * * 6. COMDECKS CALLED AND SYMPL TEXTS USED. * NIPDEF OPSIZE PARAMP * PCNB PWL * * 7. ROUTINES AND OVERLAYS CALLED. * MRELS RELEASE BUFFER * XTRACE TRACE CALLS * * 8. DAYFILE MESSAGES. * NONE * * 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 *CALL OPSIZE * * THIS OVERLAY IS CALLED BY NPPWL. * # STOPIMS; # EXTERNAL VARIABLES # XREF BEGIN PROC MRELS; # RELEASE BUFFER # PROC XTRACE; # TRACE CALLS # LABEL RJMAIN; # RETURN ADDRESS # END # LOCAL VARIABLES # ITEM PWLADDR; # PWL ADDRESS # ITEM WLPRI; # WORKLIST PRIORITY LEVEL # BASED ARRAY PWLQWORD P(1); BEGIN ITEM PWLQDONE B(0,0,1); # WORKLIST PROCESSED BIT # ITEM PWLQNEXT I(0,42,AL); # NEXT WORKLIST ADDRESS # END # ******************************************************************** # BEGIN CONTROL IFEQ DEBUG,1; XTRACE("NRPWL") ; CONTROL FI; PWLADDR = PARAMP1; # PWL ADDRESS # P = PWLADDR; # PWL ADDRESS IN INBOUND BUFFER # P = PARAMP2; # PCNB ADDRESS # WLPRI = PWLPRI[0]; # WORKLIST PRIORITY LEVEL # # CHECK IF A VALID WORKLIST PRIORITY LEVEL # IF WLPRI GR CMDQP THEN # ILLEGAL WORKLIST PRIORITY LEV # BEGIN PARAMP4 = DMCBPL; # BAD PRIORITY LEVEL IN REL REQ # END ELSE # VALID WORKLIST PRIORITY # BEGIN P = LOC(PCNBIMMO[0]) + WLPRI; IF NOT PWLQDONE[0] OR # CURRENT PWL NOT PROCESSED # PWLQNEXT[0] EQ 0 # NO WORKLIST EXISTS # THEN # ILLEGAL REQUEST FROM PIP # BEGIN PARAMP4 = DMCBRR; # UNEXPECTED WRKLST RELEASE REQ # END ELSE # RELEASE PROCESSED WORKLIST # BEGIN P = PWLQNEXT[0]; # ADDRESS OF PWL TO RELEASE # PWLQNEXT[0] = PWLNEXT[0]; # UPDATE PWL QUEUE PTR IN PQCB # MRELS(P); # RELEASE CURRENT WORKLIST # IF WLPRI NQ IMMQP THEN # NOT RELEASING IMMQ PWL # PWLQDONE[0] = FALSE; # CLEAR PWL PROCESSED BIT # PARAMP3 = 0 ; END END GOTO RJMAIN; END TERM