Google
 

Trailing-Edge - PDP-10 Archives - decuslib20-06 - decus/20-153/magneg.mac
There are 7 other files named magneg.mac in the archive. Click here to see a list.
	TITLE	MAGNEG FOR RPGLIG %1
	SUBTTL	GET MAGNITUDE AND NEGATIVE OF TWO-WORD COMP 	/CAM/BOB CURRIER


;COPYRIGHT DIGITAL EQUIPMENT CORPORATION, MAYNARD, MA.

	HISEG

;MODIFIED FROM LIBOL 5(223) VERSION TO RPGII VERSION BY BOB CURRIER 10/23/75

	ENTRY	MAG.			; GET MAGNITUDE
	ENTRY	NEG.			; GET NEGATIVE
	ENTRY	NEG.A			; FOR USE BY OTHER ROUTINES

;CALLING SEQUENCE:
;	MOVE	PA,[Z AC,ADDRESS]
;	PUSHJ	PP,MAG./NEG.

;RESULT WILL BE LEFT IN ACCUMULATOR SPECIFIED BY "AC"

MAG.:	MOVE	TB,1(PA)		; GET LOW-PART
	SKIPL	TA,0(PA)		; GET HIGH PART - IS IT NEGATIVE?
	JRST	NEG.B			; NO - NO NEED FOR NEGATION

	TLO	TB,1B18			; YES - MAKE SURE LOW-PART IS NEGATIVE
	JRST	NEG.A

NEG.:	MOVE	TA,0(PA)		; GET HIGH-PART
	MOVE	TB,1(PA)		; GET LOW_PART

NEG.A:	SETCA	TA,			; COMPLEMENT HI-PART
	MOVNS	TB			; NEGATE LOW-PART
	TLZ	TB,1B18			; CLEAR SIGN BIT OF LOW-PART
	SKIPN	TB			; IF LOW-PART IS ZERO,
	ADDI	TA,1			; 	BUMP HIGH PART

	SKIPGE	TA			; BE SURE SIGN OF
	TLOA	TB,1B18			;   LOW PART AGREES
NEG.B:	TLZ	TB,1B18			;   WITH HIGH-PART

	LDB	TC,[POINT 4,PA,12]	; GET RESULT LOCATION
	MOVEM	TA,0(TC)		; STORE
	MOVEM	TB,1(TC)		;   RESULT

	POPJ	PP,			; EXIT

TA==6
TB==10
TC==11
PA==16
PP==17


	END