(*********************************************************************
 *
 *  :Project.    Nahverkehrssystem
 *  :Author.     Ingo Goldak
 *  :Address.    Hohenzollerndamm 8
 *  :Address.    1000 Berlin 31
 *  :Copyright.  PD or Shareware
 *  :Language.   Modula-II
 *  :Translator. M2Amiga V3.3d
 *  :Contents.   Dokumentation zu Nahverkehrssystem
 *  :ModHistory. V1.0 [Ingo Goldak] 30.03.90
 *
 *********************************************************************)


Inhaltsverzeichnis


1. Installation

2. Projekt-Organisation

3. Grundlegende Ideen (Lernen beim Programmieren)

4. Benutzung

5. Daten

6. Erweiterungen

7. Einschränkungen


1. Installation

   Das Programm 'Nahverkehrssystem' ist sowohl aus dem CLI aus auch von der
   Workbench ohne Parameter oder Argumente ablauffähig. Zum Benutzen sollte eine
   Diskette mit mindestens 50 kByte Platz (entspricht ca. 100 Bahnhöfen) bzw.
   entsprechend viel Platz auf einer Festplatte vorhanden sein.
   Für jeden Bahnhof werden 412 Bytes auf Massenspeicher benötigt (358 Bytes
   für das Datenblatt und 54 Bytes für den Listeneintrag). Im RAM werden
   pro vorgesehenen Bahnhof (MAXNAMEN) 64 Bytes benötigt (54 Bytes für die
   alphabetische Liste der Bahnhofsnamen und 10 Bytes für die Datumsliste).
   Für das Programm und die Daten sollten ca. 250-300 kByte RAM frei sein;
   davon knapp 100 kByte Chip-Memory (Screen). Da Modula Parameter über den
   Stack austauscht, ist auf eine ausreichende Stack-Größe zu achten.
   Bestimmend hierfür ist die Datumsliste mit 10 Bytes pro vorgesehenen
   Bahnhof. Bei bis zu 1000 Bahnhöfen sollte der Stack ca. 40-50 KByte groß
   sein.


2. Projekt-Organisation

   Das Projekt wurde mit der Version 3.3d des Compilers übersetzt. Alle
   Importe müssen mit dieser Compiler-Version übersetzt sein. Die Hierarchie
   sieht folgendermaßen aus:
   a: Standard-Module [Module]
   b: Erweiterungen [AMOK]
   c: Werkzeuge
   d: Initializations, Hilfsmittel
   e: Datenblatt, Sortieren, Zeichnen, Listen, Diskette
   f: Nahverkehrssystem


3. Grundlegende Ideen (Lernen beim Programmieren)

   Das Programm ist ein spezielles Datenbankprogramm mit index-sequentiell
   organisiertem Datenaufbau. Index ist der Bahnhofsname; er wird sortiert
   in einer Liste gespeichert. Die übrigen Daten werden über diese Liste
   von der Diskette geladen, wenn sie benötigt werden. Die Daten auf Diskette
   sind nicht sortiert (Es ist nicht einmal sicher, daß sie in der Reihenfolge,
   in der sie eingegeben wurden, auf der Diskette stehen.)
   Der Disketten/Datenblatt-Teil zeigt die Verwendung der Dos-Routinen zur
   File-Bearbeitung.
   Der Sortier-Algorithmus ist nach der Methode binär/einfügen und in der
   Programmierung rekursiv (der Such-Teil).
   Andere Teile wurden direkt als Module übernommen bzw. leicht verändert:
   IFFSupport, FileRequest.


