.TITLE JMUL .IDENT /V1.01/ .PSECT CODE,RO .NLIST SYM,TOC ; DOUBLE-PRECISION INTEGER MULTIPLICATION ; ; 'PROCEDURE' JMUL(JPROD,JA,JB); ; ; JPROD:=JA*JB F0=%0 F1=%1 G1574:: STFPS %5 ; SAVE CURRENT FPU STATUS LDFPS #^B0100000011100000 ; INTERRUPTS OFF, DP & LONG MODES ON LDCLD @%2,F0 ; GET JA AS D.P. FLOATING LDCLD @%3,F1 ; AND JB MULF F1,F0 ; PRODUCT TO F0 STCDL F0,@%1 ; SAVE RESULT CFCC ; COPY FPU FLAGS TO CPU FLAGS LDFPS %5 ; RESET FPU STATUS BCC 100$ ; EXIT IF OK 11$: DEC V ; DEC OVERFLOW COUNTER MOV #787.,FLOERR ; SET UP FLOERRORCODE 100$: ADD #2,@SP ; STANDARD EXIT RTS PC .PSECT GLOBAL,OVR,GBL,RW G=. V=G+300. FLOERR=G+302. .END