; ; AUTHOR: ; R. STODOLA ; THE INSTITUTE FOR CANCER RESEARCH ; 7701 BURHOLME AVE. ; PHILADELPHIA, PA. 19111 ; ; ******************************************************* ; * * ; * THIS SOFTWARE WAS DEVELOPED WITH SUPPORT * ; * FROM THE NATIONAL INSTITUTES OF HEALTH: * ; * NIH CA06927 * ; * NIH CA22780 * ; * * ; * DIRECT INQUIRIES TO: * ; * COMPUTER CENTER * ; * THE INSTITUTE FOR CANCER RESEARCH * ; * 7701 BURHOLME AVENUE * ; * PHILADELPHIA, PENNSYLVANIA 19111 * ; * * ; * NO WARRANTY OR REPRESENTATION, EXPRESS OR * ; * IMPLIED, IS MADE WITH RESPECT TO THE * ; * CORRECTNESS, COMPLETENESS, OR USEFULNESS * ; * OF THIS SOFTWARE, NOR THAT USE OF THIS * ; * SOFTWARE MIGHT NOT INFRINGE PRIVATELY * ; * OWNED RIGHTS. * ; * * ; * NO LIABILITY IS ASSUMED WITH RESPECT TO * ; * THE USE OF, OR FOR DAMAGES RESULTING FROM * ; * THE USE OF THIS SOFTWARE * ; * * ; ******************************************************* ; * * ; * THIS SOFTWARE WAS DESIGNED FOR USE ON A * ; * PDP-11/70 OPERATING UNDER IAS V2.0 USING * ; * THE IAS PDP-11 MACRO ASSEMBLER. * ; * * ; ******************************************************* .TITLE .STER. -- FSTM ERROR HANDLER .IDENT /ICR001/ .MCALL ERSMDF,MOUT$S,EXST$S ; ; THIS ROUTINE CONTAINS TWO ENTRY POINTS FOR ERROR PROCESSING. ; .STER. USES THE VALUE ALREADY PRESENT IN THE ERROR BLOCK POINTED ; TO BY R4, WHILE ..STER FIRST MOVES THE VALUE IN R2 INTO THE ; MESSAGE NUMBER SECTION OF R4. IN EITHER CASE, ALL REGISTERS ; ARE PRESERVED. IF THE ERROR STATUS BLOCK IN THE ERROR BLOCK IS ; NEGATIVE, IT IS MOVED INTO THE THE USERS ERROR BUFFER. IF ; NON-NEGATIVE, THE ABSOLUTE VALUE OF THE MESSAGE NUMBER IS ; MOVED INTO THE USERS ERROR BUFFER. IF THE ERROR BUFFER DOES ; NOT EXIST, THE MESSAGE IS PRINTED. IF THE MESSAGE NUMBER WAS ; NEGATIVE, THE PROGRAM WILL THEN EXIT WITH ERROR STATUS. ; ERSMDF ; NFTRBK=15. ;MAX # OF FORTRAN TRACEBACK LINKS. ; MSFL: .ASCII /SY:[1,2]FSTM.MSG/ ;MESSAGE FILE NAME. MSLN=.-MSFL ;LENGTH OF FILENAME .EVEN IDMES: .ASCII /FSTM ERROR IN ROUTINE: / .IIF NE <.-IDMES>&1, .ASCII / / RNAM: .ASCII / / LDMES=.-IDMES ; PRBUF: .WORD LDMES,IDMES ;%VA FTNP: .WORD NFTRBK,0,0 ;%VT ; ; ALL ERROR MESSAGES SHOULD BE OF FORM: "%VA%L%VT" ; STR: .WORD MSLN,MSFL ;MESSAGE FILE STRING DESCRIPTOR ; ..STER:: MOV R2,E..MSN(R4) ;SAVE NEW MESSAGE NUMBER. .STER.:: MOV R3,-(SP) ;SAVE REGISTER 3 MOV R2,-(SP) ;SAVE REGISTER 2 MOV E..MSN(R4),R2 ;GET ABS OF MESSAGE NUMBER. BGT 10$ NEG R2 10$: CMPB (R5),(R4) ;DOES ERROR ARG EXIST? BLT ERR ;NO. MOV (R4),R3 ASL R3 ADD R5,R3 MOV (R3),R3 BIT #1,R3 BNE ERR ;NO. MOV R0,-(SP) ;YES, PRESERVE R0. MOVB E..ESB+T.ERR+2(R4),R0 ;GET ERROR QUALIFIER MOV R0,2(R3) ;SAVE IN USERS BUFFER MOVB E..ESB+T.ERR(R4),R0 ;GET ERROR CODE. BLT 20$ ;IF NEGATIVE, USE IT. MOV R2,R0 ;IF POSITIVE, USE MESSAGE NUMBER. 20$: MOV R0,(R3) ;SAVE ERROR CODE. MOV (SP)+,R0 ;RETRIEVE R0 RET: MOV (SP)+,R2 ;RETRIEVE R2 MOV (SP)+,R3 ;RETRIEVE R3 SEC RETURN ; ERR: MOV $NAMC,FTNP+2 ;INSERT PARAMS FOR FTN TRACE. MOV $SEQC,FTNP+4 MOV E..RTN(R4),RNAM ;MOVE ROUTINE NAME MOV E..RTN+2(R4),RNAM+2 MOV E..RTN+4(R4),RNAM+4 MOUT$S #STR,#PRBUF,R2,CONT,SYLOG ;TYPE ERROR MESSAGE. TST E..MSN(R4) ;ABORT REQUIRED? BGT RET ;NO. EXST$S #EX$ERR ;YES HALT ;INSURE TRAP IF EXIT FAILED. .END