     _____________________________________________________________________
     _____________________________________________________________________

     #########     #########                            ####      #######
     ##       ##  ##       ##                          ## ##     ##     ##
     ##       ##  ##                                  ##  ##            ##
     ##       ##  ##                                 ##   ##            ##
     #########     ########   ##      ##  #######         ##          ##
     ##   ##               ##  ##    ##  ##               ##         ##
     ##    ##              ##   ##  ##    ######          ##        ##
     ##     ##    ##       ##    ####          ##         ## ###  ##
     ##      ###   ########       ##     #######          ## ###  ########
     ___________________________ ## ______________________________________
     _________________________ ### _______________________________________

Was ist RSys?
*************

RSYS ist von allem ein bißchen :-)

Die Hauptanregung zu RSys bekam ich durch die verschiedenen Systemutilities, wie Xoper, ARTM, TaskX und andere.  Die einen erlaubten einen tiefgreifenden Einblick in das Betriebssystem (Xoper), waren aber etwas unkomfortabel in der Bedienung, andere wiederum boten zwar viel Information (ARTM), waren dann aber nicht ganz absturzsicher und boten einfach zuviel, worunter die Übersicht litt.  Wieder andere boten noch andere Features, wie WorkBench-Unterstützung und Application Icons (AppIcons), bzw. -Windows (Toolmanager), aber keine Systeminformationen.  Bei fast allen Programmen aber war kein Quellcode dabei, weswegen wirklich gute Programmierlösungen nur den Programmierern vorbehalten war.

Aus diesen Überlegungen heraus entstand RSYS.  RSYS hat etwas von ARTM und Xoper, aber auch ein wenig vom Toolmanager und von Icon.  Eines hat aber RSYS den anderen Programmen voraus:  der Sourcecode ist dokumentiert und im Lieferumfang dabei.

Bei der Source legte ich Wert auf eine gute Dokumentation und die Lesbarkeit der Programmteile.  Allerdings war ich auch etwas faul, was eine ausführliche Dokumentation angeht.  Das Programm habe ich völlig in Public Domain gestellt, bitte aber dennoch (natürlich :-) um konstruktive Kritik.  Sie soll dazu beitragen, Verbesserungen einzubauen und Fehler auszumerzen.

Ziemlich am Ende dieser Dokumentation habe ich auch einige Hintergrundinfos zu den einzelnen Systemlisten und -objekten geschrieben (RSys und Hintergrundinfos).  Außerdem ist in den Quelltexten einiges an Informationen zu den einzelnen Programmpunkten ausgeführt, so daß sich ein Blick in das Programm immer lohnt.

Installation von RSys
*********************

Die Installation von RSYS gestaltet sich recht einfach.  Zum einen ist RSYS ein CLI-Programm, d.h. es kann vom CLI wie ein AmigaDOS-Befehl aufgerufen und gleich wieder verlassen werden.

Zum anderen ist es ein Befehl für das wbstartup-Verzeichnis der Bootpartition.  Wird das Icon und das Programm in dieses Verzeichnis gelegt, so erscheint ein neues Icon auf der WorkBench, das wie eine verkleinerte Form des Hauptfensters von RSYS aussieht.  Durch einen Doppelklick auf das Icon oder einen CLI-Aufruf verschwindet das Icon und das Hauptfenster erscheint.  Wenn RSYS schon im Hintergrund läuft, d.h.  vom wbstartup-Verzeichnis aus geladen wurde, wird das Programm nach einem weiteren Aufruf aus dem CLI natürlich viel schneller erscheinen.

Ab Version 1.2 kann die Installation vollständig mit dem Installer vorgenommen werden.  Dem Programmpaket liegt ein entsprechender Script-File bei (RSys12.Install).  Mit ihm könnt Ihr nicht nur alle Programmteile und Dateien installieren, sondern auch einzelne Teile des Programmpaketes nachinstallieren. Der Installer ist seid kurzem frei verfügbar, liegt aber RSYS nicht bei. Er sollte in jeder guten Mailbox oder bei einem PD-Händler erhältlich sein.

Entsprechend der verschiedenen Verwendungsmöglichkeiten gestaltet sich auch die Installation von RSYS (falls sie von Hand vorgenommen werden soll), die jetzt im Einzelnen besprochen wird.

Aufruf vom CLI
==============

Möchtet Ihr RSYS als reinen CLI-Befehl installieren, so kopiert einfach das Programm RSYS in das C:-Verzeichnis Eures Bootdevices, also i.a. in SYS:C.  RSYS kann dann wie ein normaler CLI-Befehl verwendet werden. normaler CLI-Befehl

Mit dem Aufruf

                                       RSYS ?

bekommt   ihr   gemäß  den  AmigaDOS-Konventionen  eine  Kommandoschablone (Template) angezeigt.  Dieses hat folgendes Format:

        RSYS 1.0 (07-Aug-92) [11:47] (c) by Rolf Boehme
        T=TASKS/S,L=LIBRARIES/S,M=MEMORY/S,P=PORTS/S,V=VOLUMES/S,A=ASSIGNS/S,
        F=FONTS/S,R=RESOURCES/S,I=INTERRUPTS/S,W=WINDOWS/S,S=SCREENS/S,
        H=INPUTHDL/S

Ihr   könnt  beim  Aufruf  entweder  die  Kurzform  angeben,  oder  die vollständige Form, z.B.

        RSYS T               oder      RSYS TASKS

Beide  Aufrufe  haben den gleichen Effekt.  Der Typ /S sagt, daß es sich um  Schalter  handelt,  d.h.   jeder  Parameter  veranlaßt  RSYS  zu einer entsprechenden Ausgabe im ListView des Hauptfensters (Die Gadgets und das ListView).

Es   können  mehrere  Schalter  angegeben  werden,  ist  aber  ziemlich zwecklos,  da  nur  der  erste  Parameter  gilt und "behandelt" wird.  Die Aufrufe

        RSYS T L P R A        und       RSYS T

haben also den gleichen Effekt.

Das Programm könnt Ihr dann mit einem Druck auf die ESC-Taste sofort verlassen.  Falls Ihr RSYS einfach mal kleiner machen wollt, könnt ihr das Zoomgadget rechts oben verwenden.  Allerdings bleibt das Start-CLI bis zur Beendigung des Programms immer noch gesperrt.

Ab RSYS 1.2 kann man das Programm nicht mehr in den Iconify-Zustand bringen, wenn es von einem CLI aus aufgerufen wurde. Iconify ist jetzt nur möglich, wenn RSYS vom wbstartup-Verzeichnis oder über die WorkBench aufgerufen wurde.

Aufruf von der WorkBench
========================

Dazu wird RSYS und die mitgelieferte Info-Datei RSys.info in das wbstartup-Verzeichnis der Bootpartition oder -diskette kopiert.

Der  Aufruf von der WorkBench aus über das wbstartup-Verzeichnis bietet ein  paar mehr Möglichkeiten.  Zunächst aber zu den Parametern vom Icon, den ToolTypes.  RSYS unterstützt in dieser Version mehrere ToolTypes.  Im folgenden sind sie alle aufgelistet, zunächst die Tastenkombinationen der verschiedenen Utilities von RSYS:

      -- Tooltype: CX_HOTKEY (Default: lshift rshift y)
          Mit  dieser  Tastenkombination  kann RSYS aktiviert werden, falls es im System schon existiert.  Es erscheint dann das Hauptfenster von RSYS.

      -- ToolType: CX_CRYPT (Default: lshift rshift k)
          Es  erscheint  nach dieser Tastenkombination das Crypt Files-Window von RSYS.

      -- ToolType: CX_FINDFILE (Default: lshift rshift s)
          Diese  Tastenkombination  startet die Benutzeroberfläche zum Suchen von Dateien.

      -- ToolType: CX_FORMAT (Default: lshift rshift f)
          Es  erscheint  ein  kleines  Window,  in  dem der Format-Befehl einfach konfiguriert und gestartet werden kann.

      -- ToolType: CX_HUNKLIST (Default: lshift rshift h)
          Diese Tastenkombination läßt ein Fenster erscheinen, in dem die Hunkstruktur eines Executables aufgelistet werden kann.  Sehr nützlich für Programmierer.

      -- ToolType: CX_CRC (Default: lshift rshift c)
          Nach dieser Tastenkombination erscheint ein kleines Fenster, in dem die CRC-Checksummen von Dateien berechnet werden können.

      -- ToolType: CX_SAVEWINDOW (Default: lshift rshift w)
          Durch diese Tastenkombination erscheint ein Window, in dem Windows, die im  System  geöffnet  worden  sind,  als  IFF-Dateien abgespeichert werden können.

Im weiteren folgen die Tooltypes, mit denen die Benutzungseigenschaften von RSYS beeinflußt werden können:

      -- ToolType: NOFASTMODE (Default: OFF)
          Das  Haupt-Listview von RSYS (Die Gadgets und das ListView) wird normalerweise erst dann aktualisiert, wenn  alle  Einträge  erzeugt  worden sind.  Wird dieses Tooltype gesetzt, wird  die  Anzeige  während der Erzeugung der Listeneinträge aktualisiert. Bei  größeren  Listen  kann  es  dann etwas länger dauern, bis die Anzeige fertig ist (deshalb NOFASTMODE).

      -- ToolType: NOSORT (Default: OFF)
          Alle Listen, bis auf die, die in der Liste selber noch Unterpunkte oder Überschriften  haben,  werden alphabetisch sortiert angezeigt.  Mit diesem Flag kann die Sortierung der Listeneinträge abgeschaltet werden.

      -- ToolType: WORKINGBAR (Default: OFF)
          Mit diesem Flag wird die Anzeige eines Statusbalkens eingeschaltet. Während eine Liste im ListView aktualisiert wird, läuft ein Statusbalken mit. Für den Balken wird der Bereich des Informationen / Messages-Gadgets (Die Gadgets und das ListView) verwendet.

      -- ToolType: MOUSEWINDOW (Default: ON)
          Ist  dieses  Flag  gesetzt,  werden  alle  Fenster  von RSYS relativ zur Mausposition geöffnet.

      -- ToolType: TOPAZFONT (Default: OFF)
          RSYS ist so programmiert, daß es theoretisch mit jedem Font verwendet werden kann.  Ist der Font zu groß, wird automatisch der Systemfont Topaz 8 verwendet.  Ist dieses Tooltype aktiv, wird sofort Topaz 8 verwendet.  Das ist dann nützlich, wenn als Bildschirmzeichensatz entweder ein zu großer Font, oder aber ein proportionaler Font gewählt wurde.  Die ListView-Einträge werden mit Leerzeichen formatiert, da Tabulatoren in fast jedem Font als kleine Rechtecke gezeichnet werden.  Infolgedessen sieht die Formatierung unter einem proportionalen Font etwas zerrissen aus.

      -- ToolType: OUTWINDOW (Default: -)
          Über das AppIcon von RSYS können Aktionen gestartet werden, insbesondere durch den Aufruf von externen Programmen (Die Actions-Datei).  Dieser Tooltype legt das Ein- und Ausgabefenster von RSYS fest.

      -- ToolType: NOAPPICON (Default: EIN)
          Damit wird verhindert, daß ein AppIcon (Das Icon) auf der WorkBench erscheint.  Natürlich ist damit auch das Actioning nicht mehr möglich.

      -- ToolType: BACKPATTERNCOL (Default: 0)
          Das Hauptfenster kann ähnlich wie bei den Systemrequestern, mit einem Hintergrundmuster versehen werden.  Die Farbe kann mit diesem Tooltype festgelegt werden.

      -- ToolType: BACKGROUNDCOL (Default: 0)
          Die Hintergrundfarbe des Pattern-Musters kann hier gesetzt werden. Abhängig von der Auflösung des Bildschirms kann beispielsweise ein leicht gelbliches Muster erzeugt werden, wenn BACKPATTERNCOL auf Schwarz und BACKGROUNDCOL auf Weiß gesetzt wird.

      -- ToolType: BACKPATTERN (Default: 5555AAAA)
          Hiermit wird das Hintergrundmuster selbst festgelegt.  Die anzugebende long-Hexzahl legt die "erste" und "zweite Reihe" des Musters fest, das dann für das Füllen des Fensters verwendet wird.  Welches Muster dabei heraus kommt, kann man sich auf folgende Weise einfach vorstellen.  Die Hexzahl schreibt man sich in der binären Darstellung mit 32 Stellen hin. Für den Default-Wert sieht die Darstellung so aus:

                  5555AAAA = 01010101010101011010101010101010

          Nun   teilt   man  diese  long-Zahl  in  zwei  Hälften  und  schreibt  sie untereinander, also so:

                  5555AAAA = 0101010101010101
                             1010101010101010

          Die gesetzten Pixel sind die Einsen.  Man sieht, daß sich aus diesem Wert ein Schachbrett-Muster ergibt, das auch bei den Systemrequestern verwendet wird.  Mit dem Muster 0000FFFF kann man sich übrigens ein waagerecht gestreiftes Muster, mit CCCCCCCC ein senkrecht gestreiftes erzeugen lassen.

      -- ToolType: DETAILPEN (Default: 0)
      -- ToolType: BLOCKPEN (Default: 1)
      -- ToolType: MENUPEN (Default: 0)
          Mit  diesen  ToolTypes  kann man die Farben des Hauptwindows und des Menüs des  Hauptwindows  festlegen.   Eine  nette  Farbvariation  ist  2,  3, 1, Reihenfolge, wie oben angeführt.

