						install.dok     30.07.91

		 Installation des PASCAL-XSC nach C Compilers
		 ============================================

1.1 Falls das PASCAL-XSC nach C System auf dem Zielrechner noch nicht
    existiert (Erstinstallation), dann richte ein directory, im folgenden
    SYSdir genannt, ein, welches alle Benutzer lesen duerfen, aber nicht
    schreiben. In dieses directory sollen die Dateien in Anhang A.4.7
    kopiert werden.
    Aendere den Namen der Datei  p88rts.ii  in  p88rts.i

1.2 Falls das PASCAL-XSC nach C System schon auf dem Zielrechner existiert,
    dann rette fuer Vergleichszwecke die Dateien
	defs.h,  p88rts.h, p88rts.i,  depend.c,
	stdmod.p,

1.3 Kopiere alle Quelltextdateien des Compilers:  *.c  *.h  und  *.t
    auf den Zielrechner (z.B. ins directory src).

1.4 Kopiere alle anderen Dateien moeglichst in ein anderes Directory
    (z.B. cfg). Falls  p88rts.i  nicht existiert, nenne  p88rts.ii  um
    in  p88rts.i

1.5 Gehe ins Compiler-directory, zB: cd ../src



2. Installation des Konfigurationsprogramms p88cfg:
2.1. Kopiere p88cfg.c, p88cfg.h, p88hlp.h und p88hlp.c moeglichst in ein
     anderes Directory (z.B. cfg).

2.2. Editiere defs.h im Compiler-directory:
2.2.1 LINT_ARGS darf nicht definiert sein, wenn der verwendete C-Compiler
      new-style prototypes nicht kennt.
      IBMva muss definiert sein, wenn AIX verwendet wird.
      IBMva darf nicht definiert sein, wenn ein ANSI-Standard-C-Compiler
      verwendet wird.
      Wenn der C-Compiler variable Argumentlisten nicht kennt,
      wenden Sie sich an Rolf Hammer.

2.2.2 Passe "PATHchar" an das jeweilige Betriebssystem an.
2.2.3 Waehle als "SYSdir" das Directory, in dem die Konfigurationsdatei
      p88.env fuer alle Benutzer liegen soll. "SYSdir" muss mit PATHchar
      abgeschlossen sein, z.B. "/pxsc/sys/" in UNIX.
2.2.4 Waehle als "USRdir" das Directory, in dem die individuelle
      Konfigurationsdatei p88.env  des jeweiligen Benutzers liegen soll,
      z.B.  /pxsc/ in UNIX.  "USRdir" muss mit PATHchar abgeschlossen sein.
      Es wird automatisch der Wert der environment-Variablen $HOME
      vorangestellt, falls $HOME definiert ist.
      Das directory "USRdir" bzw. "$HOME konkateniert USRdir" muss nicht
      existieren.

    Erlaeuterungen zu p88.env, siehe auch envir.dok:
    Die Datei p88.env enthaelt default-Optionen, Typnamen von Dateien,
    Pfadnamen und anderes.
    Der Compiler pxsc sucht die Datei p88.env (und andere) zunaechst im
    current directory. Existiert p88.env dort nicht, dann sucht er im
    "USRdir". Existiert p88.env dort auch nicht, dann sucht er im
    "SYSdir". Existiert p88.env dort auch nicht, dann setzt er Default-Werte.

    Hinweis: "USRdir" und "SYSdir" koennen auch im ausfuehrbaren Code von
    p88cfg, pxsc, mxsc, dxsc geaendert (patch) werden.
    "USRdir" kann auch mittels der environment-Variablen PXSC_USR definiert
    werden. PXSC_USR wird  n i c h t  mit $HOME konkateniert.
    "SYSdir" kann auch mittels der environment-Variablen PXSC_SYS definiert
    werden.
    PXSC_USR UND PXSC_SYS muessen mit einem "PATHchar" (siehe 2.2.2) enden,
    falls sie definiert sind, z.B.    setenv PXSC_SYS "/pxsc/sys/"

    PXSC_USR kann von jedem Benutzer individuell definiert werden, falls er
    eine PASCAL-XSC-Konfiguration wuenscht, die sich von der Konfiguration
    der anderen Benutzer unterscheidet.
    PXSC_SYS soll ausschliesslich vom Systemverwalter fuer alle Benutzer
    definiert werden, falls der Wert von "SYSdir" im ausfuehrbaren
    Code des Compilers und p88cfg nicht veraendert werden kann.

