.TITLE TSXMSC.MAC 84j08a 17-SEP-80/08-Oct-84. .ENABL LC ; AUTHOR: N. A. BOURGEOIS, JR. ; of ; NAB Software Services, Inc. ; PO Box 20009 ; Albuquerque, NM 87154 ; and ; SANDIA NATIONAL LABORATORIES ; PO BOX 5800 ; ALBUQUERQUE, NM 87185 .SBTTL EDIT RECORD 17-SEP-80/08-Oct-84. ;17-SEP-80 ORIGINAL CREATION. ;18-SEP-80 ADDED GLOBAL TO LOCATE DATA IN LINK MAP. ;10-OCT-80 CHANGED TITLE, REVISED AND ADDED ISPBLK. ;25-MAR-81 CORRECTED ADDRESSING ERROR. CORRECTED EMT # ERRORS. ;08-APR-81 ADDED THE "MEMSET" AND ITSLIC" ROUTINES. RENAMED ; "TSXTST" TO "ITSLIN". ADDED FUNCTION CALLING CODE. ; MADE CODE REENTRANT. ;14-APR-81 ADDED STATEMENT ABOUT REENTRANT CODE TO DESCRIPTION. ;26-FEB-82 ADDED IDENTIFICATION CODE. ;06-Jan-84 Maintenance assumed by NAB Software Services, Inc. ;28-Jan-84 Added the IFLINF, ISTFTM, GTUNAM, STUNAM, ISTPRV, ; ISPCTL, DOIT2, DOIT3, and DOIT4 routines. ;31-Jul-84 Corrected stack error in DOIT2, DOIT3, and DOIT4 ; routines. ;08-Oct-84 Transfered code for ISPBLK and ISPCTL to new source ; file, SPOLER.MAC. Transfered code for IFLINF and ; ISTFTM to new source file, TSFILS.MAC. Transfered ; code for GTUNAM and STUNAM to new source file, ; USRNAM.MAC. Added GETREG routine. ; THIS SOFTWARE WAS ORIGINALLY ISSUED BY SANDIA NATIONAL ; LABORATORIES, OPERATED FOR THE UNITED STATES DEPARTMENT ; OF ENERGY BY SANDIA CORPORATION. ; ; NOTICE ; ; THIS SOFTWARE WAS ORIGINALLY 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 ORIGINALLY FUNDED BY: ; ; HEADQUARTERS, ESD / OCB / STOP 36 ; HANSCOM AIR FORCE BASE, MA 04731 .PAGE .SBTTL DESCRIPTION 17-SEP-80/08-Oct-84. ; This module contains the miscellaneous support routines. The ; module is a part of the library of FORTRAN callable TSX-Plus EMT ; support routines. ;THE "MEMSET" ROUTINE SETS THE TOP MEMORY ADDRESS ALLOCATED TO THE ;PROGRAM. ; ;CALLING SEQUENCES: ; ; CALL MEMSET ( IARG [ ,IRET ] ) ; OR ; IRET = MEMSET ( IARG ) ; ; where: IARG is the top memory address requested. ; ; IRET is the top memory address allocated. ;THE "ITSLIC" ROUTINE RETURNS THE INTEGER VALUE OF THE TSX-PLUS ;LICENSE NUMBER. ; ;CALLING SEQUENCES: ; ; CALL ITSLIC ( IRET ) ; OR ; IRET = ITSLIC () ; ; where: IRET is the requested TSX-Plus license number. ;THE "ITSLIN" ROUTINE RETURNS THE INTEGER VALUE OF THE TSX/TSX-PLUS ;LINE NUMBER. ; ;CALLING SEQUENCES: ; ; CALL ITSLIN ( IRET ) ; OR ; IRET = ITSLIN () ; ; where: IRET is zero if RT-11 is running or the requested ; line number if TSX-Plus is running. ; Set the current job's priority value. ; ; CALL ISTPRV ( IPRVAL ) ; ; where: IPRVAL is the priority value in the range of 0 ; through 99. ; The GETREG routine returns the word and byte values stored in the ; specified processor register. ; ; Calling sequence: ; ; CALL GETREG ( IREG,IRET,IERR) ; ; where: IREG is the number of the processor register in the ; range of zero to three whose values are to be ; returned. ; ; IRET is a three-element integer array that is to ; receive the values returned. The first element ; receives the word value of the specified ; register. The second element receives the low ; byte value of the register. the third element ; receives the high byte value of the register. ; ; IERR is one of the following: ; ; 0 no error ; 1 an invalid register number was ; specified. .PAGE .SBTTL DIRECTIVES 17-SEP-80/04-Oct-84. .IDENT \84j04a\ ;TELL LINKER OUR VERSION .PSECT TSXLIB,I .GLOBL TSLBID .WORD TSLBID .DSABL GBL .SBTTL Assignments 28-Jan-84/. ERRBYT = 52 ;EMT error code locationn NOERR = -1 ;code for no error condition .SBTTL MACROS 17-SEP-80/. .MCALL .HERR ;LET MONITOR INTERCEPT FATAL ERRORS .MCALL .SERR ;INTERCEPT FATAL ERRORS .PAGE .SBTTL ENTRY POINTS 17-SEP-80/08-Oct-84. ;DETERMINE THE TSX/TSX-PLUS LICENSE NUMBER. ; ITSLIC::MOV #124 ,R1 ;EMT CODE JSR PC ,DOIT ;GET THE LICENSE NUMBER RTS PC ;DETERMINE THE TSX LINE NUMBER. ; ITSLIN::.SERR ;INTERCEPT FATAL ERRORS MOV #110 ,R1 ;EMT CODE JSR PC ,DOIT ;GET THE LINE NUMBER MOV R0 ,-(SP) ;SAVE FOR FUNCTION RETURN VALUE .HERR ;LET MONITOR INTERCEPT FATAL ERRORS MOV (SP)+ ,R0 ;RESTORE FUNCTION RETURN VALUE RTS PC ;SET THE TOP MEMORY ADDRESS ; MEMSET::MOV #141 ,R1 ;EMT CODE JSR PC ,DOIT1 ;SET THE ALLOCATION RTS PC ; Set the current job's priority value. ; ISTPRV::MOV #150 ,R1 ;EMT code CALL DOIT1 ;set the value RETURN ; Get the word and byte values stored in the specified processor ; register. ; GETREG::CALL DOIT2 ;get the values RETURN .PAGE .SBTTL SUPPORTING SUBROUTINES 17-SEP-80/08-Oct-84. DOIT: CLR -(SP) ;LO BYTE = 0 MOV SP ,R0 ;SET UP THE POINTER MOVB R1 ,1(R0) ;HI BYTE = EMT CODE EMT 375 ;LET TSX DO IT BCC 1$ ; IF NO ERROR CLR R0 ; RETURN ZERO ON ERROR 1$: TSTB (R5) ;FUNCTION CALL? BEQ 2$ ; YES MOV R0 ,@2(R5) ; NO, SUBROUTINE CALL 2$: TST (SP)+ ;FIX THE STACK POINTER RTS PC DOIT1: MOV @2(R5) ,-(SP) ;PASS THE ARGUMENT CLR -(SP) ;LO BYTE = 0 MOV SP ,R0 ;SET UP THE POINTER MOVB R1 ,1(R0) ;HI BYTE = EMT CODE EMT 375 ;LET TSX DO IT CMPB #2 ,(R5) ;SUBROUTINE ARGUMENT RETURN? BNE 1$ ; NO MOV R0 ,@4(R5) ; YES 1$: CMP (SP)+ ,(SP)+ ;FIX THE STACK POINTER RTS PC DOIT2: MOV 4(R5) ,R4 ;point to return array TST @2(R5) ;R0? BMI 4$ ; if error BNE 1$ ; no MOV R0 ,(R4) ; yes, so return word value, MOVB R0 ,2(R4) ; lo byte value, SWAB R0 ; and MOVB R0 ,4(R4) ; hi byte value BR 5$ 1$: CMP @2(R5) ,#1 ;R1? BNE 2$ ; no MOV R1 ,(R4) ; yes MOVB R1 ,2(R4) SWAB R1 MOVB R1 ,4(R4) BR 5$ 2$: CMP @2(R5) ,#2 ;R2? BNE 3$ ; no MOV R2 ,(R4) MOVB R2 ,2(R4) SWAB R2 MOVB R2 ,4(R4) BR 5$ 3$: CMP @2(R5) ,#3 ;R3? BNE 4$ ; no, so error out MOV R3 ,(R4) MOVB R3 ,2(R4) SWAB R3 MOVB R3 ,4(R4) BR 5$ 4$: MOV #1 ,@6(R5) ;return error value BR 6$ 5$: CLR @6(R5) ;return no error value 6$: RETURN .SBTTL END 17-SEP-80/. .END