.TITLE TRACEM ; MACRO INTERFACE TO FORTRAN TRACE ROUTINES .IDENT /01/ ; ; S. M. LAZARUS 27-FEB-80 ; FORD AEROSPACE AND COMMUNICATIONS CORPORATION ; 3939 FABIAN WAY ; PALO ALTO , CA. 94303 (415) 494-7400 X6291 ; ; CHANGES: NONE ; ; LOCAL MACROS ; .MACRO FCALL,NAME,LIST ;FORTRAN SUBROUTINE CALL MOV #LIST,R5 JSR PC,NAME .ENDM .MACRO PUSH,LIST .IRP X, MOV X,-(SP) .ENDR .ENDM .MACRO POP,LIST .IRP X, MOV (SP)+,X .ENDR .ENDM ; ; LOCAL DATA ; .PSECT TRACEM ARG: .WORD 1,RNAME ; FOR CALL TO TRACEP RNAME: .BLKW 2 ; RADIX 50 ROUTINE NAME ; ; FUNCTION ; ; RECEIVES CONTROL FROM $NAM OTS ROUTINE WHEN A NEW NAME ; IS ADDED TO THE TRACEBACK CHAIN. A FORTRAN "CALL TRACEP(RNAME)" ; IS EXECUTED TO ALLOW TRACEP TO PROCESS THE NEW NAME. ; ; CALLING SEQUENCE ; CALL $COUNT ; ; INPUTS ; POINTER TO CURRENT ROUTINE NAME AT $NAML ; .PSECT TRACEC GBL,OVR,RW,D ; DATA COMMON FLAG: .WORD 0 ; SET TO NON-ZERO ON INITIALIZATION ; .PSECT TRACEM ; $COUNT:: TST FLAG ; CHECK IF INITIALIZED BEQ 10$ ; EXIT IF NOT PUSH R5 ; SAVE MOV $NAMC,R5 ; POINTER TO CURRENT ROUTINE NAME MOV 4(R5),RNAME ; COPY 1ST HALF OF NAME MOV 4+2(R5),RNAME+2 ; AND THE 2ND HALF CLR FLAG ; SET TO IGNORE CALL IF TRACEP ENTERS HERE FCALL TRACEP ; CALL THE PRINTING ROUTINE INC FLAG ; RESET THE FLAG POP R5 10$: RETURN ; BYE BYE .END