.TITLE UERINI .IDENT /RMSV01/ ; ;THIS IS THE RMS VERSION OF THE OTS INTERCEPT ROUTINE. THE FORTRAN CALLING ;PROGRAM INITIALIZES THE INTERCEPT BY CALLING "UERINI".(REF. OTS REF. MAN. ; SECT. 7.4) IF AN I/O ERROR OCCURS IN THE CALLING PROGRAM, "INTCEP" IS ;CALLED AND IT USES THE OTS OFFSETS (REF. OTS REF. MAN. SECT. 2.1.1) ALONG ;WITH THE RMS LUB OFFSETS (REF. OTS REF. MAN. SECT. 2.2.3) TO OBTAIN ;INFORMATION FOR AN ERROR MESSAGE. THE PROGRAM "UERQIO" USES THE INFORMATION ;TO PRINT OUT THE MESSAGE. ; ; ROBERT KRONINGER SEPTEMBER 17,1981 ; ; THIS ROUTINE IS ASSEMBLED AS FOLLOWS: ; MAC UERINIRMS,UERINIRMS/-SP=DR:[1,1]RMSMAC/ML,[11,40]F4P,RMS, ; dev:[grp,mem]UERINIRMS ; ; REGISTER USAGE: R0 - USED TO GET INFORMATION FOR THE MESSAGE ; R5 - STORE MESSAGE INFORMATION ; FBLOCK ;DEFINE THE LUB OFFSETS. OTSWA ;DEFINE THE WORK AREA OFFSETS. ; ; SUBROUTINES CALLED: ; $SAVAL (SAVE ALL REGISTERS - SYSTEM LIBRARY ROUTINES SECT. 2.1) ; .PSECT UERINI .LIST MEB ; UERINI:: MOV $SST+14,SST6 ;SAVE THE OTS TRAP ADDRESS. MOV #INTCEP,$SST+14 ;PLACE LABEL "INTCEP" IN SST TABLE RETURN ; .EVEN ; ; ; ;THE PURPOSE OF THIS PROGRAM IS TO INTERCEPT CONTROL OF THE ;OTS ERROR PROCESSOR WHEN AN I/O ERROR OCCURS IN THE USER'S ;PROGRAM. ONCE THIS PROGRAM HAS CONTROL, IT WILL PRINT OUT ;THE ERROR CODE AND RETURN CONTROL TO OTS. ; INTCEP: MOV SST6,-(SP) ;PUSH THE TRAP ADDRESS ONTO THE STACK. CALL $SAVAL ;SAVE THE REGISTERS. MOV $OTSVA+FILPTR,R0 ;IF OFFSET "FILPTR" IS NON-ZERO, THEN IT BEQ RTNCTR ;POINTS TO THE LUB AND AN I/O IS IN PROGRESS. TST $OTSVA+ERREX ;CHECK IF "ERR=" IS BEING USED. IF IT IS, BNE RTNCTR ;RETURN TO CALLING PROGRAM. ADD #D.LUN,R0 ;RETRIEVE THE LUN FROM THE LUB AND PLACE IT MOV R0,ERRNO+2 ;IN THE SECOND WORD OF "ERRNO". ADD #D.STV-D.LUN,R0 ;RETRIEVE THE I/O ERROR CODE FROM THE LUB MOV R0,ERRNO+4 ;AND PLACE IT IN THE THIRD WORD OF "ERRNO". MOV #ERRNO,R5 ;MOVE MESSAGE INFO TO R5. CALL UERQIO ;"UERQIO" USES INFO FROM "ERRNO" STORED IN R5. RTNCTR: RETURN ;WHEN "RETURN" OCCURS, THE TRAP ADDRESS IS ; POPPED OFF THE STACK AND CONTROL IS ; RETURNED TO OTS. SST6: .WORD 0 ERRNO: .WORD 2 .BLKW 2 .EVEN .END