perm filename GOGOL.28P[S,AIL] blob sn#266394 filedate 1977-02-27 generic text, type C, neo UTF8
COMMENT āŠ—   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	DSCR FIX, FLOAT UUO'S (FIXQ,FLOAQ,SNGLQ)
C00005 ENDMK
CāŠ—;
DSCR FIX, FLOAT UUO'S (FIXQ,FLOAQ,SNGLQ)
PAR MOVE FF,ARG	; JRST FIX/FLOA Q; RET VIA USRXIT
RES FIXED POINT EQUIVALENT IN AC SPECIFIED IN AC FIELD OF UUO
āŠ—

FIXQ:	MULI	FF,400		;THIS ALGORITHM STOLEN FROM F4.
	TSC	FF,FF
	EXCH	FF,A
	ASH	FF,-243(A)
	JRST	FXFLT		;STORE IN RIGHT PLACE.

FLOAQ:	IDIVI	FF,400000
	SKIPE	FF
	TLC	FF,254000
	TLC	A,233000
	FAD	FF,A
FXFLT:	LDB	A,[POINT 4,JOBUUO,12] ;RESULT REGISTER
	CAIG	A,1		;NUMBER OF AC'S SAVED
	 ADDI	 A,-1(P)	;ADJUST TO FIND STACK SPOT
	MOVEM	FF,(A)		;AND RETURN RESULT
	JRST	USRXIT		;AND RETURN TO USER

;;%DU% JFR 11-26-76
SNGLQ:
;;#YW# 3! JFR 2-8-77 1ST WORD ALREADY IN FF. JUST GET 2ND WORD
	JUMPG	FF,SNGLQ1	;JUMP POSITIVE
	JUMPE	A,FXFLT		;EXIT IF ZERO
	SUBI	A,1		;SPECIAL CASE FOR NUM=1B1
;;%YZ% pmf 2-26-76	600000,,0 is a screw case in pdp-10 hardware
	CAMN FF,[600000,,0]	;SCREW CASE?
	 TLO A,(1B1)		;FORCE ROUNDING IN THIS CASE
SNGLQ1:	TLNN	A,(1B1)		;ROUNDING NEEDED
	JRST	FXFLT		;NO, RETURN
	CAME	FF,[377777,,-1]	;YES, WILL NUMBER OVERFLOW
	AOSA	FF		;NO, ROUND THE HIGH ORDER WORD
	FSC	FF,1		;YES, FORCE A FLOATING OVERFLOW
	JUMPL	FF,FXFLT	;IS THE NUMBER POSITIVE
	TLO	FF,400		;YES, FORCE MOST SIGNIF. BIT ON
	JRST	FXFLT
;;%DU% ā†‘