46 lines
		
	
	
	
		
			944 B
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
	
		
			944 B
		
	
	
	
		
			Text
		
	
	
	
	
	
#
 | 
						|
 mes 2,EM_WSIZE,EM_PSIZE
 | 
						|
 | 
						|
#define ARG1    0
 | 
						|
#define ARG2    EM_DSIZE
 | 
						|
#define IRES    2*EM_DSIZE
 | 
						|
 | 
						|
; FIF is called with three parameters:
 | 
						|
;       - address of integer part result (IRES)
 | 
						|
;       - float two (ARG2)
 | 
						|
;       - float one (ARG1)
 | 
						|
; and returns an EM_DSIZE-byte floating point number
 | 
						|
; Definition:
 | 
						|
;	PROCEDURE FIF(ARG1, ARG2: LONGREAL; VAR IRES: LONGREAL) : LONGREAL;
 | 
						|
 | 
						|
 exp $FIF
 | 
						|
 pro $FIF,0
 | 
						|
 lal 0
 | 
						|
 loi 2*EM_DSIZE
 | 
						|
 fif EM_DSIZE
 | 
						|
 lal IRES
 | 
						|
 loi EM_PSIZE
 | 
						|
 sti EM_DSIZE
 | 
						|
 ret EM_DSIZE
 | 
						|
 end ?
 | 
						|
 | 
						|
#define FARG    0
 | 
						|
#define ERES    EM_DSIZE
 | 
						|
 | 
						|
; FEF is called with two parameters:
 | 
						|
;       - address of base 2 exponent result (ERES)
 | 
						|
;       - floating point number to be split (FARG)
 | 
						|
; and returns an EM_DSIZE-byte floating point number (the mantissa)
 | 
						|
; Definition:
 | 
						|
;	PROCEDURE FEF(FARG: LONGREAL; VAR ERES: integer): LONGREAL;
 | 
						|
 | 
						|
 exp $FEF
 | 
						|
 pro $FEF,0
 | 
						|
 lal FARG
 | 
						|
 loi EM_DSIZE
 | 
						|
 fef EM_DSIZE
 | 
						|
 lal ERES
 | 
						|
 loi EM_PSIZE
 | 
						|
 sti EM_WSIZE
 | 
						|
 ret EM_DSIZE
 | 
						|
 end ?
 |