#if DEUTSCH
Dies ist CLISP, eine Implementierung von COMMON LISP.


Was ist LISP?
-------------

LISP ist eine Programmiersprache, die 1959 von J. McCarthy erfunden wurde.
Früher gab's viele verschiedene Dialekte, heute ist LISP durch den Industrie-
Standard COMMON LISP standardisiert und weit verbreitet worden. Anwendungen
reichen von der symbolischen Wissensverarbeitung (KI) über die Numerik
(MACLISP lieferte einen ebensoguten Numerik-Code wie FORTRAN) bis hin zu
verbreiteten Programmen wie Editoren (EMACS) oder CAD-Systemen (AUTOCAD).
Eine Einführung in die Sprache ist:

  Sheila Hughes: Lisp. Pitman Publishing Limited, London 1986.
  107 Seiten. ca. DM 15,80.

Nach einiger Zeit unentbehrlich ist das Standardwerk mit der Sprachdefinition

  Guy L. Steele Jr.: Common Lisp - The Language. Digital Press.
  1. Auflage 1984, 465 Seiten, ca. DM 73,60.
  2. Auflage 1990, 1032 Seiten. ca. DM 94,90.

Dieses Buch ist in HTML-Format per FTP erhältlich von
  ftp.cs.cmu.edu:/user/ai/lang/lisp/doc/cltl/cltl_ht.tgz  und
  ma2s2.mathematik.uni-karlsruhe.de:/pub/lisp/CLtL2/cltl_ht.tgz .

LISP liegt in einer interaktiven Umgebung vor, d.h. man gibt Formen ein, die
dann sofort ausgewertet werden. So kann man Variablen inspizieren, Funktionen
mit wechselnden Argumenten aufrufen oder auch eigene Funktionen definieren.


Inhalt:
-------

Zu CLISP gehören folgende Dateien:

#ifdef UNIX
#ifndef UNIX_BINARY_DISTRIB
   base/lisp.a          Hauptprogramm, muß erst noch gelinkt werden
#endif
#ifdef UNIX_BINARY_DISTRIB
   base/lisp.run        Hauptprogramm
#endif
   base/lispinit.mem    beim Start benötigtes Speicherabbild
   doc/clisp.1          Benutzungshinweise im man-Format von Unix
   doc/clisp.man        Benutzungshinweise
   doc/clisp.html       Benutzungshinweise im HTML-Format
   doc/impnotes.txt     Dokumentation von Implementierungsdetails
   doc/cltl2.txt        Dokumentation des Verhältnisses von CLISP zu CLtL2
#ifdef GNU_READLINE
   doc/clreadline.3     Eingabezeilen-Benutzungshinweise im man-Format von Unix
   doc/clreadline.man   Eingabezeilen-Benutzungshinweise
#endif
   README               dies hier
   SUMMARY              Kurzbeschreibung von CLISP
   ANNOUNCE             Ankündingung
   NEWS                 Liste der Veränderungen seit der letzten Version
   COPYRIGHT            Klarstellung des Urheberrechts
   GNU-GPL              Gebrauchslizenz für Offene Software
   doc/readline.dvi     Dokumentation zur GNU Readline-Bibliothek
   src/config.lsp       örtliche Konfiguration

und - als Zugabe, für den Fall, daß Sie Quellen lesen möchten -

   src/*.lsp            die Quellen zu lispinit.mem
   src/*.fas            dieselben Dateien in compilierter Form
#if !defined(UNIX_BINARY_DISTRIB) && defined(GNU_READLINE)

Um das ausführbare Programm zu erstellen, brauchen Sie ferner:

   base/libreadline.a    die GNU Readline-Bibliothek

oder

   base/libnoreadline.a  wertloser Ersatz für die GNU Readline-Bibliothek
#endif
#else /* !defined(UNIX) */
#ifdef AMIGAOS
      lisp.run         Hauptprogramm
#endif
#ifdef MSDOS
      lisp.exe         Hauptprogramm
#ifndef OS2
      lisp_1mb.exe     Hauptprogramm, für Leute mit nur 1 oder 2 MB RAM
#endif
#endif
#ifdef ATARI
      lisp.prg         Hauptprogramm
#endif
      lispinit.mem     beim Start benötigtes Speicherabbild
      clisp.1          Benutzungshinweise im man-Format von Unix
      clisp.man        Benutzungshinweise
      clisp.html       Benutzungshinweise im HTML-Format
#ifdef MSDOS
      clisp.dvi        Benutzungshinweise im DVI-Format
#endif
      impnotes.txt     Dokumentation von Implementierungsdetails
      cltl2.txt        Dokumentation des Verhältnisses von CLISP zu CLtL2
#ifdef GNU_READLINE
      clreadline.3     Eingabezeilen-Benutzungshinweise im man-Format von Unix
      clreadline.man   Eingabezeilen-Benutzungshinweise