Wurde RSYS von der WorkBench aus gestartet, erscheint ein neues Icon.  Wird es doppelgeklickt, erscheint das Hauptfenster von RSYS. Den gleichen Effekt hat ein erneuter Aufruf vom CLI.  Danach wird jedoch das CLI wieder freigegeben, da RSYS bereits gestartet wurde.

Ab Version 1.2 sind alle RSYS-Fenster mit diesem Patternmuster versehen.

Die ENV-Variablen
=================

RSYS benötigt zwei Hilfsdateien.  In der einen steht in Textform eine kurzer Online-Hilfe (Die Help-Datei), in der anderen sogenannte Aktionseinträge, die ausgeführt werden, falls ein Icon über das AppIcon (Das Icon) gezogen und der Dateityp erkannt wurde, stehen.

Dazu sollten zwei ENV:-Variablen definiert werden:  RSYSHELP und RSYSACTION.  Die Variablen enthalten gültige und vollständige Dateibezeichnungen (mit Dateipfad!) für die entsprechenden Dateien. Sollten die eine oder beide Variablen fehlen, so wird RSYS bei entsprechender Aktivierung darauf hinweisen.

Doch nun zu den Formaten beider Hilfsdateien.

Die Help-Datei
--------------

Nach  der  Betätigung der Help-Taste im Hauptfenster von Main oder nach Anklicken  des  entsprechenden Menüpunktes wird diese Datei einfach in das ListView eingelesen und dargestellt.

Die  Datei  ist  eine  einfache  Textdatei  mit  einem rechten Rand von höchstens 45 Zeichen.  Die erste Zeile enthält nur die maximale Anzahl der in dieser Datei enthaltenen Zeilen minus eins.

Die   Help-Datei   hat  den  Default-Namen  RSys.HLP  kann  aber  unter Verwendung der ENV:-Variablen (Die ENV-Variablen) leicht geändert werden.  Auch der Inhalt kann den eigenen Bedürfnissen einfach angepasst werden.

Die Actions-Datei
-----------------

Erscheint auf der WorkBench das AppIcon, so können in bekannter Manier eine oder mehrere WorkBench-Icons (also Directories, Dateien, Disc-Icons, etc.) auf dieses Icon gezogen werden.  Daraufhin erscheint ein kleines Window mit mehreren Gadgets, das Action Window.

Im  Gegensatz zur Hilfedatei müssen die Einträge in der Aktionsdatei in einem  bestimmten  Format  stehen.   In  der ersten Zeile steht wieder die Anzahl  der  Zeilen  in  der Datei minus 1.  Die Schablone für eine solche Aktionszeile lautet folgendermaßen:

       <lfd.Nr>#<Typ der Datei>#<Eintrag im ListView>#<Befehl>#<Wait/Close>#

Alle Teile werden durch ein # voneinander getrennt.

Die lfd.Nr und der Typ der Datei entsprechen der Numerierung und Deklarierung in dem Programm.  Sie sollten tunlichst nicht verändert werden.  Der Typ der Datei sollte maximal 20 Zeichen lang sein.

Der Eintrag im ListView erscheint in selbigem, wenn eine Dateiart erkannt wurde und ein kleines Aktionsfenster erscheint.  Es dient der Information des Benutzers und kann beliebig gewählt werden, sollte jedoch nicht länger als 30 Zeichen sein.

Der  Befehl  kann  255 Zeichen lang werden und enthält einen gültigen Aufruf  im  CLI-Format.   Hierbei  wird  der  Dateiname einfach angehängt, weswegen  das  letzte  Zeichen vor dem trennenden # ein Leerzeichen sein sollte.

Der  letzte  Parameter  Wait/Close bestimmt, ob nach einer Aktion das kleine  Fenster  und  damit die Aktionen beendet werden sollen oder nicht. Hierbei steht W für Wait und C für Close nach einer Aktion.  Hier ein paar Beispiele:

        6#Assembler file#Anzeigen#OwnC:MuchMore #W#
        ^ ^              ^        ^              ^- Nach dem Befehl wird das
        | |              |        |                 Fenster nicht geschlossen.
        +-+              |        +- MuchMore im C:-Verz. wird mit dem
          |              |           Dateinamen aufgerufen, die Datei also
          |              |           angezeigt.
          |              +- Im ListView erscheint als Eintrag
          |                 "Anzeigen". Wird dieser Eintrag
          |                 geklickt, wird dieser Befehl
          |                 ausgeführt
          +- Die Datei ist ein Assembler-File

Von  einem  Type  können  auch  mehrere  Einträge  stehen.  Dann werden entsprechend mehr ListView-Einträge angeboten.  Also z.B.

        4#C Sourcefile#Bearbeiten#OwnC:ed #W#
        4#C Sourcefile#Anzeigen#OwnC:MuchMore #W#
        4#C Sourcefile#Compilieren#CC:cc #W#

Hier  erscheinen  drei Einträge im ListView, die dann entsprechend gewählt und ausgeführt werden können.

Die  Action-Datei  hat  voreinstellungsmäßig den  Namen  RSys.ACT  kann  aber  unter Verwendung  der  ENV:-Variablen  leicht  geändert werden.  Auch der Inhalt kann den eigenen Bedürfnissen einfach angepasst werden.

Gadgets - Menüs - das Icon
**************************

Wie  aus  dem  Vorangegangenen  ersichtlich,  kann  man  bei  RSYS zwei verschiedene Zustände unterscheiden.  Zum einen erscheint das Hauptfenster mit  diversen  Anzeigen  und  einem  Menü,  zum  anderen erscheint auf der WorkBench ein Icon, das verschiedene Aktionen ausführen kann.  Beide Möglichkeiten werden hier vorgestellt.

Das Hauptfenster
================

Nach  einem  Aufruf  vom  CLI oder einem Doppelklick auf das AppIcon erscheint  das  Hauptfenster  von  RSYS.   Es  ist  grob  in fünf Bereiche unterteilt:

         +---------------------------------------------------------------+
         | Menübereich                                                   |
         +---------------------------------------------------------------+

                        +----------------------------------+
                        |    Tabellenkopf/Titelzeile       |
                        +----------------------------------+
                        |                                  |
                        |                                  |
                        |       Anzeigebereich/LV          |
                        |                                  |
                        |                                  |
                        +----------------------------------+
                        |      Informationen/Messages      |
                        +----------------------------------+
                        |                                  |
                        |         Gadgetbereich            |
                        |                                  |
                        +----------------------------------+

Der Bereich Tabellenkopf / Titelzeile enthält entsprechend die Spalten- bezeichnung der ListView-Einträge im Anzeigebereich.  Im Gadget- und Menü-Bereich können die gewünschten Listen angewählt werden.  Allgemeine Informationen erscheinen einzeilig in dem Bereich Informationen / Messages. Die einzelnen Bereiche sollen nun genauer beschrieben werden.

Die Gadgets und das ListView
============================

Im  ListView  werden  die  angeforderten  Systemlisten  angezeigt.  Die entsprechenden  Einträge  im ListView können modifiziert werden, indem der Eintrag angeklickt wird.  Falls eine Veränderung der Einträge erlaubt ist, erscheint  dann  ein  Systemrequester mit weiteren Informationen, oder im Bereich  Informationen/Messages  eine  Mitteilung, das Veränderungen nicht möglich sind.

Die  einzelnen  Gadgets  und  die  damit  erzeugten Listen, die dann im ListView  gezeigt  werden,  nun  im  Einzelnen.

Task-Liste der ExecBase
-----------------------

 -- Gadget: Tasks (Taste: T Kommandoparameter: T)

Beispielausgabe:

     Taskname           Typ  Pri Stack Stat Cli
     ---------------------------------------------
     ConClip Process   Proc    0  4000 Wait   2
     ^                 ^       ^  ^    ^      ^
     |                 |       |  |    |      +- CLI-Nummer, falls es
     |                 |       |  |    |         sich um einen Prozeß handelt
     |                 |       |  |    +- Status des Prozesses/Tasks (P/T)
     |                 |       |  |       Inv : Invalid. P/T ist "kaputt"
     |                 |       |  |       Add : P/T wird gerade erzeugt
     |                 |       |  |       Run : P/T wird gerade abgearbeitet,
     |                 |       |  |             in jedem Falle der aktive
     |                 |       |  |             P/T, also RSYS!
     |                 |       |  |       Rdy : Prozeß ist fertig zum Start
     |                 |       |  |       Wait: P/T wartet auf Event
     |                 |       |  |       Excp: Task hat eine Exception
     |                 |       |  |             ausgelöst
     |                 |       |  |       Rem : Task wird gerade entfernt
     |                 |       |  +- Stack des P/T
     |                 |       +- Priorität des Tasks
     |                 +- Typ des Eintrags
     |                    Proc : Eintrag ist ein Prozeß
     |                    Task : Eintrag ist ein Task
     +- Name des P/T

Aktionen: Nach  dem  Anklicken  erscheint ein Systemrequester mit vielen Daten zu dem geklickten Eintrag und sieben Gadgets.

  * Continue:

     Es wird zum Hauptfenster zurückgekehrt.

  * ^C, ^D, ^E, ^F:

     Die entsprechenden Break-Signale werden an den P/T gesendet.

  * Taskpri:

     Über ein erscheinendes Window kann die Priorität des P/T verändert werden. Das  Close-  und  Cancelgadget  beenden die Eingabe ohne die Priorität zu ändern;  Ok  übernimmt  die neue Priorität und setzt den P/T entsprechend. Im Stringgadget kann die Eingabe direkt geschehen.

  * Kill task!:

     Zunächst  werden  an  den P/T alle möglichen Signale (also ^C bis ^F) gesendet.    Falls   der   P/T  immer  noch  existiert,  wird  nach  einer Sicherheitsabfrage  der  Task  per RemTask() entfernt.  Danach werden alle gefunden Objekte, die mit dem Task in Verbindung stehen (Screens, Windows, Ports), aus dem System entfernt.

Library-Liste der ExecBase
--------------------------

 -- Gadget: Libraries (Taste: L, Kommandoparameter: L)

Beispielausgabe:

     Libraryname                Version OpenCnt O
     ---------------------------------------------
     kd_freq.library              3.13        1 *
     ^                            ^           ^ ^
     |                            |           | +- Falls ein * erscheint, ist
     |                            |           |    die entsprechende Lib offen
     |                            |           |    und wird von mindestens einem
     |                            |           |    Programm benutzt
     |                            |           +- Anzahl, wie oft die Lib
     |                            |              geöffnet wurde. Ist die Anzahl
     |                            |              0, kann die Lib aus dem System
     |                            |              entfernt werden
     |                            +- Versions- und Revisionsnummer der
     |                               Library
     +- Name der Library

Aktionen: Nach dem Anklicken erscheint ein Systemrequester mit drei Gadgets:

  * Continue:

     Es wird zum Hauptfenster zurückgekehrt.

  * Flush Lib:

     Es wird nach einer Sicherheitsabfrage versucht, die Library aus dem System zu entfernen.

Memory-Liste in der ExecBase
----------------------------

 -- Gadget: Memory (Taste: M, Kommandoparameter: M)

Beispielausgabe:

     Memory address     Size    Type
     ---------------------------------------------
     Gesamt :  4717504 C:  295944 F: 2042112 <- Gesamtspeicheranzeige
     Largest:          C:  270288 F: 2014344 <- Größter zusammenhg. Speicher
     -------------- Fragmentierung ---------
     00200000        4194272 FAST
     00212840              8 FAST-CHUNK
     ^                     ^ ^
     |                     | +- Typ des Eintrags
     |                     |    FAST           : Fast-Memory (gesamt)
     |                     |    FAST-CHUNK     : Typ des Memoryeintrags
     |                     |    CHIP           : Chip-Memory (gesamt)
     |                     |    CHIP-CHUNK     : Typ des Memoryeintrags
     |                     +- Größe des Listeneintrags
     +- Adresse des Listeneintrags

Aktionen: Diese Liste zeigt die Fragmentierung des Speichers im einzelnen an. Jedes einzelne Speicherfragment ist mit seiner Adresse, der Größe und dem Typ angegeben. AmigaOS verwaltet seinen Speicher in minimal acht Byte-Blöcken. Die Anzahl der acht Byte-Blöcke ist also ein Maß für die Fragmentierung des Speichers.

Port-Liste in der ExecBase
--------------------------

 -- Gadget: Ports (Taste: P, Kommandoparameter: P)

Beispielausgabe:

     Portname               Signal-Task      Pri
     ---------------------------------------------
     AREXX                  RexxMaster         0
     ^                      ^                  ^
     |                      |                  +- Priorität des Ports
     |                      |
     |                      +- Name des Tasks, der die Signale vom
     |                         Port verarbeitet
     +- Name des Ports

Aktionen: Es erscheint ein Systemrequester mit zwei Gadgets:

  * Continue:

     Es wird zum Hauptfenster zurückgekehrt.

  * Kill Port:

     Nach einer Sicherheitsabfrage wird der Port aus der Systemliste entfernt.

Volume-Liste der DOSBase
------------------------

 -- Gadget: Volumes (Taste: V, Kommandoparameter: V)

