perm filename MA.MAC[SIM,SYS] blob sn#460125 filedate 1979-07-20 generic text, type T, neo UTF8
	SUBTTL	Mathematical subroutines not covered by FORLIB

; Author:	Lars Enderin Mar 1974

	SEARCH	SIMMAC,SIMRPA
	SALL
	RTITLE	MA
	ERRMAC	MA
	MACINIT

	ENTRY	.MACI, .MACL
Comment;

Purpose:	To convert an arithmetic value from long real to integer
		(.MACI) or vice versa (.MACL).

Input:		Value to be converted in Xtop (and Xtop+1).
		XTAC=Xtop.

Output:		Converted value in Xtop (& Xtop+1).

Function:	Load input by EXCH instructions to XWAC1-XWAC2.
		Convert in XWAC1-XWAC2 and place result by EXCH.

;
.MACL:	PROC	;Conversion from integer to long real
	EXCH	XWAC1,(XTAC)
	EXCH	XWAC2,1(XTAC)
	L	X0,XWAC1
	MOVM	XWAC2,XWAC1
	MOVSI	XWAC1,(<200+↑D62>B8)
	DFAD	XWAC1,[EXP 0,0]
	JUMPGE	X0,.+2
	DMOVN	XWAC1,XWAC1
	EXCH	XWAC2,1(XTAC)
	EXCH	XWAC1,(XTAC)
	RETURN
	EPROC

.MACI:	PROC	;Conversion from long real to integer
	EXCH	XWAC1,(XTAC)
	EXCH	XWAC2,1(XTAC)
	L	X0,XWAC1
	JUMPGE	X0,.+2
	DMOVN	XWAC1,XWAC1
	IF
		CAML	XWAC1,[233B8]
		GOTO	FALSE
	THEN
		FIXR	XWAC1,XWAC1
	ELSE
		LDB	X1,[POINT 9,XWAC1,8]
		TLZ	XWAC1,777000
		ASHC	XWAC1,-233(X1)
	FI
	JUMPGE	X0,.+2
	MOVN	XWAC1,XWAC1
	EXCH	XWAC2,1(XTAC)
	EXCH	XWAC1,(XTAC)
	RETURN
	EPROC
	LIT
	END