cdc:nos2.source:nam5871:mrels
Table of Contents
MRELS
Table Of Contents
Source Code
- MRELS.txt
- *DECK MRELS
- IDENT MRELS
- ENTRY MRELS
- EXT ABORT
- EXT BFSCAN
- EXT XTRACE
- EXT OMSG
- EXT RDUMP
- EXT XDROP
- LIST F
- *IF DEF,IMS
- *#
- *1DC MRELS 000100
- * 1. PROC NAME AUTHOR DATE 000110
- * MRELS P. C. TAM 77/09/27
- * 000130
- * 2. FUNCTIONAL DESCRIPTION. 000140
- * THIS ROUTINE IS RESPONSIBLE FOR RELEASING ONE BUFFER 000150
- * OF THE SPECIFIED FWA TO THE FREE CHAIN. 000160
- * 000170
- * 3. METHOD USED. 000180
- * CALLING ROUTINES PASS THE FWA OF BUFFER TO BE RELEASED. 000190
- * INCREMENT TOTAL NUMBER OF WORDS OF FREE CHAIN. 000200
- * SCAN THROUGH FREE CHAIN FOR PROPER POSITION TO CHAIN THE 000210
- * BUFFER BEING RELEASED. 000220
- * WHEN PROPER POSITION FOUND. CHECK WHETHER FORM CONTIGUOUS 000230
- * BUFFER WITH PRECEEDING OR FOLLOWING FREE BUFFERS OR NOT. 000240
- * DO THE LINKING. 000250
- * 000260
- * 4. ENTRY PARAMETERS. 000270
- * BUFWA FWA OF BUFFER TO RELEASE 000280
- * 000290
- * 5. EXIT PARAMETERS. NONE 000300
- * 000310
- * 6. COMDECKS CALLED. 000320
- * CYBERDEFS FREETAB INPARU MACDEF
- * STATTAB2
- * 000360
- * 7. ROUTINES CALLED. 000370
- * OMSG DAYFILE MESSAGE
- * RDUMP DUMP NIP ADDRESS SPACE
- * XDROP SET PIP DROP FLAG
- * XTRACE RECORD CALL 000390
- * 000400
- * 8. DAYFILE MESSAGES.
- * *MRELS BUFFER MANAGEMENT ERROR*
- * 000420
- *#
- *ENDIF
- *CALL MACDEF
- *CALL CYBERDEFS
- *CALL INPARU
- *CALL FREETAB
- *CALL STATTAB2
- MRELS SUBR = ENTRY/EXIT
- IFEQ DEBUG,1,6
- SX6 A1
- SA6 TEMP
- SX1 XMRELS
- RJ XTRACE
- SA1 TEMP
- SA1 X1
- SA2 X1 (X2)=(BUFWA)
- MX0 -FRBBS$ (X1)=FRBBS[BUFWA] RIGHT JUSTIFIED
- LOAD A5,X2,FRBBS# (X5)=FRBBS[BUFWA] WORD
- LX0 FRBBS?-FRBBS$+1
- BX1 -X0*X5
- LX1 -FRBBS?+FRBBS$-1
- D2 IFEQ DEBUG,1
- NZ X1,MRLD1
- SA1 MSGDR
- RJ ABORT *---ABORT---*
- MRLD1 BSS 0
- D2 ENDIF
- IFEQ STAT,1,4
- MX0 -1 INCREMENT ST$REL
- SA5 ST$REL
- IX6 X5-X0
- SA6 ST$REL
- * INCREASE FREE CHAIN SIZE
- SA5 FRETAB+FRESFB#
- IX6 X5+X1
- SA6 A5
- ***
- *
- * STEP 2 SCAN THRU FREE CHAIN FOR PROPER POSITION TO LINK RELEASED
- * BUFFER
- * WHEN EXIT FROM THIS STEP:
- * (B4) = PREBUF VALUE (PRECEDING BUFFER BASE ADDRESS)
- * (B5) = FOBUF VALUE (NEXT BUFFER BASE ADDRESS)
- * (B2) = BUFWA VALUE (BUFFER BEING RELEASED BASE ADDRESS)
- * (B3) = FRENOFB VALUE(NO. OF FREE BUFFER)
- SA5 FRETAB+FREFBFP# READ FREFBFP WORD FROM CM
- SB5 X5 (B5)=FREFBFB VALUE (FOBUF)
- SB4 FRETAB (B4)=LOC(FRETAB) (PREBUF)
- SA5 FRETAB+FRENOFB# READ FRENOFB WORD FROM CM
- SB3 X5 (B3)=FRENOFB VALUE
- SB2 X2 (B2)=BUFWA (BUFWA)
- SB1 1 INITIALIZE LOOP COUNTER
- MRLS1 GT B5,B2,FOUND IF FOBUF GR BUFWA, GO TO FOUND
- SB4 B5 PREBUF SET TO FOBUF
- LOAD A5,B5,FRBFBFP# (X5)=FRBFBFP[FOBUF] WORD
- SB5 X5 GET ONLY FRBFBFP FIELD
- SB1 B1+1 INCR. LOOP COUNTER
- LE B1,B3,MRLS1
- ***
- *
- * STEP 3 FOUND PROPER POSITION FOR RELEASE BUFFER
- * CHECK WHETHER FORM CONTIGUOUS BLOCK WITH PRECEEDING OR
- * FOLLOWING BUFFERS
- * WHEN EXIT FROM THIS STEP:
- * (B7) = PREBUF+FRBBS[PREBUF] (LWA+1 OF PRECEDING BUFFER) TEMP1
- * (B6) = BUFWA+FRBBS[BUFWA] (LWA+1 OF RELEASE BUFFER ) TEMP2
- * B4, B5, B2, B3 ARE PERSERVED FROM PREVIOUS STEP
- FOUND BSS 0
- DZ IFEQ STAT,1
- SX6 B1 (X6)=NO OF BUFFERS EXAMINED
- SA5 ST$RNB UPDATE NO OF FREE BUFFERS TRANSVERSES
- IX6 X6+X5
- SA6 A5
- DZ ENDIF
- LOAD A5,B4,FRBBS# (X5)=FRBBS[PREBUF] WORD
- MX0 -FRBBS$ MASK FOR FRBBS$ FIELD
- LX0 FRBBS?-FRBBS$+1 SHIFT TO APPR POS. IN WORD
- BX6 -X0*X5 GET FRBBS FIELD ONLY
- LX6 -FRBBS?+FRBBS$-1 FRBBS FD RIGHT JUSTIFY
- SB7 B4+X6 (B7)=PREBUF+FRBBS[PREBUF] LWA+1 OF PRE BLK
- SB6 B2+X1 (B6)=BUFWA+FRBBS[BUFWA] LWA+1 OF RELEASE BF
- D1 IFEQ DEBUG,1
- LT B2,B4,MRLS5 BUFWA GQ PREBUF AND
- LT B2,B7,MRLS15 BUFWA LS TEMP1, BRANCH TO MRLS15
- MRLS5 LE B6,B5,MRLS10 TEMP2 GR FOBUF AND
- SB1 FRETAB+FRE1# FOBUF NQ LOC(FRE1)
- NE B5,B1,MRLS15 BRANCH TO MRLS15
- MRLS10 SA5 CTLSFWA BUFWA LS CTLSFWA,
- SB1 X5 BRANCH TO MRLS15
- GE B2,B1,MRLS20
- MRLS15 BSS 0
- SA1 MSGDR READ MSG CM ADDRESS
- RJ ABORT *---ABORT---*
- D1 ENDIF
- ***
- *
- * LINK BUFFER TO THE FREE CHAIN
- MRLS20 LX1 FRBBS?-FRBBS$+1 SHIFT TO APP POS IN WORD
- NE B2,B7,MRLSY BRANCH IF BUFWA NE TEMP1
- NE B5,B6,MRLSZ BRANCH IF FOBUF NE TEMP2
- **
- *
- * CASE 1 RELEASE BUF FORM CONTIGUOUS BLK WITH BOTH PRE AND FO BLKS
- *
- * FOLLOWING INSTRUCTIONS PRESERVES:
- * (X7) = FRBBS[PREBIF]+FRBBS[BUFWA]+FRBBS[FOBUF]
- * (X3) = FRBWD[FOBUF]
- MX0 -FRBBS$ MASK FOR FRBBS FIELD
- LOAD A5,B4,FRBBS# (X5)=FRBBS[PREBUF] WORD
- LX0 FRBBS?-FRBBS$+1 SHIFT TO APPR POS IN WORD
- BX7 X0*X5 REST OF WORD MINUS FRBBS FD
- BX5 -X0*X5 GET FRBBS FIELD FROM WORD FRBBS[PREBUF]
- LOAD A3,B5,FRBBS# (X3)=FRBBS[FOBUF] WORD
- BX6 -X0*X3 GET FRBBS FIELD FROM WORD FRBBS[FOBUF]
- IX5 X5+X1 ADD FRBBS[PREBUF] AND FRBBS[BUFWA]
- IX5 X5+X6 ADD RESULT AND FRBBS[FOBUF]
- BX7 X7+X5 INTEGRATE THE RESULTING FRBWD[PREBUF]
- SB7 X3 TEMP1=FRBFBFP[FOBUF]
- MX0 -FRBFBFP$ MASK FOR FRBFBFP FD
- BX7 X0*X7 FRBFBFP[PREBUF] WORD MINUS FP FD
- SX0 B7 (X0)=FBFBFP[FOBUF]
- LOAD A5,B7,FRBFBBP# (X5)=FRBFBBP[FRBFBFP[FOBUF]] WORD
- BX7 X7+X0 (X7)=FRBFBFP[FOBUF]+ORIGINAL FRBWPLPREBUF]
- MX4 -FRBFBBP$ MASK FOR FRBFBBP
- STORE A7,B4,FRBWD# (X7)=FRBWD[PREBUF]
- LX4 FRBFBBP?-FRBFBBP$+1 SHIFT TO APPR POS IN WORD
- SX3 B4 (X3)=PREBUF VALUE
- BX6 X4*X5 (X6)=FRBWD[FRBFBFP[FOBUF]] MINUS FRBFBBP FD
- LX3 FRBFBBP?-FRBFBBP$+1 SHIFT FRBFBBP FD TO RIGHT POS
- BX6 X6+X3 FRBFBBP[FRBFBFP[FOBUF]]=PREBUF
- SA6 A5 STORE FRBFBBP[FRBFBFP[FOBUF]] TO CM
- SX7 B3-1 (X7)=FRENOFB-1
- SA7 FRETAB+FRENOFB# STORE FRENOFB TO CM
- EQ MEXIT
- **
- *
- * CASE 2 RELEASE BLK FOR, CONTIGUOUS BLK WITH PECEEDING BLK ONLY
- MRLSZ MX0 -FRBBS$ MASK FOR FRBBS FIELD
- LOAD A5,B4,FRBBS# (X5)=FRBBS[PREBUF] WORD
- LX0 FRBBS?-FRBBS$+1 SHIFT TO APPR POS IN WORD
- BX4 -X0*X5 (X4)=FRBBS[PREBUF] ONLY
- BX5 X0*X5 (X5)=FRBBS[PREBUF] WORD MINUS FRBBS[PREBUF]
- IX7 X4+X1 (X7)=FRBBS[PREBUF]+FRBBS[BUFWA]
- BX7 X7+X5 (X7)=FRBWD[PREBUF] RESULT
- SA7 A5 FRBBS[PREBUF]=FRBBS[PREBUF]+FRBBS[BUFWA]
- EQ MEXIT
- **
- *
- * CASE 3 RELEASE BLK FORM CONTIGUOUS BLK WITH FOLLOWING BLK ONLY
- MRLSY NE B5,B6,MRLSX BRANCH IF FOBUF NE TEMP2
- MX0 -FRBBS$ MASK FOR FRBBS FIELD
- LX0 FRBBS?-FRBBS$+1 SHIFT TO APPR POS IN WORD
- LOAD A3,B5,FRBBS# (X3)=FRBBS[FOBUF] WORD
- BX6 -X0*X3 (X6)=FRBBS[FOBUF] ONLY
- BX5 X0*X3 (X5)=FRBWD[BUFWA] MINUS FRBBS[BUFWA]
- IX6 X6+X1 (X6)=FRBBS[BUFWA]+FRBBS[FOBUF] NOT JUST.
- BX6 X6+X5 (X6)=RESULT TO BE STORE IN FRBWD[BUFWA]
- SA6 X2 STORE NEW FRBWD[BUFWA] TO CM
- SB7 X3 (B7)=FRBFBFP[FOBUF] TEMP1
- LOAD A1,B4,FRBFBFP# (X1)=FRBFBFP[PREBUF] WORD
- MX7 -FRBFBFP$ MASK FOR FRBFBFP FD
- BX7 X7*X1 FRBFBFP[PREBUF] WORD MINUS FP FD
- BX7 X7+X2 (X7)=NEW FRBWD[PREBUF], FP SET BUFWA
- MX4 -FRBFBBP$ MASK FOR FRBFBBP FIELD
- SA7 A1 STORE NEW FRBWD[PREBUF]
- LX4 FRBFBBP?-FRBFBBP$+1 SHIFT TO APPR POS IN WORD
- LOAD A5,B7,FRBFBBP# (X5)=FRBFBBP[FRBFBFP[FOBUF]] WORD
- BX5 X4*X5 FRBWD[FRBFBFP[FOBUF]] MINUS FRBFBBP FIELD
- LX2 FRBFBBP?-FRBFBBP$+1 SHIFT TO APPR POS IN WORD
- BX6 X5+X2 NEW FRBWD[FRBFBFP[FOBUF]]
- SA6 A5 STORE TO CM
- EQ MEXIT
- **
- *
- * CASE 4 RELEASE BUFFER DOES NOT FORM CONTIGUOUS BLOCK WITH ANY BLK
- MRLSX SX3 B4 (X3)=PREBUF VALUE
- LX3 FRBFBBP?-FRBFBBP$+1 SHIFT TO APPR POS IN WORD
- BX1 X1+X3 FRBFBBP[BUFWA]=PREBUF
- SB3 B3+1 FRENOFB=FRENOFB+1
- SX5 B5 (X5)=FOBUF
- BX6 X1+X5 FRBFBFP[BUFWA]=FOBUF
- STORE A6,B2,FRBWD# (X6)=NEW FRBWD[BUFWA]
- MX0 -FRBFBFP$ MASK FOR FRBFBFP FD
- LOAD A4,B4,FRBFBFP# (X4)=FRBFBFP[PREBUF] WORD
- BX4 X0*X4 FRBFBFP[PREBUF] WORD MINUS FP FD
- SX6 B3 (X6)=UPDATED FRENOFB
- BX7 X4+X2 FRBFBFP[PREBUF]=BUFWA
- SA7 A4 STORE TO CM
- SA6 FRETAB+FRENOFB# STORE TO CM
- MX0 -FRBFBBP$ MASK FOR FRBFBBP
- LOAD A5,B5,FRBFBBP# (X5)=FRBFBBP[FOBUF] WORD
- LX0 FRBFBBP?-FRBFBBP$+1 SHIFT TO APPR POS IN WORD
- BX5 X0*X5 REST OF WORD MINUS FRBFBBP[FOBUF] FD
- LX2 FRBFBBP?-FRBFBBP$+1 SHIFT TO APPR POS IN WORD
- BX7 X5+X2 FRBFBBP[FOBUF]=BUFWA
- SA7 A5 STORE RESULT TO CM
- MEXIT BSS 0
- IFEQ BFSC,1,1
- RJ BFSCAN
- EQ MRELSX EXIT
- IFEQ DEBUG,1,2
- MSGDR VFD 60/MSGBLK
- BSSZ 1
- XMRELS DATA L*MRELS*
- TEMP BSS 1
- MSGBLK DATA L*MRELS BUFFER MANAGEMENT ERROR*
- END
cdc/nos2.source/nam5871/mrels.txt ยท Last modified: 2023/08/05 17:22 by Site Administrator