-27,,/;DSS1/ ; MODIFIED FOR FLOATING POINT EMULATION (CONDITIONAL ON 'FPPEMU') ; FPPEMU IS DEFINED (OR NOT) IN PREFIX ASSEMBLY FILE ; BY DANIEL STEINBERG 18-JAN-79 ; ; MODIFIED TO INCLUDE 'VARIABLE TYPE MISMATCH ERROR' (VTMERR - 52) ; WHEN STRING AND NUMERIC VARIABLES ARE MIXED TOGETHER (PREVIOUSLY, THE ; PROGRAM TRAPPED OUT ON ODD ADDRESS OR ILLEGAL INSTRUCTION OR MEMORY FAULT) ; *** THIS IS NOT THE ONLY ERROR THAT CAN BE GENERATED WHEN THERE IS ; A MISMATCHED EXPRESSION....THE WHOLE ERROR CODE STRUCTURE WILL ; EVENTUALLY BE MODIFIED *** ; BY DANIEL STEINBERG 14-FEB-79 ; ; FIXED MINOR BUG IN ERROR ROUTINE UNDER RSX11M ; D.S. ; ; -355,,/;DSS1/ TV VTMERR ;VARIABLE TYPE MISMATCH IN EXPRESSION - 52 -403,406,/;DSS1/ ASR R2 ;LOWER BYTE OF TRAP IN R2 CMP R2,#FENCE ;IS IT FATAL? BGE ERRR01 ;JUMP IF NON-FATAL -412,412,/;DSS1/ TST (SP)+ ;POP OLD RETURN ADDRESS -423,425,/;DSS1/ .IF DF RSX11D CMP R2,#FENCE+1 ;SEE IF MODIFIED ERROR CODE PAST FATAL .IFF CMP R2,#FENCE ;SEE IF ERROR CODE PAST FATAL .ENDC BGE 2$ ;IF SO, SKIP DETACH -452,455,/;DSS1/ ERRR07: .IF DF,FPPEMU ;IF FPP EMULATION .IFF ;IF NOT TST FPEXFL ;ANY FLOATING POINT EXCEPTIONS? BEQ 1$ ;IF NOT, SKIP PROCESSING .IFTF ;WHETHER OR NOT JSR PC,FPERMS ;IF SO, REPORT THEM .ENDC 1$: RTI ;AND RETURN (ALLOW TRACE TRAP IF DDT) -493,,/;DSS1/ .IF DF,FPPEMU ;IF FPP EMULATION .IFF ;IF NOT -545,,/;DSS1/ .IFT ;IF FPP EMULATION, DO IT DIFFERENTLY FPEXTR=0 ;DEFINE FPEXTR (SO THERE WON'T BE AN UNDEFINED GLOBAL) FPERMS: MOV R0,-(SP) ;SAVE REGS MOV R1,-(SP) STST R1 ;GET FLOATING EXCEPTION CODE, IF ANY SUB #ERRDIV,R1 ;4=DIVIDE BY ZERO BLT 1$ ;6=CONVERSION TO INTEGER ERROR CMP R1,#ERRUNR-ERRDIV ;8=OVERFLOW BGT 1$ ;10=UNDERFLOW ASL R1 ADD #5$,R1 JSR PC,(R1) 1$: MOV (SP)+,R1 ;RESTORE REGS MOV (SP)+,R0 RTS PC 5$: DVFERR ; 4 RTS PC FIXERR ; 6 RTS PC FOFERR ; 8 RTS PC FUFERR ; 10 RTS PC .ENDC -554,595,/;DSS1/ /