.TITLE JADD .IDENT /V1.01/ .PSECT CODE,RO .NLIST SYM,TOC ; DOUBLE-PRECISION INTEGER ADDITION ; ; 'PROCEDURE' JADD(JSUM,JA,JB); ; ; JSUM:=JA+JB G1570:: CMP (%3)+,(%2)+ ; ADDRESS LO WORDS MOV @%2,%4 ; GET JA LOW ADD @%3,%4 ; ADD JB LO MOV -(%2),%5 ; GET JA HI, W/O AFFECTING CARRY ADC %5 ; ADD IN CARRY BVS 10$ ; TRAP OVERFLOW ADD -(%3),%5 ; ELSE ADD IN JB HI BVC 100$ ; EXIT IF OK BR 11$ ; BUT TRAP OVERFLOW AGAIN 10$: ADD -(%3),%5 ; COMPLETE SUM IF OVERFLOW ON ADC 11$: DEC V ; DEC OVERFLOW COUNTER MOV #785.,FLOERR ; SET UP FLOERRORCODE 100$: MOV %5,(%1)+ ; STORE HI MOV %4,@%1 ; AND LO PART OF RESULT ADD #2,@SP ; STANDARD EXIT RTS PC .PSECT GLOBAL,OVR,GBL,RW G=. V=G+300. FLOERR=G+302. .END