2.3 Ist die Dateinamenskonvention des jeweiligen Betriebssystems anders
    als die von Unix, DOS oder VMS, dann muss sysutil.c und p88cfg.c
    angepasst werden.

2.4 Kopiere p88cfg.h, sysutil.h und defs.h in das directory von p88cfg.c
    oder verwende in UNIX das "ln"-Kommando.
    Gehe in dieses directory, z.B.: cd ../cfg

2.5 Compiliere  p88cfg.c  und  p88hlp.c
2.6 Linke  p88cfg  und  p88hlp. In UNIX z.B. mit:  cc p88cfg.o p88hlp.o

2.7 Kopiere das erzeugte Programm p88cfg in ein Directory, welches im
    Kommandopfad enthalten ist.
2.8 Kopiere die Datei cxsc.hlp in das directory "SYSdir".
2.9 Fuehre das aus p88cfg.c erzeugte Programm p88cfg in dem directory
    SYSdir aus.
    Passe mittels p88cfg die Default-Einstellungen an die Umgebung an.

2.9.1  Die commandline option "rename" muss defaultmaessig eingeschaltet
       sein ("+r").
       Die non-commandline option "remove" muss bei DOS eingeschaltet
       sein ("+rm") (siehe auch 6.1).
       Die non-commandline option "proto" muss ausgeschaltet sein
       ("-proto"), wenn LINT_ARGS nicht definiert sein darf.
       Die non-commandline option "y" muss eingeschaltet sein (+y).

2.9.2  Die Typnamen muessen angepasst werden, z.B.:

				    fuer UNIX     fuer DOS
       Objektdatei:     Object    :      .o          .OBJ
       ausfuehrbares:   Executable:                  .EXE
       Bibliothek:      Library   :      .a          .LIB

2.9.3  Die Pfadname fuer interface-files soll leer sein und der Pfadname von
       p88rts.i ist mittels "+y" deaktiviert, d.h. automatisch auf SYSdir
       gesetzt.



3. Installation des pxsc Compilers:

3.1 Gehe ins Compiler-directory, z.B.  cd ../src

3.2 Pruefe, ob die Datei defs.h mit der gemaess 2.2 editierten Datei
    uebereinstimmt.

3.3 Compiliere und linke alle Module des Compilers zusammen, mit Ausnahme
    von p88cfg.c.
    Dies geschieht in UNIX mit dem Kommando    cc *.c
    Nenne das erzeugte Programm  pxsc

3.4 Kopiere den ausfuehrbaren Compiler pxsc in ein Directory, welches im
    Kommandopfad enthalten ist.

3.5 Als ersten Test starte pxsc ohne Parameter. pxsc gibt eine Liste der
    Compileroptionen mit den aktuellen Defaultwerten aus. Diese Defaultwerte
    koennen mittels p88cfg veraendert werden.
    Als zweiten Test starte pxsc mit   pxsc +v   und pruefe den Pfadname von
    p88.env und die Versionsnummer. Breche den Compiler mit BREAK oder EOF
    ab.




4. Kopiere p88rts.h ins SYSdir-Directory.
   Bei Erst-installation kopiere auch p88rts.ii unter dem Namen p88rts.i ins
   SYSdir-Directory und editiere dort p88rts.i: Der Pfadname der Datei
   p88rts.h soll leer sein oder muss den korrekten Pfadnamen enthalten, falls
   der C-Compiler p88rts.h nicht findet.
   Ergaenze (oder loesche) die System header files,    entspr. den
   Anforderungen des C-Compilers.



