.TITLE DETJBS.MAC 81G27A 10-APR-81/27-JUL-81. ; AUTHOR: N. A. BOURGEOIS, JR. ; SYSTEMS ENGINEERING DIVISION 1738 ; SANDIA NATIONAL LABORATORIES ; PO BOX 5800 ; ALBUQUERQUE, NM 87185 ; 505-844-8088 ; AV 244-8088 ; ; THIS SOFTWARE IS ISSUED BY SANDIA NATIONAL LABORATORIES, ; OPERATED FOR THE UNITED STATES DEPARTMENT OF ENERGY BY ; SANDIA CORPORATION. ; ; NOTICE ; ; THIS SOFTWARE WAS SPONSORED BY THE UNITED STATES ; GOVERNMENT. NEITHER THE UNITED STATES GOVERNMENT NOR ; THE UNITED STATES DEPARTMENT OF ENERGY, NOR ANY OF THEIR ; EMPLOYEES, NOR ANY OF THEIR CONTRACTORS, SUBCONTRACTORS, ; OR THEIR EMPLOYEES MAKES ANY WARRANTY, EXPRESS OR ; IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR ; RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS OR ; USEFULNESS OF ANY INFORMATION, APPARATUS, PRODUCT OR ; PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT ; INFRINGE PRIVATELY OWNED RIGHTS. ; ; THIS WORK WAS SPONSORED AND FUNDED BY: ; ; HEADQUARTERS, ESD / OCB / STOP 36 ; HANSCOM AIR FORCE BASE, MA 01731 ; ; .SBTTL **************** .SBTTL * * .SBTTL * UNCLASSIFIED * .SBTTL * * .SBTTL **************** .SBTTL DESCRIPTION 10-APR-81/14-APR-81. ;THESE THREE DETACHED JOBS SUPPORT ROUTINES ARE CALLABLE AS SUBROUTINES. ;TWO OF THEM ARE ALSO CALLABLE AS FUNCTIONS. THIS MODULE IS A PART OF THE ;LIBRARY OF FORTRAN CALLABLE TSX/TSX-PLUS EMT ROUTINES. THE CODE IS ;REENTRANT. ;START A DETACHED JOB. ; ;CALLING SEQUENCE: ; ; CALL STDTJB ( JOBNAM , JOBNUM [ , IERR ] ) ; ;WHERE: JOBNAM IS THE ASCII STRING, DEV:FILNAM.EXT, TERMINATED BY A NULL ; BYTE. ; ; JOBNUM IS THE RETURNED JOB NUMBER. ; ; IERR IS ONE OF THE FOLLOWING: ; ; 0 NO ERROR. ; 1 NO DETACHED JOB LINE AVAILABLE. ;KILL A DETACHED JOB. ; ;CALLING SEQUENCES: ; ; CALL KLDTJB ( JOBNUM , [ , IERR ] ) ; OR ; IERR = KLDTJB ( JOBNUM ) ; ;WHERE: IERR IS ONE OF THE FOLLOWING: ; ; 0 NO ERROR ; 1 INVALID JOB NUMBER ;CHECK THE STATUS OF A DETACHED JOB. ; ;CALLING SEQUENCES: ; ; CALL ISTDJ ( JOBNUM , ISTAT ) ; OR ; ISTAT = ISTDJ ( JOBNUM ) ; ;WHERE: ISTAT IS ONE OF THE FOLLOWING: ; ; 0 JOB IS NOT ACTIVE. ; 1 JOB IS ACTIVE. .SBTTL DIRECTIVES 10-APR-81/27-JUL-81. .IDENT \81G27A\ ;TELL LINKER OUR VERSION .PSECT TSXLIB .SBTTL ASSIGNMENTS 10-APR-81/14-APR-81. ERRBYT =52 ;ERROR CODE LOCATION .SBTTL ENTRY POINTS 10-APR-81/. ;START A DETACHED JOB ; STDTJB::MOV #132 ,R1 ;EMT CODE CLR R2 ;EMT ID JSR PC ,DOIT ;START THE JOB RTS PC ;KILL A DETACHED JOB ; KLDTJB::MOV #132 ,R1 ;EMT CODE MOV #2 ,R2 ;EMT ID JSR PC ,DOIT1 ;KILL THE JOB RTS PC ;CHECK THE STATUS OF A DETACHED JOB ; ISTDJ:: MOV #132 ,R1 ;EMT CODE MOV #1 ,R2 ;EMT ID JSR PC ,DOIT2 ;CHECK THE STATUS RTS PC .SBTTL SUPPORTING SUBROUTINES 10-APR-81/27-JUL-81. DOIT: MOV 2(R5) ,-(SP) ;PASS ARGUMENT 1 MOV R2 ,-(SP) ;LO BYTE = EMT ID MOV SP ,R0 ;SET UP THE POINTER MOVB R1 ,1(R0) ;HI BYTE = EMT CODE EMT 375 ;LET TSX DO IT MOV R0 ,@4(R5) ;RETURN ARGUMENT 2 CMPB #3 ,(R5) ;SUBROUTINE ERROR RETURN? BNE 1$ ; NO MOVB @#ERRBYT,@6(R5) ; YES 1$: CMP (SP)+ ,(SP)+ ;FIX THE STACK POINTER RTS PC DOIT1: MOV @2(R5) ,-(SP) ;PASS ARGUMENT 1 MOV R2 ,-(SP) ;L BYTE = EMT ID MOV SP ,R0 ;SET UP THE POINTER MOVB R1 ,1(R0) ;HI BYTE = EMT CODE EMT 375 ;LET TSX DO IT CLR R0 ;GET THE MOVB @#ERRBYT,R0 ; ERROR CODE CMPB #2 ,(R5) ;SUBROUTINE ERROR RETURN? BNE 1$ ; NO MOV R0 ,@4(R5) ; YES 1$: CMP (SP)+ ,(SP)+ ;FIX THE STACK POINTER RTS PC DOIT2: MOV @2(R5) ,-(SP) ;PASS ARGUMENT 1 MOV R2 ,-(SP) ;LO BYTE = EMT ID MOV SP ,R0 ;SET UP THE POINTER MOVB R1 ,1(R0) ;HI BYTE = EMT CODE EMT 375 ;LET TSX DO IT BCC 1$ ; IF ACTIVE CLR R0 ; IF NOT ACTIVE BR 2$ 1$: MOV #1 ,R0 ;SHOW ACTIVE 2$: CMPB #2 ,(R5) ;SUBROUTINE ARGUMENT RETURN? BNE 3$ ; NO MOV R0 ,@4(R5) ; YES 3$: CMP (SP)+ ,(SP)+ ;FIX THE STACK POINTER RTS PC .SBTTL EDIT RECORD 10-APR-81/27-JUL-81. ;10-APR-81 ORIGINAL CREATION. ;14-APR-81 "ERRBYT" WAS 53. ;27-JUL-81 CORRECTED ADDRESSING ERROR IN THE "DOIT" SUBROUTINE. .SBTTL END 10-APR-81/. .END