4. Benutzung

   Nach dem Start wird ein neuer weißer Screen mit dem Hinweis 'keine Stadt
   gewählt' in der Titelzeile geöffnet.
   Als erstes muß eine Stadt, für die das Netz bearbeitet werden soll
   ausgewählt werden. Dies ist ein eigenes Directory, das bei Bedarf neu
   angelegt wird. Danach können die Farben abweichend von der Standard-
   Einstellung mit der Maus festgelegt werden (Die Farbflächen sind Gadgets
   und rufen einen Farbeinstell-Requester auf). Diese Einstellungen werden
   in einem File '.colors' gespeichert und künftig bei Wahl dieser Stadt
   geladen. Wenn bereits Bahnhöfe eingegeben sind, dauert es jetzt einige
   Zeit bis der Mauszeiger wieder erscheint. Hier wird die alphabetische Liste
   der Bahnhofsnamen zum schnellen Auffinden der Bahnhöfe in den Speicher
   geladen (File 'Bahnhofsnamen').

   Nun gibt es zwei Möglichkeiten: entweder können Bahnhofsdaten editiert
   werden oder es werden Netzpläne erstellt/betrachtet.

   Wenn editiert wird (Datenblatt/Laden), muß ein veränderter Datensatz
   explizit mit 'Speichern' (oder auch 'Bahnhof kopieren') gespeichert werden;
   es gibt keine Warnung, wenn nach 'Ändern/Eingabe' ein anderer Menüpunkt
   gewählt wird! Beim Editieren bedeutet eine schraffierte Fläche, daß die
   Eingabe mit <CR> abgeschlossen werden muß; ein Fragezeichen erwartet
   nur ein Zeichen als Eingabe (ohne <CR>).
   Ein anderer wichtiger Hinweis betrifft Eindeutigkeiten:
   a) Bahnhofsnamen müssen eindeutig sein; dies kontrolliert das Programm
      selbst, sollte aber vor dem Aufbau der Datensätze bedacht werden.
   b) Die Koordinaten der Bahnhöfe müssen zu jedem Zeitpunkt eindeutig sein.
      (Zu verschiedenen Daten (Zeiten) können sie auch mehrdeutig sein.) Dies
      kontrolliert das Programm nicht; beim Zeichnen kann an jedem Punkt
      jedoch nur ein Bahnhof sein (Maus-Auswahl, vgl. unten).
   Für das Programm sind folgende Daten aus dem Datenblatt wichtig:
   - alle 6 Positionen in Bildschirmkoordinaten
   - Eröffnungs- und Schließdatum (auf Eingabe-Format achten!)
   - Neue Linienbezeichnung (entspricht der Farbe der Darstellung)
   Alle anderen Daten sind zur Information des Benutzers und haben zur Zeit
   keinen Einfluß auf den Programmablauf. (Die Bahnart ist als Kriterium
   vorgesehen.) Besonders sei aber darauf hingewiesen, daß Positionen, die
   nicht benötigt werden, auf die Position des Bahnhofes gesetzt werden
   sollten; auf keinen Fall aber auf 0/0! (Dies ist eine gültige
   Verknüpfungsposition.)

   Wenn Netze des Verkehrssystems zu bestimmten Daten ausgegeben werden
   (Zeichnen), muß vorher nach Eröffnungsdaten sortiert werden
   ('Sortieren/Eröffnungsdaten'). Der andere Menüpunkt 'Sortieren/Bahnhofsnamen'
   ist bei normalem Verlassen des Programmes unnötig, da diese Liste beim
   Editieren der Datensätze ständig aktualisiert wird und bei Bedarf
   (Wechsel der Stadt oder Verlassen des Programmes) gespeichert wird.
   Wenn jedoch der Guru zum Leben erweckt wurde, müssen die Bahnhofsnamen
   (wenn Editiert wurde) vor einem erneuten Editieren explizit sortiert werden,
   weil die Liste auf der Diskette dann nicht mehr mit den gespeicherten Daten
   übereinstimmt und der Datenaufbau durcheinander geraten könnte.
   Nach dem Aufbau des Netzplanes können mit der Maus Informationen zu den
   Bahnhöfen abgerufen werden. Hierzu muß der Bahnhof mit der linken Maustaste
   angeklickt werden (genau positionieren!). Um diesen Modus zu beenden, muß
   die linke Maustaste am unteren Bildschirmrand gedrückt werden. Wenn man sich
   nicht sicher ist, ob man noch im Nachfrage-Modus ist, drückt man die rechte
   Maustaste; erscheint am oberen Bildschirmrand nur ein schwarzer Streifen,
   befindet man sich noch im Nachfrage-Modus; erscheint die Menü-Zeile, ist
   dieser Modus beendet. Wenn 'Drucker' gewählt wurde, wird nach dem
   Nachfrage-Modus ein Screen-Dump ausgeführt. Die Parameter hierzu müssen mit
   dem Standard-Programm 'Preferences' (Workbench) eingestellt werden. Hinterher
   kann die Grafik mit 'Diskette/Bild speichern' unter dem Referenz-Datum als
   File-Name gespeichert werden. Als Bilder dürfen nur Gleispläne geladen
   werden ('Diskette/Bild laden'), die mit 'Diskette/Bild speichern' erstellt
   wurden. (Das Programm prüft nicht, ob es sich um ein IFF-File handelt, ob
   die Bildschirmauflösung mit dem File übereinstimmt usw.) Zur Zeit ist dies
   nur eine ShowIFF-Funktion. Selbstverständlich können die gespeicherten
   Bilder aber als Grundlage für andere Grafikanwendungen dienen.
   Noch ein Tip: Wenn während des Nachfrage-Modus einzelne Linien ausgeblendet
   werden sollen, bietet sich das Palette-Tool von der Workbench 1.3 an. (Es
   ändert nur die Bildschirmdarstellung aber nicht das gespeicherte File
   '.colors'.)