Beispielausgabe:

     Volumename     K-Free K-Used %Used F Sta Typ
     ---------------------------------------------
     AmigaDOS:          76   6084   98% * R/O FFS
     ^                  ^    ^      ^   ^ ^   ^
     |                  |    |      |   | |   +- Typ des Volumes
     |                  |    |      |   | |      FFS  : FastFileSystem
     |                  |    |      |   | |      DOS  : Standard DOS-Filesystem
     |                  |    |      |   | |      BAD  : Unformatierte Disk,
     |                  |    |      |   | |             unlesbar
     |                  |    |      |   | |      NDO  : Keine DOS-Disk
     |                  |    |      |   | |      KIC  : Kickstart-Diskette
     |                  |    |      |   | |      MSD  : MS-DOS-Disk
     |                  |    |      |   | |      ???  : Sollte NIE auftreten :)
     |                  |    |      |   | +- Status des Volumes
     |                  |    |      |   |    R/O  : Read Only
     |                  |    |      |   |    VAL  : Volume wird gerade
     |                  |    |      |   |           validiert
     |                  |    |      |   |    R/W  : Read/Write
     |                  |    |      |   |    ???  : Sonstiger Status
     |                  |    |      |   +- Falls die Volume mehr als zu
     |                  |    |      |      90% voll ist, steht da ein *
     |                  |    |      +- Anzahl der benutzen KByte der Partition
     |                  |    |         oder Diskette in Prozent
     |                  |    +- Anzahl der benutzen KByte der Partition
     |                  |       oder Diskette in KBytes
     |                  +- Anzahl der freien Kapazität in KBytes
     +- Name des Volumes

Aktionen: Nach dem Anklicken erscheint ein Systemrequester mit zwei Gadgets.

  * Continue:

     Es wird zum Hauptfenster zurückgekehrt.

  * Tree:

     Es erscheint ein neues Fenster mit einem ListView und zwei ausgeschalteten Gadgets.  Nach dem Fensteraufbau wird sofort mit dem Einlesen der Disk-Verzeichnis-Struktur begonnen.  Das Einlesen kann mit einem Anklicken des Closegadgets links oben und der daraufhin erscheinenden Sicherheitsabfrage abgebrochen werden.  Nach dem Einlesen werden die zwei Gadgets aktiviert.

     Das linke Gadget ist ein Cycle-Gadget, mit dem zwischen zwei Darstellungen der Verzeichnisstruktur gewechselt werden kann. Voreinstellung ist die Tree-Darstellung, also die Anzeige des Verzeichnisbaumes.  Nach dem Anklicken wechselt die Darstellung auf die Anzeige der vollständigen Pfadnamen. Befindet sich der Zeichensatz IBM.font im FONTS:-Verzeichnis, werden die Graphikzeichen dieses Fonts verwendet, um die Verzeichnisstruktur darzustellen.

     Das Gadget Save Tree bietet nach dem Anklicken einen Filerequester an, mit welchem Ihr die Datei auswählen könnt, in der Ihr die momentan aktive Darstellung (Tree oder Path) abspeichern könnt.

     Das Fenster kann über das Closegadget geschlossen werden.

Assign-Liste der DOSBase
------------------------

 -- Gadget: Assigns (Taste: A, Kommandoparameter: A)

Beispielausgabe:

     Assign        Directory
     ---------------------------------------------
     BATCH:        AmigaDos:c
     ^             ^
     |             +- Zu dem Assign gehörender Datei/Verzeichnisname
     +- Name des Assigns

Aktionen: Siehe Volumes-Gadget.

Font-Liste der GfxBase
----------------------

 -- Gadget: Fonts (Taste: F, Kommandoparameter: F)

Beispielausgabe:

     Fontname             Typ    Y   X Low Upp
     ---------------------------------------------
     topaz.font           ROM    8   8  32 255
     ^                    ^      ^   ^  ^  ^
     |                    |      |   |  |  +- Höchster ASCII-Wert, für den die
     |                    |      |   |  |     Zeichen dieses Fonts definiert
     |                    |      |   |  |     worden sind
     |                    |      |   |  +- Niedrigster ASCII-Wert, für den
     |                    |      |   |     die Zeichen in diesem Font definiert
     |                    |      |   |     worden sind
     |                    |      |   +- Breite eines Zeichens in diesem
     |                    |      |      Zeichensatz
     |                    |      +- Höhe eines Zeichens in diesem
     |                    |         Zeichensatz
     |                    +- Art des Zeichensatzes:
     |                       ROM  : Der Zeichensatz wurde von einem
     |                              Programm geladen oder ist ein
     |                              Systemfont
     |                       Disk : Der Font wurde noch nicht geladen
     |                              und muß von Diskette oder Festplatte
     |                              geladen werden
     +- Name des Fonts

Aktionen: Nach dem Anklicken eines Eintrages im ListView erscheint ein Requester mit drei Gadgets:

  * Continue:

     Es wird zum Hauptfenster zurückgekehrt.

  * Show Font:

     Es  erscheint  ein Fenster mit den vier Gadgets Normal, Italic, Bold und  Underl. Nach dem Anklicken eines dieser Toggle-Gadgets wird der Beispieltext (im Format (<fontsize>) <fontname>) entsprechend normal, kursiv, fett oder unterstrichen dargestellt. Das Gadget Normal inaktiviert alle anderen Gadgets.

  * Remove Font:

     Nach einer Sicherheitsabfrage wird der Font aus dem System entfernt.

Resourcen-Liste der ExecBase
----------------------------

 -- Gadget: Resourcen (Taste: R, Kommandoparameter: R)

Beispielausgabe:

     Resourcename               Version OpenCnt
     ---------------------------------------------
     Snap.resource                32.16       0
     ^                            ^           ^
     |                            |           +- Anzahl, wie oft die Resource
     |                            |              geöffnet wurde
     |                            +- Versions- und Revisionsnummer der
     |                               Resourcen
     +- Name der Resource

Aktionen: Alle im System verfügbaren Resourcen werden angezeigt.

Interrupt-Liste der ExecBase
----------------------------

 -- Gadget: Interrupts (Taste: I, Kommandoparameter: I)

Beispielausgabe:

     Interruptname         Pri   Data     Code
     ---------------------------------------------
     disk.resource           0 00203624 00F8F774
     ^                       ^ ^        ^
     |                       | |        +- Falls einer der 16 Interrupts
     |                       | |           aktiviert wird, wird der Code, dessen
     |                       | |           Adresse angezeigt wird, ausgeführt
     |                       | +- Der Zeiger auf den privaten Datenbereich der
     |                       |    Interruptroutine
     |                       +- Priorität dieses Interrupts
     +- Handler oder Resource, der zu diesem Interrupt gehört

Aktionen: Die sechzehn Interrupts des Amigas werden unter Angabe des Namens, der Priorität und der Adressen der eventuell vorhandenen Interrupthandler aufgelistet.

Window-Liste der IntuitionBase
------------------------------

 -- Gadget: Windows (Taste: W, Kommandoparameter: W)

Beispielausgabe:

     Windowtitle         H   W   X   Y Screen
     ---------------------------------------------
     AmigaShell        100 640   0   0 Workbench
     ^                 ^   ^     ^   ^ ^
     |                 |   |     |   | +- Name des Screens, zu dem dieses Window
     |                 |   |     |   |    gehört
     |                 |   |     |   +- Y-Koordinate der Position des Windows
     |                 |   |     +- X-Koordinate der Position des Windows
     |                 |   +- Breite des Windows
     |                 +- Höhe des Windows
     +- Titel des Windows. Steht hier ein <no title>, so hat das Window
        keine Titelzeile

Aktionen: Nach dem Anklicken eines Eintrages im ListView erscheint ein Requester mit zwei Gadgets:

  * Continue:

     Es wird zum Hauptfenster zurückgekehrt.

  * Close Window:

     Nach einer Sicherheitsabfrage wird versucht, das Window zu schließen.

Screen-Liste der IntuitionBase
------------------------------

 -- Gadget: Screens (Taste: S, Kommandoparameter: S)

Beispielausgabe:

     Screentitle               H   W   X   Y Typ
     ---------------------------------------------
     Workbench Screen        272 684   0   0 W C
     ^                       ^   ^     ^   ^ ^
     |                       |   |     |   | +- Typ des angeklickten Screens.
     |                       |   |     |   |    Mögliche Anzeigen:
     |                       |   |     |   |    W   : Workbench-Screen
     |                       |   |     |   |     P  : Public Screen
     |                       |   |     |   |      C : Custom-Screen
     |                       |   |     |   +- Y-Koordinate der Position des
     |                       |   |     |      Screens
     |                       |   |     +- X-Koordinate der Position des Screens
     |                       |   +- Breite des Screens
     |                       +- Höhe des Screens
     +- Titelzeile des Screens

Aktionen: Nach dem Anklicken eines Eintrages im ListView erscheint ein Requester mit zwei Gadgets:

  * Continue:

     Es wird zum Hauptfenster zurückgekehrt.

  * Close Screen:

     Nach   einer  Sicherheitsabfrage  wird  versucht,  den  Screen  mit  allen assoziierten Windows zu schließen.

Inputhandler-Liste
------------------

 -- Gadget: HandlerInp (Taste: H, Kommandoparameter: H)

Beispielausgabe:

     Inputhandler name     Pri   Data     Code
     ---------------------------------------------
     Snap Input Handler     52 534E4150 003A46DE
     ^                      ^  ^        ^
     |                      |  |        +- Adresse des Codes, der bei der
     |                      |  |           Aktivierung dieses Inputhandlers
     |                      |  |           ausgeführt wird
     |                      |  +- Zeiger auf den privaten Datenbereich des
     |                      |     Inputhandlers
     |                      +- Priorität des Inputhandlers
     +- Name des Inputhandlers

Aktionen: Alle über das input.device direkt angemeldeten Input Handler werden angezeigt. Unter AmigaOS 2.0 übernimmt die commodities.library einen Großteil der Handler.

Allgemeine Systeminfo
---------------------

 -- Gadget: Systeminfo (Taste: Y, Kommandoparameter: -)

Beispielausgabe:

                       Systeminfo
     ----------------------------------------------
     14.07.1993, 195. day, 28. week <- Datum, Tag und Woche
     Tasks       : 30               <- Anzahl der entsprechenden
     Libraries   : 24                  Systemobjekte
     Ports       : 9
     Volumes     : 11
     Assigns     : 36
     Fonts       : 5
     Resources   : 9
     Windows     : 4
     Screens     : 2

Aktionen: Anzeige aller Systemobjekte (Tasks, Libraries, etc.) sowie Datum, Woche.

Hardware-Liste der ExpansionBase
--------------------------------

 -- Gadget: Hardware (Taste: D, Kommandoparameter: -)

Beispielausgabe:

                    Hardware/Expansion
     ----------------------------------------------
     ----- Hardware
     Processor     : CPU 68030                <- Prozessortyp
     Coprocessor   : FPU 68882                <- FPU-Typ
     Memory Unit   : MMU 68030                <- MMU-Typ
     Denise        : Normal Denise (8362)     <- Custom Chips
     Agnus         : Normal Agnus
     Chipset       : No AA-Chipset            <- Falls hier das AA-Chipset
                                                 erkannt wurde, srehen hier
     ----- Expansion                             noch mehr Infos
     Type          : RAM Expansion              <- Beschreibung der
     Company       : C= West Chester               Hardware-Erweiterung
     Name          : A2630 MC68030 (2MB Stand.)
     Init Action   : Need Driver
                >  : Private processed
     Diagnosis     : No action attached
     Manuf.nr.     : 514                        <- Hardware-Kennummern
     Prod.nr.      : 81
     Serial        : 0x00000000
     Boardaddr.    : 0x00200000
     Boardsize     : 2.097.152                  <- Hier steht die evtl.
     Slotaddr.     : 0x00000020                    vorhandene Speichergröße
     Slotsize      : 32                            der Erweiterung

     Summary       : 1 expansions found

Aktionen: Anzeige  des  Prozessor-  und  Co-Prozessortyps, wie er in der ExecBase verzeichnet ist, und aller internen Erweiterungen, dessen Einträge aus der ExpansionBase-Struktur entnommen wurden.

Abspeichern einer Liste
-----------------------

 -- Gadget: Save List (Taste: -, Kommandoparameter: -)

Aktionen: Die  aktuelle  angezeigt  Liste im ListView wird nach einer Abfrage mit einem Filerequester in die gewünschte Datei abgespeichert.

Springen zwischen Public Screens
--------------------------------

 -- Gadget: Jump (Taste: J, Kommandoparameter: -)

Aktionen: RSYS  schließt  das Hauptfenster, sucht in der Liste der Public Screens nach  dem  nächsten  geöffneten Screen, öffnet das Hauptfenster auf diesem und  holt  dann  den  Public  Screen  nach vorne.  Existiert kein weiterer Public   Screen,   so   erscheint  eine  entsprechende  Meldung  in  einem Systemrequester.

Das Modifizieren
================

In den folgenden Listen ist eine Modifikation oder Anzeige von weiteren Eigenschaften  der  Einträge  möglich:  Tasks, Libraries, Ports, Volumes, Assignes, Fonts, Ressources, Windows und Screens.

Die  entsprechenden  Datenstrukturen  werden  mit  maximaler Sicherheit modifiziert,  d.h.,  es  wird  im  Zweifelsfalle  mehrmals geprüft, ob das bearbeitete  Objekt  vor  und  nach  der  Modifikation existiert.  Da alle Systemlisten  nur snapshot-artig ausgelesen und angezeigt werden können, ist  in  bestimmten  Fällen  eine  Modifikation nur eingeschränkt oder gar nicht   möglich.   Das  ist  beispielsweise  der  Fall,  wenn  ein  Window modifiziert werden soll, das von dem entsprechenden Task schon geschlossen wurde.

