100 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			100 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
#
 | 
						|
;
 | 
						|
; (c) copyright 1988 by the Vrije Universiteit, Amsterdam, The Netherlands.
 | 
						|
; See the copyright notice in the ACK home directory, in the file "Copyright".
 | 
						|
;
 | 
						|
;
 | 
						|
; Module:	Interface to some EM instructions and data
 | 
						|
; Author:	Ceriel J.H. Jacobs
 | 
						|
; Version:	$Header$
 | 
						|
;
 | 
						|
 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 ?
 | 
						|
 | 
						|
#define TRAP    0
 | 
						|
 | 
						|
; TRP is called with one parameter:
 | 
						|
;       - trap number (TRAP)
 | 
						|
; Definition:
 | 
						|
; PROCEDURE TRP(trapno: INTEGER);
 | 
						|
 | 
						|
 exp $TRP
 | 
						|
 pro $TRP, 0
 | 
						|
 lol TRAP
 | 
						|
 trp
 | 
						|
 ret 0
 | 
						|
 end ?
 | 
						|
 | 
						|
#define PROC    0
 | 
						|
 | 
						|
; SIG is called with one parameter:
 | 
						|
;       - procedure instance identifier (PROC)
 | 
						|
; and returns the old traphandler.
 | 
						|
 | 
						|
 exa handler
 | 
						|
 exp $SIG
 | 
						|
 pro $SIG, 0
 | 
						|
 lae handler
 | 
						|
 loi EM_PSIZE
 | 
						|
 lal PROC
 | 
						|
 loi EM_PSIZE
 | 
						|
 lae handler
 | 
						|
 sti EM_PSIZE
 | 
						|
 ret EM_PSIZE
 | 
						|
 end ?
 | 
						|
 | 
						|
 exp $LINO
 | 
						|
 pro $LINO,0
 | 
						|
 loe 0
 | 
						|
 ret EM_WSIZE
 | 
						|
 end ?
 | 
						|
 | 
						|
 exp $FILN
 | 
						|
 pro $FILN,0
 | 
						|
 lae 4
 | 
						|
 loi EM_PSIZE
 | 
						|
 ret EM_PSIZE
 | 
						|
 end ?
 |