cdc:nos2.source:nam5871:sstaqe
Table of Contents
SSTAQE
Table Of Contents
- [00003] PROC SSTAQE(P$TABL$,WC,HEAD,ENTRYQ)
- [00004] SSTAQE - ACCEPT QUEUE ENTRY.
- [00008] ACCEPT QUEUE ENTRY.
- [00055] PROC SSTATS
- [00056] PROC MOVEI
- [00057] PROC SSSAWR
Source Code
- SSTAQE.txt
- *DECK SSTAQE
- USETEXT TEXTSS
- PROC SSTAQE(P$TABL$,WC,HEAD,ENTRYQ);
- # TITLE SSTAQE - ACCEPT QUEUE ENTRY. #
- BEGIN # SSTAQE #
- #
- ** SSTAQE - ACCEPT QUEUE ENTRY.
- *
- * F. HOU. 81/09/09.
- *
- * THIS PROCEDURE ENTERS A NEW ENTRY INTO A FIFO QUEUE AND
- * MAKE A WORKLIST REQUEST IF THIS IS THE FIRST ENTRY.
- *
- * PROC SSTAQE(P$TABL$,WC,HEAD,ENTRYQ)
- *
- * ENTRY P$TABL$ = BASED ARRAY POINTER FOR TABLE TABL.
- * WC = WORD COUNT WORD FOR NEW ENTRY.
- * HEAD = HEADER WORD FOR NEW ENTRY.
- * ENTRYQ = ARRAY OF WC-2 WORDS TO BE ADDED TO QUEUE.
- *
- * EXIT A NEW ENTRY HAS BEEN ACCEPTED TO THE QUEUE.
- *
- * NOTES NONE.
- *
- * METHOD
- *
- * ALLOCATES TABLE SPACE FOR NEW ENTRY.
- * MOVES THE NEW ENTRY TO THE ALLOCATED TABLE SPACE OF TABL.
- * IF TABL WAS EMPTY BEFORE THE MOVE, CALL SSSAWR TO ACCEPT
- * WORKLIST REQUEST WITH WORKLIST NUMBER CORRESPONDING TO TABL.
- *
- #
- ITEM P$TABL$ I; # BASED ARRAY POINTER FOR QUEUE TABL. #
- ITEM HEAD I; # HEADER WORD FOR NEW ENTRY. #
- ARRAY WC [0:0] S(1); # WORD COUNT WORD FOR NEW ENTRY. #
- BEGIN
- ITEM WC$WORD U(00,00,60); # OVERLAPPING WORD #
- ITEM WC$CNT U(00,48,12); # 12 BIT WORD COUNT #
- END
- ARRAY ENTRYQ[0:0] S(1); # ARRAY OF WC-2 WORDS TO BE ADDED. #
- BEGIN
- ITEM ENTRYQQ U(00,00,60);
- END
- #
- **** PROC SSTAQE - XREF LIST.
- #
- XREF
- BEGIN
- PROC SSTATS; # ALLOCATE TABLE SPACE. #
- PROC MOVEI; # MOVE BLOCK OF CENTRAL MEMORY WORDS. #
- PROC SSSAWR; # ACCEPT WORKLIST REQUEST. #
- END
- #
- ****
- #
- ITEM COUNT I; # WORD COUNT FOR ENTRY TO MOVE. #
- ITEM FROM I; # FIRST WORD ADDRESS OF FROM BLOCK #
- ITEM INDEX I; # INDEX OF QWD-QUEUE TO WORKLIST DEF TABLE#
- ITEM TABLEN I; # LENGTH OF TABL #
- ITEM TO I; # FIRST WORD ADDRESS OF TO BLOCK #
- ITEM WLN I; # WORKLIST NUMBER #
- BASED ARRAY TEMP [0:0] S(2); # TEMP FOR GETTING LENGTH OF TABL #
- BEGIN
- ITEM TEMP$F U(00,00,60); # FOR WC #
- ITEM TEMP$S U(01,00,60); # FOR HEAD #
- END
- $BEGIN # INCREMENT COUNT FOR STATISTICS #
- SVT$VAL[SVL"AQE"] = SVT$VAL[SVL"AQE"] + 1;
- $END
- P<TEMP>=LOC(P$TABL$)+1; # SAVE CURRENT LENGTH OF TABL IN TABLEN #
- TABLEN=TEMP$F[0];
- SSTATS(P$TABL$,WC$CNT[0]); # ALLOCATE TABLE SPACE #
- P<TEMP>=P$TABL$+TABLEN; # SET TEMP POINTER TO THE END OF TABL #
- TEMP$F[0]=WC$WORD[0]; # MOVE WORD COUNT #
- TEMP$S[0]=HEAD; # MOVE HEAD #
- COUNT=WC$CNT[0]-2; # WORD COUNT FOR ENTRY PORTION #
- FROM=LOC(ENTRYQ); # FIRST WORD ADDRESS OF FROM BLOCK #
- TO=P$TABL$+TABLEN+2; # FIRST WORD ADDRESS OF TO BLOCK #
- MOVEI(COUNT,FROM,TO); # MOVE ENTRY PORTION TO QUEUE #
- IF(TABLEN EQ 0) # EMPTY QUEUE CASE #
- THEN
- BEGIN
- INDEX=(LOC(P$TABL$)-SSMEM)/2-1; #TRANSLATE FROM P$TABL$ TO WLN #
- WLN=QWD$WLN[INDEX]; # WORKLIST NUMBER #
- SSSAWR(WLN); # ACCEPT WORKLIST REQUEST #
- END
- END # SSTAQE #
- TERM
cdc/nos2.source/nam5871/sstaqe.txt ยท Last modified: 2023/08/05 17:23 by Site Administrator