Als  Kontrollkriterium  wird primär die Adresse - diese ist als einzige im  System  für  dieses  Objekt  eindeutig!   -  und sekundär der Name des jeweiligen  Objekts  herangezogen,  also  bei  Windows die Titelzeile, bei Tasks  der  Taskname etc.  Tritt in einem der beiden Fälle ein Fehler auf, so  wird  die  Modifikation  mit  einer  Fehlermeldung  abgebrochen.  Eine Modifikation  der  Objekte  wird  erst  gar  nicht  begonnen,  falls in dem Namensfeld eines Objektes RSYS ein - eingetragen hat. Diese Objekte können nicht eindeutig zugeordnet werden, weshalb diese also auch nicht modifiziert werden können.

Da hierbei auf das verwendete Schutzprotokoll geachtet werden muß, hier ein paar Hinweise dazu.

Intuition-Objekte werden beim Auslesen der Daten mit dem Protokoll LockIBase() / UnlockIBase() geschützt.  Damit werden die jeweiligen Listen vor der Veränderung durch Intuition-Routinen während des Auslesens ausreichend geschützt.  Bei der Veränderung der Objekte durch RSYS ist selten ein Schutzprotokoll erforderlich, da die Routinen von Intuition dieses meistens selbst erledigen.

Alle  Exec-Objekte,  wie  Tasks, Ports, Libraries, etc., werden während des Auslesens durch ein Forbid()/Permit(), im Falle von Tasks, sogar durch ein Disable()/Enable() vor Veränderung durch Systemroutinen geschützt.  Im Falle  der  Tasks ist zum Auslesen der Taskzeiger das Protokoll Disable()/Enable() zu  verwenden,  zum  Auslesen der Taskstruktur reicht jedoch ein Forbid()/Permit().

Disable()/Enable() sollte deswegen verwendet werden, da die Systemliste in  der  ExecBase durch den interruptgesteuerten Task-Scheduler laufend in ihrer  Anordnung  geändert  wird  (man  denke nur an die Aktivierung eines Tasks,  also  die  Umsetzung  des entsprechenden Taskknotenzeigers aus der Wait-Liste   in   die   Ready-Liste   und   dann  in  den  Running-Zustand [ExecBase->ThisTask-Eintrag]).

Die  Task-Struktur  selber  kann jedoch nur von einem Task oder Prozeß
aus  verändert  werden.   Daher  reicht  zum Auslesen der Taskstruktur das
Protokoll  Forbid()/Permit()  aus.   Daraus  ergibt  sich  also  folgendes
Schema:

        Reservieren der eigenen Struktur-Speicherbereiche

        Forbid();

           Disable();
           Auslesen und Merken der Tasknodes
           Enable();

           Auslesen der Taskstrukturen in eigene Strukturen (ohne
           Verwendung von DOS-Routinen, also KEIN FGets(), Open() etc.)

        Permit();

        Auswerten der eigenen Strukturen
        Freigeben der eigenen Struktur-Speicherbereiche

Für die Implementation dieser Routinen könnt Ihr den dokumentierten Quelltext einsehen.

Das Menü
========

In dem Menü befinden sich neben dem Window-Handling noch die Einträge für weitere Systemlisten - die aber seltener gebraucht werden - und das Handling einer internen Liste.  Weiterhin können vom Menü aus die Utilities gestartet und ein paar Änderungen an der Konfiguration von RSYS vorgenommen werden.  Hier die Menüpunkte im einzelnen:

Project
-------

 -- Menüpunkt: Iconify (Tastensequenz: RAMIGA-I)
     Aktion: Nach dem Aktivieren dieses Menüpunktes (direkt, ESC-Taste oder RAMIGA-I) wird das Hauptfenster geschlossen, und es erscheint auf der WorkBench ein AppIcon.  Wurde RSYS vom CLI aus gestartet, wird durch ESC das Programm beendet.

 -- Menüpunkt: Help (Tastensequenz: RAMIGA-H)
     Aktion: Die Environment-Variable RSYSHELP wird ausgelesen und der Eintrag als vollständige Dateibezeichnung der Help-Datei von RSYS verwendet.  Diese Datei wird ausgelesen und im ListView dargestellt.

 -- Menüpunkt: Reload actionfile (Tastensequenz: -)
     Aktion: Wurde  die  Aktionsdatei verändert, so kann sie mit diesem Menüpunkt erneut gelesen werden.

 -- Menüpunkt: About... (Tastensequenz: -)
     Aktion: In  einem  Systemrequester  erscheint  eine  kurze  Information  zu  diesem Programm und die Adresse des Autors.

 -- Menüpunkt: Quit RSYS... (Tastensequenz: RAMIGA-Q)
     Aktion: Das  Programm wird mit einer Sicherheitsabfrage beendet.  Bei dem erschei- nenden Systemrequester sind drei Möglichkeiten wählbar:

       * Ja: Das Programm wird beendet.

       * Iconify: Das Hauptfenster verschwindet und ein AppIcon erscheint auf der WorkBench.

       * Nein: Rückkehr zum Hauptwindow.

Other Lists
-----------

Ab RSYS 1.2 wurde das Menü mit den weiteren verfügbaren Listen umgestellt. Die Listen sind jetzt nach der entsprechenden Library geordnet.

Exec
....

 -- Menüpunkt: Software Devices (Tastensequenz: RAMIGA-1)

     Beispielausgabe:

          Devicename                  Version OpenCnt
          ----------------------------------------------
          audio.device                 37.10       0
          ^                            ^           ^
          |                            |           +-- Anzahl der Tasks oder
          |                            |               Prozesse, die das
          |                            |               Device öffneten
          |                            +-- Versions und Revisionsnummer
          +-- Name des Devices

     Aktionen: Alle  Handler und Treiber werden angezeigt, also die Software Devices, die Handler oder Treiber für die Hardware darstellen.

 -- Menüpunkt: Vectors (Tastensequenz: RAMIGA-2)

     Beispielausgabe:

                         System Vectors
          ----------------------------------------------
          ----- Capture vectors
          ColdCapture    : 0x00000000
          CoolCapture    : 0x00000000
          WarmCapture    : 0x00000000

          ----- Kick pointer
          KickMemPtr     : 0x00000000
          KickTagPtr     : 0x00000000
          KickCheckSum   : 0x00000000

          ----- Exec special pointer
          Debug entry    : 0x00F82D58
          ResModules     : 0x002003E0
          MMU-Lock       : 0x00000000

     Aktion: Die   Capture-Vektoren,  Kick-Pointer  und  die  speziellen  Vektoren  der ExecBase  werden angezeigt.  Die Capture-Vektoren können einen Hinweis auf einen Virus sein, falls diese nicht NULL sind.

 -- Menüpunkt: CLI processes (Tastensequenz: -)

     Beispielausgabe:

          CLI nr. Name             Pri  Stack
          ----------------------------------------------
          CLI 2   ConClip Process    0   4000
          ^       ^                  ^   ^
          |       |                  |   +-- Stack-Größe des CLI's
          |       |                  +-- Priorität des Prozesses
          |       +-- Name des CLI-Prozesses
          +-- Nummer des Prozesses in der Liste der CLI's

     Aktion: AmigaOS 2.0 erlaubt ein einfaches Auslesen der geöffneten CLI's. Alle geöffneten CLI's werden im ListView angezeigt.  Die Numerierung ist systembedingt nicht fortlaufend.

 -- Menüpunkt: Resident programs (Tastensequenz: -)

     Beispielausgabe:

          Resident name    UseCount  Type
          ----------------------------------------------
          Alias                  -2 INTERNAL
          ^                      ^  ^
          |                      |  +-- Typ des residenten Kommandos
          |                      |      INTERNAL : Ist in einer Shell
          |                      |                 eingebaut
          |                      |      EXTERNAL : Mit Resident
          |                      |                 eingebunden
          |                      +-- Anzahl der Benutzungen dieses Befehls.
          |                          Ist er -1, handelt es sich um einen
          |                          Handler oder CLI. -2 steht für einen
          |                          eingebauten Befehl.
          |                          Alle Zahlen > 0 geben die
          |                          Benutzungsanzahl an
          +-- Name des Handlers oder Befehls

     Aktion: Die  gezeigte Liste entspricht fast der Ausgabe des Befehls resident des AmigaOS  2.0.   Jedoch  werden hier alle residenten Programme aufgelistet, auch die, die systemintern vorhanden sind.

 -- Menüpunkt: Semaphores (Tastensequenz: -)

     Beispielausgabe:

          Semaphore name          Pri Ownertask
          ----------------------------------------------
          « SetPatch »              0 <no task>
          ^                         ^ ^
          |                         | +-- Name des Besitzer-Tasks
          |                         |     der Semaphore
          |                         +-- Priorität der Semaphore
          +-- Name der Semaphore

     Aktion: Die Semaphore-Liste der ExecBase wird ausgelesen und dargestellt.

DOS
...

 -- Menüpunkt: Volume Locks (Tastensequenz: RAMIGA-3)

     Beispielliste:

          File                     Access
          -----------------------------------
          AmigaDOS:                 READ
          ^                         ^
          |                         +-- Art des Locks:
          |                             READ : Zum Lesen geöffnet,
          |                                    auch mehrere Zugriffe
          |                                    möglich (shared)
          |                             WRITE: Exklusiv-Zugriff
          |                             -----: Unbekannter Typ
          +-- Pfadbezeichnung, auf dem der
              Lock existiert

     Aktion: Alle vom System reservierten Dateien werden angezeigt.  Das sind alle Verzeichnisse, die durch ein Open() oder ein Lock() gehalten werden.

 -- Menüpunkt: Physical Devices (Tastensequenz: RAMIGA-2)

     Beispielausgabe:

          Device name   Driver/Handler
          ----------------------------------------------
          PIPE:         L:Queue-Handler
          ^             ^
          |             +-- Name des Handlers oder Treibers
          +-- Name des Devices

     Aktion: Es  werden  alle  Devices  angezeigt,  die hardware-bezogen vorkommen, also Schnittstellen, Festplatten, Floppies, etc.

Graphics
........

 -- Menüpunkt: Display Modes (Tastensequenz: RAMIGA-4)

     Beispielliste:

          Name              Depth   MinR      MaxR
          ----------------------------------------------
          PAL:High Res Lace    4    32,1    1008,1024
          ^                    ^    ^       ^
          |                    |    |       +-- Maximale Größe des
          |                    |    |           Screenrasters
          |                    |    +-- Minimale Größe des Screenrasters
          |                    +-- Tiefe des Screens, der Screen hat dann 2^n
          |                        Farben zur Verfügung, in diesem Fall also
          |                        2^4 = 16 Farben
          +-- Name des Monitortreibers

     Aktion: Alle im System installierten Monitortreiber werden angezeigt.

 -- Menüpunkt: Blitter Wait Queue (Tastensequenz: -)
     Aktion: Die Tasks, die auf den Blitter warten, werden angezeigt.

 -- Menüpunkt: TOF Wait Queue (Tastensequenz: -)
     Aktion: Die Tasks, die auf das Top-Of-Frame warten, werden angezeigt.

Diskfont
........

 -- Menüpunkt: Fonts in FONTS: (Tastensequenz: RAMIGA-5)

     Beispielausgabe:

          Font name            Type   Y Style
          ----------------------------------------------
          KaraGRANITE.font     DISK  55    N    C
          ^                    ^     ^     ^
          |                    |     |     +-- Style des Fonts:
          |                    |     |         N      : Normal
          |                    |     |          U     : Unterstrichen
          |                    |     |           B    : Bold
          |                    |     |            I   : Kursiv (italic)
          |                    |     |             E  : Extended
          |                    |     |              C : Colour-Font
          |                    |     |               T: Tagged
          |                    |     +-- Größe des Fonts in Pixel
          |                    +-- Typ des Fonts, ROM- oder DISK-Font
          +-- Name des Fonts

     Aktion: Das logische Verzeichnis FONTS: wird ausgelesen und die ermittelten Fonts angezeigt.  Dazu gehören auch die Fonts, die bereits in das System eingebunden sind. Nach einem Anklicken eines ListView-Eintrages wird der Font in einem eigenen Fenster angezeigt.

