4 Items that can appear in lispsystem!*

There is a global variable called lispsystem!* whose value is reset in the process of CSL starting up. An effect of this is that if the user changes its value those changes do not survice a preserving and re-loading a heap image: this is deliberate since the heap image may be re-loaded on a different instance of CSL possibly on a quite different computer of with a different configuration. The value of lispsystem!* is a list of items, where each item is either an atomic tag of a pair whose first component is a key. In general it would be unwise to rely on exactly what information is present without review of the code that sets it up. The information may be of interest to anybody but some tags and keys are reflections of experiments rather than fully stable facilities.

(c!-code . count)
This will be present if code has been optimised into C through the source files u01.c to u60.c, and in that case the value tells you how many functions have been optimised in this manner.
For a project some while ago a limited Common Lisp compatibility mode was being developed, and this tag indicated that it was active. In that case all entries are in upper case and the variable is called *FEATURES* rather than lispsystem!*. But note that this Lisp has never even aspired to be a full Common Lisp, since its author considers Common Lisp to have been a sad mistake that must bear significant responsibility for the fact that interest in Lisp has faded dramatically since its introduction.
(compiler!-command . command)
The value associated with this key is a string that was used to compile the files of C code making up CSL. It should contain directives to set up search paths and predefined symbols. It is intended to be used in an experiment that generates C code synamically, uses a command based on this string to compile it and then dynamically links the resulting code in with the running system.
A simple tag intended to indicate that this Lisp system is CSL and not any other. This can of course only work properly if all other Lisp systems agree not to set this tag! In the context of Reduce I note that the PSL Lisp system sets a tag psl on lispsystem!* and the realistic use of this is to discriminate between CSL and PSL hosted copies of Reduce.
If CSL was compiled with debugging options this is present, and one can imagine various bits of code being more cautious or more verbose if it is detected.
(executable . name)
The value is the fully rooted name of the executable file that was launched.
Used to be present if the FOX GUI toolkit was detected and incorporated as part of CSL, but now probably never used!
(linker . type)
Intended for use in association with compiler!-command, the value is win32 on Windows, x86_64 on 64-bit Linux and other things on other systems, as detected using the program objtype.c.
(name . name)
Some indication of the platform. For instance on one system I use it is linux-gnu:x86_64 and on anther it is just win32.
(native . tag)
One of the many experiments within CSL that were active at one stage but are not current involved compilation directly into machine code. The strong desire to ensure that image files coudl be used on a cross-platform basis led to saved compiled code being tagged with a numeric “native code tag”, and this key/value pair identified the value to be used on the current machine.
(opsys . operating-system)
Some crude indication of the host operating system.
operating system identity
The name of the current operating system is put on the list. Exactly what form is not explicitly defined!
In the earlier days of CSL there were computers where pipes were not supported, so this tag notes when they are present and hance the facility to create sub-tasks through them can be used.
An an extension to the CSL profiling scheme it it possible to compile a special version that tracks and counts each use of property-list access functions. This can be useful because there are ways to give special treatment to a small number of flags and a small number of properties. The special-case flage end up stored as a bitmap in the symbol-header so avoid need for property-list searching. But of course recording this extra information slows things down. This tag notes when the slow version is in use. It might be used to trigger a display of statistics at the end of a calculation.
This is intended to report if the initial heap image is for Reduce rather than merely for Lisp.
(shortname . name)
Gives the short name of the current executable, without its full path.
If the “showmath” capability has been compiled into CSL this will be present so that Lisp code can know it is reasonable to try to use it.
This marks the fact that this version of CSL will support the output style where flat simple text preceeds TeX output, with a U+0003 (end of text) marker to separate.
Present if the Lisp was compiled for a 64-bit computer.
Present if a cursor-addressable console was detected.
Present if the system was launched with the --texmacs flag. The intent is that this should only be done when it has been launched with texmacs as a front-end.
(version . ver)
The CSL version number.
win32, win64
Any windows system puts win32 in lispsystem!*. If 64-bit windows is is use then win64 is also included
Present if CSL is running in its own window rather than in console mode.

Services provided by