; MONTRY MONITOR TRACE IN & TRACE OUT ROUTINE ; USED WHEN DEBUGGEG NOT IN .TITLE MONTRY .MCALL POP,PUSH,MINIT .GLOBL $OTSV .ENABL AMA ; ; MONTRI CALLED BY FORTRAN CALLABLE ASSEM RTNS. ; JSR R1,MONTRI ; .BYTE NPAR ;# PARMS EXPECTED BY ASSEM RTN ; ;NPAR IS -1 IF VAR NUM OF ARGS ; MONTRI POPS R5 FOR NON VARIABLE PARM LIST ; .BYTE 0 ;RES FOR FUTURE USE ; .RAD50 /ASSEM NAME(MUST BE 2 WORDS/ ; ; MONTRI WILL BUILD TRACE BACK CHAIN AND SAVE REGS ; ; MONTRO WILL RESTORE REGS(MONTRO IS CALLED INSTEAD OF ; ASSEM ROUTINE DOING AN RTS PC TO RETURN) ; POPS TRACE BACK CHAIN ; RESTORES REGS 0-4 ; ; MONTRF FUNCTION RETURN-SAME AS MONTRO ; EXCEPT DOESN'T RESTORE R0 ; MINIT LINTF== 0 DBXXI == 1 DBF4PF ==0 DBIASF ==0 MONTRI:: PUSH R2 ;PRESERVE R2 MOV 4(SP),R2 ;CALLERS RET ADDR MOV R0,4(SP) ;PRESERVE R0 PUSH R3 PUSH R4 PUSH R5 ;ENABLE USER TO FIND PARMS MOVB (R1),R4 ;GET PARM COUNT TST (R1)+ ;INC PAST COUNT MOV @#$OTSV,R0 ;ADDR OF OTS IMPURE AREA TST (R0)+ ;ADDR OF SAVE AREA LIST HEAD .IF EQ,F4P ;IF FOR COMPILIER PUSH (R0) ;PUT IN TRACE BACK CHAIN PUSH R2 ;CALLERS RET ADDR PUSH (R1)+ ;FIRST 3 LETTERS OF CALLED ROUTINE NAME PUSH (R1)+ ;LAST 3 LETTERS .IFF ;HERE FOR FOR+ COMPILIER PUSH <2(R1),(R1)+> ;PUT NAME ON STACK TST (R1)+ ;SKIP TO RET ADDR PUSH ;RET ADDR & CHAIN PTR .ENDC MOV SP,(R0) ;UPDATE TRACE BACK LIST HEAD MOV (R5)+,R0 ;GET ACT # OF PARMS BR NOBRK ;NO MONX10: ;MONTRO OR MONTRF RETURN TO CALLER JMP (R5) NOBRK: JMP (R1) ; MONTRF:: ;FUNCTION RETURN ENTRY MOV SP,R3 ;FUNCT RET FLAG BR MONX30 MONTRO:: CLR R3 ;SUB RET FLAG MONX30: MOV @#$OTSV,R2 ;OTS IMPURE PTR TST (R2)+ ;TRACE BACK CHAIN HEAD .IF EQ,F4P ;IF FOR COMPILIER MOV (R2),R1 ;STACK ADDR OF TRACE BACK CHAIN MOV 6(R1),(R2) ;NEW LIST HEAD MOV 4(R1),R5 ;REAL RET ADDR MOV R1,SP ;POP TRACE BACK TBL OFF STACK ADD #8.,SP ;POP TRB CHAIN OFF STACK .IFF ;IF FOR+ COMPILIER MOV (R2),SP ;RESET STACK PTR POP <(R2),R5> ;RESET LIST HEAD&GET RET ADDR CMP (SP)+,(SP)+ ;REMOVE REMAINDER OF CHAIN .ENDC TST R3 ;FUNCT RET? BEQ MONX40 ;NO MOV R0,10.(SP) ;SAVE R0. WILL BE RETURNED TO CALLER MONX40: POP ;DON'T WANT TO RESTORE R5 POP R4 POP R3 POP R2 POP R1 POP R0 BR MONX10 ;RETURN TO CALLER DBXXT:: ;DUMMY SST HANDLER MONIP:: RTS PC ; DBSTW:: .WORD 0 .END