Intuition
.........

 -- Menüpunkt: Public Screens (Tastensequenz: RAMIGA-6)
     Aktion: Hier  werden  alle  im System geöffneten Public Screens, also die Screens, die  öffentlich  und  für  jedes  Programm zugänglich sind, angezeigt.  Die Anzeige besteht aus der Adresse, dem Namen, der Visitor-Anzahl (die Anzahl der geöffneten Windows auf diesem Screen) und dem zugehörigen Signal-Task, die aus der PublicScreenNode-Struktur ausgelesen werden können.

 -- Menüpunkt: Gadgets (Tastensequenz: -)

     Beispielliste:

          Gadget text    Typ    PosX PosY    W    H
          ----------------------------------------------
          * SCR: Workbench Screen
          <has image>    SYSWUP  -22    0   23   11
          ** WIN: RU 1.2 FreeWare!
          Ja             REQBOO   14   26   35    9
          ^  ^           ^  ^     ^    ^    ^     ^
          |  |           |  |     |    |    |     +-- Höhe des Gadgets
          |  |           |  |     |    |    +-- Breite des Gadgets
          |  |           |  |     |    +-- Y-Position der linken oberen
          |  |           |  |     |        Ecke des Gadgets
          |  |           |  |     +-- X-Position der linken oberen
          |  |           |  |         Ecke des Gadgets
          |  |           |  +-- Aktivierungstyp des Gadgets:
          |  |           |      WDR: Window dragging
          |  |           |      SDR: Screen dragging
          |  |           |      WUP: Window upfront
          |  |           |      SUP: Screen upfront
          |  |           |      WDO: Window downback
          |  |           |      SDO: Screen downback
          |  |           |      CLO: Close Gadget
          |  |           |      BOO: Boolean Gadget
          |  |           |      G02: Dummy typ
          |  |           |      PRO: Proportional Gadget
          |  |           |      STR: String Gadget
          |  |           |      CUS: Custom Gadget
          |  |           |      SIZ: Sizing Gadget
          |  |           |      UNK: Unbekannter Typ
          |  |           +-- Objekttyp des Gadgets:
          |  |               SYS: System Gadget
          |  |               SCR: Screen Gadget
          |  |               GZZ: Gimmezerozero Gadget
          |  |               REQ: Requester Gadget
          |  |               CUS: Andere Gadgets
          |  +-- Window oder Screen-Titelzeile
          +-- Gadgettext, falls einer existiert, sonst <has image> oder
              ein -, falls ein Image existiert oder kein Text vorhanden
              ist.

     Aktion: Nach dem Anklicken werden alle Gadgets auf allen Screens und in allen Windows ermittelt und die wichtigsten Daten angezeigt.  Während dieser Aktion kann es passieren, daß man nicht weiterarbeiten kann.  Das ist normal!  Damit die Intuition-Listen systemkonform durchsucht werden können, muß während dieser Zeit die IntuitionBase mit dem Paar LockIBase()/UnlockIBase() gesperrt werden.  Der Zeitraum der Sperrung ist aber i.a.  so kurz, daß er vom Benutzer kaum wahrgenommen wird.

Preferences
...........

 -- Menüpunkt: Preferences (Tastensequenz: RAMIGA-7)

     Beispielausgabe:

                            Preferences
          ----------------------------------------------
          ----- Input/Keyboard:
          Keyboard repeat speed  : 0 sec 6000   µsec
          Keyboard repeat delay  : 0 sec 400000 µsec
          Double click time      : 0 sec 800000 µsec

          ----- Pointer
          "Hot spot" X           : -1
          "Hot spot" Y           : 0
          Pointer Sprite Col 0   : 0x0E44
          Pointer Sprite Col 1   : 0x0000
          Pointer Sprite Col 2   : 0x0EEC
          Pointer Sensitivity    : 1

          ----- Workbench
          Height default font    : 8
          Standard Color 0       : 0x0AAA
          Standard Color 1       : 0x0000
          Standard Color 2       : 0x0FFF
          Standard Color 3       : 0x009A
          View X-Offset          : -26
          View Y-Offset          : -7
          View init offset X     : 129
          View init offset Y     : 44
          Height default font    : 8
          CLI availability       : CLI enabled
          Workbench interlaced   : No
          Override WB width      : 0
          Override WB height     : 0
          Override WB depth      : 0
          Extension Info size    : 0

          ----- Printer
          Printer port           : Parallel port
          Printer type           : Custom
          Printer Driver         : HP_LaserJet
          Print pitch            : 0
          Print quality          : Letter
          Lines per inch         : 6 LPI
          Left margin            : 0
          Right margin           : 75 Chars
          Print image            : Positive
          Print aspect           : Horizontal
          Print shade            : Color
          Print Threshold        : 7
          Paper length           : 66 Rows
          Paper type             : Single paper
          Temp file for printer  :
          Affect Rows/Columns    : 10
          User preference flags  : 0x0000080F
          Max width of picture   : 0 inch
          Max height of picture  : 0 inch
          Offset of picture      : 0 inch
          Print density          : 4

          ----- Serial configuration
          Baud rate              : MIDI (31.250 baud)
          Read bits              : 8
          Write bits             : 8
          Stop bits              : 1
          Parity                 : None
          Handshake              : RTS/CTS

     Aktion: Die Preferences-Struktur wird ausgelesen und mit Klartext versehen angezeigt.

 -- Menüpunkt: Printer Data (Tastensequenz: -)

     Beispielausgabe:

                           Printer data
          ----------------------------------------------
          Printer name           : HP_LaserJet
          Version                : 35
          Revision               : 59
          Printer class          : 1
          Color class            : 1
          Print columns          : 0
          Char sets              : 0
          Print head pins        : 1
          Max X-dots in dump     : 2325 dots
          Max Y-dots in dump     : 3198 dots
          Density X              : 300 dots/inch
          Density Y              : 300 dots/inch
          Timeout                : 60 sec

     Aktion: Alle Daten in der Preferences-Datei, speziell die des Druckertreibers, werden angezeigt.

 -- Menüpunkt: ENV-Variables (Tastensequenz: -)

     Beispielausgabe:

          ENV-Variable  Content
          ----------------------------------------------
          FREE_DRIVES   RAM:,df0:,df1:,vd0:,dh0:,dh1
          ^             ^
          |             +-- Inhalt der Environmentvariablen
          |                 <no text> : Die Variable ist keine Textdatei
          |                 <dir>     : Ein weiteres ENV:-Verzeichnis
          +-- Name der Variablen

     Aktion: Das logische Verzeichnis ENV: wird ausgelesen und die Inhalte der Environmentvariablen im ListView dargestellt.  Hierbei wird davon ausgegangen, daß sich in einer ENV-Variablen eine Zeile befindet.  Sollten sich mehr als eine Zeile in der entsprechenden Datei befinden, werden die nachfolgenden Zeilen nicht ausgelesen.

     Ab Version 1.2 werden die Dateien überprüft, ob eine Textdatei vorliegt. Es kommt immer mal vor, daß auch Binärdateien im ENV:-Verzeichnis zu finden sind. Die Ausgabe dieser binären Daten ist etwas unsauber.

Other Libraries
...............

 -- Menüpunkt: Commodities (Tastensequenz: RAMIGA-8)

     Beispielausgabe:

          Commodity name      Prio
          ----------------------------------------------
          RSys                   0
          ^                      ^
          |                      +-- Priorität des Brokereintrags
          +-- Name des Brokers

     Aktion: Alle Commodities, die auch im Fenster des Programmes Exchange erscheinen, werden angezeigt.  Dazu wird eine undokumentierte Funktion verwendet, die aber in der commodities.library enthalten ist.

          Anm.: Unter OS 3.0 wird ein Zeiger auf die Liste der Libraries
          zurückgegeben. Diese Funktion hat wurde also irgendwohin verlagert. Ein
          gutes Beispiel dafür, daß man nicht ungestraft undokumentierte Funktionen
          verwendet!

          Anm.  2:  Ich habe einen legalen Weg herausgefunden, wie man sich eine
          Liste aller Commodity-Einträge besorgen kann.  Dazu verwende ich einfach
          den Broker von RSys.  Beim Einrichten des Brokers wird ein Zeiger auf ein
          CxObj zurückgegeben.  Diesen caste (konvertiere) ich auf einen struct
          Node-Zeiger um und erhalte damit, analog zu den Input-Handlern, einen
          Einsprung in die Liste der angemeldeten Broker-Objekte!  Jetzt brauche ich
          nur noch zu dem Anfang der Liste zu hangeln (Commodore erhalte uns die
          doppelt verketteten Listen!  :-)) und von dort aus die Liste erneut
          durchzuscannen. Schon habe ich meine Liste!  Und alles durch eine
          undokumentierte Vermutung, ich liebe C!

 -- Menüpunkt: Amigaguide XRef (Tastensequenz: RAMIGA-9)

     Beispielliste:

          XRef keyword   Type File           Line
          ----------------------------------------------
          Gadget         STRU +intuition.h     216
          ^              ^    ^^               ^
          |              |    ||               +-- Zeile des Includefiles,
          |              |    ||                   in der die Struktur
          |              |    ||                   vorkommt
          |              |    ++-- Dateibezeichnung Referenzfiles
          |              |         Falls die Bezeichnung länger ist, wird
          |              |         ein + anstelle des Pfades gesetzt
          |              +-- Der Typ des Eintrags. Hier können
          |                  folgende Werte stehen:
          |                   LINK : Amigaguide Link
          |                   FUNC : Funktionsbeschreibung
          |                            (z.B. C-Routine)
          |                   COMM : Befehlsbeschreibung
          |                   INCL : Include-Datei eines Compilers
          |                   MACR : Macro-Beschreibung
          |                   STRU : Struktur-Beschreibung
          |                            (z.B struct Gadget)
          |                   FIEL : Ein Feld einer Struktur
          |                   TYPD : Datentyp-Beschreibung
          |                            (z.B. typedef)
          |                   DEFI : #define-Macro-Beschreibung
          +-- Schlüsselwort des Objektes

     Aktion: Mit dem Befehl LoadXRef des Amigaguide-Entwicklersystems können Kreuzreferenzen in den Speicher des Amigas geladen werden. Diese stehen dann bei jeder Amigaguide Session dem Benutzer zur Verfügung. Welche Informationen geladen sind, kann man mit diesem Menüpunkt erfahren.

