OpenMCL usage notes

Initial value of *PACKAGE*

*PACKAGE* is set to the CCL package; the CCL:*WARN-IF-REDEFINE* and CCL:*WARN-IF-REDEFINE-KERNEL* variables are both set to NIL. The good news is that this environment makes it more convenient to muck around inside the implementation; that's also the bad news.

Calling foreign functions

The primary way of calling a foreign function (imported from the C or math ibrary) is via the CCL::EXTERNAL-CALL macro:

    (CCL::EXTERNAL-CALL <entry-name> {<arg-spec> <arg-val>}* <result-spec>)

   <entry-name> is a (case-sensitive) string which names the external function

   <arg-spec> is a keyword: one of  :ADDRESS, :SIGNED-FULLWORD, 
   :UNSIGNED-FULLWORD, :SIGNED-HALFWORD,  
   :UNSIGNED-HALFWORD, :SIGNED-BYTE, :UNSIGNED-BYTE, 
   :SINGLE-FLOAT, or  :DOUBLE-FLOAT

   <arg-val> is a lisp expression whose value is coerced to the foreign type 
   denoted  by the corresponding <arg-spec>

   <result-spec> indicates the foreign type of the result and can be any of 
   the  keywords used as an <arg-spec> or :VOID or NIL to indicate that the 
   EXTERNAL-CALL should return NIL.