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