.TITLE PROFIL .IDENT /020582/ .MCALL QIOW$S .GLOBL $SEQC .PSECT ...... ; ; MAIN PROGRAM MUST DO A CALL PROFIL ; ; IN TASKBUILD, ASSIGN LUN N TO VS:, AND DEFINE VS$LUN AND VS$EFN: ; ; ASG=VS:N ; GBLDEF=VS$LUN:N ; GBLDEF=VS$EFN:M !M=ANY UNUSED EFN ; PROFIL:: MOV SP,R0 ;START AT END OF STACK 1$: CMP R0,#PROFIL ;DONE? BHIS 9$ ;YES CMP (R0),#5267 ;CHECK FOR INC $SEQC BEQ 3$ ;POSSIBLY CMP (R0),#12767 ;CHECK FOR MOV #N,$SEQC BNE 4$ ;IF NOT, CHECK FOR NAM$ CALL TST (R0)+ ;ADD 2 TO R0 MOV (R0)+,R1 ;PICK UP NEXT WORD MOV #$SEQC-2,R2 ;COMPUTE RELATIVE OFFSET TO $SEQC SUB R0,R2 ; CMP (R0),R2 ;IS IT RIGHT? BEQ 2$ ;YUP, CHANGE IT TST -(R0) ;ELSE BACK IT UP BR 1$ ;AND LOOP 2$: MOV R1,(R0) ;CHANGE THIRD WORD TO STEP NUMBER MOV #TRACIT,-(R0) ;PUT IN TRACE ROUTINE ADDRESS MOV #4537,-(R0) ;PUT IN "JSR R5,@#" INSTRUCTION ADD #6,R0 ;SKIP WHAT WE CHANGED BR 1$ ;LOOP 3$: TST (R0)+ ;POINT TO RELATIVE OFFSET MOV #$SEQC-2,R2 ;COMPUTE OFFSET TO $SEQC SUB R0,R2 ; CMP (R0),R2 ;IS IT RIGHT? BNE 1$ ;NO, TRY THE NEXT ONE MOV #TRACIN,(R0) ;ELSE SET TRACE-INCREMENT ROUTINE ADDRESS MOV #4537,-(R0) ;PUT IN "JSR R5,@#" INSTRUCTION CMP (R0)+,(R0)+ ;ADD 4 TO R0 BR 1$ ;AND LOOP 4$: CMP (R0)+,#4467 ;LOOK FOR JSR R4,NAM$ BNE 1$ ;NOT A JSR R4, LOOP MOV #NAM$-2,R2 ;COMPUTE RELATIVE OFFSET TO NAM$ SUB R0,R2 ; CMP (R0),R2 ;IS IT RIGHT? BNE 1$ ;IF NOT, LOOP 5$: MOV #NEWNAM,(R0) ;PUT IN TRACE ROUTINE ADDRESS MOV #4437,-(R0) ;PUT IN "JSR R4,@#" INSTRUCTION ADD #4,R0 ;SKIP WHAT WE CHANGED BR 1$ ;LOOP 9$: RTS PC ;RETURN WHEN DONE ; TRACIN: MOV R0,-(SP) ;SAVE INC $SEQC ;INCREMENT STEP BR TRACIX ;MERGE TRACIT: MOV R0,-(SP) ;SAVE MOV (R5)+,$SEQC ;GET STEP NUMBER TRACIX: QIOW$S #IO.WLB,#VS$LUN,#VS$EFN,,,,<#$SEQC,#2,#^RPRO,#^RFIL> MOV (SP)+,R0 ; RTS R5 ;RETURN ; NEWNAM: SUB #6,SP ;MAKE ROOM ON STACK MOV 6(SP),(SP) ;COPY FIRST WORD OF NEW NAME MOV 10(SP),2(SP) ;COPY SECOND WORD OF NEW NAME MOV #RETNAM,4(SP) ;PUT IN ADDRESS OF RETNAM ROUTINE MOV CURNAM,6(SP) ;STORE CURRENT NAME MOV CURNAM+2,10(SP) ; MOV (SP),CURNAM ;SET NEW CURRENT NAME MOV 2(SP),CURNAM+2 ; JSR PC,SNDNAM ;SEND THE NEW NAME JSR R5,TRACIT ;MAKE A TRACE CALL WITH STATEMENT NUMBER 0 .WORD 0 ; JMP NAM$ ;WHEN DONE, DO REGULAR NAM$ STUFF ; RETNAM: MOV (SP)+,CURNAM ;RESTORE NAME MOV (SP)+,CURNAM+2 ;AND THEN MERGE WITH SNDNAM... ; SNDNAM: MOV R0,-(SP) ; QIOW$S #IO.WLB,#VS$LUN,#VS$EFN,,,,<#CURNAM,#4,#^RPRO,#^RFIL> MOV (SP)+,R0 ; RTS PC ;RETURN WHENCE WE CAME ; CURNAM: .RAD50 /.MAIN./ .END