The CP/M distribution for XLISP contains the following files: ABSTRACT.118 this file) xlisp.doc (documentation) xlbind.c (routines to bind values to symbols) xldmem.c (dynamic memory management routines) xleval.c (the evaluator) xlfio.c (file i/o routines) xlio.c (i/o routines for 'xlread') xlisp.c (the main routine) xlisp.h (the definition file) xllist.c (list functions) xlmath.c (arithmetic functions) xlobj.c (object oriented functions) xlkmap.c (keymap functions) xlprin.c (the printer) xlread.c (the reader) xlstr.c (string functions) xlsubr.c (misc. functions) junk.c (routines needed for the AZTEC C version) setjmp.h (definition file for 'setjmp.asm') setjmp.asm (setjmp and longjmp for AZTEC C) alloc.c (memory allocation routines) sbrk.asm (more memory allocation routines) xlisp.com (an executable for 64K Z-80 systems) xlmake.sub (a file for compiling and assembling XLISP) xlisp.lnk (a command file for linking XLISP) pt.lsp (a sample program) t.lsp (another sample program) Before compiling XLISP, look at the beginning of the file 'xlisp.h'. You should check to see that the conditionals defined here are appropriate for your machine. You should also edit the command files 'xlmake.sub' and 'xlisp.lnk' to indicate which disks to expect input from and which disks to place output on. They are currently configured for my VT180 system with four 180K 5 1/4 inch mini-floppies. I assigned the disks as follows: A the C compiler, assembler, library, 'stdio.h' and 'setjmp.h' B unimportant C the XLISP sources and the '.ASM' files generated by the compiler D the generated object files Note that all of the source files expect to find 'stdio.h' and 'setjmp.h' on disk A. Since XLISP evaluates functions recursively, it tends to use up a lot of stack space. Depending on how stack space is allocated on your machine, you may need to tell the linker to allocate more than the normal amount of space. I generated the original XLISP on a PDT-11/150 under the RT-11 operating system using the DECUS-C compiler and needed to tell the RT-11 linker to allocate 10000 octal bytes of stack space in order to make XLISP run reasonably well. You can gain back about 400 nodes worth of list space by leaving out the 'Keymap' class. This can be done by editing the 'xlisp.h' file under the conditional for 'AZTEC' and removing the definition for the symbol 'KEYMAPCLASS'. You only really need to recompile 'xlisp.c' and 'xldmem.c' after changing this definition. You should then relink leaving out 'xlkmap.o'. Have fun and let me know of any problems or suggestions you might have. David Betz