ASMB,Q,C NAM CLRQ,7 91750-1X047 REV 2013 801014 (IV,M3) * * SOURCE: 91750-18047 * RELOC.: 91750-1X047 * PRGMR: LYLE WEIMAN JULY 1979 * ****************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980. 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. * ****************************************************************** * * * "CLRQ" ROUTINE FOR DS/1000, TO BE USED IN RTE-IV, -M-2 & -M-3 * SYSTEMS ONLY. * * NOTE: IN THIS VERSION, CERTAIN FEATURES OF THE RTE-L ROUTINE * OF THE SAME NAME ARE NOT IMPLEMENTED. IN PARTICULAR, CLASS NUMBERS * ARE ALWAYS ALLOCATED GLOBALLY. THE "NO-ABORT" BIT MUST BE SET IN * ALL CALLS. * * * THIS LIBRARY SUBROUTINE PERFORMS CLASS MANAGEMENT FUNCTIONS. IT WILL * ALLOW THE ASSIGNMENT OF OWNERSHIP TO CLASSES SO THAT IN THE EVENT * OF A PROGRAM TERMINATING OR ABORTING WITHOUT CLEANING UP THE CLASSES * AND CLASS BUFFERS ASSIGNED TO IT, THE SYSTEM WILL BE ABLE TO * DEALLOCATE THESE RESOURCES. THIS ROUTINE ALSO ALLOWS PROGRAMMATIC * FLUSHING OF PENDING CLASS BUFFERS ON AN LU OR FLUSHING OF ALL CLASS * BUFFERS (PENDING OR COMPLETED) WITH DEALLOCATION OF THE CLASS ITSELF. * THE CALLING SEQUENCE IS AS FOLLOWS: * EXT CLRQ * . * . * JSB CLRQ TRANSFER CONTROL TO SUBROUTINE * DEF RTN RETURN ADDRESS * DEF ICODE CONTROL INFORMATION (BIT14=NO ABORT)(15=NO WAIT) * DEF CLASS CLASS NUMBER * DEF IPRAM CALL DEPENDENT PARAMETER (PGM NAME OR LU) * (NOT USED IN THIS VERSION) * USED ONLY IF NO-ABORT BIT SET * RTN RETURN POINT CONTINUE EXECUTION * . * . * ICODE OCT 1 ASSIGN CLASS OWNERSHIP. IPRAM CONTAINS THE NAME * OF THE PROGRAM ASSIGNED OWNERSHIP OF THE CLASS. * IF IPRAM IS ZERO, NO OWNERSHIP IS ASSIGNED. IF * IPRAM IS DEFAULTED, THE CALLING PROGRAM IS ASSIGNED * OWNERSHIP. IF CLASS IS ZERO, A NEW CLASS NUMBER IS * ALLOCATED BY THE CALL. IN THIS CASE, A ZERO IS * RETURNED IN THE A REG IF ALLOCATION WAS SUCCESSFUL * IF NO CLASSES ARE AVAILABLE, THE USER IS SUSPENDED * UNLESS THE NO-WAIT FLAG WAS SET IN WHICH CASE A * -1 IS RETURNED IN THE A REGISTER. * * " " OCT 2 FLUSH CLASS REQUESTS & DEALLOCATE CLASS. ALL NON- * ACTIVE PENDING REQUESTS WILL BE DEALLOCATED. ABORT * REQUESTS WILL BE ISSUED BY THE SYSTEM FOR ALL ACTIVE * I/O REQUESTS, IN WHICH CASE THE BUFFER WILL BE * DEALLOCATED AT LOGICAL DONE. ALL PREVIOUSLY * COMPLETED REQUESTS WILL BE IMMEDIATELY DEALLOCATED. * THE CLASS TABLE ENTRY WILL BE FLAGGED SO THAT NO * NEW REQUESTS WILL BE ISSUED ON THE CLASS (IO00 * ERROR RETURNED) AND SO THAT UPON THE PENDING * COUNT REACHING ZERO, THE SYSTEM CAN DEALLOCATE THE * CLASS. * * " " OCT 3 FLUSH CLASS REQUESTS ON LU DESIGNATED BY IPRAM. * (NOT IMPLEMENTED FOR RTE-IV/M) * NON-ACTIVE REQUESTS FOR THE DESIGNATED CLASS * PENDING ON THE LU ARE DEALLOCATED AND IF A * REQUEST IS ACTIVE, AN ABORT REQUEST IS ISSUED BY * THE SYSTEM. THE BUFFER WILL BE DEALLOCATED AT * LOGICAL DONE. THE CLASS IS NOT DEALLOCATED BY * THIS CALL. * ERRORS: SAME AS RTE RETURNS ON CLASS-I/O CALLS * ENT CLRQ EXT EXEC,.ENTR SPC 2 OPTN NOP OPTION CLASS NOP OWNER NOP CLRQ NOP JSB .ENTR DEF OPTN LDA OPTN,I AND D3 CPA D1 ALLOCATE? JMP ALLOC YES CPA D2 DE-ALLOCATE? JMP DALLC JMP CLRQ,I RETURN WITHOUT CAUSING DAMAGE! SPC 2 ALLOC EQU * CLA WE WANT A CLASS # ALLOCATED. LDB OPTN,I RBL,SLB IS "NO-WAIT" BIT IN OPTN SET? IOR SIGNB YES, SET "NW" BIT IN CLASS NUMBER STA CLASS,I SET CLASS NUMBER JSB EXEC ALLOCATE A CLASS NUMBER DEF *+5 DEF CLCTL OCT 23 + NO-ABORT BIT DEF ZERO DEF ZERO DEF CLASS,I --RETURN CLASS NUMBER HERE JMP EXITA ERROR RETURN STA ARTN LDA CLASS,I LOAD ASSIGNED CLASS NUMBER RAL,CLE,ERA CLEAR "NO-WAIT" BIT STA CLASS,I RETURN CLASS NUMBER IOR =B20000 SET THE "DON'T DE-ALLOCATE CLASS NUMBER" STA CLASS BIT * JSB EXEC CLEAR CLASS REQUEST DEF *+5 DEF CLS21 DEF CLASS DEF ZERO DEF ZERO JMP EXITA -- ERROR RETURN * ISZ CLRQ BUMP RETURN ADDRESS FOR "GOOD" RETURN * EXITA EQU * LDA ARTN JMP CLRQ,I RETURN SPC 2 DALLC EQU * HERE TO DE-ALLOCATE A CLASS NUMBER LDA CLASS,I AND CLSBF CLEAR "SAVE-BUFFER" BIT IOR SVCLS SET "SAVE CLASS NUMBER"&NO-WAIT OPTION STA OPTN SET OPTNS:SAVE CLASS#, RELS BUFRS,NO-WAIT * * NOW, THE OPTION IS SET SO THE BUFFER WILL BE RELEASED ON EACH CALL, * IF THERE IS ONE, BUT THE CLASS NUMBER WILL NOT BE. THIS LOOP * EXITS WHEN THERE ARE NO MORE BUFFERS ( = -1 ON RETURN FROM * 'EXEC' CALL) * CLA CLEAR THE CLASS NUMBER STA CLASS,I THE USER PASSED US. DALL1 EQU * CCA SET THE RELEASE RE-TRY SWITCH SO WE WILL STA TEMP MAKE ONE MORE CALL AFTER LAST BUFFER IS RELEASED * CLRTN JSB EXEC GO TO RTE TO RELEASE CLASS BUFFER OR NUMBER DEF *+5 DEF K21N CLASS GET/NO ABORT DEF OPTN MASTER OPTN/RELEASE/NO WAIT DEF ZERO DEF ZERO JMP CLRQ,I -- ERROR RETURN * ISZ TEMP RELEASE PROCESSING COMPLETED? JMP DXIT YES, RETURN * INA,SZA NO. ARE ALL PENDING REQUESTS CLEARED? JMP DALL1 NO. CONTINUE TO CLEAR REQUESTS * LDA OPTN GET THE OPTION NUMBER AGAIN AND CLMSK CHANGE OPTION TO DE-ALLOCATE CLASS# STA OPTN RESTORE THE MODIFIED OPTN WORD JMP CLRTN RETURN FOR FINAL DE-ALLOCATION SPC 2 DXIT EQU * RETURN TO CALLER ISZ CLRQ TAKE "GOOD" EXIT JMP CLRQ,I SPC 3 SIGNB DEF 0,I SIGN BIT K21N OCT 100025 ARTN NOP CLMSK OCT 157777 CLSBF OCT 17777 ZERO DEC 0 D1 DEC 1 D2 DEC 2 D3 DEC 3 CLCTL OCT 100023 CLASS CONTROL W/ "NO-ABORT BIT" SET CLS21 OCT 100025 CLASS "GET" + "NO ABORT" BIT SVCLS OCT 120000 SAVE CLASS NUMBER & NO-WAIT OPTION TEMP NOP END