.TITLE DEBP00 - CALL FORTRAN OUTPUT ROUTINE .SBTTL DEBP00 - TITLE PAGE .IDENT /V01.00/ .PSECT $$$DEB ; ; THIS ROUTINE IS CALLED WHENEVER THE WATCHING PROGRAM DETECTS A CHANGE. ; THE ROUTINE SETS UP A FORTRAN CALLING LIST AND CALLS THE USER WRITTEN ; ROUTINE DEBMSG. ; ; VERSION: V01.00 ; ; AUTHOR: R.W. STAMERJOHN MAPC 07-APR-81 ; ; MODIFICATION HISTORY: ; ; V01.00 RWS 07-APR-81 INITIAL VERSION .SBTTL DEBP00 - DOCUMENTATION ; ;+ ; DEBP00 V01.00 ; ; DEBP00 IS A PART OF THE MONSANTO DEBUGGING PACKAGE. THIS MODULE ; IS CALLED WHENEVER THE WATCHED VALUE CHANGES. IT SETS UP A ; FORTRAN CALLING SEQUENCE AND CALLS THE USER-WRITTEN ROUTINE ; DEBMSG. THIS ALLOWS SPECIAL OUTPUT ROUTINES TO BE WRITTEN. ; ; THE ROUTINE DEBMSG IS CALLED AS FOLLOWS: ; ; CALL DEBMSG (ADR,VAL,IPC,BSTK,SSTK) ; ; ADR = ADDRESS OF WATCHED LOCATION ; VAL = NEW VALUE STORED IN LOCATION ; IPC = PC OF TRAPPED INSTRUCTION ; BSTK = BOTTOM OF TASK STACK ; SSTK = SIZE OF TASK STACK (IN WORDS) ; ; BSTK AND SSTK MAY BE USED AS VARIABLE-SIZE ARRAY PARAMETERS. THIS ; ALLOWS DEBMSG TO PROCESS THE TASK STACK. ;- .SBTTL DEBP00 - DECLARATIONS .DSABL GBL ; ; MACRO LIBRARY CALLS: ; ; NONE. ; ; GLOBAL DECLARATIONS: ; ; MODULE ENTRY POINTS. ; .GLOBL $$DOUT ;OUTPUT MESSAGE ; ; GLOBAL REFERENCES: ; .GLOBL DEBMSG ;USER-WRITTEN ROUTINE .SBTTL DEBP01 - LOCAL DATA ; ; LOCAL SYMBOLS: ; ; NONE. ; ; LOCAL DATA: ; ; FORTRAN CALLING BLOCK. ; ERRBLK: .BYTE 5,0 .WORD ADR .WORD VAL .WORD IPC .WORD BSTK .WORD SSTK ; ; FORTRAN ARGUMENTS. ; ADR: .WORD 0 ;ADDRESS OF WATCHED LOCATION VAL: .WORD 0 ;NEW VALUE OF WATCHED LOCATION IPC: .WORD 0 ;PC OF TRACED INSTRUCTION BSTK: .WORD 0 ;BOTTOM OF TASK STACK SSTK: .WORD 0 ;SIZE OF TASK STACK .SBTTL $$DOUT * INTERFACE TO DEBMSG ; ;+ ; THIS ROUTINE IS CALLED WHENEVER A WATCHED VALUE CHANGES. IT ; SETS UP A FORTRAN CALL TO THE USER-WRITTEN ROUTINE DEBMSG. ; ; INPUT: ; ; CALLED FROM $$DTRP WITH: ; ; R1 = BOTTOM OF USER STACK ; R2 = TOP OF USER STACK ; R3 = PC OF TRACED INSTRUCTION ; R4 = ADDRESS OF WATCHED LOCATION ; R5 = NEW VALUE STORED IN LOCATION ; OUTPUT: ; ; DEBMSG CALLED WITH PARAMETERS (SEE DOCUMENTATION PAGE). ; ; ; REGISTERS: USES R0-R5 SAVES: NONE. ; ;- ; $$DOUT: ;REF. LABEL ; ; STORE VALUES AND SETUP FOR CALL. ; MOV R1,BSTK ;STORE BOTTOM OF USER STACK SUB R1,R2 ;GET SIZE OF TASK STACK ASR R2 ; AS A WORD COUNT MOV R2,SSTK ;STORE SIZE OF TASK STACK MOV R3,IPC ;STORE PC OF TRACED INSTRUCTION MOV R4,ADR ;STORE ADDRESS OF WATCH LOCATION MOV R5,VAL ;STORE NEW VALUE ; ; CALL USER-WRITTEN ROUTINE. ; MOV #ERRBLK,R5 ;SET ARGUMENT BLOCK POINTER CALL DEBMSG ;CALL USER-WRITTEN ROUTINE ; ; RETURN TO CALLER. ; RETURN ;ALL DONE .END