5. Daten

   Bei umfangreichen Datensammlungen kann es sehr aufwendig sein, die Daten
   einzugeben. Für Berlin verschicke ich diese Daten für 15,-- DM incl.
   Diskette plus Porto. (Adresse siehe oben)


6. mögliche Erweiterungen (wann ist ungewiß, vielleicht kann Geld
                           mich motivieren ?!?)

   a) die Angabe der Directory beim Start des Programmes als Parameter (CLI
      und Workbench)
   b) das Speichern der Request-Informationen zu den Netz-Bildern
   c) ein Splitten der Netzdarstellung in die verschiedenen Verkehrsmittel
   d) der langweilige weiße Screen am Anfang wird vielleicht durch eine Grafik
      verschönert
   e) der File-Requester für Bilder wird nur noch Files anzeigen, die vom
      Namen und Zusatz-Daten her Bilder sein können (hier kann man dann auch
      kein anderes (tieferes) Directory mehr erreichen)
   f) eine Kontrolle, ob die Liste der Bahnhofsnamen neuer als der neueste
      Datensatz ist (selbstständiges Sortieren nach Absturz)
   g) Editieren der Tiefenlage (REAL-Zahl)
   h) ein 'Reset'-Gadget für die Farbauswahl
   i) verbesserte Laufzeit-Einbindung (Screen schließen)
   j) Wegfall von MAXNAMEN und Aufbau der Listen als POINTER-Listen
   k) Verwendung von FileSystem statt Dos
   l) weitere Datensammlungen (Hamburg, Paris, ...)
   m) automatische Umrechnung von Entfernungs- in Bildschirmkoordinaten
   n) ???


7. Einschränkungen

   Die Anzahl der Bahnhöfe ist zur Zeit auf 1000 Elemente begrenzt (MAXNAMEN
   in  Werkzeuge.def). Diese Zahl kann vergrößert oder verkleinert werden;
   dabei muß berücksichtigt werden, daß das File 'Bahnhöfe' nicht länger als
   MAXLONGCARD werden kann (fernere Positionierung nicht möglich). Außerdem
   bestimmt diese Zahl den Speicherplatzbedarf (64 Byte pro Bahnhof, vgl.
   oben). Die Anzahl der farblich darstellbaren verschiedenen Linien ist durch
   den verwendeten Grafikmodus und die dazugehörige maximale Farbanzahl auf
   15 Linien plus Hintergrundfarbe begrenzt.