Actions
-------

 -- Menüpunkt: CRC Check

     Aktion: Es erscheint eine kleines Window mit mehreren Gadgets.  Mit dem Select-Gadget kann man in dem erscheinenden Filerequester eine Datei auswählen, von der die CRC-Checksumme berechnet werden soll.  In dem Cycle-Gadget kann man den Modus, CRC-16 oder CRC-32, einstellen.  Hierbei ist zu beachten, daß die CRC-16-Methode nur für Dateien mit einer Größe kleiner als 65536 Bytes verwendet werden kann.

     Für größere Dateien ist die CRC32-Methode zu wählen.  Ist die Datei gewählt (der Dateiname erscheint in dem File-Gadget), wird mit dem Compute-Gadget die Berechnung gestartet.  Die berechnete CRC-Summe erscheint dann in hexadezimaler Form im CRC-Gadget.

 -- Menüpunkt: Crypt

     Aktion: Es erscheint wiederum ein kleines Window mit acht Gadgets.  Im Source-Gadget kann die Quelldatei, die kodiert werden soll, direkt eingegeben, oder mit dem danebenliegenden Gadget per Filerequester ausgewählt werden.  Ebenso bei dem Dest-Gadget, in dem der Name der Datei eingetragen wird, in der die kodierten Daten gespeichert werden.  Es werden zwei Modi zur Verschlüsselung von Text- oder Binärdateien angeboten.

     Die Modi können in dem Cyclegadget ausgewählt werden.  Crypt verwendet die Verschlüsselung von Dateien mittels einem Zellular-Automaten.  Diese Routine habe ich aus Olaf 'Olsen' Barthels term-Source geratzt, weswegen er u.a.  auch ganz unten bei den Danksagungen erwähnt wird.  Während Crypt auf jede Art von Dateien angewendet werden kann, wurde die ROT 13-Methode nur für Textdateien implementiert.  Dabei werden einfach die Buchstaben eines Textes um 13 Zeichen "verschoben".  Hierbei ist auch nicht möglich, wie bei Crypt ein Paßwort zu verwenden.

 -- Menüpunkt: List Hunks

     Aktion: Es erscheint ein Window mit drei Gadgets, einem ListView und zwei Booleangadgets, Load und Save List.  Zunächst wird mit Load und dem dann erscheinenden Filerequester eine Datei ausgewählt.  Danach wird diese Datei (i.a.  eine ausführbare oder ladbare Datei) bezüglich ihrer Hunk-Struktur analysiert.  Die ermittelten Daten erscheinen dann in dem ListView.  Wenn es sich um eine Library oder eine Objektbibliothek handelt, kann die Ausgabe etwas dauern.  Deshalb kann man die Aktion jederzeit durch das Anklicken des Closegadgets und nach einer Sicherheitsabfrage abbrechen.  Mit dem Save List-Gadget kann dann die Liste in eine auszuwählende Datei abgespeichert werden.

 -- Menüpunkt: Find File

     Aktion: Nach  der  Anwahl  diese  Menüpunktes erscheint ein großes Window mit zehn Gadgets.  Diese werden jetzt der Reihe nach beschrieben:

      -- ListView: Devices
          In  diesem ListView stehen alle angemeldeten Devices und Assigns.  Wenn ein  Eintrag angeklickt wird, erscheint der Eintrag in dem danebenliegenden ListView.

      -- ListView: Selected Devices
          Damit  werden  alle die Verzeichnisse angewählt auf denen Dateien gesucht werden sollen.  Jeder Eintrag, der in den beiden ListViews angeklickt wird, erscheint  automatisch  in  dem  anderen  ListView.  Bei einem Eintrag mit einem   -  davor  handelt  es  sich  um  ein  Assign.   Ich  habe  diese Kennzeichnung  deshalb so gewählt, weil ich dann entsprechend die Einträge sortieren kann.  Erst die echten, dann die logischen Devices.

      -- Cycle-Gadget: Case sense/No case sense
          Hier kann gewählt werden, ob die Dateien case sensitive (Groß- und Kleinschreibung wird berücksichtigt) oder case insensitive (Groß- und Kleinschreibung werden nicht unterschieden) gesucht werden. Lautet z.B.  das Suchmuster Test.exe, so wird mit No case sense sowohl die Datei Test.exe, als auch die Datei TeSt.ExE gefunden.

      -- Boolean Gadget: Sel all
      -- Boolean Gadget: Sel none
          Damit  können  alle Einträge vom linken ListView in das rechte gebracht werden  (Sel  all:   alle Verzeichnisse werden durchsucht) und umgekehrt (Sel none:  Kein Verzeichnis soll durchsucht werden).

      -- Boolean Gadget: Start/Stop Search
          Wurden Verzeichnisse ausgewählt und im Pattern-Gadget ein Suchmuster eingegeben, so ist dieses Gadget anwählbar und startet die Suche in den Verzeichnissen des Selected Devices-ListViews.  Wird das Gadget während eine Suche angeklickt, wird nach einer Sicherheitabfrage der Suchvorgang abgebrochen.

      -- Boolean Gadget: Save found list
          Nach der Anwahl erscheint ein Filerequester, in dem die Namen der gefundenen Dateien in eine auszuwählende Datei abgespeichert werden können.

      -- String Gadget: Pattern
          Hier kann ein Suchmuster (Dateiname oder Pattern) eingegeben werden. Hierbei gelten die üblichen Wildcards und Suchmuster des AmigaOS.

      -- Cycle Gadget: Dirs + Files/Files/Directories
          Hier  kann  gewählt  werden,  was für ein Typ von Datei gefunden werden soll.

      -- ListView: Found files/dirs
          In  diesem  ListView erscheinen alle gefunden Einträge mit vollständiger Pfadbezeichnung.   Diese  Liste  kann  nach  dem Anklicken des Save found list-Gadgets in eine Datei abgespeichert werden.

 -- Menüpunkt: Format Disk

     Aktion: Mit Format Disk wird eine kleine Schnittstelle zum Format-Befehl des AmigaDOS angeboten.  Die einzelnen Gadgets werden im folgenden näher beschrieben.

      -- Stringgadget: Format

          In diesem Gadget steht der vollständige Pfadprogrammname des zu verwendenden Format-Befehls.  Dieser lautet üblicherweise

                  SYS:System/Format.

          Mit  dem  nebenstehenden  Select-Gadget  kann  das Format-Programm mit einem Filerequester ausgewählt werden.

      -- ListView: Devices

          In  diesem ListView erscheinen alle formatierbaren Devices alphabetisch geordnet.   Das  ausgewählte  Device  wird  dann im zugehörigen Textgadget darunter angezeigt.

      -- Stringgadget: Disk label

          Hier  wird  der Name des Mediums (voreingestellt und systemkonform Empty) eingetragen.

      -- Cycle: Icons/No Icons
      -- Cycle: OFS/FFS
      -- Cycle: International/No international

          Mit diesen Cyclegadgets können weitere Formatierungsvorgaben ausgewählt werden, also ob ein Trashcan auf dem formatierten Medium erzeugt, das Medium mit dem alten Filesystem oder dem Fastfilesystem formatiert und ob es im internationalen Modus formatiert werden soll.

      -- Stringgadget: <ohne Namen>

          In  diesem  Stringgadget  ohne Namen steht der vollständige Befehl, der nach Festlegung aller Kriterien als eigenständiger Prozeß ausgeführt wird.

      -- Booleangadgets: Format
      -- Booleangadget: Quick

          Mit   diesen   Gadgets   wird   nach   einer   Sicherheitsabfrage   das Format-Programm gestartet.  Mit Format wird das Medium auch physikalisch formatiert, mit Quick werden nur die Root-Blöcke überschrieben und so die eventuell vorhandenen Daten überschrieben.

 -- Menüpunkt: Save windows

     Aktion: Nach der Auswahl dieses Menüpunktes erscheint ein kleines Fenster mit drei Gadgets.

      -- ListView: Windows

          In  diesem  ListView  erscheinen alle geöffneten Windows, die im System bekannt  sind.  Dabei werden auch die aufgeführt, die auf anderen Screens als dem WorkBench Screen geöffnet wurden.

      -- Boolean: IFF File

          Wurde ein Fenster angewählt, wird dieses Gadget aktiviert.  Nach dem Anklicken erscheint ein Filerequester mit der Aufforderung, eine Datei auszuwählen, in der das angewählte Window als IFF-Datei abgespeichert werden soll.

      -- Boolean: Rescan windows

          Damit kann die Window-Liste aktualisiert werden.  Dies geschieht nach dem Abspeichern eines Windows automatisch.

 -- Menüpunkt: Check Libraries

     Aktion: Alle  im  ROM  angelegten Libraries werden gecheckt, ob sie von anderen Programmen gepatcht wurden.  Sehr nützlich, um eventuell installierte Viren aufzuspüren.

Internal List
-------------

 -- Menüpunkt: Save current list (Tastensequenz: RAMIGA-S)
     Aktion: Die   angezeigte  Liste  wird  in  eine  RSYS-interne  Liste  kopiert  und gespeichert.    Der   Inhalt   bleibt   erhalten,   bis  eine  neue  Liste abgespeichert wird,  der  Menüpunkt Kill saved list gewählt wurde oder das Programm beendet wird.

 -- Menüpunkt: Restore saved list (Tastensequenz: RAMIGA-R)
     Aktion: Die RSYS-interne Liste wird in das ListView eingetragen.  Die ursprüngliche Liste kann durch ein nochmaliges Anklicken des entsprechenden Gadgets wieder erzeugt werden.  Die RSYS-interne Liste bleibt dabei erhalten.

 -- Menüpunkt: Kill saved list (Tastensequenz: -)
     Aktion: Eine   gespeicherte   RSYS-interne  Liste  wird  gelöscht  und  die  damit verbundenen Speicherbereiche freigegeben.

Flushing
--------

 -- Menüpunkt: Flush Libraries

     Aktion: Entfernt  alle  Libraries  aus  dem  System, die einen Open-Count von 0 haben.   Diese  sind  geschlossen  und entfernen sich meistens nicht selbst aus dem System.

 -- Menüpunkt: Flush Fonts

     Aktion: Entfernt  alle  Fonts  aus dem System, die nicht mehr verwendet werden.

 -- Menüpunkt: Flush all libraries and Fonts

     Aktion: Entspricht beiden Menüpunkten Flush Libraries und Flush Fonts.

Clip
----

 -- Menüpunkt: Clip entry... (Tastensequenz: RAMIGA-C)

     Aktion: Nach Anwahl dieses Menüpunktes kann ein Eintrag im Hauptfenster von RSYS angeklickt werden.  Dieser Eintrag wird dann vom Programm ins Clipboard übernommen und kann von anderen Programmen gelesen und weiterverwendet werden.

 -- Menüpunkt: Clip list (Tastensequenz: -)

     Aktion: Mit  diesem  Menüpunkt  kann  die  ganze angezeigte Liste ins Clipboard kopiert werden.

Flags
-----

 -- Menüpunkt: Fast Mode (Tastensequenz: RAMIGA-F)
     Aktion: Ist  dieser  Modus  aktiviert,  wird  das ListView beim Erzeugen der Liste nicht  aktualisiert,  sondern erst, nachdem die Liste erstellt worden ist. Ist dieser Modus nicht aktiviert, wird nach jedem Erstellen eines Eintrags das ListView aktualisiert.  Default ist EIN.

 -- Menüpunkt: Sorting (Tastensequenz: RAMIGA-O)
     Aktion: Ist  das  Sorting  aktiviert,  sortiert  RSYS automatisch die Einträge des ListViews.  Auf manche Listen hat dieses Flag keinen Einfluß (z.B. Memory),  da  es  dort  auf  die  systemgegebene  Reihenfolge  der Daten ankommt.  Default ist EIN.

 -- Menüpunkt: Working bar (Tastensequenz: RAMIGA-B)
     Aktion: Mit diesem Flag kann die Anzeige eines Statusbalkens umgeschaltet werden. Während eine Systemliste im ListView erzeugt wird, zeigt der Balken immer den entsprechenden Balkenabschnitt an. Als Balkenbereich wird das Informationen / Messages-Gadget (Die Gadgets und das ListView) verwendet. Default ist AUS.

 -- Menüpunkt: Auto front window (Tastensequenz: RAMIGA-Z)
     Aktion: Ist  dieses  Flag  aktiviert,  werden  das  Hauptfenster  und alle anderen Fenster  von  RSYS  automatisch nach vorne geholt, falls sie geöffnet oder gezipt wurden.

 -- Menüpunkt: Mouse window (Tastensequenz: RAMIGA-M)
     Aktion: Wenn  diese  Option  angewählt  wurde,  wird  jedes  Fenster,  das von RSYS geöffnet wird, zentriert unter dem Mauszeiger erscheinen.

 -- Menüpunkt: Topaz font (Tastensequenz: RAMIGA-T)
     Aktion: Wurde  als System-Screen-Font ein Proportionalfont gewählt, sieht die Ausgabe   im  ListView  etwas  zerrissen  aus,  da  die  Anzeige  nur  mit Leerzeichen  formatiert  werden kann.  Schaltet man diese Option ein, wird das    Hauptfenster    geschlossen    und    RSYS    erscheint   mit   dem Topaz-8-Systemfont.

 -- Menüpunkt: Speaking (Tastensequenz: RAMIGA-N)
     Aktion: Ist Speaking eingeschaltet, werden die Ausgaben im Informationen / Message-Bereich auch über das Narrator-Device, also die Sprachausgabe, ausgegeben.

 -- Menüpunkt: Save asking (Tastensequenz: -)
     Aktion: Ist dieses Menüflag gesetzt, werden alle Sicherheitsabfragen von RSYS unterdrückt. Genauer: es werden alle Ja-Nein-Abfragen unterdrückt.

                               VORSICHT
     Auch Sicherheitsabfragen, wie Wollen Sie diesen Task killen?
               werden anstandslos mit Ja beantwortet!!!

Das Icon
========

Wurde  der  Menüpunkt  Iconify  gewählt  oder  das  Programm  von der WorkBench  gestartet,  erscheint  auf dem WorkBench-Screen ein sogenanntes AppIcon.  Darauf können andere WorkBench-Objekte, wie Schubladen, Textdateien, Devices etc.,  deren Icon sichtbar ist, gezogen werden.

Ab RSYS 1.2 gibt es die Möglichkeit, durch Angabe von NOAPPICON in den ToolTypes kein Icon erscheinen zu lassen.  Damit ist dann auch das nachfolgend beschriebene Actioning nicht durchführbar.

Das Actioning
-------------

Nach dem Aktivieren des Icons durch Anklicken oder Draufziehen eines WorkBench-Objektes öffnet RSYS ein kleines Fenster mit drei Gadgets.  Die Titelzeile des Fensters zeigt den Namen des Objektes an, das auf das RSYS-Icon gezogen wurde.  Darunter wird der Typ des Objektes angezeigt.  In dem ListView-Gadget werden alle Aktionen, die dem Typ dieses Objektes in der Actions-Datei zugeordnet wurden, aufgelistet. Das Info-Gadget gibt weitere Informationen über das Objekt in Form eines Systemrequesters aus.

Nach  der  Anwahl  eines ListView-Eintrages wird die entsprechende Aktion mit diesem  Objekt  ausgeführt.   Dabei  wird  der  Name  des  Objekts  an den entsprechenden  String  in  der Actions-Datei angehängt und als CLI-Befehl ausgeführt.

Hierzu  ein  Beispiel:   Für LHA-Archive existieren folgende Einträge:

        39#LHArc archive#Archiv listen#OwnC:LZ l #W#
        39#LHArc archive#Archiv testen#OwnC:LZ t #W#

In der Titelzeile erscheint der Eintrag LHArc archive und in dem ListView die Einträge Archiv listen und Archiv testen.  Wird der Eintrag Archiv listen angeklickt, wird der Befehl OwnC:LZ l <objektname> ausgeführt.

Die Hotkey-Aktivierung
----------------------

In  dem  Icon-Zustand  von  RSYS kann das Hauptfenster mit dem Hotkey lshift rshift y  wieder geöffnet werden.  Desweiteren kann RSYS auch mit dem Programm Exchange angesteuert und auch beendet werden.

Alle   Hotkeys   werden  voreingestellt  mit  den  beiden  Shift-Tasten
zusammen definiert.   Hier  eine Zusammenfassung aller Hotkey-Voreinstellungen, wie
sie auch den ToolTypes des RSYS-Icons entnommen werden können,
versehen mit ein paar Erklärungen:

 -- ToolType: OUTWINDOW Default: CON:/10//150/RSYS Window/AUTO/CLOSE
     Manche  Aktionen  von  RSYS erfordern einen Ein-/Ausgabe-Kanal.  Diese Ein-  und  Ausgaben  werden dann auf das angegebene CLI-Window umgeleitet.

     Anm.:  Dieser Eintrag ist ZWINGEND!!!  NIL:  oder das NULL:-Device sollten NICHT verwendet werden, wenn man einen Guru vermeiden will!

 -- ToolType: CX_HOTKEY Default: lshift rshift y
     Mit diesem Hotkey kann RSYS aktiviert werden, wenn das AppIcon existiert.  Falls das Hauptfenster offen ist, guckt RSYS nach, ob der vorderste Screen ein PublicScreen ist und öffnet das Hauptfenster auf diesem.

 -- ToolType: CX_CRYPT Default: lshift rshift k
     Damit  wird  das  Verschlüsselungs-Tool von RSYS aufgerufen (Menüpunkt Crypt).

 -- ToolType: CX_FINDFILE Default: lshift rshift s
     Damit  wird  das  Dateisuchfenster  von  RSYS  aufgerufen  (Menüpunkt Find File).

 -- ToolType: CX_FORMAT Default: lshift rshift f
     Damit  wird  das  Format-Disk-Fenster  von  RSYS aufgerufen (Menüpunkt Format).

