.TITLE SUB1 ; JEFFREY KODOSKY ARL JUL76 ; ; SUBR ; ENTRY: 1 ARG ; EXIT: 1 ARG ; ERRORS: I4, HARD MATH ERROR (SUPPRESSED WITH Z SWITCH) ; CALLS: ATM2N, ATOM TO NUMBER CONVERTER ; I2ATM, INTEGER TO ATOM CONVERTER ; R2ATM, REAL TO ATOM CONVERTER ; ADR, REAL ADDER ; GET, SEARCH PROPERTY LIST .GLOBL SUB1,ZSUB1,QATM2N,QI2ATM,QR2ATM,QADR,QGET .GLOBL APVAL,ZSW,QI4ERR SUB1: QATM2N BCS SUB13 ;JUMP TO SUBTRACT 1.0 DEC @SP BVS SUB11 ;JUMP TO RETURN NEGMAX-1 QI2ATM .WORD 0 SUB11: MOV #400,@SP ;LO ORDER OF -32769. MOV #^F-32769.,-(SP) BR SUB19 SUB13: ASL @SP BEQ SUB15 ;JUMP IF +-INF OR 0 ROR @SP ;SUB 1.0 CLR -(SP) MOV #^F-1.0,-(SP) QADR BCS SUB17 ;JUMP IF INF RETURNED BR SUB19 SUB15: ROR @SP TST 2(SP) ;JUMP IF SUB1 FORM +-INF! BNE SUB17 MOV #^F-1.0,@SP ;SUB1 FROM 0.0 IS -1.0 BR SUB19 SUB17: ROOM 3 ;CHECK IF INF ALLOWED MOV APVAL,-(R5) MOV ZSW,-(R5) QGET TST (R5)+ BNE SUB19 ;JUMP IF IT IS QI4ERR ;ELSE HARD ERROR SUB19: QR2ATM ;RETURN REAL ATOM .WORD 0 ZSUB1=.-SUB1 .END