cdc:nos2.source:nam5871:npestof
Table of Contents
NPESTOF
Table Of Contents
- [00013] PRGM NPESTOF
- [00069] PROC BLDKWL
- [00070] PROC XTRACE
- [00071] PROC MRELS
Source Code
- NPESTOF.txt
- *DECK NPESTOF
- USETEXT NIPDEF
- USETEXT BACKBUF
- USETEXT CET
- USETEXT NBT
- USETEXT PIT
- USETEXT PT
- USETEXT PARAMP
- USETEXT KDIS
- USETEXT NHEADER
- USETEXT DRHDR
- USETEXT KSTTAB
- PRGM NPESTOF;
- STARTIMS;
- #
- *1DC NPESTOF
- *
- *
- * 1. PROC NAME AUTHOR DATE
- * NPESTOF C. BITTNER 82/06/18
- *
- * 2. FUNCTIONAL DESCRIPTION
- * PROCESS EST/OFF
- *
- * 3. METHOD USED
- * UPDATE NUMBER OF ON AND OFF ENTRIES IN CET
- * UPDATE NUMBER OF ACTIVE AND FREE ENTRIES IN NBT
- * CLEAR NBTE ENTRY IN PIT
- *
- * 4. ENTRY PARAMETERS
- * PARAMP1 - SM BUFFER (EST/OFF)
- *
- * 5. EXIT PARAMETERS
- * PARAMP2 - IF NON-ZERO THEN BAD BLOCK
- *
- * 6. SYMPL TEXTS USED
- * BACKBUF SPECIAL BUFFER FOR DOWNLINE BACKS
- * NIPDEF CET
- * NBT PIT
- * PT PARAMP
- * KDIS
- * NHEADER DRHDR
- *
- * 7. ROUTINES CALLED
- * KDEL - UPDATE K-DISPLAY
- * XTRACE - TRACE PROCEDURE CALL
- * MRELS - RELEASE BUFFER
- *
- * 8. DAYFILE MESSAGES AND OTHER IMPORTANT INFORMATION
- * THIS PROGRAM IS CALLED BY NPNIPSM
- * W A R N I N G - THIS PROGRAM CANNOT EXCEED THE PRIMARY
- *CALL OPSIZE
- *
- #
- STOPIMS;
- #
- PARAMP1 - SM BUFFER (EST/OFF)
- EXIT PARAMETER
- PARAMP2 - IF NON-ZERO THEN BAD BLK
- #
- #
- EXTERNAL VARIABLES
- #
- XREF
- BEGIN
- PROC BLDKWL; # FORMAT KWL TO DELETE EST ENTRY FROM ST #
- PROC XTRACE; # TRACE PROCEDURE CALL #
- PROC MRELS ;
- LABEL RJMAIN; # RETURN ADDRESS IN OVLCALL #
- END
- #
- INTERNAL VARIABLES
- #
- ITEM NBTIND; # CURRENT INDEX INTO NBT INPUT FET #
- ITEM PITIND; # CURRENT INDEX INTO PIT #
- ITEM FOUND B; # CET ENTRY FOUND FLAG #
- ITEM IDXCET; # CET ENTRY INDEX #
- ITEM PIPNO; # PIP NUMBER TO MATCH #
- ITEM I; # LOOP VARIABLE #
- ITEM TEMP ; # LOOP VARIABLE #
- BASED ARRAY PITNBTW S(1); # TEMPLATE FOR NBT ENTRY WD IN PIT #
- BEGIN
- ITEM PITNBTWH B(00,00,01); # HALT NPU FLAG #
- ITEM PITNBTWE U(00,30,06); # NBT TABLE ENTRY INDEX #
- ITEM PITNBTWA I(00,42,18); # NBT ENTRY ADDRESS #
- END
- #**********************************************************************#
- BEGIN
- CONTROL IFEQ DEBUG,1;
- XTRACE("ESTOF");
- CONTROL FI;
- P<NHEADER> = PARAMP1 + BLKHSIZE;
- FOUND = FALSE;
- FOR I = 0 STEP NBTFETNO WHILE NOT FOUND AND
- I LQ NBTMAXID
- DO # SEARCH NBT FOR MATCHING COUPLER NODE #
- BEGIN
- IF NBTIUF[I] AND NBTHN[I] EQ DN[0]
- THEN
- BEGIN # FOUND NBT ENTRY #
- FOUND = TRUE;
- NBTIND = I; # SAVE NBT INDEX #
- END
- END
- IF FOUND
- THEN
- BEGIN # NBT FOUND #
- #
- UPDATE CET
- #
- FOUND = FALSE;
- FOR IDXCET = CETHSIZE WHILE NOT FOUND AND
- IDXCET LS CETBS[0] DO
- BEGIN
- IF CETEST[IDXCET] EQ NBTEST[NBTIND]
- THEN
- FOUND = TRUE;
- ELSE
- IDXCET = IDXCET + 1;
- END
- IF FOUND AND NOT CETOFF[IDXCET]
- THEN
- BEGIN # CET ENTRY FOUND #
- CETNON[0] = CETNON[0] - 1; # DECREM NO. OF ON ENTRIES #
- CETNOFF[0] = CETNOFF[0] + 1; # INCREM NO. OF OFF ENTRIES #
- # CORRECT CET ENTRY WAS FOUND #
- CETOFF[IDXCET] = TRUE; # SET OFF COUPLER FLAG #
- PIPNO = CETPIP[IDXCET];
- # UPDATE NBT #
- NBTNAE[0] = NBTNAE[0] - 1; # UPDATE NO. ACTIVE ENTRIES #
- NBTNFE[0] = NBTNFE[0] + 1; # UPDATE NO. FREE ENTRIES #
- #
- RELEASE ACTIVE INBOUND BUFFER(S) ASSOCIATED WITH THE
- OFF NPU ENTRY
- #
- FOR I=NBTIND STEP 1 UNTIL NBTIND+1
- DO
- BEGIN
- IF NBTBFS[I] # BUFFER AVAILABLE OR ACTIVE OR RELEASABLE #
- AND NBTOUT[I] NQ 0 # INBOUND BUFFER EXISTS #
- THEN # RELEASE THE INBOUND BUFFER #
- BEGIN
- P<DRHDRWD> = NBTOUT[I];
- NBTBFS[I] = FALSE; # CLEAR ACTIVE BUFFER FLAGS #
- IF P<DRHDRWD> EQ PARAMP1
- THEN # CURRENT INBOUND BUFFER, CANNOT RELEASE EST/OFF #
- BEGIN # FAKE IN=OUT TO TERMINATE NEIB PROCESSING #
- NBTIN[I] = P<DRHDRWD> + BLKBS[0];
- NBTBRF[I] = TRUE; # SET BUFFER RELEASE FLAG #
- END
- ELSE
- BEGIN # RELEASE INBOUND BUFFER #
- BLKBS[0] = NBTLIMIT[I] - P<DRHDRWD>; # BUFFER SIZE #
- MRELS(P<DRHDRWD>); # RELEASE BUFFER #
- NBTIN[I] = NBTLIMIT[I];
- NBTOUT[I] = NBTLIMIT[I];
- END
- END
- END
- #
- RELEASE ALL DOWN LINE MESSAGES (ALWAYS AT LEAST ONE)
- #
- FOR I = NBTIND+2 STEP 1 UNTIL NBTIND+4 DO
- BEGIN
- P<DRHDRWD> = NBTFIRST[I];
- FOR TEMP = TEMP WHILE P<DRHDRWD> NQ 0 # WE DID NOT PASS #
- DO
- BEGIN
- TEMP = NEXTPTR[0] ; # NEXT DOWN-LINE MESSAGE #
- IF (P<DRHDRWD> LS BACKBLWA) AND
- (P<DRHDRWD> GQ BACKBFWA)
- THEN # THIS IS BACK ENTRY IN BACK BUFFER #
- BEGIN
- P<DRHDRWD> = P<DRHDRWD> - 1; # 1ST WD OF BCK BUF ENTRY#
- CMWORD[0] = BACKFFREE; # PTR TO NEXT FREE ENTRY #
- BACKFFREE = P<DRHDRWD>; # NEW FIRST FREE ENTRY #
- END
- ELSE # THIS IS REGULAR DYNAMIC BUFFER #
- BEGIN
- MRELS(P<DRHDRWD>); # RELEASE BUFFER #
- END
- P<DRHDRWD> = TEMP ;
- END
- NBTFIRST[I] = 0 ;
- NBTIN [I] = 0 ;
- NBTOUT [I] = 0 ;
- END
- #
- RELEASE PIP TRACE BUFFER IF ONE EXISTS
- #
- I=NBTIND+5; # PIP TRACE FET INDEX #
- IF NBTFIRST[I] NQ 0
- THEN # PIP TRACE BUFFER EXISTS #
- BEGIN
- MRELS(NBTFIRST[I]-BLKHSIZE);
- NBTWD1[I] = 0; # CLEAR TRACE NBT BUFFER INCLUDING FLAGS #
- NBTWD2[I] = 0;
- NBTWD3[I] = 0;
- NBTWD4[I] = 0;
- END
- IF KDST[0]
- THEN # STATUS DISPLAY ON, DELETE EST ENTRY FROM DISPLAY #
- BLDKWL(KST"EST",NBTKNDX[NBTIND],0,KDELIDVALUE);
- #
- UPDATE PIT ENTRY
- #
- P<PITNBTW> = LOC(PITNBTE1[PIPNO]); # ADR OF 1ST NBTE ENTRY #
- FOR I = 0 STEP 1 UNTIL MAXNPU-1
- DO # CHECK ALL NBTE SLOTS IN PIT ENTRY #
- BEGIN
- IF PITNBTWE[I] EQ (NBTINDX[NBTIND] + 1)
- THEN # FOUND NBTE ENTRY #
- BEGIN
- PITNBTWH[I] = FALSE; # CLEAR HALT NPU FLAG #
- PITNBTWE[I] = 0; # CLEAR NBT TABLE ENTRY INDEX #
- PITNBTWA[I] = 0; # CLEAR NBT TABLE ENTRY ADDRESS #
- END
- END
- END
- NBTIUF[NBTIND] = FALSE; # CLEAR NBT IN USE FLAG #
- END
- GOTO RJMAIN;
- END
- TERM
cdc/nos2.source/nam5871/npestof.txt ยท Last modified: 2023/08/05 17:22 by Site Administrator