Die Utilities von RSys
**********************

An  dieser  Stelle  noch  ein  paar  zusätzliche  Informationen  zu den Menüpunkten.

Verschlüsseln von Daten und Dateien
===================================

Bei  der Verschlüsselung der Daten werden zwei Methoden verwendet.  Die ROT 13-Methode   ist   ein  einfaches  Verschlüsselungsverfahren,  das  die Buchstaben  eines  Textes  einfach  um  13  Zeichen  nach vorn oder zurück gezählte Buchstaben macht.  Dazu ein Beispiel:  aus der Zeile

                 "Das ist ein Satz, der 1 mal kodiert werden soll!"

     34 68 97 115 32 105 115 116 32 101 105 110 32 83 97 116 122 44 32 100 101
     114 32 49 32 109 97 108 32 107 111 100 105 101 114 116 32 119 101 114 100
     101 110 32 115 111 108 108 33 34

macht das ROT 13-Verfahren

                 "Qnf vfg rva Fngm, qre 1 zny xbqvreg jreqra fbyy!"

     34 81 110 102 32 118 102 103 32 114 118 97 32 70 110 103 109 44 32 113 114
     101 32 49 32 122 110 121 32 120 98 113 118 114 101 103 32 106 114 101 113
     114 97 32 102 98 121 121 33 34

Darunter habe ich mal die entsprechenden ASCII-Kodierungen geschrieben. Es ist deutlich zu erkennen, daß nur Buchstaben kodiert (verschoben) werden.  Interpunktionen und Zahlen werden nicht berücksichtigt.

Das zweite Verfahren basiert auf einen zellularen Automaten ähnlich dem der  Spielsimulation Life.  Dabei wird ein Ring von Zellen angelegt, der dann  durch  ein  vorgegebenes  Paßwort mit Nummern aufgefüllt wird.  Mit diesen Nummern schließlich, wird eine Datei kodiert.  Diese Methode stammt von  der  Verschlüsselungsmethode,  die  in Olaf "Olsen" Barthels term zur Kodierung des Telefonbuches verwendet wird.

Anm.:   Das  Paßwort  ist  überaus  WICHTIG!   Es  sollte  erstens  nie vergessen  und zweitens ein echtes Paßwort verwendet werden.  Das Paßwort-Gadget  sollte  also  nie leer sein, da sonst die Methode zufällige Verschlüsselungen  erzeugt  und  diese Datei nie wieder restauriert werden kann!

Dateien suchen
==============

Diese  Utility  arbeitet  intensiv  mit  der  Funktion  ExAll() und den Funktionen MatchPattern()/MatchPatternNoCase() der DOS-Library. Dabei werden zuächst alle Dateien bestimmt und währenddessen untersucht, ob es sich jeweils um ein Verzeichnis oder eine Datei handelt.  Trifft dann auch das Suchmuster zu, wird es in das ListView eingetragen.

CRC-Checksummen berechnen
=========================

Ich habe mehrere Programme, die CRC-Summen berechnen, zum Vergleich mit meinen Routinen gestartet.  Alle Programme gaben für ein und dieselbe Datei andere Werte aus, als meine Routine.  Ich suche den Fehler heute noch.  Wenn sich also eine hilfreiche Seele finden sollte, die den Fehler findet, dieser ist eine Tüte Gummibärchen sicher :-)

Fenster in IFF-Dateien speichern
================================

Hierbei kam auch eine Routine zum Einsatz, die ich von Olsens term geratzt habe.  Leider funktioniert Olsens Routine nicht mit allen Fenstern, was an der Verwendung der Funktion ClipBlit() liegt, die zwar die ausgewählte BitMap eines Windows berücksichtigt, aber die überlappenden Bereiche anderer Fenster mit Datenmüll füllt.  Außerdem verwendet Olsen die BitMap des zu einem Fenster gehörenden Screen-RastPorts anstelle des Window-RastPorts.

Dieses  Problem  der  Überlappung  habe  ich  durch  die Verwendung der Routinen  BltBitMap()  und  WindowToFront()  behoben.   Damit  wird das zu speichernde  Fenster  nach vorne geholt, weswegen auch keine Überlappungen mit  anderen  Fenstern auftreten.  Dieses Verfahren funktioniert natürlich nicht mit Backdrop-Fenstern.

Es  muß  aber eine Möglichkeit geben, nur den Fensterinhalt abspeichern zu  können.   Immerhin kann es die DumpRastPort-Routine des printer.device auch.   Wer  also  sachdienliche  Hinweise  zu diesem Thema hat, möge sich bitte mit mir in Verbindung setzen.

Der Text-Formatter
******************

Ab  RSYS  1.2  ist es möglich, beim Abspeichern einer Liste die Ausgabe noch  etwas  zu formatieren.  Dazu erscheint nach jedem Filerequester ein Fenster mit acht Gadgets.

 -- Gadget: Prefix
     Hier wird eingetragen, was vor dem zu speichernden Listeneintrag stehen soll.

 -- Gadget: Text to save
     In   diesem   Gadget   wird   die   Formatierung  des  zu  speichernden Listeneintrags angezeigt.  Diese kann sich ändern, wenn die Gadgets Blank between texts und Quote-in text gesetzt sind.

 -- Gadget: Postfix
     Hier steht der Text, der nach dem Listeneintrag kommen soll.

 -- Gadget: Blank between texts
     Ist  dieser  Schalter  angeklickt,  wird  zwischen  dem  Prefix und dem Listeneintrag  sowie  zwischen  dem  Listeneintrag  und  dem  Postfix  ein Leerzeichen (Blank) eingefügt.

 -- Gadget: Quote-in text
     Ist dieser   Schalter   angeklickt,   wird   der   Listeneintrag   in Anführungszeichen gesetzt.

 -- Gadget: No header in file
     Bei formatierten Ausgaben ist es manchmal nicht wünschenswert, daß eine Titelzeile  in  die Datei geschrieben wird.  Das kann mit diesem Gadget abgeschaltet werden.

Eine  Anwendung  wäre  zum Beispiel, wenn Ihr nach Dateien suchen laßt, die  Ihr dann löschen wollt.  Ihr öffnet das Find File-Fenster und tragt das  entsprechende  Pattern  ein,  z.B.  #?.bak.  Die ausgewählten Devices werden  dann  nach  solchen  Dateien  durchsucht.  Habt Ihr alle zusammen, speichert  Ihr  die  Datei  ab.   Nach  dem  Filerequester  erscheint  der Text-Formatter.   Dort  schreibt  Ihr  als  Prefix  Delete hinein.  Dann schaltet Ihr noch alle Schalter ein und klickt dann auf Use format.  Die Einträge werden dann in dem Format

        Delete "datei.bak"

abgespeichert.   Diese Datei könnt Ihr dann mit Execute ausführen und alle gefundenen Dateien werden gelöscht.

RSys und Hintergrundinfos
*************************

RSYS  wurde  unter Berücksichtigung aller mir bekannten Richtlinien der Programmierung  unter  AmigaOS 2.0 geschrieben.  Alle kritischen Routinen wurden  bis  zu  dreimal  abgesichert.   Das  bläht zwar etwas den Code, gewährleistet aber die Lauffähigkeit auch unter Betriebssystemen >= 2.04.

Besonderer  Wert  wurde  auf  die  Vermeidung  von  Speicherfehlern und
Enforcer-Hits  gelegt.   Bei einem auftretenden Speicherfehler wird in den
meisten   Fällen   das   Programm   unter   Angabe   von  Quelldatei-  und
Funktionsname,   sowie  der  Zeilennummer  im  Quelltext  abgebrochen  und
beendet.

Einige  Listen  lassen  es  zu,  daß  man  die Einträge systemkonform modifizieren  kann.   Dazu gehören zum Beispiel die Prioritäten von Tasks. Andere  Listenelemente  können  unter  Beachtung wichtiger Regeln entfernt werden.  Hierbei sind die sogenannten Schutzprotokolle zu berücksichigen.

Bei der Modifizierung von Intuition-Objekten (Windows, Screens) ist das Protokollpaar  LockIBase()/UnlockIBase()  zu  verwenden.   Geht es nur um Veränderung  der  Lage von solchen Objekten, z.B.  mit WindowToFront(), so ist  diese Operation schon von Intuition ausreichend geschützt.  Bei allen Listen  der  ExecBase ist das Paar Forbid()/Permit() zu verwenden, das das Multitasking  für  die  Dauer der Operationen zwischen den beiden Routinen ausschaltet.

Bei manchen Listen reicht jedoch dieses Protokoll nicht aus. Dazu  gehören alle interruptgesteuerten Listen, wie die Task-, Interrupt-, Speicher-  und  Blitter-Queue-Listen.   Diese  müssen  zusätzlich  mit dem Protokoll  Disable()/Enable()  geschützt  werden.  Das Protokollpaar unterbricht die   Abarbeitung  von  Interrupts.   Da  fast  jedes  Multitasking  stark interruptabhängig  ist,  kann  es  zu  einem  Absturz kommen, falls dieser Zustand  zu lange  anhält.   Schätzungen über die Zeitdauer lauten bis etwa 250  Mikrosekunden.  Obwohl diese Zeit ausreicht, um auch eine große Liste auszulesen, sollte dieser Zustand nicht zu lange gehalten werden.

Disable()/Enable()  beinhaltet  damit  auch logischerweise implizit ein Forbid()/Permit().   Beide  Protokolle  sind  schachtelbar,  womit man ein totsicheres  Varfahren  an  die Hand bekommt, um Systemlisten auszulesen.

Unter diesen Vorsichtsmaßnahmen sollte es keine Probleme im Zusammenspiel mit anderen Programmen geben, bis auf eine Einschränkung: RSYS kann nicht mit Programmen zusammenarbeiten, die nicht systemkonform programmiert wurden.  Beispiele dafür sind Programme, die beispielsweise den Namen eines öffentlichen Ports nicht korrekt initialisieren.  So kommt es beispielsweise vor, daß ein Programm zwar einen Zeiger auf einen Portnamen ungleich Null hat, diesen Zeiger aber uninitialisiert läßt und dieser dann folglich irgendwohin zeigt.  Die Folge ist im harmlosesten Fall ein Enforcer-Hit des Typs READ-BYTE (beim Auslesen des vermeintlichen Strings), im extremsten Fall ein Guru!

Ich habe das Problem jetzt so gelöst, daß ich bei den auszulesenen Node-Namen das Typen-Flag untersuche.  Steht dort der Eintrag NT_UNKNOWN oder nicht das erwartete Flag, lese ich den String einfach nicht aus, sondern trage in das ListView

        <wrong type:0>

ein. Hierbei steht die 0 für den ermittelten Knotentypen. Die möglichen Knotentypen sind:

      Wert       Typ
     ------------------------------------------------------
        0        Unbekannter Node-Typ
        1        Task
        2        Interrupt
        3        Device
        4        Message Port
        5        Message
        6        freie Message
        7        Message wurde beantwortet
        8        Resource
        9        Library
       10        Memory-Node
       11        Softinterrupt
       12        Font
       13        Prozeß
       14        Semaphor
       15        Signalsemaphor
       16        Boo-Node
       17        Kick-Memory-Node
       18        Graphics-Node (Monitor-Node z.B.)
       19        Death Message (eine tote Nachricht)
      254        Benutzerdefinierter Node
      255        Erweiterung (auch benutzerdefiniert)

Manche Systemutilities (z.B.  ARTM) achten darauf nicht und produzieren Enforcer-Hits  en mas.  Diese Fehler lassen sich auch nicht vermeiden.  Der Aufwand dafür  wäre  einfach  zu  groß,  da  man  ja praktisch Teile des Programms Enforcer  in  das eigene Programm implementieren müßte.  Solange man nicht davon  ausgehen  kann, daß JEDER Programmierer systemkonform programmiert, wird es diese Lücke auch weiterhin geben.

Ein weiterer typischer Fehler ist die Verwendung der Compiler-Funktion strcpy() auf Quellstrings vorher unbekannter Länge.  Viele Programmierer verwenden diese Routine, um schneller Strings zu kopieren. Dabei wird nicht beachtet, daß man eventuell  gar nicht soviel Speicherplatz reserviert hat, um den Quellstring aufzunehmen.  Ein signifikantes Beispiel dafür ist das o.g.  Port-Namen-Problem.  Ist der String uninitialisiert und nicht mit ASCII 0 terminiert, kopiert strcpy() einen solchen Portnamen bis in alle Ewigkeit, bis zum Ende des Speichers, bis zur nächsten Einsprungadresse eines anderen Tasks oder bis zur nächsten Reise von Indian tours :-) Manche  Programmierer sagen sich dann, überprüfen wir doch einfach mit strlen()  den Quellstring.  Nun, da strlen() auch solange zählt, bis ASCII 0 erkannt wurde, ist diese Methode auch für eine Auslandsreise nach Indien durchaus geeignet.

Das einfachste und probateste Mittel in diesem Fall, ist die Compiler-Funktion strncpy().  Damit kann man einfach festlegen, wieviel Zeichen denn nun kopiert werden sollen.  Das einzige, was jetzt noch stört, ist der READ-BYTE-Hit den man bekommt, wenn man merkwürdige Adressen an strncpy() übergibt.

