.TITLE ACTIVE .IDENT /V01/ ; ; THIS SUBROUTINE IS CALLED TO DETERMINE IF A TASK IS CURRENTLY ACTIVE. ; THE FORTRAN CALLING SEQUENCE IS: CALL ACTIVE(TSKNAM,STATUS) ; WHERE TSKNAM IS THE NAME OF THE TASK TO CHECK (IN RADIX-50), AND ; STATUS IS AN INTEGER RETURN STATUS (0=TASK INACTIVE, 1=TASK ACTIVE) ; ; NOTE!!! IN ORDER FOR THIS SUBROUTINE TO WORK, ITS CALLING TASK MUST ; BE MAPPED USING APR 7 TO A SYSTEM COMMON THAT OVERLAYS THE I/O PAGE. ; THE TASK MUST ALSO BE LINKED TO THE RSX11M.STB SYMBOL TABLE. THE ; TASK CAN BE BUILT NON-PRIVILEGED. ; ; AUTHOR: GLEN HOFFING ; DATE: 03-SEP-82 ; .PSECT ACTIVE ACTIVE:: MOV @#177776,-(SP) ;SAVE CURRENT PSW MOV #140340,@#177776 ;SET PSW FOR PREVIOUS KERNEL MODE MOV 2(R5),R1 ;ADDRESS OF INPUT TASK NAME TO R1 MFPD @#$ACTHD ;POINT R0 TO FIRST ACTIVE TCB MOV (SP)+,R0 LOOP: ;LOOP THROUGH ACTIVE TASK LIST (ATL) MFPD T.NAM(R0) ;COMPARE TASK NAME IN THIS TCB CMP (SP)+,(R1) ;TO INPUT TASK NAME BNE 10$ MFPD T.NAM+2(R0) CMP (SP)+,2(R1) BNE 10$ MOV #1,@4(R5) ;RETURN ONE - THIS IS AN ACTIVE TASK BR DONE 10$: MFPD T.ACTL(R0) ;POINT R0 TO NEXT TCB IN ATL MOV (SP)+,R0 BNE LOOP ;ZERO IN T.ACTL MEANS END OF ATL MOV #0,@4(R5) ;RETURN ZERO - NOT AN ACTIVE TASK DONE: MOV (SP)+,@#177776 ;RESTORE PSW RETURN ;RETURN .END