ASMB,R,L,C,Q ** SCB RELEASE MODULE ** HED SCB RELEASE MODULE * NAME: RLSCB * SOURCE: 92067-18445 * RELOC: PART OF 92067-16261 * PGMR: G.L.M. * * *************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1978. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT* * * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * * *************************************************************** * NAM RLSCB,7 92067-16261 REV.1903 780518 EXT $LIBR,$LIBX,$SHED,.ENTR,$SRTN,$SMVE * ENT RLSCB * SKP * SESID NOP IERR NOP * RLSCB NOP JSB .ENTR DEF SESID FETCH PARMS * LDA DSHED FETCH ADDRESS OF SCB LIST STA OLDLK AND SET IT AS OLD LINK ADDR * JSB $LIBR GO PRIV TO AVOID CONTENTION NOP * XLA $SHED FETCH FIRST SCB ADDR SZA,RSS IF ZERO (LIST EMPTY), JMP ERR1 GIVE SCB NOT FOUND ERROR * STA CPNTR SET CURRENT SCB ADDR * NXLNK JSB $SMVE DEF SMRTN DEF .1 READ DEF CPNTR AT THIS LOCATION DEF NOP WITH THIS OFFSET DEF NXTLK PUT IT HERE DEF .4 MOVE FOUR WORDS SMRTN EQU * * LDA NXTID FETCH NXT ID CPA SESID,I AND TEST AGAINST NEG REQUEST IDENT JMP FOUND * LDA CPNTR FETCH ADDR OF CURRENT SCB STA OLDLK SAVE AS PREVIOUS SCB FOR NEXT PASS LDA NXTLK SET THE LINK ADDR AS ADDR OF STA CPNTR NEW "CURRENT" SCB SZA UNLESS END OF LIST JMP NXLNK GO FETCH 1ST 4 WORDS OF NEXT SCB * ERR1 CCA JMP EXIT SET ERROR CODE AND EXIT SKP * * FOUND SCB -- SET CONTENTS OF CPNTR (LINK WORD OF SCB TO BE RELEASED) * INTO PREVIOUS LINK OR $SHED (DEFINED BY OLDLK). CALL SESSION MEMORY * MEMORY MANAGER TO RETURN MEMORY ALLOCATED TO SCB. IF EXTENSION * POINTER NOT ZERO, FETCH CONTENTS OF 1ST 2 WORDS OF EXTENSION (LINK * AND LENGTH). CALL SESSION MEMORY MANAGER TO RELEASE MEMORY ALLOCATED * TO EXTENSION. REPETE FOR ALL EXTENSIONS. * * * UPDATE PREVIOUS LINK * FOUND JSB $SMVE DEF SMRT2 DEF .2 WRITE DEF OLDLK TO OLD LINK DEF NOP WITH A ZERO OFFSET DEF NXTLK THE LINK WORD OF SCB BEING RELEASED DEF .1 ONE WORD SMRT2 EQU * * * RETURN MEMORY ALLOCATED TO SCB * LDA CPNTR FETCH ADDR & LENGTH LDB CURLN RTN DST SCBRT SAVE FOR RELEASE CALL * SJS $SRTN SCBRT BSS 2 * * * CHECK FOR EXTENSION * LDA SCBEX FETCH EXTENSION POINTER SZA,RSS IF ZERO, JMP EXIT ALL DONE. * JSB $SMVE DEF SMRT3 DEF .1 READ DEF SCBEX FROM LOCATION ADDRESSED BY SCB EXTENSION WORD DEF NOP (ZERO OFFSET) DEF EXPNT TO THE EXTENSION POINTER BUFFER DEF .2 READ 2 WORDS SMRT3 EQU * * LDA SCBEX FETCH SCB EXT ADDR LDB EXPNT FETCH NEXT LINK STB SCBEX AND SAVE FOR NEXT PASS LDB EXLEN FETCH SCB EXT LENGTH JMP RTN GO RELEASE EXT AND CHECK FOR MORE * EXIT STA IERR,I SET THE ERROR CODE CLB RESET ERROR PARM STB IERR FOR NEXT ENTRY JSB $LIBX EXIT DEF RLSCB SKP DSHED DEF $SHED+0 OLDLK NOP * * CAUTION! THE FOLLOWING BUFFER MUST BE STRUCTURED AS FOLLOWS: * * WORD 1 CPNTR&EXPNT * WORD 2 NXTLK&EXLEN * WORD 3 CURLN * WORD 4 SCBEX * WORD 5 NXTID * CPNTR BSS 5 EXPNT EQU CPNTR NXTLK EQU CPNTR+1 EXLEN EQU CPNTR+1 CURLN EQU CPNTR+2 SCBEX EQU CPNTR+3 NXTID EQU NXTLK+3 * **************************************************** .1 OCT 1 .2 OCT 2 .4 OCT 4 NOP NOP END