5. Editiere p88rts.h in SYSdir:
   LINT_ARGS und IBMva  siehe 2.2.1, Datei defs.h
   a_RETC darf geaendert werden.
   s_SIZE darf geaendert werden. Alle Module s_* des Laufzeitsystems muessen
	  dann neu uebersetzt werden.
   "a_real"  darf "double" sein.
   "a_real"  darf "struct {char r [8]}" sein, wenn keine
	     float-Operationen von C benutzt werden sollen.

   Falls der verwendete C-Compiler variable Argumentlisten nicht kennt,
   muessen y_inxc und y_inxn und y_suba geloescht werden. Es sind dann
   dynamische Arrays nur bis zu 3 Indizes moeglich;  Subarray-access und
   der Mengenkonstruktor [a,b] sind nicht moeglich.



6. Erstellung der Manager:

6.1 Gehe nach cfg und
    Editiere depend.h:
    Falls die Zielmaschine in der Liste der Systeme in depend.h enthalten
    ist, setze das entsprechende Flag auf 1 und das Flag, welches auf 1
    stand, auf 0.

6.2 Andernfalls editiere depend.c:

    Korrigiere alle Kommando-namen und Kommando-optionen.

    ok_retc muss 0 definiert sein, falls der returncode von Programmen
    nicht korrekt vom Betriebssystem behandelt wird. Dies ist bei DOS der
    Fall.
    In diesem Fall muss ausserdem die Non-commandline-option "remove"
    mittels p88cfg eingeschaltet sein und die commandline-option "code"
    darf nicht auf '+' gesetzt sein.

6.3 Manche C-Compiler kennen die "#elif"-Direktive nicht. In diese Fall
    loesche alle Zeilen, die die jeweilige Zielmaschine nicht betreffen,
    in depend.c und in depend.h

6.4 Uebersetze depend.c, dxsc.c und mxsc.c mit dem C-Compiler.

6.5 Binde mxsc mit depend und sysutil aus dem Compiler Directory, z.B. in
    UNIX mit dem Kommando in der Datei "mkm".

6.6 Nenne den ausfuehrbaren Code  mxsc
    und kopiere mxsc in ein Directory, welches im Kommandopfad enthalten
    ist.

6.7 Binde dxsc mit depend, p88hlp und sysutil aus dem Compiler Directory,
    z.B. in UNIX mit dem Kommando in der Datei "mkd".

6.8 Nenne den ausfuehrbaren Code  dxsc
    und kopiere dxsc in ein Directory, welches im Kommandopfad enthalten
    ist.

6.9 Kopiere die Datei dxsc.hlp in das directory "SYSdir".


7. Erstellung des Standardmoduls:

7.1 Waehle stdmods.p fuer die Software-emulation der 64-IEEE-Arithmetik
      oder stdmodh.p fuer die von C unterstuetzte real-Arithmetik.

7.2 Kopiere stdmods.p oder stdmodh.p nach stdmod.p im SYSdir-Directory
    und gehe nach SYSdir.

7.3 Editiere die Datei stdmod.p:
    Falls der C-Compiler die 64-Bit IEEE-Arithmetik unterstuetzt, koennen
    die Operatoren + - * / , die Vergleiche und sqrt durch Hardware-
    Operationen ersetzt werden. Hierzu werden die entsprechenden Pascal-
    Deklarationen dieser Operatoren und die Deklaration
    realconstantconversion in stdmod.p geloescht.
    Vorgehensweise: Waehle stdmodh.p und kopiere alle Operationen, die in
    C nicht vorhanden sind, aus stdmods.p nach stdmod.p.

    Aendere eventuell die Prozedur  "page".

7.4 Uebersetze stdmod.p mit "pxsc -m +n +r stdmod"

