; DATE 12/18/83 07:50 by H M Van Tassell This version of XLISP is taken from David Betz version 1.1 for CP/M-80 and the AZTEC compiller which is on SI/G volume 118. I wanted a CP/M-86 version and recompiled the source code with the Computer Innovations compiler CI-C86. The only changes made to the original source code files was to change from <...> to "..." on the #include . The setjmp.h file was made empty because the CI-C86 stdio.h defines this item. The empty file ctype.h was added to the disk since the CI-C86 compiler doesn't use this header file. A new #setdef was added to the xlisp.h file for the CI-C86 compiler. New submit files were made and you may re-compile and link by: 1. A>submit cclisp 2. A>submit linklisp NOTE for systems with limited disk storage: submit.cmd and cc1.cmd, cc2.cmd, cc3.cmd, and cl.cmd must be available on resident disks and you may need to modify the cclisp.sub and linklisp.sub files to show on which disks certain files may be found. This should result in a new XLISP.CMD file being generated This is the SI/G volume 118 abstract and is presented here for information. Files marked by ** are not included on this disk. -------------------------------------------------------------- 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 Best of luck too from Harry Van Tassell