home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fresh Fish 9
/
FreshFishVol9-CD2.bin
/
bbs
/
util
/
rsys-1.3.lha
/
RSys
/
doc
/
RSys12.doc
< prev
next >
Wrap
Text File
|
1993-07-15
|
125KB
|
2,847 lines
_____________________________________________________________________
_____________________________________________________________________
######### ######### #### #######
## ## ## ## ## ## ## ##
## ## ## ## ## ##
## ## ## ## ## ##
######### ######## ## ## ####### ## ##
## ## ## ## ## ## ## ##
## ## ## ## ## ###### ## ##
## ## ## ## #### ## ## ### ##
## ### ######## ## ####### ## ### ########
___________________________ ## ______________________________________
_________________________ ### _______________________________________
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.
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 *NO*FASTMODE).
- 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
*******
============
Version 1.01 (unveröffentlicht)
============
10-Apr-93
---------
- BACKPATTERNCOL = 0, dann wurde das Fenster nach einem ZipWindow nicht
korrekt aufgebaut. Bug fixed.
- Iconname (Programmname) global gemacht mit Notify auf die Icon-Datei.
18-Apr-93
---------
- CenterWindow() erheblich vereinfacht
- Aus "Available fonts" wurde "Fonts in FONTS:", da die ROM-Fonts
schon mit dem Button "Fonts" angezeigt werden können.
- Aus "Quit Sys" wurde "Quit RSys"
22-Apr-93
---------
- Library offsets eingeführt, checkt die gepatchten Libraries und Devices
============
Version 1.02 (unveröffentlicht)
============
01-May-93
---------
- Das sprintf() bricht kein Forbid()! Daher schreibe ich alle
Funktionen um.
02-May-93
---------
- Die ASL-Routinen wurden gekürzt
- Das Einsortieren der Listeneinträge verursachte unter bestimmten
Umständen Enforcer-Hits. Diese wurden beseitigt.
- Die Anzeige des DOS-Typs bei Volumes sah etwas wild aus. Beseitigt.
- Die Fontanpassung wurde etwas verbessert. Bei kleinen System-Screen-Font
wurde bei einigen Anzeigen im ListView das letzte Zeichen verschluckt.
06-May-93
---------
- Abspeichern ins Clipboard ist jetzt möglich. Eine ganze Liste kann im
Clipboard abgelegt werden
07-May-93
---------
- Ein neuer Menüpunkt ist dazugekommen: Flushing. Mit ihm können entweder
alle unbenutzten Libraries oder Fonts aus dem System entfernt werden
08-May-93
---------
- Die Source wurde ausführlicher dokumentiert. Jede Quelldatei hat nun
ihren Header.
- Die Port-Liste wurde nicht sortiert. Bug fixed.
- Der eingebaute Font ibm.font wurde entfernt und durch ein
OpenDiskFont()-Call ersetzt. Wird der ibm.font nicht gefunden, wird
Standard-Topaz für die Baumstruktur verwendet.
- Das ListView wird Read Only, wenn ein Hunk-Listing erstellt wird.
10-May-93
---------
- Es gibt ein neues Menü "ClipBoard". Es kann dort die ganze Liste, oder
ein Eintrag aus dieser Liste ins ClipBoard kopiert werden.
- Ein Enforcer-Hit wurde beseitigt. Die Routine GetNode() funktioniert
nun korrekt.
13-May-93
---------
- Einige Requester wurden geändert
- Der Menüpunkt "Check Libraries" wurde ins Menü "Special Actions"
verlagert.
16-May-93
---------
- Das globale Steuerfeld bekommt ein Bit mehr. Darin wird verzeichnet, ob
eine Zählstatistik im unteren Textgadget angezeigt werden soll.
20-May-93
---------
- Bug im Menüpunkt "Speak" beseitigt. Nach einem "Topaz font" wurde
dieser Menüpunkt nicht korrekt gesetzt.
- Es gibt jetzt einen Modus, in dem alle Ja/Nein-Abfragen von RSys
default gesetzt werden. Damit wird die Bedienung etwas schneller, falls
es gewünscht wird. Deshalb gibts dann auch das neue Tooltype
NOSAVEASKING.
- Der Quelltext wurde etwas überarbeitet.
- Die Menüs wurden überarbeitet.
20-May-93
---------
- Der Menüpunkt "Volume locks" ist dazugekommen.
- Bug in der Memory-Anzeige gekillt.
- Schweren Bug in der Jump()-Routine beseitigt!
07-Jun-93
---------
- Jedes Fenster hat jetzt ein Pattern-Muster, wie das Hauptfenster.
- Die "Check Libraries-Routine funktionierte nicht mit 4000er-ROMS. Jetzt
wird der korrekte Offset des KickROMs berechnet.
12-Jun-93
---------
- Das APP-Icon kann jetzt abgestellt werden.
- Das Centering funktionierte mal wieder nicht. Behoben.
- Das Patternmuster der Fenster kann jetzt zweifarbig dargestellt werden.
21-Jun-93
---------
- Es ist ein Textformatter für die Ausgaben auf Datei hinzugekommen.
- Die Sourcedateien wurden überarbeitet und weiter aufgeteilt
- Der MakeFile sieht etwas anders aus
- Das Installations-Script wurde vollständig neu geschrieben
24-Jun-93
---------
- Riesenbug in der "Memory"-Anzeige beseitigt. Führte auf dem 2000er zu
keinerlei Abstürzen, aber unter OS3 zu Chaos!
- Das Fehlerbehandlungssystem wurde total überarbeitet. Und schon wieder
1.5 KB kürzer :-).
- Alle Libraries werden mit der Versionsnummer 36 geöffnet. Damit werden
"falsche" Library-Aufrufe vermieden.
25-Jun-93
---------
- Die Speicherverwaltung wurd etwas optimiert
- Ich habe endlich einen einigermaßen sicheren Weg gefunden,
uninitialisierte Pointer auf Node-Namen korrekt abzufangen.
Glücklicherweise trägt das System (manchmal) ein NT_UNKNOWN als Type
des Nodes ein. Geschieht das, ist dieser Node sowieso Müll.
- Die Labels der Gadgets sind bei einer unglücklichen Wahl des
Patternmusters und der Farben etwas "zerlegt". Bug fixed.
- Die Funktion, die den Namen eines Nodes in einen String kopiert, wurde
jetzt vom Node-Typen abhängig gestaltet. Damit hoffe ich einige
Enforcerhits, die sich bei unsauber eingerichteten Knotennamen ergaben
den Garaus gemacht zu haben.
- Das Fenster zum Einstellen einer Taskpriorität bekam kein Pattern. Bug
fixed.
- Gewaltiger Bug in der "Save Windows"-Routine entfernt!
===========
Version 1.2
===========
30-Jun-93
---------
- Die Dokument-Dateien wurden mit TexInfo bearbeitet und neu gesetzt.
03-Jul-93
---------
- Die Menü-Leiste wurde gekürzt und das Menü etwas anders aufgeteilt
07-Jul-93
---------
- Ein neuer Menüpunkt - Gadgets - ist hinzugekommen.
- Die Quelltexte wurden überarbeitet
- Das Icon wird jetzt vom Programmicon übernommen. Damit ist das
eingebaute Icon überflüssig und RSys wieder kleiner geworden
10-Jul-93
---------
- Noch einen Bug in der Menü-Iconify-Routine ausgebügelt
- Die Gadget-Texte haben einen Rahmen bekommen, eine Bevelbox
- Das Layout der einzelnen Fenster wurde etwas "verschönert"
- Ein neues Font-Anzeigefenster wurde programmiert
15-Jul-93
---------
- Ein Statusbalken ist dazugekommen und ein neues Flag, "Working bar"
- Fehler in der Preference-Liste entdeckt! Harter Bug fixed.
- Dokumentation angepaßt
Anhang
******
Funktionen
==========
`<ohne Namen>' Actions
`About...' Project
`Amigaguide XRef' Other Libraries
`Assigns' Assign-Liste der DOSBase
`Auto front window' Flags
`BACKGROUNDCOL' Aufruf von der WorkBench
`BACKPATTERN' Aufruf von der WorkBench
`BACKPATTERNCOL' Aufruf von der WorkBench
`Blank between texts' Der Text-Formatter
`Blitter Wait Queue' Graphics
`BLOCKPEN' Aufruf von der WorkBench
`Case sense/No case sense' Actions
`Check Libraries' Actions
`CLI processes' Exec
`Clip entry...' Clip
`Clip list' Clip
`Commodities' Other Libraries
`CopyMem()' RSys und Hintergrundinfos
`CopyMemQuick()' RSys und Hintergrundinfos
`CRC Check' Actions
`Crypt' Actions
`CX_CRC' Aufruf von der WorkBench
`CX_CRYPT' Die Hotkey-Aktivierung
`CX_CRYPT' Aufruf von der WorkBench
`CX_FINDFILE' Die Hotkey-Aktivierung
`CX_FINDFILE' Aufruf von der WorkBench
`CX_FORMAT' Die Hotkey-Aktivierung
`CX_FORMAT' Aufruf von der WorkBench
`CX_HOTKEY' Die Hotkey-Aktivierung
`CX_HOTKEY' Aufruf von der WorkBench
`CX_HUNKLIST' Aufruf von der WorkBench
`CX_SAVEWINDOW' Aufruf von der WorkBench
`DETAILPEN' Aufruf von der WorkBench
`Devices' Actions
`Devices' Actions
`Dirs + Files/Files/Directories' Actions
`Disable()/Enable()' RSys und Hintergrundinfos
`Disk label' Actions
`Display Modes' Graphics
`ENV-Variables' Preferences
`Fast Mode' Flags
`Find File' Actions
`Flush all libraries and Fonts' Flushing
`Flush Fonts' Flushing
`Flush Libraries' Flushing
`Fonts' Font-Liste der GfxBase
`Fonts in FONTS:' Diskfont
`Forbid()/Permit()' RSys und Hintergrundinfos
`Format' Actions
`Format' Actions
`Format Disk' Actions
`Found files/dirs' Actions
`Gadgets' Intuition
`HandlerInp' Inputhandler-Liste
`Hardware' Hardware-Liste der ExpansionBase
`Help' Project
`Iconify' Project
`Icons/No Icons' Actions
`IFF File' Actions
`International/No international' Actions
`Interrupts' Interrupt-Liste der ExecBase
`Jump' Springen zwischen Public Screens
`Kill saved list' Internal List
`Libraries' Library-Liste der ExecBase
`List Hunks' Actions
`LockIBase()/UnlockIBase()' RSys und Hintergrundinfos
`Memory' Memory-Liste in der ExecBase
`MENUPEN' Aufruf von der WorkBench
`Mouse window' Flags
`MOUSEWINDOW' Aufruf von der WorkBench
`No header in file' Der Text-Formatter
`NOAPPICON' Aufruf von der WorkBench
`NOFASTMODE' Aufruf von der WorkBench
`NOSORT' Aufruf von der WorkBench
`OFS/FFS' Actions
`OUTWINDOW' Die Hotkey-Aktivierung
`OUTWINDOW' Aufruf von der WorkBench
`Pattern' Actions
`Physical Devices' DOS
`Ports' Port-Liste in der ExecBase
`Postfix' Der Text-Formatter
`Preferences' Preferences
`Prefix' Der Text-Formatter
`Printer Data' Preferences
`Public Screens' Intuition
`Quick' Actions
`Quit RSYS...' Project
`Quote-in text' Der Text-Formatter
`RawDoFmt()' RSys und Hintergrundinfos
`Reload actionfile' Project
`Rescan windows' Actions
`Resident programs' Exec
`Resourcen' Resourcen-Liste der ExecBase
`Restore saved list' Internal List
`ROT 13-Verfahren' Verschlüsseln von Daten und Dateien
`Save asking' Flags
`Save current list' Internal List
`Save found list' Actions
`Save List' Abspeichern einer Liste
`Save windows' Actions
`Screens' Screen-Liste der IntuitionBase
`Sel all' Actions
`Sel none' Actions
`Selected Devices' Actions
`Semaphores' Exec
`Software Devices' Exec
`Sorting' Flags
`Speaking' Flags
`sprintf()' RSys und Hintergrundinfos
`Start/Stop Search' Actions
`strcpy()' RSys und Hintergrundinfos
`strlen()' RSys und Hintergrundinfos
`strncpy()' RSys und Hintergrundinfos
`Systeminfo' Allgemeine Systeminfo
`Tasks' Task-Liste der ExecBase
`Text to save' Der Text-Formatter
`TOF Wait Queue' Graphics
`Topaz font' Flags
`TOPAZFONT' Aufruf von der WorkBench
`Vectors' Exec
`Volume Locks' DOS
`Volumes' Volume-Liste der DOSBase
`Windows' Actions
`Windows' Window-Liste der IntuitionBase
`Working bar' Flags
`WORKINGBAR' Aufruf von der WorkBench
`zellularen Automaten' Verschlüsseln von Daten und Dateien
Programm Index
==============
Check Libraries Actions
Gadget: Assigns Assign-Liste der DOSBase
Gadget: Fonts Font-Liste der GfxBase
Gadget: HandlerInp Inputhandler-Liste
Gadget: Hardware Hardware-Liste der ExpansionBase
Gadget: Interrupts Interrupt-Liste der ExecBase
Gadget: Jump Springen zwischen Public Screens
Gadget: Libraries Library-Liste der ExecBase
Gadget: Memory Memory-Liste in der ExecBase
Gadget: Ports Port-Liste in der ExecBase
Gadget: Resourcen Resourcen-Liste der ExecBase
Gadget: Save List Abspeichern einer Liste
Gadget: Screens Screen-Liste der IntuitionBase
Gadget: Systeminfo Allgemeine Systeminfo
Gadget: Tasks Task-Liste der ExecBase
Gadget: Volumes Volume-Liste der DOSBase
Gadget: Windows Window-Liste der IntuitionBase
Menüpunkt: About... Project
Menüpunkt: Amigaguide XRef Other Libraries
Menüpunkt: Auto front window Flags
Menüpunkt: Blitter Wait Queue Graphics
Menüpunkt: CLI processes Exec
Menüpunkt: Clip entry... Clip
Menüpunkt: Clip list Clip
Menüpunkt: Commodities Other Libraries
Menüpunkt: CRC Check Actions
Menüpunkt: Crypt Actions
Menüpunkt: Display Modes Graphics
Menüpunkt: ENV-Variables Preferences
Menüpunkt: Fast Mode Flags
Menüpunkt: Find File Actions
Menüpunkt: Flush all libraries and FontsFlushing
Menüpunkt: Flush Fonts Flushing
Menüpunkt: Flush Libraries Flushing
Menüpunkt: Fonts in FONTS: Diskfont
Menüpunkt: Format Disk Actions
Menüpunkt: Gadgets Intuition
Menüpunkt: Help Project
Menüpunkt: Iconify Project
Menüpunkt: Kill saved list Internal List
Menüpunkt: List Hunks Actions
Menüpunkt: Mouse window Flags
Menüpunkt: Physical Devices DOS
Menüpunkt: Preferences Preferences
Menüpunkt: Printer Data Preferences
Menüpunkt: Public Screens Intuition
Menüpunkt: Quit RSys... Project
Menüpunkt: Reload actionfile Project
Menüpunkt: Resident programs Exec
Menüpunkt: Restore saved list Internal List
Menüpunkt: Save asking Flags
Menüpunkt: Save current list Internal List
Menüpunkt: Save windows Actions
Menüpunkt: Semaphores Exec
Menüpunkt: Software Devices Exec
Menüpunkt: Sorting Flags
Menüpunkt: Speaking Flags
Menüpunkt: TOF Wait Queue Graphics
Menüpunkt: Topaz font Flags
Menüpunkt: Vectors Exec
Menüpunkt: Volume Locks DOS
Menüpunkt: Working bar Flags
tbreak Tips und Tricks
tracer Tips und Tricks
Xoper, ARTM, TaskX und andere Was ist RSys?
Konzept
=======
Abspeichern einer Liste Abspeichern einer Liste
Adresse Copyrights und Verwendung
Allgemeine Systeminfo Allgemeine Systeminfo
Anhang Anhang
Assign-Liste der DOSBase Assign-Liste der DOSBase
Aufruf vom CLI Aufruf vom CLI
Aufruf von der WorkBench Aufruf von der WorkBench
Copyrights und Verwendung Copyrights und Verwendung
CRC-Checksummen berechnen CRC-Checksummen berechnen
Danksagungen Danksagungen
Das Actioning Das Actioning
Das Hauptfenster Das Hauptfenster
Das Icon Das Icon
Das Menü Das Menü
Das Modifizieren Das Modifizieren
Dateien suchen Dateien suchen
Der Text-Formatter Der Text-Formatter
Die Actions-Datei Die Actions-Datei
Die ENV-Variablen Die ENV-Variablen
Die Gadgets und das ListView Die Gadgets und das ListView
Die Help-Datei Die Help-Datei
Die Hotkey-Aktivierung Die Hotkey-Aktivierung
Die Utilities von RSys Die Utilities von RSys
Diskfont Diskfont
DOS DOS
Exec Exec
Fehlermeldungen Weitere Pläne
Fenster in IFF-Dateien speichern Fenster in IFF-Dateien speichern
Font-Liste der GfxBase Font-Liste der GfxBase
Gadgets - Menüs - das Icon Gadgets - Menüs - das Icon
Graphics Graphics
Hardware-Liste der ExpansionBase Hardware-Liste der ExpansionBase
History History
Inputhandler-Liste Inputhandler-Liste
Installation von RSys Installation von RSys
Interrupt-Liste der ExecBase Interrupt-Liste der ExecBase
Intuition Intuition
Library-Liste der ExecBase Library-Liste der ExecBase
Memory-Liste in der ExecBase Memory-Liste in der ExecBase
Menü Other Lists Other Lists
Menü: Actions Actions
Menü: Clip Clip
Menü: Flags Flags
Menü: Flushing Flushing
Menü: Internal List Internal List
Menü: Project Project
normaler CLI-Befehl Aufruf vom CLI
Other Libraries Other Libraries
Paßwort Verschlüsseln von Daten und Dateien
Port-Liste in der ExecBase Port-Liste in der ExecBase
Preferences Preferences
Resourcen-Liste der ExecBase Resourcen-Liste der ExecBase
RSys und Hintergrundinfos RSys und Hintergrundinfos
Schutzprotokolle RSys und Hintergrundinfos
Screen-Liste der IntuitionBase Screen-Liste der IntuitionBase
Springen zwischen Public Screens Springen zwischen Public Screens
systemkonform RSys und Hintergrundinfos
Task-Liste der ExecBase Task-Liste der ExecBase
Tips und Tricks Tips und Tricks
Verschlüsseln von Daten und Dateien Verschlüsseln von Daten und Dateien
Verwendete Software Verwendete Software
Volume-Liste der DOSBase Volume-Liste der DOSBase
Was ist RSys? Was ist RSys?
wbstartup-Verzeichnis Installation von RSys
Weitere Pläne Weitere Pläne
Window-Liste der IntuitionBase Window-Liste der IntuitionBase