#ifdef MSDOS
      clreadline.dvi   Eingabezeilen-Benutzungshinweise im DVI-Format
#endif
#endif
#ifdef EMUNIX
      emx-user.doc     Benutzungshinweise für EMX-Anwendungen
      emx-faq.doc      Frage-/Antwort-Katalog für EMX-Anwendungen
#ifdef EMUNIX_PORTABEL
      emx.dll          EMX als dynamische OS/2-Bibliothek
      emxlibc.dll      die EMX-libc als dynamische OS/2-Bibliothek
#ifdef EMUNIX_OLD_8e
      termcap.dat      Datenbank von Terminal-Beschreibungen
#endif
#endif
#endif
#if defined(MSDOS) && !defined(OS2)
      delay.exe        Hilfsprogramm zum Betrieb unter Windows
#endif
      README           dies hier
      SUMMARY          Kurzbeschreibung von CLISP
      ANNOUNCE         Ankündingung
      NEWS             Liste der Veränderungen seit der letzten Version
      COPYRIGHT        Klarstellung des Urheberrechts
      GNU-GPL          Gebrauchslizenz für Offene Software
      readline.dvi     Dokumentation zur GNU Readline-Bibliothek
      config.lsp       örtliche Konfiguration
#ifndef UNIX
      timezone.lsp     örtliche Zeitzone
#endif

und - als Zugabe, für den Fall, daß Sie Quellen lesen möchten -

      *.lsp            die Quellen zu lispinit.mem
#if !defined(MSDOS)
      *.fas            dieselben Dateien in compilierter Form
#endif
#endif

#ifdef MSDOS

Hardware-Voraussetzungen:
-------------------------

#ifndef OS2
Diese DOS-Version von CLISP setzt als CPU einen 80386 (SX oder DX) oder einen
80486 sowie mindestens 1 MB RAM voraus.
#else
Diese OS/2-Version von CLISP setzt als CPU einen 80386 (SX oder DX) oder einen
80486 voraus, die OS/2 2.0 fährt.
#endif

#endif
#ifdef ATARI

Hardware-Voraussetzungen:
-------------------------

Diese Atari-Version von CLISP setzt einen Atari ST mit einer 68000 CPU sowie
mindestens 2 MB RAM voraus.

#endif
#ifdef AMIGAOS

Hardware-Voraussetzungen:
-------------------------

