.TITLE ATM2N ; JEFFREY KODOSKY ARL NOV75 ; ; UTILITY: CONVERT ATOM TO NUMBER ; ENTRY: 1 ARG ; EXIT: 1 ARG (SP) INTEGER (1 WD) OR FP NUMBER ; C BIT IS SET IF FLOATING POINT ARG ; ERRORS: I2, IMPROPER ARGUMENT FOR NUMERIC FUNCTION ; CALLS: NONE ; R2,R3 PRESERVED .GLOBL ATM2N,QI2ERR ATM2N: MOV (R5)+,R0;GET ARG MOV @R0,R1 BIT #2,R1 ;IS IT NUMERIC? BNE ATM2N1 ;JUMP IF SO TST -(R5) ;NO: TRAP TO I2 ERROR HANDLER QI2ERR ;WITH BAD ARG ON STACK ATM2N1: BIT #177774,R1 ;OTHERWISE CHECK FOR INTEGER BEQ ATM2N2 ;JUMP IF INTEGER MOV @R1,-(SP) ;PUSH MANTISSA SEC ;SET FP FLAG MOV 2(R0),-(SP) ;PUSH EXPONENT AND RETURN JMP @-(R4) ATM2N2: TST (R0)+ ;POINT TO INTEGER AND CLEAR C BIT MOV @R0,-(SP) ;PUSH INTEGER AND RETURN JMP @-(R4) .END