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