MTS 8: LISP and SLIP in MTS
Page Revised February 1979 June 1976
LISP interpreter, and requires familiarity with the internal
structures of LISP.
N=1 signifies FORTRAN function calling conventions, with a
floating-point value. Any number of arguments may be given,
and they must be numeric atoms. If an argument is a
floating-point numeric atom, it will be passed to the function
as a double-precision floating-point number. (This allows the
user to call both single- and double-precision external
functions, although LISP numbers have only single-precision
significance.) If the argument is an integer numeric atom, it
will be passed to the function as a fullword integer. (Note
that the number represented by the atom is passed, and not the
atomic structure.)
Upon return from the function, floating-point register 0 will
be treated as a single-precision value of the function, and a
| numeric atom with that value will be returned. No changes to
| any arguments will occur.
N=2 signifies FORTRAN function calling conventions, with an inte-
ger value. Any number of arguments may be given, and their
interpretation will be the same as for N=1.
Upon return from the function, general register 0 will be
treated as an integer return value from the function, and a
| numeric atom with that value will be returned. No changes to
| any arguments will occur.
N=3 signifies FORTRAN subroutine calling conventions. Any number
of numeric arguments may be given, and their interpretation
will be the same as for N=1 or N=2.
For this type of external function, the arguments may be
modified by the function, just as if they were the values of
FORTRAN variables.
Upon return from the subroutine, general register 15 is
checked first. If the return code is nonzero, then the value
returned from the LISP function will be NIL. If the return
code is zero, then a list of the argument values (which may
have possibly been modified) will be returned as the value of
the LISP function. Note that a FORTRAN program which modifies
the values of its arguments does not alter the value of any
LISP structure. The only effect of the modification is that
some new numeric atoms are returned as part of the value of
the LISP function.
An argument which was originally passed as an integer will be
interpreted upon return as an integer. An argument which was
originally passed as a floating-point number will be inter-
preted upon return as a single-precision floating-point
number.
44 LISP