7.5 Uebersetze stdmod.c mit dem C-Compiler.

(7.4 und 7.5 kann auch mit dem Manager durchgefuehrt werden:
     mxsc -m +n +r stdmod

7.6 Loesche stdmod.p in SYSdir.



8. Erstellung des Standardmoduls iostd:

8.1 Kopiere iostd.p ins SYSdir-Directory und gehe nach SYSdir.

8.2 Uebersetze iostd.p mit "pxsc -m +n +r iostd"

8.3 Uebersetze iostd.c mit dem C-Compiler.

(8.2 und 8.3 kann auch mit dem Manager durchgefuehrt werden:
     mxsc -m +n +r iostd


9. Erstellung des Listinggenerators:

9.1 Editiere psclist.p: Passe die Dateinamen errtext1 und errmess1
    entsprechend  defs.h  aus dem Compiler directory an.
    errmess1 darf keinen Pfadnamen enthalten, denn errmess liegt im current
    directory.
    Passe ordtab (Tabulatorzeichen) an. Der Wert 9 gilt fuer ASCII.
    Definiere  full_listing als false.

9.2 Uebersetze psclist.p mit "pxsc psclist"

9.3 Uebersetze psclist.c mit dem C-Compiler.

9.4 Binde psclist mit stdmod, iostd und der Laufzeit-bibliothek.

(9.2 bis 9.4 kann auch mit dem Manager durchgefuehrt werden: "mxsc psclist")

9.5 Nenne den ausfuehrbaren Code  exsc
    und kopiere exsc in ein Directory, welches im Kommandopfad enthalten ist.

9.6 Kopiere die Datei errtext.hlp in das Directory SYSdir.

9.7 Wird in psclist.p die Konstante full_listing = true gesetzt, dann
    soll das ausfuehrbare Programm psclist heissen.

9.8 Definiere full_listing als true. Uebersetze psclist nochmals, nenne den
    ausfuehrbaren Code  psclist  und kopiere psclist in ein Directory,
    welches im Kommandopfad enthalten ist.


10. Korrigiere ordtab in l2p.p, siehe 9.1.
    Uebersetze l2p.p mit dem Kommando
      mxsc l2p
    und kopiere den ausfuehrbaren Code  l2p  in ein Directory,
    welches im Kommandopfad enthalten ist.


11. Erstellung aller Arithmetikmodule:

11.1 Kopiere alle Arithmetikmodule  c_ariaux.p  *_ari.p  moeglichst in ein
     anderes Directory, z.B. mod.

11.2 Uebersetze alle Module:

	mxsc -m i_ari
	mxsc -m c_ariaux
	mxsc -m c_ari
	mxsc -m ci_ari
	mxsc -m mv_ari
	mxsc -m mvi_ari
	mxsc -m mvc_ari
	mxsc -m mvci_ari

      Mit der Option "-m" werden die generierten Dateien *.h und *.c
      verkleinert.

11.3 Kopiere alle generierten Interface-Dateien  *.mod , Header Dateien  *.h
     und Objektdateien  *.o  nach SYSdir, in UNIX z.B. mit dem Kommando

       mv  *.mod *.h *.o  /pxsc/sys



12.  Erstellung von Bibliotheken aus Pascal-modulen:

12.1 Uebersetze das Pascalprogramm  splitmod.p  mit dem Kommando
       mxsc splitmod
     und kopiere den ausfuehrbaren Code  splitmod  in ein Directory,
     welches im Kommandopfad enthalten ist.

12.2 mod2lib ist eine Bourne-Shell-Prozedur fuer UNIX-Systeme.
     Uebersetze mod2lib in die Kommandosprache des jeweiligen
     Betriebssystems.

12.3 Kopiere mod2lib in ein Directory, welches im Kommandopfad enthalten ist.

12.4 Anwendung von mod2lib z.B. mit dem Kommando:
	mod2lib i_ari
     Das Directory, in welchen dies geschieht, darf keine anderen Module
     enthalten, sonst scheitert die C-Uebersetzung.
     Kopiere die erzeugte Bibliothek i_ari.a in das directory, in dem sich
     i_ari.mod befindet. Falls das Linken eines Pascalprogramms mit i_ari.a
     erfolgreich war, kann die Objektdatei i_ari.o geloescht werden.



13. Erstellung des Discompilers:

13.1 Editiere dismod.c: LINT_ARGS siehe 2.2.1

13.2 Compiliere und binde dismod.c

13.3 Nenne den ausfuehrbaren Code dismod und kopiere dismod in ein
     Directory, welches im Kommandopfad enthalten ist.





				     Anhang
				     ======

A.1  Quelldateien, die nicht zu den Compilersources gehoeren:

src    p88all        Compilierung aller Compiler sources
src    lx            Compiler link Kommando

cfg    p88cfg.c      Configurationsprogramm
cfg    p88hlp.c      Online-help Modul
cfg    p88hlp.h      Online-help Modul
sys    cxsc.hlp      Hilfedatei zum Configurationsprogramm
sys    p88.env       Beschreibung der Compilerkonfiguration. Wird vom
		     Programm p88cfg erzeugt.

sys    p88rts.ii     C-include file mit weiteren include Directiven.
sys    p88rts.h      C-include file mit Interface zwischen Compiler und
		     Runtime

cfg    stdmods.p     Pascal-Standardmodul mit Runtime-routinen, die nicht in
		     p88rts.h enthalten sind (software emulation von real)
cfg    stdmodh.p     Pascal-Standardmodul fuer C-real-Arithmetik (hardware)
cfg    iostd.p       Weitere Ein/Ausgaberoutinen

cfg    mxsc.c        Batch Managerprogramm
cfg    depend.c      System-abhaengigkeiten des Managerprogramms
cfg    depend.h      System-abhaengigkeiten des Managerprogramms
cfg    mkm           Makefile zum Batch Manager fuer UNIX

cfg    dxsc.c        interaktives Managerprogramm
sys    dxsc.hlp      Hilfedatei zum interaktiven Managerprogramm
cfg    mkd           Makefile zum Dialog Manager fuer UNIX

cfg    psclist.p     Listinggenerator
sys    errtext.hlp   Klartext-Fehlermeldungen
cfg    l2p.p         Programm zur Umwandlung von Listing in Sourcefile.

cfg    splitmod.p    Programm zur Aufspaltung eines PASCAL-XSC moduls.
cfg    mod2lib       Shell-procedure zum Erzeugen einer Bibliothek
		     aus einem Pascalmodul.

cfg    mvmod         Kopiert ein Modul in ein anderes directory.
cfg    dismod.c      Programm zum Lesen von Interface-Dateien .mod

cfg    install.dok   dieses Dokument



A.2  Uebertragung eines bereits installierten P88-Systems:

	Kopiere (Dateinamen von UNIX)

x    pxsc            Compiler
y    p88.env         Beschreibung der Compilerumgebung
x    mxsc            Batch Manager
x    dxsc            Dialog Manager
x    exsc            Listing-generator (kurz)
y    errtext.hlp     Klartext-Fehlermeldungen
x    psclist         Listing-generator (lang)
x    l2p             Programm zur Umwandlung von Listing in Sourcefile.
x    p88cfg          Configurationsprogramm
y    p88cfg.hlp      Hilfedatei zum Configurationsprogramm
y    dxsc.hlp        Hilfedatei zum Manager
x    splitmod        Programm zur Aufspaltung eines PASCAL-XSC moduls.
x    mod2lib         Shell-procedure zum Erzeugen einer Bibliothek aus einem
		     Pascalmodul.
x    mvmod           Kopiert ein Modul in ein anderes directory.
x    dismod          Programm zum Lesen von Interface-Dateien .mod

y    p88rts.i
y    p88rts.h
l    rts.a           Laufzeit-Bibliothek

y    stdmod.o        Uebersetztes Standardmodul
y    stdmod.h
y    stdmod.mod
y    iostd.p         Standard-I/O
y    iostd.o
y    iostd.h
y    iostd.mod

y    c_ariaux.o      Alle uebersetzten Arithmetik-Module
y    c_ariaux.h
y    c_ariaux.mod
y    *_ari.o
y    *_ari.h
y    *_ari.mod

     Definiere die Environment-Variablen PXSC_SYS und PXSC_EDIT


A.3  Kopiere bzw. rette fuer Wartungszwecke das directory cfg


A.4  Vorgeschlagene directory Struktur fuer UNIX:

     Das gesamte PASCAL-XSC-System soll in ein directory namens
     "pxsc" gespeichert werden.  pxsc soll die subdirectories

	   src  cfg  bin  rts  lib  mod  sys

     haben.

A.4.1  pxsc/src
       src soll alle Compilersources enthalten:

	*.c  *.h  *.t  *.o

       Dieses Directory soll Leseschutz haben oder nach der Installation
       geloescht werden.

A.4.2  pxsc/cfg
       cfg soll alle Quelltexte ausser den Compiler- und
       Runtime-quelltexten enthalten:

	p88cfg.c   p88hlp.c   depend.c   mxsc.c  mkm    stdmods.p    iostd.p
	p88cfg.h   p88hlp.h   depend.h   dxsc.c  mkd    stdmodh.p    psclist.p
	l2p.p      splitmod.p mod2lib    dismod.c   install.dok

       Dieses Directory soll Leseschutz haben.

A.4.3  pxsc/bin
       In UNIX  werden ausfuehrbare Programme ueblicherweise in ein
       directory namens  bin  gespeichert.
       pxsc/bin soll enthalten:

	  pxsc  mxsc  dxsc  p88cfg
	  exsc  psclist   l2p
	  splitmod  mod2lib dismod  mvmod

       Dieses directory und alle seine Dateien muessen fuer alle Benutzer
       "execution permission", aber kein "read permission" haben.
       Ausserdem muss "pxsc/bin" im Suchpfad (environment variable PATH)
       jedes Benutzers enthalten sein.

A.4.4  pxsc/rts
       rts soll die Quelltexte des Runtime-Systems enthalten,
       einschliesslich  p88rts.h.   Stelle sicher, dass  pxsc/rts/p88rts.h
       und pxsc/sys/p88rts.h  uebereinstimmen.
       Dieses Directory soll Leseschutz haben oder nach der Installation
       geloescht werden.

A.4.5  pxsc/lib
       lib  soll das bindbare Runtime system  rts.a  enthalten.
       pxsc/lib und pxsc/lib/rts.a  muessen fuer alle Benutzer
       "read permission", aber kein "write permission" haben.

A.4.6  pxsc/mod
       mod soll die Pascal-quellen aller Arithmetikmodule enthalten:

	 c_ariaux.p   *_ari.p

       Dieses Directory soll Leseschutz haben oder nach der Installation
       geloescht werden.

A.4.7  pxsc/sys
       sys ist das Systemdirectory SYSdir (siehe 1.1 und 2.2) und soll
       enthalten

	 p88.env   errtext.hlp   cxsc.hlp   dxsc.hlp   p88rts.h   p88rts.i
         info.txt  o_msg1.h      patterns.bin
	   stdmod.mod   stdmod.h   stdmod.o
	    iostd.mod    iostd.h    iostd.o
	 c_ariaux.mod c_ariaux.h c_ariaux.o

       und alle anderen Arithmetikmodule

	    *_ari.mod    *_ari.h    *_ari.o

       pxsc/sys und alle seine Dateien  muessen fuer alle Benutzer
       "read permission", aber kein "write permission" haben.

       pxsc/sys soll keine Pascal- oder C-quelltexte enthalten, mit
       Ausnahme der headerfiles der Pascal-module.
