Short: CLISP release 30.5.96 construction kit Author: Joerg.Hoehle@gmd.de Uploader: Joerg Hoehle gmd de Type: dev/lang Requires: OS 2.04 or newer, 68020+, GNU linker (ld) Architecture: m68k-amigaos This archive contains a link kit with which to build an extended CLISP containing your own C (or whatever language) functions. This archive corresponds to the -high version of Amiga-CLISP (i.e. 68020 or better, addresses upto 0x7fffffff). It is the only distributed binary archive that contains the standard CLISP FFI (which is different from the AFFI common to all Amiga versions). The FFI is huge but more powerful than the AFFI. It can call arbitrary C functions. It allows callbacks (not yet with parameters in registers) foreign structure and type definitions. It is documented in FOREIGN.TXT. However, its support for calling Amiga shared library functions is incomplete. Therefore FOREIGN.D and FOREIGN1.(LSP|FAS) are provided as well for reference purposes and extensions. Extending CLISP is done by adding another module definition in MODULES.H (a line saying MODULE()) and building a new LISP.RUN binary. An interesting feature of modules is that an old image file generated by a LISP.RUN without a given module is accepted by an extended LISP.RUN. Thus, you can use the supplied LISPINIT.MEM file even after building a LISP.RUN that contains QUEENS. The GNU linker (ld) is required to build an own lisp.run binary from the supplied link libraries. GCC is required for adding compiling modules. After extracting the archive and setting a large stack, make -f Makefile.kit KITOBJECTS= lisp.run will generate an executable containing no additional module, as the initial MODULES.H only contains the line MODULE(affi) The lisp.run I then generate is 694448 bytes in size (not stripped). QUEENS is provided as a module demo. It's module interface (QUEENS-FFI.C) is generated by compiling QUEENS-FFI.LSP. lisp.run -M lispinit.mem -c queens-ffi.lsp Add a line saying MODULE(queens_ffi) to MODULES.H. If "make -f Makefile.kit" works, after (LOAD "queens-ffi"), (FFI-DEMOS::QUEENS 8) will return 92. Note that CLISP has been built with my tiny startup code and without any standard C library stdio or malloc() functions, so if you need them you may run into trouble as they may not be initialized when CLISP's main() is entered. Note that this CLISP has been compiled with Gcc-2.5.8 using the non-reentrant static struct return convention whereas newer Gcc-2.7.2 have finally been switched to stack struct return (like Gcc-2.3.3). This will cause problems with struct return types or arguments (but not with pointers to structures).