Google
 

Trailing-Edge - PDP-10 Archives - decuslib20-03 - decus/20-0078/rts/ma.mac
There are 2 other files named ma.mac in the archive. Click here to see a list.
	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