Diese Amiga-Version von CLISP setzt einen Amiga mit mindestens 1.5 MB RAM
voraus. Die CLISP-LOW genannte Version läuft auf Geräten, deren gesamter
Speicher mit 24 Bit adressierbar ist: auf 68000, A2620, A2630, sowie auf
dem A3000 und A4000 nur mit NoFastMem. Die CLISP-HIGH genannte Version
hingegen läuft in Speicher, der mit 28 Bit adressierbar ist (Adressen
#x00000000 bis #x0FFFFFFF), jedoch nur auf Geräten mit 68020/030/040
(z.B. A3000 und A4000 ohne spezielle Speichererweiterungskarten).

#endif
#if defined(SINGLEMAP_MEMORY) && (defined(UNIX_LINUX) || !defined(HAVE_MMAP_ANON))

Software-Voraussetzungen:
-------------------------

#ifdef UNIX_LINUX
#ifdef GENERATIONAL_GC
Diese CLISP-Version setzt Linux 1.1.52 oder neuer voraus.
#else
Diese CLISP-Version setzt Linux 0.99.7 oder neuer voraus.
#endif
#endif
#if !defined(HAVE_MACH_VM) && !defined(HAVE_MMAP_ANON) /* impliziert HAVE_MMAP_DEVZERO */
/dev/zero muß von jedermann lesbar sein. Um das sicherzustellen, können Sie
ein "chmod a+r /dev/zero" ausführen.
#endif

#endif

Installation:
-------------

#ifdef OS2
Zuerst installieren Sie emx.dll and emxlibc.dll in einem separaten Verzeichnis,
sagen wir c:\emx\dll. Fügen Sie c:\emx\dll (mit dem korrekten Laufwerks-
buchstaben) zur LIBPATH-Anweisung in Ihrer Datei config.sys hinzu. Booten
Sie Ihren Computer neu, damit die LIBPATH-Anweisung und die neuen Umgebungs-
Variablen Wirkung zeigen.

#ifdef EMUNIX_OLD_8e
Vielleicht wollen Sie auch termcap.dat in einem separaten Verzeichnis, sagen
wir c:\emx\etc, installieren.

#endif
#endif
#ifdef UNIX
#ifndef UNIX_BINARY_DISTRIB
Um das ausführbare Programm zu erstellen, geben Sie ein:

         cd base
         cc lisp.a libnoreadline.a -ltermcap -s -o lisp.run
         cd ..

oder
- wenn Sie die Editiermöglichkeiten der GNU Readline-Bibliothek haben möchten -

         cd base
         cc lisp.a libreadline.a -ltermcap -s -o lisp.run
         cd ..

#endif
Passen Sie die Strings innerhalb von src/config.lsp mit einem Texteditor an.
#else
Passen Sie den Inhalt von config.lsp, insbesondere die Definitionen von
short-site-name und long-site-name, an Ihre örtlichen Gegebenheiten an.
Vielleicht möchten Sie auch die Zeitzonendefinition am Ende von timezone.lsp
ändern.
#endif
Starten Sie dann

#ifdef MSDOS
         lisp.exe -M lispinit.mem
#endif
#ifdef ATARI
         lisp.prg -M lispinit.mem
#endif
#ifdef AMIGAOS
         lisp.run -M lispinit.mem
#endif
#ifdef UNIX
         base/lisp.run -M base/lispinit.mem
#endif

Auf den LISP-Prompt

      > _

hin eingeben:

#ifdef UNIX
        (compile-file "src/config")
        (load "src/config")
#else
        (compile-file "config")
        (load "config")

und - falls Sie timezone.lsp verändert haben -

        (compile-file "timezone")
        (load "timezone")
#endif

und dann

#ifdef UNIX
        (cd "base/")
#endif
        (saveinitmem)

Damit überschreiben Sie die Datei lispinit.mem mit Ihrer Konfiguration. Sodann

        (exit)

#ifdef UNIX
Alles weitere erledigt ein

        make install

Sie können dies stattdessen auch selber, schrittweise tun:

#endif
Legen Sie ein Verzeichnis an und legen Sie das ausführbare Programm und das
Speicherabbild dort ab.
#ifdef UNIX
Ich schlage hierfür /usr/local/lib/lisp vor:

   mkdir /usr/local/lib/lisp
   mv base/lisp.run /usr/local/lib/lisp
   mv base/lispinit.mem /usr/local/lib/lisp
#endif
#ifdef MSDOS
Angenommen, Sie wählen dafür D:\LIB\LISP :

   mkdir d:\lib\lisp
   copy lisp.exe d:\lib\lisp
   copy lispinit.mem d:\lib\lisp
#endif

#ifdef MSDOS
Und erstellen Sie eine Kommando-Datei, die Lisp startet:

#ifndef OS2
   copy con c:\bat\clisp.bat
#else
   copy con c:\cmd\clisp.cmd
#endif
   d:\lib\lisp\lisp.exe -M d:\lib\lisp\lispinit.mem %1 %2 %3 %4 %5 %6 %7 %8 %9
   [Ctrl-Z]
#endif
#ifdef UNIX
Und erstellen Sie ein Shell-Script, das Lisp startet:

   cat > /usr/local/bin/clisp
#ifndef UNIX_BROKEN_SH
#ifdef UNIX_USE_KSH
   #!/bin/ksh
#else
   #!/bin/sh
#endif
   exec /usr/local/lib/lisp/lisp.run -M /usr/local/lib/lisp/lispinit.mem "$@"
#else
   #!/bin/sh
   if test $# = 0; then
     exec /usr/local/lib/lisp/lisp.run -M /usr/local/lib/lisp/lispinit.mem
   else
     exec /usr/local/lib/lisp/lisp.run -M /usr/local/lib/lisp/lispinit.mem "$@"
   fi
#endif
   [Ctrl-D]EOF
   chmod a+x /usr/local/bin/clisp

Installieren Sie nun die Benutzungshinweise

   mv doc/clisp.1 /usr/local/man/man1/clisp.1
#ifdef GNU_READLINE
   mv doc/clreadline.3 /usr/local/man/man3/clreadline.3
#endif

and probieren Sie

   man clisp
#endif

#if defined(MSDOS) && !defined(OS2)

Installation unter Microsoft Windows:
-------------------------------------

CLISP läuft auch in der DOS-Box von Microsoft Windows 3.1.
Dazu sind folgende zusätzliche Schritte notwendig:

1. Besorgen Sie sich
     ma2s2.mathematik.uni-karlsruhe.de:/pub/lisp/clisp/dos/clisp-deutsch.zip
   und installieren Sie es, wie oben angegeben.

2. Besorgen Sie sich RSX
     ftp.uni-bielefeld.de:/pub/systems/msdos/misc/dpmigcc4.zip
     ftp.shsu.edu:/tex-archive/systems/msdos/dpmigcc/dpmigcc4.zip
   und installieren Sie es, z.B. in c:\rsx.

3. Rufen Sie den PIF-Editor auf und tragen Sie dort ein:

   Programmdateiname:      c:\rsx\bin\rsx.exe c:\lib\lisp\lisp.exe
   Programmtitel:          COMMON LISP
   Programmparameter:      -M c:\lib\lisp\compiled.mem
   Anfangsverzeichnis:     e:\lisp
   Bildschirmspeicher:     Text
   Speicherbedarf:         benötigt:  500      gewünscht:  640
   EMS-Speicher:           benötigt:    0      gewünscht:    0
   XMS-Speicher:           benötigt: 1024      gewünscht:   -1
   Anzeige:                        [nach Belieben]
   Fenster_schließen_bei_Beenden:  [nach Belieben]
   Ausführung:                     [nach Belieben]
   weitere_Optionen:               [nach Belieben]

   (Als Anfangsverzeichnis, hier e:\lisp, sollten Sie zweckmäßigerweise
   das Verzeichnis wählen, in dem Ihre Lisp-Programme sitzen.)

   Das Ganze speichern Sie unter dem Namen WINCLISP.PIF ab.

4. Im Programm-Manager in einer geeigneten Gruppe:

   Menü "Datei" -> "Neu" -> "Programm", Fenster "Programmeigenschaften".
   Tragen Sie dort ein:

   Beschreibung:           COMMON LISP
   Befehlszeile:           winclisp.pif
   Anfangsverzeichnis:     e:\lisp
   Tastenkombination:      Ctrl+Alt+Shift+L      [nach Belieben]

Mausclick auf das so erzeugte Pictogramm bzw. die o.a. Tastenkombination
im Programm-Manager starten nun CLISP.

Bemerkungen:

* Cut & Paste in DOS-Boxen (via Menü "Bearbeiten" -> "Markieren" bzw.
  Menü "Bearbeiten" -> "Einfügen") hat den Nachteil, daß beim Einfügen ein
  <Enter> angefügt wird. Man kann die Zeile daher nicht nach-editieren.

* Die in CLISP.MAN und READLINE.DVI erwähnten Editiermechanismen funktionieren
  jedoch.

#endif
#ifdef AMIGAOS

Anmerkung:
----------

Sie können CLISP von der Workbench(r) aus starten. Die folgenden Anwendungs-
parameter des Anwendungs-Piktogrammes werden erkannt:

   WINDOW=<Spezifikation eines Fensters oder eines Kanals>
   ARGS=<Argumente wie beim Kommandozeilen-Aufruf>

Beispielsweise

   WINDOW=CON:0/11/640/200/CLISP-interaktiv
   ARGS=-M lispinit.mem

#endif
#ifdef MSDOS

Der Editor:
-----------

Normalerweise ruft die Funktion ED von CLISP den Editor auf, den Sie in
config.lsp angegeben haben. Nach Ausführung von

    (load "editor")

ruft sie dagegen den eingebauten Bildschirmeditor auf. Er erinnert ein wenig
an Emacs: Sie können aus dem Editor heraus Lisp-Ausdrücke auswerten, und das
Ergebnis wird in den Editor-Puffer eingefügt. Den vollen Befehlssatz ersehen
Sie durch Drücken von Alt-H.
#if defined(EMUNIX_PORTABEL) && defined(EMUNIX_OLD_8e)

Beachten Sie: Damit der Editor korrekt funktioniert, müssen Sie eine Zeile wie

    DEVICE=ANSI.SYS

in Ihrer Datei CONFIG.SYS haben. Außerdem muß die Umgebungs-Variable TERM
gesetzt sein, und die Umgebungs-Variable TERMCAP muß den Pfadnamen der
Datenbank von Terminal-Beschreibungen enthalten, wobei \ durch / zu ersetzen
ist. Es ist wohl nicht schlecht, diese Sachen in das oben erstellte clisp.bat
zu schreiben:

    set TERM=ansi
    set TERMCAP=c:/emx/etc/termcap.dat

"ansi-color-2" statt "ansi" sieht auch gut aus.
#endif

#endif

Wenn's Probleme gibt:
---------------------

#ifdef EMUNIX
Sollte clisp überhaupt nicht gestartet werden können, konsultieren Sie
EMX-USER.DOC. lisp.exe ist eine EMX-Anwendung. Was dort über EMX-Anwendungen
gesagt wird, trifft auch auf lisp.exe zu.

#endif
Bei Errors befindet man sich im Debugger:

     1. Break> _

Hier kann man wie üblich Formen auswerten.
Außerdem:

     Help
               ruft Hilfestellung an.
     Abort     oder
     Unwind
               steigt hoch in die nächsthöhere Hauptschleife.
     Backtrace
               zeigt den Stackinhalt an. Das hilft bei der Fehlersuche.

Außerdem kann man sich die Werte der Variablen der Funktion anzeigen lassen,
in der der Fehler passierte.

Bei größeren Problemen, z.B. harten Abstürzen, bitte Fehlerbeschreibung
und reproduzierbare Vorgehensweise zur Erzeugung dieses Fehlers an die
Autoren senden. Bitte nennen Sie dabei auch die Version von CLISP; sie
erhalten sie durch Aufrufen von (lisp-implementation-version).


Mailing-Liste:
--------------

Für die Benutzer von CLISP gibt es eine Mailing-Liste. Sie ist das geeignete
Korrespondenz-Forum für Fragen betreffend CLISP, Installationsprobleme,
Fehlerbeschreibungen, Anwendungs-Pakete usw.

Information über die Liste und wie man sie abonniert erhalten Sie, wenn Sie
an listserv@ma2s2.mathematik.uni-karlsruhe.de eine Mail des folgenden Inhalts
schicken:
          help
          information clisp-list


Dank:
-----

#ifdef MSDOS
Wenn Sie CLISP schnell und fehlerfrei finden und damit arbeiten mögen, wären
wir über ein Geschenk von z.B. 40 DM (der Betrag steht Ihnen frei) dankbar.
Die meisten DOS-Programme kosten etwas; Sie sind das Bezahlen deswegen
vermutlich schon gewöhnt.

Wenn nicht, scheuen Sie sich nicht, uns Verbesserungsvorschläge zu schicken.
Oder holen Sie sich die Quellen von CLISP, verbessern Sie es selber und
schicken uns Ihre Modifikationen.

#endif
Wir schulden Dank
  * Guy L. Steele und vielen anderen für die Spezifikation von Common Lisp.
#ifdef UNIX
  * dem GNU-Projekt von Richard Stallman für GCC, Autoconf und die
    Readline-Bibliothek.
#else
#ifdef GNU_READLINE
  * dem GNU-Projekt von Richard Stallman für GCC und die Readline-Bibliothek.
#else
#ifdef GNU
  * dem GNU-Projekt von Richard Stallman für GCC.
#endif
#endif
#endif
#ifdef EMUNIX
  * Eberhard Mattes für EMX.
#endif


Autoren:
--------

        Bruno Haible                    Michael Stoll
        Augartenstraße 40               Gallierweg 39
    D - 76137 Karlsruhe             D - 53117 Bonn
        Deutschland                     Deutschland

Email: haible@ma2s2.mathematik.uni-karlsruhe.de
#ifdef AMIGAOS

Portierung für den Amiga:
-------------------------

        Jörg Höhle
        Radolfzeller Straße 3
    D - 78476 Allensbach
        Deutschland

Email: hoehle@inf-wiss.uni-konstanz.de
#endif

Wartung und Pflege:
-------------------

        Marcus Daniels

Email: marcus@ee.pdx.edu
#else /* englische Übersetzung */
This is CLISP, a Common Lisp implementation.


What is LISP?
-------------

LISP is a programming language. It was invented by J. McCarthy in 1959.
There have been many dialects of it, but nowadays LISP has been standardized
and wide-spread due to the industrial standard COMMON LISP. There are
applications in the domains of symbolic knowledge processing (AI), numerical
mathematics (MACLISP yielded numerical code as good as FORTRAN), and
widely used programs like editors (EMACS) and CAD (AUTOCAD).
There is an introduction to the language:

  Sheila Hughes: Lisp. Pitman Publishing Limited, London 1986.
  107 pages.

After a while wou will need the standard text containing the language
definition:

  Guy L. Steele Jr.: Common Lisp - The Language. Digital Press.
  1. edition 1984, 465 pages.
  2. edition 1990, 1032 pages.

This book is available in HTML form via FTP from
  ftp.cs.cmu.edu:/user/ai/lang/lisp/doc/cltl/cltl_ht.tgz  and
  ma2s2.mathematik.uni-karlsruhe.de:/pub/lisp/CLtL2/cltl_ht.tgz .

LISP is run in an interactive environment. You input forms, and they will be
evaluated at once. Thus you can inspect variables, call functions with given
arguments or define your own functions.


Contents:
---------

It consists of the following files:

#ifdef UNIX
#ifndef UNIX_BINARY_DISTRIB
   base/lisp.a          main program, to be linked
#endif
#ifdef UNIX_BINARY_DISTRIB
   base/lisp.run        main program
#endif
   base/lispinit.mem    memory image needed for startup
   doc/clisp.1          manual page in Unix man format
   doc/clisp.man        manual page
   doc/clisp.html       manual page in HTML format
   doc/impnotes.txt     implementation notes
   doc/cltl2.txt        notes about the relation of CLISP to CLtL2
#ifdef GNU_READLINE
   doc/clreadline.3     line editing manual page in Unix man format
   doc/clreadline.man   line editing manual page
#endif
   README               this text
   SUMMARY              short description of CLISP
   ANNOUNCE             announcement
   NEWS                 list of modifications since the last version
   COPYRIGHT            copyright notice
   GNU-GPL              free software license
   doc/readline.dvi     GNU readline library documentation
   src/config.lsp       site-dependent configuration

and - to your convenience, if you like reading source -

   src/*.lsp            the source of lispinit.mem
   src/*.fas            the same files, already compiled
#if !defined(UNIX_BINARY_DISTRIB) && defined(GNU_READLINE)

For building the executable, you also need:

   base/libreadline.a    GNU readline library

or

   base/libnoreadline.a  dummy replacement for the GNU readline library
#endif
#else /* !defined(UNIX) */
#ifdef AMIGAOS
      lisp.run         main program
#endif
#ifdef MSDOS
      lisp.exe         main program
#ifndef OS2
      lisp_1mb.exe     main program, use this one if you have
                       only 1 or 2 MB of RAM
#endif
#endif
#ifdef ATARI
      lisp.prg         main program
#endif
      lispinit.mem     memory image needed for startup
      clisp.1          manual page in Unix man format
      clisp.man        manual page
      clisp.html       manual page in HTML format
#ifdef MSDOS
      clisp.dvi        manual page in dvi format
#endif
      impnotes.txt     implementation notes
      cltl2.txt        notes about the relation of CLISP to CLtL2
#ifdef GNU_READLINE
      clreadline.3     line editing manual page in Unix man format
      clreadline.man   line editing manual page
#ifdef MSDOS
      clreadline.dvi   line editing manual page in dvi format
#endif
#endif
#ifdef EMUNIX
      emx-user.doc     emx applications user's guide
      emx-faq.doc      frequently asked questions about emx applications
#ifdef EMUNIX_PORTABEL
      emx.dll          OS/2 dynamic link library containing emx
      emxlibc.dll      OS/2 dynamic link library containing the emx libc
#ifdef EMUNIX_OLD_8e
      termcap.dat      terminal capabilities database
#endif
#endif
#endif
#if defined(MSDOS) && !defined(OS2)
      delay.exe        auxiliary program for running clisp under Windows
#endif
      README           this text
      SUMMARY          short description of CLISP
      ANNOUNCE         announcement
      NEWS             list of modifications since the last version
      COPYRIGHT        copyright notice
      GNU-GPL          free software license
      readline.dvi     GNU readline library documentation
      config.lsp       site-dependent configuration
#ifndef UNIX
      timezone.lsp     site-dependent time zone
#endif

and - to your convenience, if you like reading source -

      *.lsp            the source of lispinit.mem
#if !defined(MSDOS)
      *.fas            the same files, already compiled
#endif
#endif

#ifdef MSDOS

Hardware requirements:
----------------------

#ifndef OS2
This DOS version of CLISP requires an 80386 (SX or DX) or an 80486 CPU
and at least 1 MB of RAM.
#else
This OS/2 version of CLISP requires an 80386 (SX or DX) or an 80486 CPU,
running OS/2 2.0.
#endif

#endif
#ifdef ATARI

Hardware requirements:
----------------------

This Atari version of CLISP requires an Atari ST with 68000 CPU and
at least 2 MB of RAM.

#endif
#ifdef AMIGAOS

Hardware requirements:
----------------------

This Amiga version of CLISP requires at least 1.5MB RAM. The version
called CLISP-LOW runs on machines with no memory outside the 24 bit
addressable range: on 68000, A2620, A2630, and on the A3000 and A4000
in combination with NoFastMem. The version called CLISP-HIGH runs in
memory that is 28 bit addressable (address range #x00000000 to #x0FFFFFFF),
but only on machines with 68020/030/040 CPU (for example, A3000 and A4000
without special memory expansion cards).

#endif
#if defined(SINGLEMAP_MEMORY) && (defined(UNIX_LINUX) || !defined(HAVE_MMAP_ANON))

Software requirements:
----------------------

#ifdef UNIX_LINUX
#ifdef GENERATIONAL_GC
This version of CLISP requires Linux 1.1.52 or newer.
#else
This version of CLISP requires Linux 0.99.7 or newer.
#endif
#endif
#if !defined(HAVE_MACH_VM) && !defined(HAVE_MMAP_ANON) /* impliziert HAVE_MMAP_DEVZERO */
/dev/zero must be readable by everyone. You may execute a "chmod a+r /dev/zero"
to ensure this.
#endif

#endif

Installation:
-------------

#ifdef OS2
First of all, install emx.dll and emxlibc.dll in a separate directory,
say c:\emx\dll. Add c:\emx\dll (insert the correct drive letter)
to the LIBPATH statement in your config.sys file. Reboot your computer
to enable the new LIBPATH statement and the new environment variables.

#ifdef EMUNIX_OLD_8e
You may also want to install termcap.dat in a separate directory,
say c:\emx\etc.

#endif
#endif
#ifdef UNIX
#ifndef UNIX_BINARY_DISTRIB
Type

         cd base
         cc lisp.a libnoreadline.a -ltermcap -s -o lisp.run
         cd ..

or - if you prefer having GNU readline's input editing capabilities -

         cd base
         cc lisp.a libreadline.a -ltermcap -s -o lisp.run
         cd ..

to build the executable against your C library.

#endif
Change the strings in src/config.lsp, using a text editor.
#else
Edit the contents of config.lsp appropriately for your site,
especially the definitions of short-site-name and long-site-name.
You may also want to edit the time zone definition at the end of
timezone.lsp.
#endif
Then start

#ifdef MSDOS
         lisp.exe -M lispinit.mem
#endif
#ifdef ATARI
         lisp.prg -M lispinit.mem
#endif
#ifdef AMIGAOS
         lisp.run -M lispinit.mem
#endif
#ifdef UNIX
         base/lisp.run -M base/lispinit.mem
#endif

When the LISP prompt

      > _

appears, type

#ifdef UNIX
        (compile-file "src/config")
        (load "src/config")
#else
        (compile-file "config")
        (load "config")

and - in case you modified timezone.lsp -

        (compile-file "timezone")
        (load "timezone")
#endif

and then

#ifdef UNIX
        (cd "base/")
#endif
        (saveinitmem)

to overwrite the file lispinit.mem with your configuration. Then

        (exit)

#ifdef UNIX
The rest is done by a simple

        make install

Instead, you may do this yourself, step by step:

#endif
Then create a directory, and put the executable and the memory image there.
#ifdef UNIX
I would suggest /usr/local/lib/lisp :

   mkdir /usr/local/lib/lisp
   mv base/lisp.run /usr/local/lib/lisp
   mv base/lispinit.mem /usr/local/lib/lisp
#endif
#ifdef MSDOS
Assuming D:\LIB\LISP :

   mkdir d:\lib\lisp
   copy lisp.exe d:\lib\lisp
   copy lispinit.mem d:\lib\lisp
#endif

#ifdef MSDOS
And create a batch file that starts lisp:

#ifndef OS2
   copy con c:\bat\clisp.bat
#else
   copy con c:\cmd\clisp.cmd
#endif
   d:\lib\lisp\lisp.exe -M d:\lib\lisp\lispinit.mem %1 %2 %3 %4 %5 %6 %7 %8 %9
   [Ctrl-Z]
#endif
#ifdef UNIX
And create a shell script that starts lisp:

   cat > /usr/local/bin/clisp
#ifndef UNIX_BROKEN_SH
#ifdef UNIX_USE_KSH
   #!/bin/ksh
#else
   #!/bin/sh
#endif
   exec /usr/local/lib/lisp/lisp.run -M /usr/local/lib/lisp/lispinit.mem "$@"
#else
   #!/bin/sh
   if test $# = 0; then
     exec /usr/local/lib/lisp/lisp.run -M /usr/local/lib/lisp/lispinit.mem
   else
     exec /usr/local/lib/lisp/lisp.run -M /usr/local/lib/lisp/lispinit.mem "$@"
   fi
#endif
   [Ctrl-D]EOF
   chmod a+x /usr/local/bin/clisp

#ifdef GNU_READLINE
Now install the man pages
#else
Now install the man page
#endif

   mv doc/clisp.1 /usr/local/man/man1/clisp.1
#ifdef GNU_READLINE
   mv doc/clreadline.3 /usr/local/man/man3/clreadline.3
#endif

and try

   man clisp
#endif

#if defined(MSDOS) && !defined(OS2)

Installation under Microsoft Windows:
-------------------------------------

CLISP also runs in the DOS box of Microsoft Windows 3.1.
To achieve this, the following additional steps are necessary:

1. Get and install
     ma2s2.mathematik.uni-karlsruhe.de:/pub/lisp/clisp/dos/clisp-english.zip
   as described above.

2. Get and install RSX in, for instance, c:\rsx.
     ftp.uni-bielefeld.de:/pub/systems/msdos/misc/dpmigcc4.zip
     ftp.shsu.edu:/tex-archive/systems/msdos/dpmigcc/dpmigcc4.zip

3. Call the PIF editor and input the following:

   Program:                c:\rsx\bin\rsx.exe c:\lib\lisp\lisp.exe
   Program title:          COMMON LISP
   Program parameters:     -M c:\lib\lisp\compiled.mem
   Start directory:        e:\lisp  (or whatever)
   Screen:                 Text
   Memory requirements:    requires:  500      maximum:  640
   EMS memory:             requires:    0      maximum:    0
   XMS memory:             requires: 1024      maximum:   -1
   Display:                [as you like]
   Quit_closes_window:     [as you like]
   Execution:              [as you like]
   other_options:          [as you like]

   (You will probably choose the directory which contains your lisp programs
   as start directory, instead of e:\lisp.)

   Save it under the name WINCLISP.PIF.

4. In the program manager, in a suitable group:

   Menu "File" -> "New" -> "Program", window "program properties".
   Input there:

   Description:            COMMON LISP
   Command line:           winclisp.pif
   Start directory:        e:\lisp
   Key combination:        Ctrl+Alt+Shift+L      [as you like]

Clicking with the mouse on the such created icon or pressing the key
combination given above in the program manager will now start CLISP.

Remarks:

* Cut & Paste in DOS boxes (via menu "Edit" -> "Mark" resp.
  menu "Edit" -> "Insert") inserts an <Enter> at the end. Therefore one
  cannot re-edit a pasted line.

* But the editing facilities mentioned in CLISP.MAN and READLINE.DVI work.

#endif
#ifdef AMIGAOS

Note:
-----

You can start CLISP from Workbench(tm). The following Tooltypes are
recognized in the Tool Icon:

   WINDOW=<window or pipe specification>
   ARGS=<CLI-like arguments>

For example,

   WINDOW=CON:0/11/640/200/CLISP-Listener
   ARGS=-M lispinit.mem

#endif
#ifdef MSDOS

The editor:
-----------

Normally CLISP's ED function calls the editor you specified in config.lsp.
However, after you did

    (load "editor")

it invokes a builtin screen editor. It is a bit Emacs-like: you can evaluate
lisp expressions from within the editor, and the result is pasted into the
editor buffer. Type Alt-H to see the full set of commands.
#if defined(EMUNIX_PORTABEL) && defined(EMUNIX_OLD_8e)

Note that for the editor working properly, it is necessary that you have
a line like

    DEVICE=ANSI.SYS

in your CONFIG.SYS file. Furthermore the environment variable TERM must
be set, and the environment variable TERMCAP must contain the slashified
file name of the terminal capabilities database termcap.dat. It is a good
idea to put this stuff into the clisp.bat built above:

    set TERM=ansi
    set TERMCAP=c:/emx/etc/termcap.dat

`ansi-color-2' instead of `ansi' looks nice, too.
#endif

#endif

When you encounter problems:
----------------------------

#ifdef EMUNIX
If clisp doesn't start up at all, check EMX-USER.DOC. lisp.exe is an EMX
application, so everything mentioned there applies to lisp.exe.

#endif
After errors, you are in the debugger:

     1. Break> _

You can evaluate forms, as usual. Furthermore:

     Help
               calles help
     Abort     or
     Unwind
               climbs up to next higher input loop
     Backtrace
               shows the contents of the stack, helpful for debugging

And you can look at the values of the variables of the functions where the
error occurred.

#ifdef UNIX
On bigger problems, e.g. core dumps, please send a description of the error
#endif
#ifdef ATARI
On bigger problems, e.g. bombs, please send a description of the error
#endif
#ifdef AMIGAOS
On bigger problems, e.g. "guru"s, please send a description of the error
#endif
#ifdef MSDOS
On bigger problems, e.g. register dumps, please send a description of the error
#endif
and how to produce it reliably to the authors or the maintainer. Please
accompany it with the CLISP version, which you get by calling
(lisp-implementation-version).


Mailing List:
-------------

There is a mailing list for users of CLISP. It is the proper forum for
questions about CLISP, installation problems, bug reports, application
packages etc.

For information about the list and how to subscribe it, send mail to
listserv@ma2s2.mathematik.uni-karlsruhe.de, with the two lines
          help
          information clisp-list
in the message body.


Acknowledgement:
----------------

#ifdef MSDOS
If you find CLISP fast and bug-free and you like using it, a gift of $25
(or any amount you like) will be appreciated. Most DOS software costs
something, so you will probably already be used to paying.

If not, feel free to send us suggestions for improvement. Or grab the
source of CLISP, improve it yourself and send us your patches.

#endif
We are indebted to
  * Guy L. Steele and many others for the Common Lisp specification.
#ifdef UNIX
  * Richard Stallman's GNU project for GCC, Autoconf and the readline library.
#else
#ifdef GNU_READLINE
  * Richard Stallman's GNU project for GCC and the readline library.
#else
#ifdef GNU
  * Richard Stallman's GNU project for GCC.
#endif
#endif
#endif
#ifdef EMUNIX
  * Eberhard Mattes for EMX.
#endif


Authors:
--------

        Bruno Haible                    Michael Stoll
        Augartenstraße 40               Gallierweg 39
    D - 76137 Karlsruhe             D - 53117 Bonn
        Germany                         Germany

Email: haible@ma2s2.mathematik.uni-karlsruhe.de
#ifdef AMIGAOS

Amiga Port by:
--------------

        Jörg Höhle
        Radolfzeller Straße 3
    D - 78476 Allensbach
        Germany

Email: hoehle@inf-wiss.uni-konstanz.de
#endif

Maintainer:
-----------

        Marcus Daniels

Email: marcus@ee.pdx.edu
#endif /* DEUTSCH / ENGLISH */
