cdc:nos2.source:nam5871:exgitsb
Table of Contents
EXGITSB
Table Of Contents
Source Code
- EXGITSB.txt
- *DECK EXGITSB
- PROC GIVETSB ( (FWA) );
- BEGIN # GIVETSB #
- *IF DEF,IMS
- #
- **
- *
- * 1. PROC NAME AUTHOR DATE
- * GIVETSB M. D. PICKARD 76/11/19
- *
- * 2. FUNCTIONAL DESCRIPTION
- * GIVETSB WILL RETURN AN ASSIGNED BLOCK TO THE AVAILABLE
- * SPACE IN THE TSB AREA.
- *
- * 3. METHOD USED
- * THE TSB IS SET TO FREE. THE TSB PRECEEDING IT AND AFTER IT
- * ARE CHECKED, IF TWO FREE TSB"S ARE CONTIGUOUS THEY ARE MADE
- * INTO ONE BLOCK.
- *
- * 4. ENTRY PARAMETERS
- * A. FORMAL PARAMETERS
- * FWA ADDRESS OF TSB BEING RETURNED
- *
- * B. TSBMGR GLOBAL PARAMETERS
- * CTSBLWA CURRENT LAST WORD ADDRESS OF TSB"S
- * TSBFWA TSB AREA FIRST WORD ADDRESS
- *
- * 5. EXIT PARAMETERS
- * FFFWA (TSBMGR GLOBAL) FIRST FREE TSB ADDRESS
- * BIGFREE (TSBMGR GLOBAL) BIGGEST FREE TSB IN TSB AREA
- *
- * 6. COMDECKS CALLED
- * TSBBASE TSB MANAGER BASED ARRAY DEFINITIONS
- * TSBDATA TSB MANAGER DATA AREA DEFINITIONS
- * TSBDEFS TSB MANAGER SYMPL DEFS
- *
- * 7. ROUTINES CALLED
- * GETBIG GET BIGGEST FREE TSB
- * FIRSTF GET FIRST FREE TSB
- *
- * 8. DAYFILE MESSAGES
- * NONE.
- *
- #
- *ENDIF
- CONTROL NOLIST; # STOPS LIST TSBDEFS,TSBDATA,TSBBASE #
- *CALL CYBERDEFS
- *CALL TSBDEFS
- *CALL TSBBASE
- *CALL TSBDATA
- CONTROL LIST;
- ITEM
- FWA U; # FWA OF TSB BEING GIVEN BACK #
- XREF
- BEGIN
- PROC FIRSTF;
- PROC GETBIG;
- END
- ITEM
- TEMPA U, # TEMPORARY ADDRESS FOR TSB"S #
- TEMPL U; # TEMPORARY LENGTH OF ACCUMULATED TSB #
- P<FTSBHDR> = FWA; # SET FREE HEADER AT RELEASED TSB #
- TEMPL = FTSBL[0]; # SAVE AMOUNT BEING RETURNED #
- FBUSY[0] = FALSE; # SET NOT BUSY #
- FIDENT[0] = 0; # CLEAR IDENT FIELD #
- FNOTMOV[0] = FALSE; # ALLOW MOVING #
- IF FPTSBL[0] NQ 0
- THEN # THERE IS A TSB BEFORE THIS #
- BEGIN
- TEMPA = FWA - FPTSBL[0]; # ADDRESS OF PREVIOUS TSB #
- P<FTSBHDR> = TEMPA; # SET FREE HEADER AT PREVIOUS TSB #
- IF FBUSY[0]
- THEN # TSB PREVIOUS TSB IS ASSIGNED #
- TEMPA = FWA; # RESET TO ORIGINAL FREE TSB FWA #
- ELSE
- TEMPL = TEMPL + FTSBL[0]; # ADD LENGTH OF BOTH TSB"S #
- END
- ELSE # SET ADDRESS TO TSB BEING GIVEN BACK #
- TEMPA = FWA;
- P<FTSBHDR> = TEMPA + TEMPL; # POINT TO NEXT TSB #
- IF LOC(FTSBHDR) LS CTSBLWA
- THEN # THERE IS A NEXT TSB (NOT AT END) #
- IF NOT FBUSY[0]
- THEN # IT IS FREE ALSO, COMBINE W/ THE REST #
- TEMPL = TEMPL + FTSBL[0]; # ADD LENGTH TO THAT ACCUMULATED #
- P<FTSBHDR> = TEMPA; # SET HEADER AT ADDRESS OF NEW FREE TSB #
- FTSBL[0] = TEMPL; # SET LENGTH #
- P<BTSBHDR> = TEMPA + TEMPL; # NEXT TSB #
- BPTSBL[0] = TEMPL; # SET NEW PREVIOUS TSB LENGTH #
- IF TEMPL GR BIGFREE THEN # RESET BIGFREE IF RETURNED #
- BIGFREE = TEMPL ; # VALUE IS GREATER #
- IF TEMPA LS FFFWA THEN #RESET FFFWA IF RETURNED IS LOWER #
- FFFWA = TEMPA ;
- RETURN;
- END TERM # GIVETSB #
cdc/nos2.source/nam5871/exgitsb.txt ยท Last modified: 2023/08/05 17:22 by Site Administrator