Ein  weitere  Fehlerquelle  ist  die  Verwendung  von printf() in allen seinen Erscheinungsformen (sprintf(), vsprintf() etc.) im Zusammenhang mit Systemlisten.   Da  die printf()-Routinen auch auf DOS-Routinen zugreifen, sind  sie  zum  zügigen  Kopieren von mehreren Systemeinträgen ungeeignet. Die Routine RawDoFmt() der Exec-Library ist jedoch sicher. Mit ihr kann man sich selbst ein sprintf() zusammenbauen, was ich auch getan habe. Normalerweise befindet sich aber diese Routine in der amiga.lib.

Sicher  ist weiterhin die Verwendung der str...()-Routinen zwischen Schutzprotokollen, da diese  nur  Speicherbereiche  kopieren  oder  verschieben.   Möchte man es trotzdem  noch  schneller  haben,  gibt es  noch die Funktionen CopyMem() und CopyMemQuick().    Bei   letzterer   ist   zu   beachten,  daß  die  Daten auf longwords ausgerichtet   sein   müssen.    Beide   Routinen   gehören   zur exec.library, können also bei Systemlistenuntersuchungen verwendet werden.

Tips und Tricks
***************

Diese Sparte ist zunächst leer.  Sollten sich Anfragen und Tips aus dem hoffentlich  großen  Kreis  von  RSYS-Benutzern,  wird sich dieser Bereich füllen.

Stop!  Einen Tip habe ich schon :-)

Der  folgende  Batch (Name tracer) war mir beim Testen des Programmes sehr hilfreich:

     .KEY onoff,program/A
     .bra {
     .KET }

     if { program } eq ""
        echo "Aufruf: tracer [ON | OFF] [program]"
        quit
     endif

     if { onoff } eq ON
        assign t: doks:t
        cpu nofastrom
        run >NIL: <NIL: MungWall TASK {program}
        run >NIL: <NIL: IO_Torture
        run >NIL: <NIL: enforcer ON
        run sushi <>"CON:0/190//80/Sushi CTRL-E:Empty CTRL-F:File/AUTO/CLOSE"
                  ON BUFK=1024
     else
        if { onoff } eq OFF
           Utilities:ProgUtils/Sushi/sushi OFF
           run >NIL: <NIL: enforcer OFF
           tbreak IO_Torture
           tbreak MungWall
           cpu fastrom
           assign t: ram:t
        else
           echo "Aufruf: tracer [ON | OFF] <[program]>"
        endif
     endif

Das  Programm tbreak sendet einen Break-Signal an den Task, dessen Name als  Parameter  beim  Aufruf  mit  angegeben  wurde.   Es  ist ein kleines Programm, daß ich mal quick and dirty gehackt habe.  Hier kommt der kleine Quelltext dazu:

     #include <exec/types.h>
     #include <exec/execbase.h>

     #include <dos/dos.h>
     #include <dos/dosextens.h>

     #include <clib/dos_protos.h>
     #include <clib/exec_protos.h>

     #include <stdio.h>
     #include <string.h>

     #define STRINGEND '\0'

     char *
     B2CStr(char *ret, BSTR inp)
     {
        register int i;
        char *help = (char *)BADDR(inp);

        for (i = 0; i < *help; i++)
           *(ret + i) = *(help + i + 1);

        *(ret + i) = STRINGEND;

        return (ret);
     }

     int
     main(int argc,char **argv)
     {
        struct DOSBase *DOSBase = NULL;
        extern struct ExecBase *SysBase;
        int ret = RETURN_FAIL;

        if(DOSBase = (struct DOSBase *)OpenLibrary((STRPTR)"dos.library", 33L))
        {
           struct Node *node,*membernode[200];
           struct CommandLineInterface *CLI;
           char modname[200];
           int i,j,out;

           if(argc != 2)
              Printf((STRPTR)"Aufruf: %s <taskname>\n",argv[0]);
           else
           {
              Forbid();
              Disable();

              for (node = SysBase->TaskWait.lh_Head;
                   node->ln_Succ&& i < 200; node = node->ln_Succ)
                 membernode[i++] = node;

              for (node = SysBase->TaskReady.lh_Head;
                   node->ln_Succ && i < 200; node = node->ln_Succ)
                 membernode[i++] = node;

              if (i < 200)
                 membernode[i++] = &SysBase->ThisTask->tc_Node;

              Enable();

              out = FALSE;

              for (j = 0; j < i && !out && i < 200; j++)
              {
                 struct Process *proc = (struct Process *)membernode[j];
                 if(CLI = (struct CommandLineInterface *)BADDR(proc->pr_CLI))
                 {
                    B2CStr(modname,CLI->cli_CommandName);
                    if (!strcmp(argv[1],modname))
                    {
                       Signal((struct Task *)proc,
                              SIGBREAKF_CTRL_C | SIGBREAKF_CTRL_D |
                              SIGBREAKF_CTRL_E | SIGBREAKF_CTRL_F);
                       out = TRUE;
                    }
                 }
              }

              Permit();

              if(out == TRUE)
                 Printf((STRPTR)"Task with command \'%s\' signaled...\n",argv[1]);
              if(i >= 200)
                 PutStr((UBYTE *)"More than 200 tasks read!\n");

              ret = RETURN_OK;
           }
           CloseLibrary((struct Library *)DOSBase);
        }

        return(ret);
     }

Weitere Pläne
*************

OS  2.0  gibt  mir  immer  neue  Ideen.   Das merke ich jedesmal, schon während  ich  eine Routine programmiere.  Folgendes habe ich für die nächsten Versionen geplant:

  * Ein Autolister für die Diskettenlaufwerke (Benutzeroberfläche ist schon da ;-), also Diskette rein, Inhalt automatisch lesen, Diskette raus, nächste Diskette rein usw.

  * Die Utilities werden als eigene Prozesse gestartet

  * Bei RSYS verschwinden evtl. die Gadgets und der Menüpunkt "Special lists", dafür kommt ein zweites ListView.

  * Ein erweiterte Dateitypen-Erkennung, evtl. eine FileType.library

  * Evtl. eine eigene Utility.library, die auch von anderen Programmen genutzt werden kann

  * Bugs beseitigen :-)

  * AmigaGuide-Unterstützung statt Hilfsfile

Wer    einen    oder   mehrere   Fehler   findet,   der   sollte   mich
schnellstmöglichst  darüber informieren, wo und unter welchen Umständen es
zu  Problemen  kam.   Zu  einer  solchen  Fehlermeldung  gehören  folgende
Informationen über die Rechnerumgebung:

  * Verwendetes Rechnermodell (A500, A500+, A1000, A2000, A2000+, A2500, A3000, A3000T, A4000, etc.)

  * Speicherausbaustufe

  * Prozessor-Hardware (68000, 68010, 68020, 68030, 68040, etc.)

  * Graphik-Hardware (ECS, AGA, ImpactVision, Domino, etc.)

  * Verwendete Betriebssystemversion und Art (A3000 ROM, A3000 Kickfile, A500+ ROM, A600 ROM, Kickfile, etc.)

  * Verwendete WorkBench-Version

  * Festplatten-Controller (sofern vorhanden)

  * Modemtyp und zur Ansteuerung des Modems verwendete Hardware (Multi-IO-Karten, etc.)

Alle diese Listen können übrigens einfach mit RSYS erzeugt und in eine Datei geschrieben werden.

Wenn  der auftretende Fehler beschrieben wird, bitte soviel wie möglich über  den  Arbeitsvorgang,  der  dem  Fehler  vorausging, mit aufschreiben! Zuletzt bitte ich darum, den Text so sorgfältig zu schreiben, daß ich auch wirklich  etwas  damit anfangen kann; vage Beschreibungen helfen mir nicht besonders  und  wenn ich aus einer Fehlermeldung nicht schlau werden kann, bleibt  ein  möglicher Fehler vielleicht so lange im Programm, bis ich ihn zufällig selbst entdecke.

Fehlermeldungen   können  mir  auf  jedem  sinnvoll  erscheinende  Wege zugeleitet  werden,  es  hilft  allerdings  manchmal,  dies über Z-Netz zu bewerkstelligen,  was  mir  die  Möglichkeit  gibt, bei Bedarf noch einmal nachzufragen.

Copyrights und Verwendung
*************************

Es  wird  keine  Garantie  gegeben, daß das Programm 100%ig zuverlässig ist.   Ihr  benutzt dieses Programm auf eigene Gefahr.  Der Autor kann auf keinen  Fall  für  irgendwelche Schäden verantwortlich gemacht werden, die durch die Anwendung dieses Programmes entstehen.

Weiterhin darf das Programm und der Quelltext zu RSYS 1.2 nicht zu kommerziellen Zwecken jeder Art verwendet werden. Desweiteren dürfen das Programm und der Quelltext nicht direkt und nicht indirekt zu militärischen Zwecken jeder Art verwendet werden!  Jede Veröffentlichung in Diskmagazinen und Zeitschriften muß mit der Zustimmung des Autors stattfinden.

Der Quelltext ist völlig Public Domain und Giftware, aber es wäre nett, wenn mich der jeweilige Programmierer in einer kleinen Danksagung erwähnen würde.  Auch wenn andere dieses Programm als Grundlage nehmen, um ein neues RSYS zu programmieren, sollten diese sich mit mir in Verbindung setzen, damit wir unsere Aktivitäten koordinieren können.

     Der Autor ist weiterhin sehr empfänglich für kleine Geschenke, also Geld
     :-), Gummibärchen, Briefe, Postkarten, Disketten, Musikkassetten u.v.a.m.
     Auch Geldspenden, Schecks oder Überweisungen werden nicht abgelehnt :-))
     Hier meine Adresse:

           Rolf Böhme
           Stammestr. 48
           30459 Hannover
           Germany
           EMAIL: R.BOEHME@COPS.ZER
           FIDO:  2:245/44.2 (Rolf Boehme)

Ich  behalte  mir  weiterhin vor, den Typ des Programmes (PD, Freeware, Shareware,  Payware)  zu  ändern.  Daher gelten diese Festlegungen nur für RSYS 1.2.  Alle weiteren oder vorhergehenden Releases oder Versionen unterliegen dann anderen Bestimmungen.

Danksagungen
************

  * Klaus Spark (Klaspa)

     Mein  erster  und  kritischster  Betatester.   Ohne  ihn sähe RSYS ganz anders aus!  Danke Klaus!

  * Klaus Nolte (Viking)

     Der zweite Betatester. Seine Langzeitversuche sind die besten! Danke Klaus!

  * Lars Monecke (Mave)

     Er betatestete und steuerte die Icons zu RSYS bei, die ich ein klein wenig modifizierte. Danke Mave!

  * Michael (Pokey, Sysop der CASABLANCA)

     Seinen kritischen Anmerkungen verdankt das Installer-Script sein heutiges Aussehen. Danke Michael!

  * Olaf 'Olsen' Barthel

     Seine Quelltexte zu term und anderen sind ein wahre Fundgrube für jeden Programmierer!

  * Thomas Breit, Sysop der Box ACBW in Wolfsburg

     Er betatestete und fand einige Fehler.

  * Florian Faber

     Er  betatestete  und  trieb mich mit seinem 4000er fast an den Rand der Aufgabe. Danke Florian!

  * Franz-Josef Reichert (FJR)

     Ihm verdanke ich einige Hinweise zur Systemprogrammierung. Danke, FJ!

  * Michael Sinz

     Sein Enforcer ist der Beste. Viele Fehlerbeseitigungen gehen auf sein Konto :-)

  * Jan van den Baard

     Seine GadToolsBox erlaubte das Design von RSYS. Danke Jan!

  * Carolyn Scheppner

     Dein Sushi zeigte mir ohne viel Papierverschwendung, was über die Serielle an Hits kamen :-)

  * Thomas Carstens

     Sein Programm ShowGuru sagte mir, was ich schon wieder falsch gemacht habe :-)

               Viele, viele andere Leute im Z-Netz und sonstwo,
                von denen ich gelernt habe, zu programmieren.

Verwendete Software
*******************

Dieses Programm entstand mit Hilfe folgender Programme :

        Aztec C68k/Amiga 5.2a Sep 25 1991 17:04:29
        Copyright 1991 by Manx Software Systems, Inc.

        GadToolsBox 37.176 (01.9.92)
        (c) Copyright 1991,92 Jaba Development

        CEdPro2 Version 2.11
        (c) Copyright by CygnusSoft Software

        mungwall 36.45 (9.5.91)
        Copyright (c) 1990, 1991 Commodore-Amiga, Inc.

        Enforcer 37.25
        Copyright (c) 1992 Michael Sinz

        io_torture 37.6 (16.1.91)

        texinfo 2.109
        Copyright (C) 1985, 86, 88, 90, 91, 92, 1993
        Free Software Foundation, Inc.

        MakeInfo 1.55
        Copyright (C) 1993 Reinhard Spisser and Sebastiano Vigna
        Under GNU License

        DVI-Print - Version 1.07L for AMIGA (c) 1990/91
        (c)Copyright 1990-91, (hes/rbs) , All rights reserved. Feb  9 1991

        ShowDVI - Version 1.17L for AMIGA (c) 1990/91
        (c)Copyright 1990-91, (hes). All rights reserved. Sep 28 1991

Da  das  Programm  Funktionen  der  Kickstart  2.0  verwendet, läuft  es folglich nur auf Amigas mit Kickstart >= 2.0.

History
*******

          [file RSysHistory not included]

Anhang
******