.TITLE IJCVT .IDENT /V1.01/ .PSECT CODE,RO .NLIST SYM,TOC ; DOUBLE-PRECISION TO SINGLE-PRECISION INTEGER CONVERSION ; ; 'INTEGER''PROCEDURE' IJCVT(J); ; ; RETURN TRUNCATED VALUE OF J AND OVERFLOW IF OUTSIDE 16 BITS G1592:: MOV (%1)+,%2 ; GET & TEST J HI BEQ 10$ ; BRANCH IF ZERO BPL 98$ ; OVERFLOW IF HI>0 INC %2 ; MAKE SURE HI WAS -1 IF -VE BNE 98$ ; OVERFLOW AGAIN IF NOT MOV @%1,%1 ; IF J HI IS -1 BPL 99$ ; THEN J LO MUST BE -VE TOO BR 100$ ; BRANCH IF OK 98$: MOV @%1,%1 ; TRUNCATE IF OVERFLOW BR 99$ 10$: MOV @%1,%1 ; IF J HI IS +VE BPL 100$ ; THEN J LO MUST BE >=0 TOO 99$: DEC V ; DEC OVERFLOW COUNTER MOV #796.,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