        SysMon der ATARI-ST SystemMonitor Version 1.0.4 
       |-------------------------------------------------|
           Copyright (C) by Karsten Isakovic, Berlin    

                 ist ein Shareware Programm von

                  Karsten Isakovic geb. Gerlach
                      WilmersdorferStr 82
                         1000 Berlin 12




        INHALTSVERZEICHNIS          
===================================================

1.    Installation
---------------------------------------------------
1.1     Untersttzte Hardware
1.2     Untersttzte TOS-Versionen
1.3     Starten von SysMon

2.    Allgemeine Bedienung
---------------------------------------------------
2.1     Die Menleiste
2.2     Die Tastaturkommandos
2.3     Funktionens-Listen
2.4     Ausblenden von Funktionen
2.5     Die Modi des SysMon
2.6     Das STEP-Men
2.7     Umschalten des Bildschirms
2.8     Setups
2.9     Zurckscrollen der Trace-Ausgaben

3.    Das SysMon Men
---------------------------------------------------
3.1     bersicht
3.2     C - Configuration
3.3     P - Programms
3.4     M - Memory
3.5     T - Traps
3.6     O - OS-Vars
3.7     D - Display
3.8     F - proFile
3.9     U - UsedTraps
3.10    N - Notepad
3.11    W - Write
3.12    R - ReRead
3.13    Q - Quit

4.    Der Aufbau der Ausgabezeilen
---------------------------------------------------
4.1     Aufbau der Tracerzeilen
4.2     Ausgabe Beispiele
4.3     Das Protokollfile

5.    Besonderheiten
---------------------------------------------------
5.1     AES
5.2     VDI
5.3     GEMDOS
5.4     BIOS
5.5     XBIOS
5.6     LINE_A
5.7     Setup-abhngiges Tracen

6.    Die Traps
---------------------------------------------------
6.1     SysMon Traps
6.2     Der SysTable
6.3     Erweiterte Bypass Funktion
6.4     PD-Wechsel und Trap-berwachung

7.    Beispiel Sitzungen
---------------------------------------------------
7.1     Stepweises Booten des Rechners
7.2     Tracen einzelner AES-Aufrufe
7.3     Tracen eines ACC-Protokolls
7.4     Tracen eines Programmes
7.5     Fehler im Betriebssystem entdecken

8.    Erweiterte Informationen
---------------------------------------------------
8.1     Patchvariablen
8.2     Unbekannte TOS-Versionen
8.3     Spezielle Anpassungen
8.3.1     Farbbildschirme
8.3.2     Grobildschirme
8.3.3     OverScan
8.3.4     STE
8.3.5     TT
8.3.6     68000-68030
8.4     Interna
8.5     Bugs / Features
8.6     Erweiterungen

9.    Shareware Bedingungen
---------------------------------------------------

10.   Kontaktadressen
---------------------------------------------------
10.1    ber die gelbe Post
10.2    ber Mailboxen






        1. Installation
===================================================

   1.1 Untersttzte Hardware
----------------------------
Der SysMon luft in Schwarz/Wei und Farbe, benutzt aber eigene
Routinen zur Ausgabe auf einer 2.Bildschirmseite. 

SysMon luft nicht nur in den Standard-auflsungen. Die MATRIX 
Schwarzwei- und Farb- Grobildschirme und die MAXXON-MGE Grafikkarte 
werden in soweit untersttzt, da alle Ausgaben auf dem als Zweit-
Monitor installierten SM124 stattfinden und so ein komfortables
Debugging mglich ist.

Die verschiedenen Overscan Erweiterungen werden erkannt und 
untersttzt.

Auer der Ausgabe auf dem Monitor ist auch das Remote Debugging mit
Aus- und Eingabe ber die Modem-,Printer- oder Midi- Schnittstelle
mglich. 

Siehe Abschnitt 8.3 .


   1.2 Untersttzte TOS-Versionen
---------------------------------
Der SysMon arbeitet mit allen TOS-Versionen. Bei Versionen, die nicht
in Tabelle -1- aufgefhrt sind, mu SysMon erst die undokumentierten
Systemvariablen herausfinden. Siehe Abschnitt 8.2 .

           Art | Version |  Datum   | Bemerkung
           ----+---------+-----------------------------
           ROM |  030    | 23.05.89 | TT-Tos
           ROM |  1.6    | 29.07.89 | Ste-TOS
           ROM |  1.4    | 06.04.89 |
           ROM |  1.4    | 22.02.89 |
           RAM |  1.4    | 06.04.89 | reloziertes Rom-TOS
           RAM |  1.4    | 18.05.88 | Beta-TOS
           RAM |  1.4    | 22.02.88 |
           ROM |  1.2    | 22.04.87 | BlitterTOS
           RAM |  1.2    | 22.04.87 | Kaos-TOS
           ROM |  1.0    | 06.02.86 |
           RAM |  1.0    | 06.02.86 |
           RAM |  1.0    | 20.11.85 |
           RAM |  1.0    | 29.05.85 | Mushroom-TOS

             Tabelle -1- Getestete TOS-Versionen


   1.3 Starten von SysMon
-------------------------
SysMon kann entweder aus dem Auto-Ordner oder vom Desktop gestartet
werden.
Das Programm belegt ca 125 K an Programm Code und ca 75 K Daten. 
Aufgerufen wird SysMon durch die Tastenkombination RechtsShift-Help.
Verlassen wird SysMon durch Drcken der SPACE-Taste oder durch den
Menpunkt QUIT.

Man kann die Installation durch das Gedrckthalten der Alternate-Taste
abbrechen oder durch das Gedrckthalten der Control-Taste das Laden 
der Sys_Mon.Inf Datei unterbinden. 

Whrend Diskzugriffen kann der SysMon nicht betreten werden, da es
ansonsten zu Timing-Problemen kommen knnte. Die Auswertung erfolgt
ber die Systemvariable 'flock'. Es gibt allerdings ein paar Programme,
die durch andauerndes Setzen dieser Variable den Zutritt zu SysMon
versperren.(z.B. FCOPY3 whrend Scan/Copy/Format) Aus diesem Grunde 
kann die 'flock'-Abfrage bersprungen werden, indem man zustzlich zu
RechtsShift-Help die Caps-Lock Taste drckt.

        2. Allgemeine Bedienung
===================================================

   2.1 Die Menleiste
---------------------
Der Zustand des SysMon wird durch Gro-/Kleinschrift der Menpunkte
angezeigt. Der Aufbau der Menzeile ist wie folgt :

- Der Menpunkt SysMon wird gro geschrieben, wenn das Tracen
  berhaupt angeschaltet ist. Wird er klein geschrieben, werden alle
  anderen Einstellungen ignoriert.
- Die Menpunkte AES, VDI, GEMDOS, BIOS, XBIOS und LINE_A stellen die
  mglichen Gruppen der Betriebssystem Aufrufe dar. Nur wenn ein
  Menpunkt gro geschrieben ist, knnen die zu dieser Gruppen
  gehrenden Funktionen getraced werden.
- Die Nummer und der Kommentar des aktiven Setups werden ausgegeben.
  Siehe Abschnitt 3.2 .
- Der Modus von SysMon wird ausgegeben. Siehe Abschnitt 2.5 .

Unter dem Menpunkt SysMon werden alle zustzlichen Mglichkeiten des
SysMon angeboten. Eine bersicht ist in Kapitel 3.1 zu finden.

   2.2 Die Tastaturkommandos
----------------------------
SysMon wird komplett mit der Tastatur bedient, die einzelnen Menpunkte
werden durch Drcken des Anfangsbuchstabens oder durch Wandern mit den
Cursortasten angewhlt.

Die Oberflche von SysMon ist mit einem einfach Fenstersystem ausge-
stattet. Innerhalb eines Fensters wird die aktuelle Zeile durch einen
invertierten Balken dargestellt. Die Cursorposition wird fr jedes
Fenster getrennt verwaltet, so da der Cursor beim erneuten Aufrufs an
der Stelle steht, wo er beim Verlassen des Fensters stand. Der Cursor 
kann mit den Cursortasten rauf und runter bewegt werden. Zusammen mit
der Shifttaste kann auch seitenweise gewandert werden.

          Zustanz |  Taste     | Bedeutung
        ----------+------------+-----------------------------
                  | left/right | Wechseln des Menpunktes
                  | up  /down  | Zeilenweise Rauf bzw Runter
          Shift   | up  /down  | Seitenweise Rauf/Runter
          Control | up  /down  | Auswhlen eines Blockes
                  | Home       | Anfang
          Shift   | Home       | Ende

                  Tabelle -2- Bewegungs Kommandos

In Funktionslisten kann man mit den Tasten der Tabelle -5-
den Zustand der jeweiligen Funktion ndern. Es ist aber auch mglich
zusammen mit der Cursortaste die Controltaste gedrckt zu halten und
dadurch einen Block aus zu whlen, dessen Zustand dann auf einmal
beeinflut werden kann.

In manchen Fenstern kann man die Darstellungsart der Informationen
beeinflussen, bzw. Informationen ausblenden. Die Umschaltung der
einzelnen Optionen erfolgt ber Tasten, die oben rechts im Fensterrand
angezeigt werden. Eine Option ist eingeschaltet, wenn der Kennbuchstabe
gro geschrieben wird. In der Tabelle -3- sind weitere Kommandos im
Zusammenhang mit Optionen aufgefhrt.

         Zustanz |  Taste  | Bedeutung
        ---------+---------+-----------------------------
         Control | Up/Down | Zum nchsten Block springen
                 | Delete  | Alle Optionen lschen 
                 | Insert  | Alle Optionen setzen   

            Tabelle -3- Option Kommandos

Die erweiterten Steuerkommandos der Tabelle -4- gelten innerhalb aller
Fenster und Mens. Diese Kommandos sind so aufgebaut, da sie aus dem
gleichzeitigen Drcken der Controltaste und dem Anfangsbuchstaben der 
auszulsenden Funktion bestehen. 

          Taste  | 
        ---------+--------- Globale Einstellung
           ESC   | Tracer global 
           TAB   | Tracer mode
         F1--F10 | Setup 
        ---------+--------- Umschaltung von Gruppen
           ^A    | AES   
           ^V    | VDI   
           ^G    | GEMDOS
           ^B    | BIOS  
           ^X    | XBIOS 
           ^L    | LINE_A
        ---------+--------- Aufbau der Ausgabezeile
           ^R    | Return address
           ^C    | Caller name
           ^N    | Number of function
           ^O    | Output stack pointer
           ^F    | Flag supervisor mode
           ^E    | Extra output 
           ^W    | WatchBypass 
        ---------+--------- Zustzliche Ausgaben
           ^P    | PD-changes
           ^T    | Trap-changes
        ---------+--------- Sonstiges
           Undo  | Fenster schlieen
           Help  | Hilfe Fenster
           ^Z    | Zap (Bildschirm lschen) 
           *     | Fenster in Protokollfile ausgeben
 
      Tabelle -4- Globale Tastenkombinationen

Die beiden wichtigsten Tasten sind :
- Jedes Fenster von SysMon kann mit der UNDO-Taste wieder geschloen
  werden.
- Der SysMon wird durch Drcken der SPACE-Taste wieder 
  verlassen.

   2.3 Funktions-Listen
-----------------------
Innerhalb der Menpunkte AES bis LINE_A gibt es jeweils eine Liste der
Unterfunktionen, wobei die Ausgabe jeder Funktion gem Tabelle -5-
an/bzw ausgeschaltet werden kann. Nur wenn die Funktion mit einem
Leerzeichen versehen ist, findet keine Ausgabe statt.

           Taste  | Darstellung  | Bedeutung  
          --------+--------------+-------------------------
           Delete | Leerzeichen  | Nicht tracen
           Insert | Pluszeichen  | Tracen
           Tilde  | Kreiszeichen | Breakpoint
          --------+--------------+-------------------------
           0..9   | 0..9         | Setup-Mode
           T      | T            | TempleMon-Mode

            Tabelle -5- SysMon Kommandos

- Nicht Tracen   bedeutet, da Aufrufe dieser Funktion nicht 
		 angezeigt werden.
- Tracen         bedeutet, da alle Aufrufe dieser Funktion 
                 angezeigt werden, wenn sie von Programmen stammen,
                 die auch angewhlt sind.
- Breakpoint     kennzeichnet einen Haltepunkt. Im WAIT-Modus wird 
                 hinter diesem Funktions-Aufruf der SysMon betreten.
- Setup-Mode     bedeutet, da Aufrufe dieser Funktion ausgegeben
                 werden, wenn das aufrufende Programm im angegebenen
                 Setup angewhlt ist. Siehe dazu auch Abschnitt 5.7 .
- TempleMon-Mode bedeutet, da nach Ausgabe der Funktion in den
                 TempleMon verzweigt werden soll. Damit diese Option
                 funktioniert, mu ein neueres TempleMon.Prg 
                 installiert sein. Ansonsten wird wie bei 'Tracen'
                 verfahren.


   2.4 Ausblenden von Funktionen
--------------------------------
Das Ausblenden von Funktionsaufrufen ist in 4 Ebenen mglich.

- Die oberste Ebene ist das Ein- bzw. Ausschalten des SysMon mit der
  ESC-Taste.
- Die nchste Ebene ist die Auswahl der Programme, die getraced werden
  sollen. Das zugehrige Fenster findet man im SYSMON-Men unter dem
  Menpunkt PROGRAMS. Siehe Abschnitt 3.3 .
- Die vorletzte Ebene ist die Auswahl der Funktionsgruppen, die 
  getraced werden sollen, mit den globalen Tasten ^A--^L.
- Die letzte Ebene ist die Auswahl der Funktionen, die ausgegeben
  werden sollen. 


   2.5 Die Modi des SysMon
--------------------------
SysMon bietet 4 verschiedene Modi des Tracens an. 

- RUN   In Modus werden alle Funktionen getraced und ausgegeben ohne
        Anzuhalten.
- STEP  In diesem Modus wird nach jedem Funktionsaufruf angehalten und
        man landet im STEP-Men. Siehe Abschnitt 2.6 .
- WAIT  In diesem Modus werden keine Ausgaben gemacht. Erst wenn eine
        Funktion die mit einem Haltepunkt versehen ist, aufgerufen und 
        zurckgekehrt ist, landet man im SYSMON-Men. 
- HALT  In diesem Modus landet man sofort hinter dem nchsten 
        Funktionsaufruf im SYSMON-Men. Dabei ist es ist egal, ob die
        Funktion mit einem Haltepunkt versehen ist oder nur normal
        getraced wird.


   2.6 Das STEP-Men
--------------------
Beim Tracen im STEP-Modus hlt SysMon nach jeder ausgegebenen Funktion
an und wartet auf eine Eingabe. Dieses STEP-Men wird durch Ausgabe
des aktuellen Modus angezeigt.

M - Men  betritt das SysMon Men. Wird dieses wieder durch 
          SPACE verlassen, landet man wieder im STEP-Men. 
0--9      whlt, genauso wie die 10 Funktionstasten, das aktuelle Setup
          aus. Die Tasten 0--9 sind notwendig, da die Funktionstasten
          nicht ber alle Eingabedevices eingegeben werden knnen.
Es gelten alle in der Tabelle -4- aufgefhrten Controltasten
Kombinationen. Jede andere Taste verlt das STEP-Men wieder.

Um das stepweise Tracen nicht zu einer ewigen Tastendrckerei ausarten
zu lassen kann man im DISPLAY Men unter STEP-Filter einen Wert
angeben, der bestimmt, wieviele Zeilen ausgegeben werden sollen, ohne
das STEP-Men wieder zu betreten.

   2.7 Umschalten des Bildschirms
---------------------------------
SysMon legt fr seine Ausgaben eine 2. Bildschirmseite an. Diese wird
beim Betreten des SYSMON-Mens automatisch angezeigt. Diese 2. Seite
kann auch jederzeit beim Tracen durch Drcken der rechten Shifttaste
angezeigt werden.
Wenn der Tracer ausgeschaltet ist, ist auch die rechte Shifttaste nicht
aktiv.

Mchte man hauptschlich die Ausgaben des SysMon sehen, kann man durch
gleichzeitiges Drcken der rechten Shifttaste und der Capslock Taste
den aktuellen Bildschirm umschalten. Nun wird der Orginal-Bildschirm
beim Drcken der rechten Shifttaste dargestellt.

Bei einem Farbmonitor wird auf dem SysMon-Bildschirm immer die mittlere
Auflsung benutzt. Auerdem wird die Farbpalette angepat. 

Unter AutoSwitch-OverScan wird immer derjenige Modus benutzt, der beim
Starten von SysMon vorlag.

Bei einem Farbmonitor mit OverScan wird also durch Drcken der Shift-
Taste unter Umstnden der AutoSwitch Zustand, die Auflsung und auch
die Farbpalette umgeschaltet.

Bei manchen Anwendungen kann es sein, da die Ausgaben zu schnell ber
den Bildschirm laufen,so da man diese nicht mehr lesen kann. Deshalb
kann man im SYSMON-Men unter dem Menpunkt DISPLAY die Pausenfunktion
anschalten. Ist die Pausenfunktion angewhlt, werden die Ausgaben - und
damit auch der Rechner - beim Druck auf die rechte Shifttaste
angehalten, und man kann die Ausgaben in Ruhe lesen.

   2.8 Setups
-------------
SysMon bietet 10 verschiedene Setups an, zwischen denen durch Druck auf
die Funktionstasten F1--F10 umgeschaltet werden kann. Da fast alle
Einstellung in SysMon vom Setup abhngig sind, hat man es nach dem
Umschalten mit einem komplett anderen SysMon zu tun. Dadurch ist es
mglich sich fr jeden Anwendungsfall ein neues Setup anzulegen, auf
das man spter bei Bedarf zurckgreifen kann.

Im einzelnen werden beim Wechseln des Setups folgende Werte 
umgeschaltet :

- Der Zustand der einzelnen Programme.
- Der Zustand der einzelnen Funktionsgruppen.
- Der Zustand der einzelnen Funktionen.
- Der Tracemodus.

   2.9 Zurckblttern in der Trace-Ausgabe
------------------------------------------
Ab der SysMon-Version 1.0.4 gibt es die Mglichkeit in den Trace-
Ausgaben zurckzublttern. Dazu drckt man die INSERT-Taste, wenn kein
Fenster geffnet ist. Im Tracer-Bildschirm wird nun ein Cursor
dargestellt, mit dem man mit den blichen Kommandos aus Tabelle -2-
in der Ausgabe umherwandern kann. Der Cursor bleibt solange sichtbar,
bis der SysMon mit SPACE verlassen wird. Der Bildschirm springt dann
wieder an das Ende der Ausgaben.

Die Anzahl der gepufferten Zeilen kann man durch eine Patchvariable
festlegen (Siehe Abschnitt 8.1). Als Default werden 50 Zeilen zustzlich
zu den sichtbaren Bilschirmzeilen angelegt.

        3. Das SysMon Men
===================================================

   3.1 bersicht
----------------
Der Menpunkt SysMon bietet eine weitere Liste von Untermenus an. Diese
knnen entweder durch Drcken des Anfangsbuchstabens oder mit den
Cursortasten und Drcken der Returntaste angewhlt werden.

C - Configuration bersicht ber alle 10 Setups.
P - Programms     Liste der geladenen Programme.
M - Memory        Liste der Speicherbereiche.
T - Traps         Liste der Systemvektoren.
O - OS Vars.      Liste der Systemvariablen.
D - Display       Einstellungen, die die Ein/Ausgabe betreffen.
F - proFile       Kommandos im Zusammenhang mit dem Profiling.
U - Used Traps    Anzeige der SysTable Tabellen.
N - Notepad       Eingabemglichkeit fr Kommentare.
R - ReRead        Neueinlesen der Sys_Mon.Inf Datei. 
W - Write         Schreiben der Sys_Mon.Inf Datei.
Q - Quit          Beenden von SysMon.


   3.2 C - Configuration
------------------------
Das CONFIGURATION-Men ist eine bersicht ber alle 10 Setups. Die
Umschaltung der einzelnen Felder erfolgt mit den globalen Tasten, die
der Tabelle -4- zu entnehmen sind.

Jede Zeile des Fensters hat folgenden Aufbau :

- Zuerst kommt der Name des Setups, der editiert werden kann.
  Um Zeichen zu lschen ist nur die Backspacetaste zugelassen.
- Beim Tracermodus wird entweder Run, Step ,Wait oder Halt ausgegeben.
- Der Zustand der einzelnen Betriebssystemfunktionen wird durch die
  Anfangsbuchstaben verdeutlicht, bei AGX wird folglich AES,GEMDOS und
  XBIOS getraced.
- Das Format jeder Ausgabe whrend des Tracens wird durch die
  Anfangsbuchstaben der Optionen ausgegeben. Hierbei steht R fr 
  ReturnAddr, C fr Caller, N fr Number, O fr OutputStack, F fr
  FlagSuper, E fr Extra und W fr WatchBypass.
- Der Zustand der berwachungsfunktionen fr PD-Wechsel und Trap-
  Diebsthle werden mit den Buchstaben P und T ausgegeben.

Das aktuelle Setup kann mit den Cursortasten oder durch die Funktions-
tasten gewechselt werden. Fast alle Einstellungen in SysMon sind 
abhngig vom Setup . Siehe Abschnitt 2.8


   3.3 P - Programms
--------------------
Dies ist eine Liste der geladenen Programme. Fr jedes Programm kann
mit den Tasten aus Tabelle -5- bestimmt werden, ob es getraced werden
soll. Der Eintrag 'Unknown' bestimmt den Tracestatus fr Aufrufe, die
nicht aus den erkannten Programmbereichen kommen.

Die Ausgabezeilen des Fensters sind folgendermaen aufgebaut :

- Zuerst wird der Speicherbereich des Programms ausgegeben.
- Bei den Programmnamen gelten folgende Konventionen
  - Der Programmname wird gro geschrieben, wenn SysMon der genaue 
    Name bekannt ist.
  - Die Namen in gemischter Gro/Kleinschreibung werden von SysMon
    vergeben, wenn das Programm eine XBRA-Kennung benutzt. 
  - Die Namen Acc__A, Auto_A, Prg__A usw. werden vergeben, wenn SysMon
    nur den Typ des Programms erkennt.
  Ein Name in gemischter Schreibweise kann editiert werden. Die 
  Editiermglichkeit eines Names ist auch an der Klammerung in 
  <<...>> zu erkennen. Es knnen nur Grobuchstaben eingegeben werden.
  Um Zeichen zu lschen ist nur die Backspace-Taste zugelassen. Ein
  leerer Name ist unzulig und wird daher durch Fragezeichen ersetzt.
- Der Trace Zustand des Progamms wird mit den blichen Symbolen
  aus Tabelle -5- angezeigt.
- Beim Programm, auf das der ActPD Vektor zeigt, wird ein R-Symbol
  ausgegeben. 
- Die Appl-ID wird ausgegeben. Bei Stuffer und hnlichen Multi-
  Accessories oder bei mehreren verschachtelt geladenen Programmen
  werden manche IDs mehrfach ausgegeben.
- Die benutzen VDI-Handles werden ausgegeben. Diese Angabe ist nur
  mglich, wenn SysMon die Traps besitzt. Der VDI-Handle 1 wird
  gesondert behandelt, da er vom GEM und von Programmen gleichzeitig
  benutzt werden kann. 
- Die Art des Programms wird ausgegeben. 
  - TOS   wird nur fr die beiden Betriebssystem-Teile TOS und GEM
          benutzt.
  - Auto  wird ausgegeben, wenn das Programm im Auto Ordner gestartet
          wurde. Diese Programme sind resident geladen.
  - Acc   wird fr Accessories verwendet.
  - Prg   wird bei normal geladenen Programmen benutzt.
  - Res   wird bei resident geladenen Programmen benutzt.
  - LPrg  wird bei Programmen benutzt, deren Codebereich einem anderen
          Prozess gehrt.
  - Cart  wird bei Programmen benutzt, die in einer Cartrige gefunden
          wurden. 

  
   3.4 M - Memory
-----------------
Es wird eine sortierte Liste der Speicherbereiche ausgegeben, in der
auch die residenten Blcke enthalten sind. Die Liste ist dabei so 
sortiert, da das Ende des Hauptspeichers oben und der Anfang unten
ausgegeben wird.

Jede Ausgabezeile ist nach folgendem Format aufgebaut :
- Der Adresse des Memory Descriptors wird ausgegeben.
- Die Startadresse, Endadresse und die Lnge des Blockes wird 
  ausgegeben. 
- Der Owner des Blockes wird ausgegeben. Bei freien Blcken wird
  stattdessen 'free' , bei residenten Blcken 'res' ausgegeben.
  Es wird zustzlich die HideMem-Konvention erkannt, d.h. wenn alle
  4 Bytes des Longwords ASCII-Buchstaben sind, werden diese ausgegeben.
- Wenn mglich, wird ein Programmname zugeordnet.
- Es werden folgende Arten unterschieden :
  - Programm Code
  - Environments
  - Resourcen
  - AES-Blcke
  - VDI-Blcke
  - Basepages
  - LineF-Handler
  - geladene VDI-Fonts
  Alles Andere wird als Data bezeichnet. Da jeweils nur wenige Bytes
  zur Identifikation herangezogen werden, kann die Einschtzung auch
  daneben gehen.

In diesem Fenster sind folgende Optionen mglich :
- L,$  Schaltet die Lngenangabe zwischen Hex. und Dez. um.
- O    Schaltet die Angabe des Owners zwischen Hex. und Name des
       Besitzers um.


   3.5 T - Traps
----------------
Es wird die Liste der Systemvektoren ausgegeben, wobei XBRA-Listen
weiterverfolgt werden und die jeweiligen Sprungziele mit dem 
dazugehrigem Programmnamen versehen sind.

Es werden alle Traps und Vektoren des ST ausgegeben, auch diejenigen,
die nicht vom Betriebssystem benutzt werden.

Da die Liste sehr lang werden kann, kann man die Anzeige bestimmter
Informationen auf Tastendruck aus-, bzw einblenden.

H - Hardware          Anzeige der Hardware Vektoren umschalten.
U - Unused Exceptions Anzeige der beim unbenutzen Vektoren umschalten.
I - Interrupt         Anzeige der Interrupt Vektoren umschalten.
T - Trap              Anzeige der Trap Vektoren umschalten.
M - MFP               Anzeige der MFP Vektoren umschalten.
E - ETV               Anzeige der Etv Vektoren umschalten.
S - Special           Anzeige der Special Vektoren umschalten.
V - VBL               Anzeige der VBL Vektoren umschalten.
X - Xcon              Anzeige der Xcon Device Vektoren umschalten.
K - Kbd               Anzeige der Kbdvbase Vektoren umschalten.
L - LineA             Anzeige der LineA Funktions Vektoren umschalten.
R - ROM               Beeinflut alle Sprnge, die in das Betriebssystem
                      zeigen.
N - NotValid          Schaltet die Anzeige aller Vektoren mit ungltiger
                      Zieladresse um.


   3.6 O - OS Vars
------------------
Es werden verschiedene Variablen und Strukturen des Betriebsystems
ausgegeben. Die einzelnen Blcke knnen ber die Option Kommandos 
umgeschaltet werden.

S - Systemvariables  Es werden alle Systemvariablen zwischen $400 und
                     $5A0 ausgegeben.
N - Negativ LineA    Es werden alle Negativen LineA Variablen
                     ausgegeben.
L - LineA            Es werden alle LineA variablen ausgegeben.
V - VDI              Es werden die Daten jeder VDI-Workstation
                     ausgegeben.
C - Cookies          Es werden alle Cookies des CookieJars ausgegeben.
P - Programms        Fr jedes Programm wird entweder der Program-
                     Header, die Basepage oder der Cartridge-Header
                     ausgegeben.
F - Fonts            Es werden die Daten jedes geladenen Fonts
                     ausgegeben.
H - Header           Es wird der Header des Betriebssystems ausgegeben.

Die Vektoren , die schon unter dem Menpunkt TRAPS ausgegeben werden
konnten, werden der Vollstndigkeit halber wiederholt. Es findet kein
Verfolgen von XBRA-Ketten statt.

   3.7 D - Display
------------------
Das DISPLAY-Men enthlt alle Einstellungen, die die Ein-/Ausgabe 
betreffen. Die Umschaltungen der Ein-/Ausgabe sind erst nach
Verlassen des SysMon Bildschirms gltig. Die einzelen Punkte knnen
durch Drcken des Anfangsbuchstabens oder durch Wandern mit den
Cursortasten und der Returntaste angewhlt werden.

I - Input         schaltet die Eingabe zwischen Tastatur, RS-232,
                  Parallelport und Midiport um.
O - Output        schaltet die Ausgabe zwischen 2. Bildschirmseite,
                  RS-232, Parallelport und Midiport um. 
F - FileOutput    schaltet das Protokollfile an/aus. Ist ein ffnen
                  oder Schliessen zur Zeit nicht mglich, wird eine
                  Warnung ausgegeben. Siehe Abschnitt 4.3 .
                  Sollte das File schon existieren, so hat man die
                  Mglichkeit, es zu berschreiben, die Ausgaben 
                  anzuhngen oder abzubrechen.
N - Name          wechselt in den Editiermodus fr den Namen des
                  Protokollfiles. Gltige Eingaben sind Buchstaben,
                  Zahlen, Punkt, Doppelpunkt, Unterstrich und der
                  Backslash. Andere Eingaben beenden die Namenseingabe.
J - JumpScroll    gibt an, wieviele Zeilen im RUN-Modus auf einmal
                  gescrollt werden sollen. Bei einem Wert von 10 wird
                  der Bildschirm um 10 Zeilen nach oben gescrollt und
                  10 Zeilen ohne Scrollen ausgegeben.
                  Da die Scrollroutine jetzt nur alle 10 Zeilen
                  aufgerufen werden mu, ist die Ausgabegeschwindigkeit
                  wesentlich erhht.
S - STEP-Filter   gibt an, wieviele Zeilen im STEP-Modus ohne Nachfrage
                  ausgefhrt werden sollen.
P - PauseOnShift  schaltet die Pausenoption um. Wenn Pause angewhlt
                  ist, wird bei jedem Drcken der rechten Shifttaste
                  und dem damit verbundenen Anzeigen des SysMon-
                  Bildschirms gewartet, bis die Shifttaste wieder
                  losgelassen wird. Auf diese Weise kann man sehr
                  schnell scrollende Ausgaben zeitweilig anhalten.


   3.8 F - proFile
------------------
In diesem Fenster kann das Profiling ein/aus geschaltet werden. 
Profiling bedeutet, da die Anzahl der Aufrufe mitgezhlt wird. Die
Anzahl der Aufrufe  wird in den Funkionslisten mit ausgegeben. Es
werden nur Funktionsaufrufe gezhlt, die auch getraced werden. Durch
Profiling erhlt man einen berblick ber die am hufigsten verwendeten
Aufrufe.

P - Profile  schaltet das Profiling an/aus. Die Daten werden hierbei
             nicht gelscht, so da eine Zhlpause mglich ist.
D - Dump     schreibt die beim Profiling gewonnenen Daten in das
             Protokollfile. Sollte kein Protokollfile geffnet sein,
             so wird es geffnet und nach dem Schreiben wieder
             geschlossen. Es werden nur die Daten der angewhlten Traps
             und da auch nur die Daten der angewhlten Funkionen im
             Protokollfile gespeichert.
C - Clear    Lscht alle Profiling-Daten.

( Das PROFILING-Men wird noch in ein anderes Men integriert, da
  es zu klein fr ein eigenstndiges Men ist. )


   3.9 U - UsedTraps
--------------------
Diese Funktion liefert eine bersicht ber die von SysMon benutzten
Traps und Bypasse. 

Das Format jeder Zeile ist :
- Links wird der Vorgnger aufgefhrt, also ein Trap oder ein Programm,
  da daraufhin den SysTable anspringt.
- In der Mitte wird die Adresse des SysTable Sprungziels ausgegeben.
- Rechts wird der Nachfolger ausgegeben, der dann vom SysTable
  angesprungen wird.
- Ganz Rechts gibt es noch ein Buchstabenkrzel, da den Vektor
  kennzeichnet. A/V steht fr AesVDI, G fr GEMDOS usw.

Es gibt 2 Darstellungsarten der Bypass Tabelle, die durch die Taste ^M
umgeschaltet werden knnen.
- Die aktiven Traps und Bypasse werden getrennt ausgegeben. Dabei 
  werden die Bypasse in der Reihenfolge aufgefhrt, in der sie auch
  angesprungen werden.
- Die Traps und Bypasse eines Vektors werden vermischt ausgegeben,
  so da die Reihenfolge von der Trap Adresse bis zum letzten Bypass
  der Ansprung-Reihenfolge entsprechen.

In einer weiteren Liste werden diejenigen Funktionen angezeigt, die
noch nicht aus den Traps zurckgekehrt sind. Siehe Abschnitte 6.1 und
6.2 .

   3.10 N - Notepad
-------------------
Das Notepad Fenster bietet eine Mglichkeit, um Kommentare einzugeben.
Dieser kann dann in das Protokollfile eingefgt werden, um so
zustzliche Informationen und Bemerkungen gleich bei der Erstellung des
Protokollfiles eingeben zu knnen.

Die aktuelle Eingabezeile wird durch <<...>> geklammert. Als Eingaben
sind alle ASCII Zeichen zulssig, Sonderfunktionen haben nur folgende
Tasten :
- CLR lscht das ganze Fenster.
- BS  lscht den letzten Buchstaben. Zusammen mit einer Shifttaste
      wird eine ganze Zeile gelscht.
- CR  bewegt den Cursor eine Zeile nach unten. 

Bei einem Dump in ein Protokollfile werden nur diejenigen Zeilen
ausgegeben, in denen auch etwas eingegeben wurde. Mchte man eine
Leerzeile im Kommentar, mu man zumindest ein Leerzeichen in die 
Zeile einfgen.

   3.11 W - Write
-----------------
Diese Funktion speichert die aktuelle Einstellung in eine Datei
Sys_Mon.Inf. Diese Datei wird bei Programmstart von SysMon automatisch 
eingelesen und alle Einstellungen vorgenommen. Wenn ein Schreiben des
Files gerade nicht mglich ist, wird eine Warnung ausgegeben.

Es werden alle Einstellungen aus allen 10 Setups gespeichert. 
Eine Besonderheit beim Speichern ist nur das Speichern des Zustandes
der einzelnen Programme. Da beim nchsten Starten nicht unbedingt 
dieselben Programme gestartet werden, wird fr jede Gruppe von 
Programmen (TOS, Auto, Acc, Res, Prg, LPrg, Cart, Unknown) ein Modus
bestimmt.
  
- Wenn kein Programm der Gruppe angewhlt ist, wird 'nicht Tracen'
  fr diese Gruppe gespeichert.
- Wird mindestens ein Programm der Gruppe getraced, wird 'Tracen'
  fr diese Gruppe gespeichert.
- Ist mindestens ein Programm der Gruppe mit einem Haltpunkt versehen,
  wird fr diese Gruppe ein Haltepunkt gespeichert.
- Ist kein Programm der Gruppe vorhanden, wird 'Tracen' fr diese
  Gruppe gespeichert.
  

   3.12 R - ReRead
------------------
Liest die Sys_Mon.Inf Datei nochmals ein. Wenn ein Lesen des Files
gerade nicht mglich ist oder die Datei nicht existiert wird eine
Warnung ausgegeben.

Nach dem Einlesen werden alle Einstellungen aus der Datei bernommen.


   3.13 Q - Quit
----------------
Dieser Menpunkt beendet SysMon nach einer Rckfrage.

Danach wird ausgegeben, ob ein SysTable resident im Speicher
verbleiben mu. Generell gibt es 4 Arten von QUIT :
- Wenn Bypasse vorhanden waren, darf der SysTable spter nicht
  freigegeben werden, da unter Umstnden noch Funktionen ber diese
  Umleitungen springen.
- Sind keine Bypasse vorhanden, aber Funktionen noch nicht 
  zurckgekehrt, kann der SysTable nach Rckkehr der letzten Funktion
  freigegeben werden.
- Wird QUIT whrend eines BIOS-Aufrufes ausgelst, kann SysMon seinen
  Speicher erst bei dem nchsten GEMDOS-Aufruf freigeben. Dieses ist
  dasselbe GEMDOS-Problem, wie es auch beim Protokollfile (Siehe
  Abschnitt 4.3) entsteht.
- Ansonsten kann der gesamte Speicher sofort freigegeben werden oder 
  man wird durch ein akustisches Signal von der Freigabe informiert.

Beim Starten von SysMon wird ein vorhandener SysTable komplett
mitbenutzt, daher wird beim nchsten Verlassen der Speicher komplett
freigeben. Es existiert maximal ein aktiver SysTable im Speicher, der
sich dann selbst entfernt, wenn es mglich ist. Siehe Abschnitte 6.1
und 6.2 .

        4. Der Aufbau der Ausgabezeilen
===================================================

   4.1 Aufbau der Tracerzeilen
------------------------------
Der Aufbau der Tracerzeile kann mit den globalen Tasten ReturnAddr, 
Caller, Number ,OutputStack und FlagSuper beeinflusst werden. Eine
bersicht ber die Einstellungen bietet das CONFIGURATION-Men.

Der Anfang jeder ausgegeben Zeile hat je nach angewhlten 
Flags folgendes Format :
- Findet beim Tracen von AES-Funktionen ein Taskwechsel statt, wird
  ein  > ausgegeben.
- Ist ReturnAddr angewhlt, wird am Anfang jeder Zeile die Rcksprung-
  Adresse der Funktion ausgegeben.
- Ist Caller angewhlt, wird der Name des aufrufenden Programms
  ausgegeben.
- Ist Number angewhlt,  wird der Nummer der aufgerufenen Funktion
  zusammen mit einem Kennbuchstaben ausgegeben. Dieser Kennbuchstaben
  sind die Anfangsbuchstaben der jeweiligen Funktionsgruppe, also z.B.
  A fr AES. Der Kennbuchstabe O wird fr Aufrufe des GEM-Traps
  benutzt, die weder eine AES- noch VDI- Kennung benutzten. Dies z.B.
  beim 'vq_gdos' Aufruf - der zurckliefert ob GDOS installiert ist -
  der Fall.
- Ist OutputStack angewhlt, wird der aktuelle Stackpointer ausgegeben.
- Ist FlagSuper angewhlt, wird vor jedem Aufruf der aus dem 
  Supervisor-Modus stattfand ein kleiner Punkt ausgegeben.

Hinter diesem Header wird nun der Funktionsname ausgegeben. Treten
dabei Verschachtelungen von Aufrufen auf, werden die Funktionsnamen 
eingerckt. Dies ist der Fall, wenn man auch die Aufrufe von GEM 
oder TOS anzeigen lt, da z.B. die GEMDOS Funktionen 'Fread', 'Fopen'
usw. auf die XBIOS Funktion 'Rwabs' aufsetzen oder die VDI Funktionen
'v_opnwk' und 'v_opnvwk' die GEMDOS Funktion 'Malloc' benutzen.
Auerdem wird bei Verschachtelungen der Header wiederholt sobald 
die aufrufende Funktion zurckkehrt, damit man die zu den Ausgabe-
Parametern gehrige Funktion erkennen kann.

Nun werden die Eingabe-Parameter ausgegeben, wobei Werte, die im
Profibuch als Konstanten definiert werden, im Klartext ausgegeben
werden. Hat die Funktion mehrere Eingabe Parameter, werden vor den
Werten kurze Texte ausgegeben, damit man die einzelnen Werte besser
identifizieren kann. Die Reihenfolge der Parameter entspricht dabei
mglichst der Reihenfolge beim Funktions-Aufruf. Benutzt die Funktion
allerdings 'Call by Reference' Variablen, die erst nach Ausfhrung der
Funktion gesetzt sind, wird deren Wert erst bei den Ausgabe-Parametern
ausgegeben.

Um die Ausgabe Parameter optisch von den Eingabe-Parameten abzuheben,
wird erstmal ein -> ausgegeben. Hat eine Funktion keine Ausgabe-
Parameter, wird trotzdem ein -> ausgegeben, damit man sieht, da die
Funktion zurckgekehrt ist.

Ist durch die globale Taste ^W das Flag WatchBypass angewhlt, wird der
-> gegen ein -[ProgrammName]-> ersetzt, falls SysMon feststellt, da 
die Funktion von einem anderen Programm abgefangen wurde. 
Ein -{ProgrammName}- bedeutet, da sich ein Programm hinter einen Aufruf
gehngt hat. (Siehe Abschnitt 6.3)

Mit der globalen Taste ^E (ExtraOutput) kann die Ausgabe von 
zustzlichen Informationen umgeschaltet werden. Dies sind Werte die
nicht direkt auf dem Stack liegen, aber im Zusammenhang mit der
Funktion stehen. Das ist z.B die Ausgabe des Filenamens bei GEMDOS
Funktionen, die nur einen Filehandle benutzen oder die Ausgabe des
Inhaltes der DTA bei den GEMDOS Funktionen 'Fsfirst' und 'Fsnext'.
Mit der Extra-Taste wird auch die Ausgabe des Inhaltes von bergebenen
Strukturen umgeschaltet. Siehe dazu Abschnitt 5 .

Der Rckgabewert einer Funktion wird jeweils am Ende ausgegeben. Bei
den GEMDOS- und XBIOS-Funktionen werden alle System-Fehlermeldungen im
Klartext ausgegeben.

Werden mehr Werte ausgeben, als in einer Tracerzeile Platz finden,
wird die Ausgabe der Werte in der folgenden Zeile fortgesetzt.

   4.2 Ausgabe Beispiele
------------------------
Das erste Beispiel zeigt eine Verschachtelung. Der Rckgabewert des
'Fsfirst' Aufrufs ist durch die Wiederholung des Headers deutlich zu
erkennen.

 $FC38B0 GEM G_78 Fsfirst "C:\C_TEX\*.*" { Dir }
 $FC4F0E TOS B_4   Rwabs  READ Buf $7BC4 Cnt 1 Rec 38 Dev 2 -> Ok
 $FC38B0 GEM G_78 Fsfirst -> Ok <.>
 $FC38B0 GEM G_79 Fsnext  -> Ok <..>
 $FC38B0 GEM G_79 Fsnext  -> NoMoreFiles

Der Aufbau der Tracerzeile ist hierbei mit ReturnAddr fr die
Rcksprungadresse, Caller fr den Namen des aufrufenden Programmes und
Number fr die Funktionsnummer angegeben worden. Die erweiterten
Ausgaben waren nicht angewhlt, ansonsten wrde bei den gefundenen
Files auch deren Lnge, Datum usw. ausgegeben.

Folgendes Beispiel zeigt, welche Aufrufe durch das ffnen der
Bildschirm Workstation beim Booten des Rechners ausgelst werden.
Durch die Anwahl von FlagSuper wird bei jedem Aufruf, der aus dem
Supervisor Modus stattfindet ein * ausgegeben.

 GEM *v_opnwk    H 0 3,1,1,1,1,1,1,1,1,1,2 
 TOS  *Getrez    -> High 
 TOS  *Setpalet  PAL $FCB39E -> 
 TOS  *Setexc    Vec 256($0400) New $FCB3C6  -> Old $FC92C6 
 TOS  *Initmouse Mouse On,Relative PARAM $FD0F62 { topmode 0
                 buttons 0 x_scale 1  y_scale 1  } Vec $FD09FA -> 
 GEM *v_opnwk    -> H 1 (639,399) 

Alle Aufrufe des Desktops finden im Supervisor Modus statt. Die
Verschachtelung der Aufrufe ist durch die Einrckung kenntlich gemacht,
auch  -> direkt hinter einem Funktionsnamen zeigt an, da dieser Aufruf
gerade zurckgekehrt ist und die Eingangsparameter schon vorher
ausgegeben wurden. Wrde in diese Beispiel das TOS nicht getraced,
weil es bei PROGRAMS nicht angewhlt ist, wrden die Ausgabe Parameter
des 'v_opnwk' Aufrufs in derselben Zeile ausgegeben.

Das nchste Beispiel zeigt einige Taskwechsel zwischen CONTROL.ACC
und TURBOST.ACC.

 TURBST16  appl_init      
 CONTROL   appl_init      
>TURBST16  appl_init      -> 3  
 TURBST16  menu_regis.    "  Turbo ST" 3  
>CONTROL   appl_init      -> 2  
 CONTROL   graf_handle    
>TURBST16  menu_regis.    -> 0  
 TURBST16  evnt_mesag     $0427A4 
>CONTROL   graf_handle    -> (8  ,16 ) (19 ,19 ) Ret 1 
 CONTROL   menu_regis.    "  Kontrollfeld" 2  -> 1  

Der > gibt jeweils an, da ein anderer Proze aus dem Trap herauskam
als hineinging. Auch die Ausgabe des -> trgt zur bersicht bei, da
sofort erkenntlich ist, welches die Eingangs- und welches die Ausgangs-
Funktion war.

 CONTROL  Setprt   { Matrix,Mono,Atari(1280),Draft,Centronics,
                   Endless } -> { Matrix,Mono,Atari(1280),Draft,
                   Centronics,Endless }
 CONTROL  Rsconf   Speed 4  Flow 0  Ucr/Rsr (-1 ,-1 ) Tsr/Scr 
                   (-1 ,-1 ) -> Register $000000 

Wenn nicht alle Parameter in eine Zeile passen, findet ein 
Zeilenumbruch statt. Zusammengehrige Parameter, wie Bitsets und
Strukturen werden durch { ... } geklammert.

Der 'evnt_multi' Aufruf hat die komplizierteste und lngste 
Parameterliste aller Betriebssystemfunktionen.

 CONTROL  evnt_multi  KYBD BUT { 1,1,1 } MSG TIMER  { 30000,0 }
                      Buf $040E00 -> (201,101) B$00 K$00 Key 
                      $0000 But $00 Event = MU_MESAG 
                      { WM_CLOSED H 4 } 
 
Trotzdem sind die einzelnen Werte gut zu unterscheiden, die Reihenfolge
der Ausgaben entspricht der Reihenfolge der Parameter des Aufrufs.
Es wurde auf Tastatur, Mausklick der linken Maustaste, Mitteilungen 
oder auf das Ablaufen einer Zeitspanne gewartet. Erhalten wurde
daraufhin der aktuelle Zustand des Systems, mit der Mausposition, dem
Zustand der Mausknpfe und der Tastatur. Als Ausgabe-Ereignis wurde
eine Fenstermitteilung angegeben. Wie man sieht, ist selbst diese
komplizierte Parameterliste in SysMon gut zu lesen.

 GEMINI  Fopen  'C:\GEMINI\MUPFEL.MUP' ReadOnly  -> $000007 /7
 GEMINI  Fseek  H 7 <MUPFEL.MUP> Off 0 FromEnd   -> $000490 /1168
 GEMINI  Fseek  H 7 <MUPFEL.MUP> Off 0 Relative  -> $000490 /1168
 GEMINI  Fseek  H 7 <MUPFEL.MUP> Off 0 FromStart -> Ok
 GEMINI  Fread  H 7 <MUPFEL.MUP> Cnt $000400 Buf $079A48
                    -> $000400 /1024
 GEMINI  Fread  H 7 <MUPFEL.MUP> Cnt $000400 Buf $079A48
                    -> $000090 /144
 GEMINI  Fclose H 7 <MUPFEL.MUP> -> Ok

Die Augabe des Filenamens, bei Funktionen, die nur mit einem Filehandle
arbeiten, zhlt zu den erweiteten Ausgaben von SysMon. Diese Ausgaben
werden durch < ... > geklammert.

Weitere Beispiele fr erweiterte Ausgaben :

 GEMINI menu_ienab. $0843FA 18 <  Open           ^O> disable -> 1  
 GEMINI menu_ienab. $0843FA 19 <  Get Info...    ^I> disable -> 1  
 GEMINI menu_ienab. $0843FA 44 <  Application... ^A> disable -> 1  
 GEMINI menu_ienab. $0843FA 27 <  Erase Disk...  ^E> disable -> 1  
 GEMINI evnt_multi  KYBD BUT { 2,1,1 } MSG Buf $075594 ->
                    (136,454) B$01 K$01 Key $0019 But $01
                    Event = MU_BUTT 
 GEMINI wind_find   (136,454) -> 0  
 GEMINI objc_find   $078260 (0  ,8  ) (136,454) -> Nr 10 
                    < G_ICON "ZOO" > (10 ,136) Ret 10

Bei allen Funktionen mit Objekten kann deren Typ und auch der
zugehrige String ausgegeben werden. So erfhrt man z.B. beim 
'menu_ienable' Aufruf, das nur mit Objektnummern arbeitet, welcher
Menpunkt gemeint ist. Der String eines Menpunktes wird auch
ausgegeben, wenn ein Programm eine 'MN_SLECTED' Mitteilung bekommt.
Nach dem Mausknopf Ereignis testet GEMINI, ob auf den Desktop geklickt
wurde und findet dann mit 'objc_find' die Nr des angeklickten Objektes
heraus. SysMon gibt als zustzliche Information den String des - im
Beispiel angeklickten - Icons aus.

   4.3 Das Protokollfile
------------------------
Alle Ausgaben des SysMon knnen auch in einem File mitprotokolliert
werden. Das An- und Abschalten des Protokollfiles und die Festlegung
des Namens wird im DISPLAY-Men vorgenommen.

Bei einem MediaChange werden alle offenen Dateien eines Laufwerks
automatisch geschlossen. Mchte man den Aufbau eines Desktopfensters
mitprotokollieren, mu das Protokollfile auf einem anderen Laufwerk
angelegt werden, da ein Druck auf die ESC-Taste zum Neuaufbau eines
Desktopfenster einen MediaChange auslst und die Protokolldatei
geschlossen wrde.

Die BIOS-Aufrufe des GEMDOS werden alle ber denselben Stack
abgewickelt, es ist nicht mglich, whrend eines solchen BIOS-Aufrufs
einen GEMDOS-Aufruf zu machen, da dieser wieder BIOS-Aufrufe zur Folge
htte, was den Stack berschreiben wrde. Aus diesem Grunde wird in
einem solchen Fall beim ffnen oder Schlieen des Protokollfiles eine
Warnung ausgegeben und die Funktion nicht ausgefhrt.

Das Mitprotokollieren dieser Aufrufe ist nur mglich, weil SysMon die
Ausgaben in solch einem Fall in einen Puffer schreibt und den Puffer
leert, sobald es wieder mglich ist. Die Gre des Puffers lt sich
durch eine Patchvariable verndern. (Siehe Abschnitt 8.1) Findet ein
Puffer-berlauf statt, wird dieses im Protokollfile vermerkt.

Besonderheiten im Zusammenhang mit dem Protokollfile
- Alle Fenster von SysMon lassen sich mit der Taste * des Zehnerblocks
  in das Protokollfile schreiben. Auf diese Art und Weise kann man z.B.
  den Ist-Zustand des Systems festhalten. 
- Auch die Funktions Listen lassen sich im File ablegen, um 
  festzuhalten, welche Funktionen im folgenden Protokoll nicht 
  auftauchen knnen, da sie nicht angewhlt sind.
- Wenn kein Fenster geffnet ist und nur die Menleiste sichtbar ist,
  wird durch die Dumptaste der globale Zustand des SysMon im Protokoll-
  file abgelegt.
- Das Notepad bietet die Mglichkeit, Kommentare whrend des laufenden
  Fileprotokolls in das Protokollfile einfgen zu knnen.
- Wurde das Setup gespeichert, whrend ein Protokollfile geffnet war,
  wird dieses beim nchsten Starten von SysMon nicht wieder geffnet,
  da man sonst ein schon bestehendes Protokollfile berschreiben wrde.


        5. Besonderheiten
===================================================

   5.1 AES
----------
Die benutzerdefinierten Messages von GEMINI, CLIPBRD, CAD-3D, DEGAS,
CYBERSMASH, TDI_MODULA und auch das neue XACC-Protokoll werden erkannt
und richtig ausgegeben.
Zu den erweiterten Ausgaben zhlt die Ausgabe des Objekttyps und des
Strings eines Objektes bei den Objekt- und auch den Men-Funktionen.

   5.2 VDI
----------
Auch die erweiterten VDI-Metafile Escapes und der Inhalt der MDFB-
Struktur wird ausgegeben. Die 'vex_timer', 'vex_button', 'vex_mouse'
Funktionen drfen nicht stepweise getraced werden. Beim Steppen
werden sie bersprungen.

Die Funktionen 'vq_gdos' und 'vq_driver' sind eigentlich keine VDI-
Funktionen, weil sie eine andere Stack-Konvention fr den Aufruf
benutzen. Die Ausgabe dieser Funktionen kann durch die Funktion 
'Unknown' in der VDI-Funktionsliste beeinflut werden.

   5.3 GEMDOS
-------------
Alle Netzwerk-Funktionen werden erkannt und mit den richtigen
Parametern ausgegeben. Als erweiterten Ausgaben knnen die DTA bei
'Fsfirst', 'Fsnext', die Filenamen bei allen Operationen mit 
Filehandles, die vorherige Blockgre bei 'Mfree' und 'Mshrink' und die
Ausgabe der Strukturen DISKINFO und DOSINFO angezeigt werden.

Unter Color-Overscan ist es notwendig, bei den Funktionen 'Pterm0',
'Pterm' oder 'Ptermres' kurz auf den GEM Bildschirm umzuschalten, wenn
gerade der SysMon Bildschirm dargestellt wurde.
  
   5.4 BIOS
-----------
Die Funktionen 'Setexc' und 'Ticcal' drfen nicht stepweise getraced
werden und werden deshalb beim Steppen bersprungen. Die BPB Struktur
kann ber die erweiterten Ausgaben angezeigt werden.

   5.5 XBIOS
------------
Die neuen Funktion 'Floprate' wird untersttzt, und auch die
erweiterten XBIOS-Funktionen des Overscan werden erkannt. Die
Strukturen PARAM, IOREC, KEYTABLE, KBDVECS und PBDEF knnen ber die
erweiteten Ausgaben anzeigt werden.

Wenn die Funktionen 'Physbase', 'Getrez', 'Setscreen' aufgerufen werden
und gerade der SysMon Bildschirm dargestellt wird, ist es notwendig
kurzzeitig auf den GEM Bildschirm umzuschalten.
  
   5.6 LINE_A
-------------
Alle zu der jeweiligen Funktion gehrigen LINE_A Variablen werden
ausgegeben. Die Strukuren MFORM, SDB und BITNLT knnen ber die
erweiteten Ausgaben angezeigt werden.

   5.7 Setup-abhngiges Tracen
-------------------------------
Das setup-abhngige Tracen kann ber die Modi 0..9 in den
Funktionslisten eingestellt werden. Unabhngig von der Einstellung
bei PROGRAMs im aktuellen Setup wird ein Aufruf ausgegeben, wenn
das aufrufende Programm im angegebenen Setup angewhlt ist.

Da dies ziemlich kompliziert ist, hier ein Beispiel:
  Man mchte das VDI-Tracen, und zwar nicht nur die Aufrufe von
  Programmen, sondern auch die Aufrufe des GEMs durch das AES.
  Einige VDI-Aufrufe des GEM finden aber permanent statt:
     'vq_mouse','vrq_string' usw...
  Mchte man diese 'permanenten' Aufrufe nicht sehen, so konnte
  man sie in den vorherigen SysMon-Versionen nur komplett 
  abschalten, bekam dann aber keine Ausgaben, wenn ein anderes
  Programm (als das GEM) diese Funktionen aufgerufen hat.
Genau fr dieses Problem ist nun das setup-abhngige Tracen
gedacht:
  Das aktuelle Setup sei '1', es sind alle Programme angewhlt,
  auch TOS/GEM. Im Setup '2' sind auch alle Programme angewhlt,
  aber TOS/GEM nicht. Wird nun bei den 'permanenten' Aufrufen
     'vq_mouse','vrq_string' usw...
  der Modus '2' vergeben, so gilt bei diesen die Einstellung des
  Setup's 2: Wenn sie durch das TOS/GM ausgelst wurden, werden
  sie nicht ausgegeben, wohl aber aber allen anderen Programmen.
  Die anderen VDI-Funktionen werden entsprechend der Einstellung
  von Setup '1' ausgegeben, also auch , wenn sie von TOS/GEM 
  stammen.

        6. Die Traps
===================================================

   6.1 SysMon Traps
-------------------
Im ausgeschalteten Zustand hngt SysMon im Keyboard-, VBL- und GEMDOS-
Vektor. Im eingeschalteten Zustand hngt sich SysMon auch in den
AES/VDI, BIOS, XBIOS und LINE_A Vektor ein. Die Traps beobachten sich
gegenseitig, so da bei einer Vernderung sofort eine Umleitung 
(Bypass) angelegt werden kann.

SysMon versucht immer, der Erste in einem Trap zu sein, da sonst
Aufrufe von anderen Trap-Programmen abgefangen werden knnten. Ein 
Aushngen von SysMon ist nur schwer vorstellbar. Es mten alle Traps
gleichzeitig umgehngt werden, damit sich SysMon nicht wieder davor
hngt.

Der GEMDOS-Trap wird auch im ausgeschalteten Zustand berwacht, um das
Starten und Verlassen von Programmen mitzubekommen.

Durch einen Trick wird erreicht, da alle Aufrufe scheinbar aus dem
eigentlichen Aufrufer erfolgten und so Programme die weiter hinten
im Trap hngen nichts von der Umleitung durch SysMon erfahren. Dies
ist fr das Funktionieren einiger Programme notwendig.

   6.2 Der SysTable
-------------------
Der SysTable ist ein eigenstndiger Programmteil von SysMon. Er liegt
ganz vorne im SysMon Programm und besteht aus der Bypass-(Umleitungs)
Tabelle, den Funktion-Stacks und einigen Funktionen, die zur Verwaltung
der Funktions-Stacks gehren.

Wird SysMon verlassen, bleibt dieser Programmteil im Speicher zurck,
wenn entweder Bypasse angelegt wurden oder Funktionen noch nicht
zurckgkehrt sind. Der SysTable sorgt dann dafr, da die Funktionen
korrekt aus dem SysMon ausgehngt werden und er beendet sich
automatisch, sobald er nicht mehr bentigt wird.

Wird SysMon gestartet, findet SysMon diesem SysTable und benutzt ihn
vollstndig. Alle Aktionen im Zusammenhang mit den Traps, dem Umlenken
der Funktionen und das Beenden von SysMon werden ber den alten
SysTable abgewickelt. Auf diese Weise braucht bei wiederholtem SysMon-
Start keine neue Byass-Tabelle oder ein Funktion-Stack angelegt werden
und SysMon kann immer komplett aus dem Speicher entfernt werden.

Wird ein Trap von einem Programm umgehngt, legt SysMon in der Bypass-
Tabelle eine Umleitung an und hngt sich wieder vorne in den Trap. Wird
ein Trap von einem Programm wieder auf seinen alten Wert gesetzt, wird
die Umleitung freigegeben. Die Bypass-Tabelle wird nicht von SysTable
berwacht. SysMon untersucht eine alte Tabelle aber beim Starten und 
gibt die nicht mehr bentigten Umleitungen wieder frei.

Die Funktion-Stacks sind notwendig, da es beim ST mehrere Prozesse
gleichzeitig gibt, die alle Betriebssystemfunktionen aufrufen und daher
getrennt verwaltet werden mssen. SysMon gibt auerdem nicht nur die
Eingangsparameter einer Funktion aus. Dies bedeutet, da SysMon auch
hinter dem Aufruf wieder dran kommen mu. Die Aufrufe des Systems sind
aber nicht alle sofort beendet. Ein einleuchtendes Beispiel ist der
'Pexec' Aufruf. SysMon wartet nicht bis der Pexec beendet ist und
arbeitet erst dann weiter,sondern der Aufruf wird auf einem Stack
abgelegt, die Eingangsparameter ausgegeben und dann knnen sofort
weitere Aufrufe erfolgen. Spter, wenn der 'Pexec' Aufruf zurckkehrt,
werden dessen Ausgabenparameter ausgegeben und der Platz auf dem Stack
freigegeben. Alle AES-Funktionen sind ein weiteres Beispiel. In diesem
Fall knnte sogar ein anderer Proze aus dem GEM-Trap zurckkehren, als
hinein ging.

SysMon verwaltet alle Traps ber solche Stacks, deswegen werden auch
die Aufrufe aus Interrupts oder der VBL angezeigt. Sogar mit 
Verschachtelungen durch verschiedene Prozesse kommt SysMon zurecht.
Folgendes extreme Beispiel ist z.B mit einem alten TEMPLEMON zu
beobachten :

Ein GEM-Programm macht einen 'evnt_multi' Aufruf. Dieser lst wiederum
einen 'vrq_string' des GEM-Prozess aus, der wiederum mit 'Bconstat' des
TOS-Prozess den Status der Tastatur beobachtet. Wird nun eine Taste
gedrckt, bemerkt man, da der TEMPLEMON, der ja im Keyboard-Vektor
hngt einen 'Iorec' Aufruf absetzt und dann lst sich die
Verschachtelung wieder auf ...

Der SysTable verwaltet diese Stacks eigenstndig, so da SysMon 
jederzeit beendet werden kann. 

Der aktuelle Zustand des SysTable kann im SYSMON-Men unter dem
Menpunkt UsedTraps ausgegeben werden.

   6.3 Erweiterte Bypass Funktion
---------------------------------
Wenn im CONFIGURATION-Men das Flag WatchBypass angeschaltet ist,
findet eine gesonderte berwachung der Bypasse statt, anhand dessen
SysMon entscheiden kann, von welchem Programm ein Aufruf beantwortet
wurde. Diese Frage ist im Zusammenhang mit Programmen, die bestimmte 
Aufrufe abfangen, von grter Wichtigkeit. Zu diesen Programmen
gehren z.B. GDOS.PRG, SHELL.ACC, TURBOST.ACC, OVERSCAN.PRG, 
STUFFER.ACC und auch alle ST-Netzwerke.

Die WatchBypass Funktion von SysMon kann nur funktionieren, wenn SysMon
vor den anderen Programmen gestartet wird, da es sich normalerweise nur
vor anderen Programme installiert.

Ist aber das WatchBypass-Flag zusammen mit er aktuellen Einstellung
im Sys_Mon.Inf File gespeichert worden, wird beim Starten von SysMon
eine Sonderfunktion aufgerufen, die versucht, hinter jedem Programm
einen Bypass zu installieren. Dies funktioniert nur bei Programmen mit
XBRA-Kennung, da ansonsten der Rcksprung von einem Programm nicht 
modifiziert werden kann.

Die eingefgten Bypasse bilden jeweils eine Zwischenstation, in der 
die ankommenden Aufrufe analysiert werden.

- Anhand des zuletzt angesprungenen Bypasses kann SysMon entscheiden,
  welches Programm einen Aufruf beantwortet hat.
- Wurde die Rcksprungadresse verndert, so kann SysMon ausgeben,
  welches Programm sich hiner einen Aufruf gehngt hat.
- Wurde die Funktionsnummer verndert oder ein Aufruf nicht ber einen
  Trap sondern nur ber den Stack abgewickelt, so werden diese Aufrufe
  ausgegeben.

Wenn das Tracen nicht angeschaltet ist, sind die Bypass Funktionen
nicht eingebunden und es geht keine Rechnenzeit verloren.

   6.4 PD-Wechsel und Trap-berwachung
--------------------------------------
Ein Wechseln des aktuellen Prozesses und Vernderungen der SysMon-Traps
knnen angezeigt werden. Diese berwachung findet auch dann statt, wenn
der Tracer gar nicht angeschaltet ist. Umgeschaltet wird die Anzeige
mit den globalen Tasten ^P fr PD-Change und ^T "fur Trap-Change.

        7. Beispiel Sitzungen
===================================================

  7.1 Stepweises Booten des Rechners
------------------------------------
(Noch nicht geschrieben...) Es werden die notwendigen Einstellungen
und Vorkehrungen beschrieben, die fr das stepweise Booten des Rechners
notwendig sind. Als Programme sollten in diesem Beispiel TOS14FIX,
TEMPLEMON, AMCGDOS, CONTROL.ACC und TURBOST.ACC verwendet werden.
Es wird erlutert, da es eigentlich der Harddisktreiber ist, der alle
Auto Ordner Programme nachldt und dann das GEM startet. Auch sollte
das Beispiel das ffnen der GEM-Bildschirm Workstation und das AES 
Taskswitching beschreiben. Anhand von TURBOST soll ein Programm 
aufgezeigt werden, da sich auch in den Traps installiert.


   7.2 Tracen einzelner AES-Aufrufe
-----------------------------------
(Noch nicht geschieben...) In einem Beispiel soll aufgezeigt werden,
welche VDI-Aufrufe durch einen 'form_alert' Aufruf ausgelst werden.


   7.3 Tracen eines ACC-Protokolls
----------------------------------
Diese Sitzung zeigt ein einfaches ACC-Protokoll zwischen der GEMINI-
Shell und dem CLIPBRD.ACC. Das CLIPBRD.ACC sollte in GEMINI als 
Default-Applikation fr alle Dateien installiert sein.

SysMon sollte mit folgenden Einstellungen versehen werden :

Im CONFIGURATION-Fenster, wird das Setup mit einem Namen versehen,
mit der TAB-Taste der HALT-Modus und mit den Control Tasten ^A, ^V 
und ^G die Funktionsgruppen  AES, VDI und GEMDOS angewhlt. Die Anzeige
der Trap- und PD- Wechsel und wird mit ^T und  ^P angeschaltet.

Im PROGRAMS-Fenster werden CLIPBRD und GEMINI mit der INSERT-Taste zum
Tracen ausgewhlt. Es wrde auch reichen, mindestens ein ACC und ein
PRG angewhlt sind. Alle anderen Programme der der Arten TOS, Auto und
Res werden mit der DELETE-Taste ausgeschaltet.

Im SYSMON-Men wird nun der Tracer wird durch Drcken der ESC Taste
eingeschaltet. Dieser Zustand wird nun mit 'Write Setup' festgehalten.

Nach dem Neubooten des Rechners stoppt SysMon beim ersten Aufruf
des CLIPBRD oder eines anderen ACCs. Diese schaltet man aus, damit
deren Ausgaben nicht mehr stren. Nun kann man entweder im STEP oder
RUN Modus fortfahren. Oder aber man fertigt ein Fileprotokoll an.

 CLIPBRD Mshrink     $03EEC8 < Size $015E10/89616 > NewSize 
                     89616 -> Ok
 CLIPBRD appl_init     
 CLIPBRD appl_init   -> 3  
 CLIPBRD graf_handle -> (8  ,16 ) (19 ,19 ) Ret 1 
 CLIPBRD wind_get    H 0 WORK  -> (0  ,19 ) (640,381) 
 CLIPBRD Dgetdrv     -> Drive C
 CLIPBRD Dgetpath    Buf $054BCC Drv 0 (active) -> "" 
 CLIPBRD shel_read   -> "CLIPBRD.ACC"    "" 
 CLIPBRD menu_regis. "  GEM-Klemmbrett" 3 -> 1  
 CLIPBRD scrp_read   $04F3BE -> ""
 CLIPBRD Dsetdrv     $0002 C -> Drives ABCDEF
 CLIPBRD scrp_write  "C:\CLIPBRD\" -> 1  
 ...
 CLIPBRD evnt_multi  KYBD BUT { 2,1,1 } MSG Buf $054CA0 

Das CLIPBRD benutzt die Funktion 'scrap_read' um festzstellen, ob schon
ein Pfad gesetzt ist. Wenn nicht, wird er mit 'scrap_write' gesetzt.
Danach wird mit 'Fsfirst' getestet, ob das CLIPBRD-Direktory schon
existiert, wenn nein wird es angelegt.

 ...
 GEMINI  scrp_read   $0903F8 -> "C:\CLIPBRD\"
 ...

Die GEMINI-Shell benutzt auch die Funktionen 'scrp_read' und 
'scrp_write' um das CLIPBRD-Direktory festzulegen. 

 GEMINI  evnt_multi  KYBD BUT { 2,1,1 } MSG Buf $090418 -> 
                     (132,120) B$01 K$01 Key $0000 But $02 Event
                     = MU_BUTT 
 GEMINI  wind_find   (132,120) -> 2  
 GEMINI  objc_find   $0A2500 (0  ,8  ) (132,120) -> Nr 8  < G_ICON
                     "SOWTW.TXT" > (8  ,132) Ret 8 
 GEMINI  objc_offset $0A2500 8  < G_ICON "SOWTW.TXT" > ->
                     (1  ,82 ) Ret 1 
 ...
 GEMINI  appl_find   "CLIPBRD " -> 3  
 GEMINI  wind_update BEG_UPDATE -> 1  
 ...
 GEMINI  graf_growb. (82 ,104) (78 ,40 ) (0  ,19 ) (640,381) -> 1
 GEMINI  appl_write  ID 3 Cnt 16 $090194 { GEMINI : "E:\SOWTW.TXT"
                     } -> 1
 GEMINI  wind_update END_UPDATE -> 1  

Wird nun ein Doppelklick auf eine Datei ausgefhrt, die als zugehrige
Applikation das CLIPBRD hat, sucht GEMINI mit 'appl_find', ob das
CLIPBRD geladen ist. Nun schickt es dem ACC mit 'appl_write' eine
GEMINI-Mitteilung.

>CLIPBRD evnt_multi  -> (132,120) B$00 K$01 Key $0013 But $00
                     Event =  MU_MESAG { GEMINI : "E:\SOWTW.TXT" }
 CLIPBRD graf_mkstat -> (134,119) But $00 Key $0001 
 CLIPBRD wind_update BEG_UPDATE -> 1  
 ... 
 CLIPBRD Fopen       "E:\SOWTW.TXT" ReadOnly  -> $000007 /7
 CLIPBRD Fseek       H 7 <SOWTW.TXT> Off 0    FromEnd   ->
                     $00076E / 1902
 CLIPBRD Malloc      $00076E -> $0A3746 
 CLIPBRD Fseek       H 7 <SOWTW.TXT> Off 0    FromStart -> Ok
 CLIPBRD Fread       H 7 <SOWTW.TXT> Cnt $00076E Buf $0A3746 ->
                     $00076E / 1902
 CLIPBRD Fclose      H 7 <SOWTW.TXT> -> Ok
 ...
 CLIPBRD wind_create { NAME CLOSE FULL MOVE INFO SIZE UPAR DNAR
                     VSLIDE LFAR RTAR HSLIDE } (0  ,19 ) (640,381)
                     -> 3  
 ...
 CLIPBRD wind_open   H 3 (7  ,91 ) (580,216) -> 1  
 CLIPBRD appl_write  ID 0 Cnt 16 $054BC8 { SCRP_OK } -> 1  
 ...
 CLIPBRD wind_update END_UPDATE -> 1  

Diese GEMINI-Mitteilung wird wird CLIPBRD verstanden, obwohl in der
CLIPBRD Dokumentation nur die Scrp_xxxx-Mitteilungen erwhnt werden.
Insbesondere wird das Hauptfenster vom CLIPBRD geffnet, wenn der
Dateiname leer ist, was auch nicht in der Dokumentation zu finden ist.

Das CLIPBRD nimmt die Mitteilung an, ffnet ein Fenster und stellt
die Datei dar. Als Antwort wird noch eine 'SCRAP_OK' Meldung vom
CLIPBRD an GEMINI verschickt.

   7.4 Tracen eines Programmes
------------------------------
Diese Beispiel Sitzung soll zeigen, wie das Multi-Accessory STUFFER.ACC
die restlichen Accessories nachldt und verwaltet.

Im CONFIGURATION-Fenster wird das Setup 3 mit folgenden Einstellungen
versehen : AES VDI , GEMDOS, BIOS usw an, STEP-Mode , TrapChanges 
an. Mit ESC werden die Traps geholt und nun noch unter PROGRAMS
STUFFER.ACC angewhlt. Diese Einstellung abspeichern und den Rechner
neu booten.

Nach dem blichen 'appl_init' und 'menu_register' wartet STUFFER erst
einmal, da der Desktop fertig aufgebaut ist. Dies geschieht durch
mehrfachem Aufruf von 'wind_update(Beg/End)'. Dann wird die Ausgabebox
gezeichnet und der Pfad auf das STUFFER Direktory gesetzt. Mit 
'Fsfirst' und 'Fsnext' werden alle *.ACCs herausgefunden und dann hngt
sich STUFFER in den GEM- und BIOS-Trap ein.

 STUFFER Malloc    $FFFFFF -> $098E50 
 STUFFER Kbshift   Mode -1 ->  NoState
 STUFFER Cconws    "ADDRESS.ACC" -> Cnt 26 
 STUFFER Pexec     Load "C:\STUFFER\ADDRESS.ACC" "" -> $05F1B4 
 STUFFER Mshrink   $05F1B4 < Size $098E4C/626252 > NewSize 54204 
                   -> Ok
 ADDRESS appl_init
>ADDRESS appl_init -> 2  

Der Name eines zu ladenden PRGs wird nicht direkt in der Dialogbox
ausgegeben sondern mit 'Cconws' auf den Bildschirm geschrieben, dies
ist auch der Grund, warum es auf einen Grobildschirm oder unter
OverScan zu Fehlern bei der Positionierung des Strings kommt.

Mit 'Pexec(Load)' wird nun ein ACC nachgeladen und mit 'Mshrink' der
Speicher aus die tatschliche Lnge verkleinert. Daraufhin wird das ACC
von Stuffer direkt gestartet. Da fr GEM noch dasselbe ACC luft wird 
bei 'appl_init' dieselbe ID zurckgeliefert.

 ADDRESS menu_regis. "  STreet finder" 2  -[STUFFER]-> 1  
 ADDRESS evnt_multi  MSG Buf $06C264 
 STUFFER  Cconws     "\escH\escY->" -> Cnt 79 
 STUFFER  Cconws     "            " -> Cnt 26 
 STUFFER  Cconws     "            " -> Cnt 26 
 STUFFER  Cconws     "\escH\escY->" -> Cnt 79 
 STUFFER  Malloc     $FFFFFF -> $08B95C 
 STUFFER  Kbshift    Mode -1 ->  NoState
 STUFFER  Cconws     "CALNDR.ACC" -> Cnt 26 
 STUFFER  Pexec      Load "C:\STUFFER\CLOCK.ACC" "" -> $06C6A8 
 STUFFER  Mshrink    $06C6A8 < Size $08B958/571736 > NewSize 9880 
                     -> Ok
 CLOCK   appl_init      
>CLOCK   appl_init   -> 2  

STUFFER fngt den 'menu_register' Aufruf ab und merkt sich den Text.
Bei einem Aufruf aus der 'Event'-Gruppe ist Stuffer wieder dran und 
wiederholt das Laden von ACCs solange bis entweder alle ACCs geladen
sind, der Speicher nicht mehr ausreicht oder aber die rechte Shifttaste
gedrckt ist.

Wird nun das STUFFER-Menpunkt angeklickt, zeichnet STUFFER seine
eigene DialogBox und wartet bis ein Menpunkt ausgewhlt wurde.

 STUFFER  wind_update END_UPDATE -> 1  
 STUFFER  v_clsvwk    H 5  -> 
 STUFFER  Super       $000000 -> $008660 
 CLOCK   evnt_multi  -[STUFFER]-> (41 ,89 ) B$00 K$00 Key $0000 
                      But $00 Event = MU_MESAG { AC_OPEN 4 } 
 CLOCK   wind_update BEG_UPDATE -> 1  
 ...
 CLOCK   wind_update END_UPDATE -> 1  
 CLOCK   evnt_multi  KYBD MSG TIMER  { 1000,0 } Buf $075A8E 
 STUFFER evnt_multi  KYBD MSG TIMER  { 1000,0 } Buf $03D400 -> 
                      (57 ,110) B $00 K$00 Key $00FD But $58
                     Event = MU_MESAG { WM_REDRAW H 4 (99 ,31 )
                     (80 ,119) } 
 STUFFER  Super       $000000 -> $008660 
 ADDRESS evnt_multi  -[STUFFER]-> (57 ,110) B$00 K$00 Key $00FD
                     But $58 Event = MU_MESAG { WM_REDRAW H 4
                     (99 ,31 ) (80 ,119) } 
 ADDRESS wind_update BEG_UPDATE -> 1  
 ...
 ADDRESS wind_update END_UPDATE -> 1  
 ADDRESS evnt_multi  KYBD MSG TIMER  { 10000,0 } Buf $06E938 
 STUFFER evnt_multi  KYBD MSG TIMER  { 1000,0 } Buf $03D400 -> 
                     (57 ,110) B $00 K$00 Key $0000 But $00
                     Event = MU_MESAG { WM_REDRAW H 5 (99 ,31 )
                     (92 ,59 ) } 
 ...
 CLOCK   evnt_multi  -[STUFFER]-> (57 ,110) B$00 K$00 Key $0000
                     But $00 Event = MU_MESAG { WM_REDRAW H 5 
                      (99 ,31 ) (92 ,59 ) } 
 CLOCK   wind_update BEG_UPDATE -> 1  
 ...

Die einzelnen ACCs laufen dann jeweils bis zu einem 'Event'-Aufruf,
dann findet ein Taskswitching durch STUFFER statt. STUFFER kombiniert
dabei die jeweiligen 'Event'-Aufrufe und leitet 'Timer' und 'Kbd' 
Events an alle ACCs weiter die einen 'Timer'/'Kbd' Event wollten. 
Hat man in der STUFFER-Liste ein ACC, das sehr kurze 'Timer' Aufrufe 
macht, bekommen alle ACCs die 'Timer'-Aufrufe gemacht haben dieselbe,
womglich viel zu schnelle 'Timer'-Message. Da sich STUFFER zustzlich 
merkt, welches Window zu welchem ACC gehrt braucht er die 'Window'-
Messages nur einmal an den jeweils richtigen Empfnger weiterleiten.

Fr GEM sieht alles so aus,als wrde es nur ein ACC geben, da alle
nachgeladenen ACCs dieselbe ID besitzen. STUFFER ist fr GEM auch der
Besitzer aller untergeordneter Fenster. Im Endeffekt untersetzt STUFFER
nur das GEM-Taskswitching um eine weitere Stufe.


   7.5 Fehler im Betriebssystem entdecken
-----------------------------------------
(Noch nicht geschrieben...) Es werden einige bisher unbekannten Fehler
und Verhaltensweisen des Betriebssystem aufgezeigt.

So wird beschrieben, da der Desktop nach dem Ende eines jeden
Programmes versuchtm Speicher freizugeben, der ihm garnicht gehrt und
deshalb immer einen 'BadBlockAddress'-Fehler vom TOS gemeldet bekommt.

Der Fehler im Zusammenhang mit den VDI Workstations wird auch 
beschrieben. Dieser Fehler tritt auf, wenn eine Workstation, die intern
in einer Liste verwaltet werden, geschloen wird, die nicht am Ende
sondern in der Mitte dieser Liste liegt. Alle danach geffneten
Workstations bekommen denselben Handle und arbeiten auf denselben
Parametern. Der Fehler ist sehr leicht mit dem CONTROL.ACC zu
produzieren. 

Auerdem kann noch die Frage geklrt werden, zu welchem Zeitpunkt ein
ACC die 'AC_CLOSE'-Meldung geschickt bekommt, wenn man ein TOS Programm
startet. Die Meldung wird erst verschickt, wenn das Programm beendet
wird und der Desktop dabei ist, sich neu aufzubauen.

Eine weitere Merkwrdigkeit im Zusammenhang mit dem Desktop ist
das '\\X' File, das GEM immer bei jedem MediaChange zu ffnen versucht,
aber nicht findet. Warscheinlich wird dadurch das Bios gezwungen, die
Direktories bis zum Ende zu Durchsuchen.


        8. Erweiterte Informationen
===================================================

   8.1 Patchvariablen
---------------------
Wie schon beim TEMPLEMON und auch beim OVERSCAN, besitzt auch SysMon
eine Reihe von Patchvariablen, die man mit einem Diskettenmonitor
verndern kann. Am Anfang des Sys_Mon.Prg Files findet sich der String
SysMon_Var. Dieser markiert den Beginn der Patchvariablen, die der
Tabelle -6- zu entnehmen sind.

    Lnge | Wert  | Art         |           | Bedeutung
   -------+-------+-------------+-----------+--------------------------
    Byte  | 98    | Scancode    | HELP      | Aufruf von SysMon
    Byte  | 1     | Shiftstatus | re.Shift  | Aufruf von SysMon
    Byte  | 8     | Shiftstatus | Alternate | Abbruch der Installation
    Byte  | 4     | Shiftstatus | Control   | Sys_Mon.Inf nicht laden
    Byte  | 0     | Flag        | weiss     | Menfarbe
    Byte  | 1     | Flag        | schwarz   | Hintergrundefarbe
    Long  | 10000 |             |           | Lnge des File Puffers
    Long  | 0     |             |           | Offset Lopbase 
    Long  | 0     |             |           | Offset Physbase
    Word  | 50    | Anz. Zeilen |           | Trace-Puffer
    Byte  | 102   | Scancode    | Block *   | Fensterdump

                Tabelle -6- Patchvariablen

Whlt man z.B. den Abbruch Shiftstatus zu 0, wird SysMon nur 
installiert, wenn beim Starten mindestens eine der Sondertasten
gedrckt gehalten wurde. Die beiden Offsets sind bei lteren
OverScan-Versionen (< 1.7) einzutragen.

   8.2 Unbekannte TOS-Versionen
-------------------------------
SysMon ist von einigen undokumentierten Systemvariablen abhngig.
Fr die bisherigen TOS Versionen sind deren Adressen schon in SysMon
enthalten. Wird SysMon auf einem Rechner mit unbekanntem TOS gestartet,
so stellt SysMon dies fest und versucht nun die Systemvariablen heraus
zu finden.

- ActPD    Der Zeiger auf den aktuellen Proze.
- MBP      Die Basisadresse der Speicherlisten.
- AesBase  Die Basisadresse der ersten 3 AES-Blcke.
- AesList  Die Zeigerliste auf die restlichen AES-Blcke.
- VdiList  Der Zeiger auf die erste VDI-Workstation.

In SysMon sind Routinen integriert, die diese Adressen aus einem
laufenden TOS heraus suchen knnen. Damit die AES- und VDI-Adressen
sicher erkannt werden knnen, mssen mindesten's drei ACCs geladen
sein und mindesten's 3 VDI-Workstations geffnet sein.

Dies kann man einfach erreichen, indem man das - zusammen mit dem neuen
TOS ausgelieferte - CONTROL.ACC  3 mal unter anderem Namen auf die BOOT
Diskette kopiert und nach dem Booten alle Kontrollfelder gleichzeitig
ffnet. Nun kann man SysMon erneut starten.

Nachdem SysMon die Adressen gefunden hat, werden diese direkt in das
Sys_Mon.Prg gepatcht, so da die Installation des neuen TOS nur einmal
geschehen mu.


   8.3 Spezielle Anpassungen
----------------------------

   8.3.1 Farbbildschirme
   ---------------------
 Bei Farbbildschirmen arbeitet SysMon grundstzlich in der mittleren
 Auflsung, beim Wechseln der dargestellten Bildschirmseite wird die
 vorherige Auflsung wieder eingestellt.

   8.3.2 Grobildschirme
   ---------------------
 Bei Grobildschirmen wird zur Ausgabe der zustzlich angeschlossene
 SM124 benutzt. Bei den MATRIX-Treibern wird eine neue VDI-Basisadresse
 benutzt, die SysMon nicht zugnglich ist. Aus diesem Grunde knnen bei
 PROGRAMS oder OS-VARS keine Angaben ber die geffneten VDI-Workstations
 gemacht werden. Einige Funktionen der Treiber scheinen auch noch Fehler
 zu haben, z.B. wird bei 'vsl_type(1)' der Linientyp Null zurckgegeben, 
 den es laut GEM-Beschreibungen nicht gibt.

   8.3.3 OverScan
   --------------
 Unter OverScan und AutoSwitch-OverScan wird die beim Starten von SysMon
 vorliegende Auflsung benutzt. Wird SysMon nach OverScan gestartet, so
 werden die zustzlichen Ausgabezeilen ausgenutzt.

   8.3.4 STE
   ---------
 Beim STE gibt es zustzliche Shifterregister, die es z.B. erlauben den
 Bildschirm byteweise zu positionieren. Diese Register werden beim
 Umschalten des aktuellen Bildschirms gesichert und  beim Zurckschalten
 wieder hergestellt.

   8.3.5 TT
   --------
 Die Anpassung an die zustzlichen Video-Hardware-Register des TT ist
 noch nicht erfolgt, da noch keine Unterlagen darber vorhanden sind.
 SysMon luft aber in allen normalen Modi des TT, ein Wechseln der
 Auflsung whrend des Tracens wird aus oben genannten Grnden noch 
 nicht unterstzt.

   8.3.6 68000-68030
   -----------------
 Fr die verschiedenen Prozessoren werden die jeweils die Trap-Handler
 angepat.

   8.4 Interna
--------------
- Der Vorgang zum Erkennen der vor SysMon geladenen Programme
  luft folgendermaen ab :
  Der Speicher wird vom Ende der Betriebssystem-Variablen bis zum
  MemTop nach Basepages,Programmheaders usw. durchsucht. Dabei findet
  ein Abgeich mit der MAL und MFL statt und es wird die Liste der
  residenten Bereiche angelegt. Ausserdem wird die Liste der AES-Blcke
  nach ACCs durchgegangen. Neuerdings existiert auch eine extra Routine
  zum Erkennen von Harddisk-Treibern.

  Wenn es sich nicht um eine Basepage oder einen Programmheader handelt,
  so testet SysMon, ob einer der Systemvektoren in den Bereich zeigt.
  Ist dies der Fall, wird auch ein Programm dazu angelegt. Bei Speicher-
  blcken, die in der MAL eingetragen sind, ist der Start und das Ende
  des Programms bekannt. Ist das Programm aber resident geladen, so ist
  nur das Ende (Der Anfang des nchsten Blocks) bekannt. Der Anfang 
  liegt irgendwo vor der Einsprungadresse des Vektors. SysMon nimmt in
  diesem Fall das Ende des vorherigen Programms als Start des neuen
  Programms an. Wenn das vorherige Programm einen residenten 
  Datenbereich angelegt hat, so zhlt dieser dadurch zu dem neuen
  Programm.
- Die Ausgabe- und Scroll-Routinen werden je nach Auflsung beim 
  Starten des Programm in den Code hineinkompiliert. In Mid-Res wird 
  nur eine der 2 Planes benutzt und die Farben jeweils neu gesetzt.
- Damit SysMon die Ein- und Ausgabe Parameter einer Funktion ausgeben
  kann und damit alles auch ber einen alten SysTable abgewickelt
  werden kann, ist der Weg eines einzelnen Funktions- Aufrufs sehr
  verschlungen.
  - Zuerst wird vom Trap zum BypassTable gesprungen.
  - Von dort weiter zur Routine, die bewertet, ob dieser Aufruf
    ausgegeben werden soll.
  - Wenn die Funktion nicht getraced werden soll, geht sie ihren Weg
    ber den BypassTable weiter den Trap hinauf, um dort ausgefhrt und
    ohne Strungen zum Aufrufer zurckzukehren.
  - Ansonsten werden die Eingangs Parameter ausgegeben.
  - Die alte Rcksprungadresse, die Art des Aufrufs usw. werden auf dem
    FunktionStack abgelegt und eine neue Rcksprungadresse vorgeben.
  - Nun wandert die Funktion weiter die Traps hinauf ins
    Betriebssystem, um dort ausgefhrt zu werden.
  - Wenn andere Programme im Trap hngen, die von SysMon mit einem
    Bypass versehen wurden, wird dieser Bypass von den Programmen
    angesprungen. Der Bypass springt dann sofort weiter zur nchsten
    Station. Da z.B. der VDI Trap beim Booten laufend umgehngt wird, 
    kann es sein, da die Funktion noch  3-5 mal  ber einen  SysMon 
    Bypass springt, bevor sie im Betriebssystem ankommt.
  - Irgendwann kehrt die Funktion zurck, zwischenzeitlich knnen aber
    auch andere Aufrufe stattfinden oder auch Aufrufe zurckkehren. 
    Die Funktion landet jedenfalls wieder im SysTable.
  - Der SysTable bernimmt das Entfernen der Funktion aus dem
    Funktionen Stack. 
  - Wenn SysMon noch vorhanden ist, wird nun die Routine fr die
    Ausgabeparameter angesprungen.
  - Wenn es gewnscht wird, kann das SYSMON-Men betreten werden.
  - Dann erst kehrt die Funktion zum Aufrufer zurck.
  SysMon verndert bei seiner Ttigkeit keine Register, auch das CCR
  wird nicht verndert.
  Durch einen Trick scheint es dem Betriebssystem oder den im Trap
  folgenden Programmen sogar so zu sein, da die Aufrufe aus dem
  aufrufenden Programm kommen und wieder dorthin zurckkehren.
- Der SourceCode von SysMon hat mittlerweile einen Umfang von 15000 
  Zeilen bei 380 K Bytes erreicht. 

   8.5 Bugs / Features
----------------------
Manchmal werden geladene Programme nicht erkannt. Dies ist insbesondere
beim 'LoadTime'-Linking einiger Programmierumgebungen nicht zu
vermeiden. SysMon bemerkt zwar den Wechsel des PDs - dadurch wird im
PROGRAMS-Men das richtige Programm als aktuelles angezeigt - aber die
Aufrufe kommen ( adressmig ) aus der Laufzeitbibliothek, die nicht im
Codebereich des neuen Programms liegt, sondern in der jeweiligen Shell.
Beim Tracen wird so der Name der Shell ausgegeben, obwohl die Aufrufe 
von einem anderen Programm kommen.

   8.6 Erweiterungen
--------------------
- Die Anpassung an das MicroRTX von Beckemeyer Development ist schon
  im Programm integriert, da die Anpasung noch nicht vollstndig ist,
  ist das Men nicht fr den Normalbenutzer nicht erreichbar.
- Wenn SysMon alle Traps besitzt, sinkt die VDI-Performance um ca
  20 %. Dieses liegt daran, da eine berwachung der VDI-Handles und
  AES-IDs stattfindet, auch wenn VDI und AES nicht getraced werden.
  Die Routinen sind noch in C und noch nicht optimiert. 
- Geplant ist eine spezielle OverScan Anpassung, die die zustzlichen
  Bildschirmzeilen am unteren Bildrand als Ausgabebereich fr SysMon
  benutzt.
- Die ganze Anpassung an den Farbmodus sollte so verndert werden,
  da SysMon mit den Orginal-Farben arbeiten kann. Im Augenblick sind
  viele Umschaltungen notwendig, weil SysMon im Color-Modus mit Palette
  1 und 3 arbeitet, da so dieselbe Ausgaberoutine wie im Monochrom-
  Modus verwendet werden kann.


        9. Shareware Bedingungen
===================================================
Unter der Voraussetzung, da immer die Dateien 

   README,  SYS_MON.PRG ,FEATURES, CHANGES
   STORIES, SYS_MON.TEX und SYS_MON.TXT 

unverndert kopiert werden, darf SysMon fr private Anwender frei
kopiert und benutzt werden. Kommerzielle Nutzung in jeder Form (dies
schliesst auch den Vertrieb ber Public-Domain-Sammeldisketten oder 
hnliches ein) ist NICHT GESTATTET.

Wem SysMon gefllt, darf es benutzen und weitergeben, auch ber
Mailbox-Systeme. Dazu sollten alle Dateien auf dieser Diskette in 
einem Archiv (ARC, LH-ARC oder ZOO ) zusammengefasst werden.

Die neuste SysMon Version ist auch durch Zusendung einer 3.5" 
Diskette und eines frankierten und adressierten Rckumschlages an
meine unten angegebene Adresse erhltlich.

Die Entwicklung von SysMon hat bisher 1,5 Jahre in Anspruch 
genommen, aus diesem Grunde sehe ich mich nicht in der Lage, SysMon
kostenlos (als PD oder Freeware ) zu vertreiben.

Da SysMon ein sehr komplexes Produkt ist, dessen Benutzung schon
einiges an Wissen vorraussetzt, habe ich mich fr das Konzept der
Shareware entschieden, wonach SysMon frei kopiert und ausprobiet werden
darf, jedoch bei regelmiger Benutzung ein Shareware-Betrag von
DM 50,- fllig wird. 

Wird SysMon im professionellen Umfeld eingesetzt, so ist ein erhhter
Shareware-Betrag von 100 DM fllig. Fr diese 100 DM erhlt die/der 
jeweilige Firma/Softwareentwickler einen automatischen Update Service
fr die nchsten 5 Versionen und eine Rechnung/Quittung, damit sie 
SysMon von der Steuer absetzen knnen.

Meine Bankverbindung lautet :

  Karsten Isakovic
  Sparkasse der Stadt Berlin
  Kto: 0950128864
  Blz: 10050000 


Bitte notieren Sie bei Bankberweisungen im Kommentarfeld Ihren Namen
und Ihre Adresse, ansonsten kann ich keinen Kontakt zu Ihnen aufnehmen!

 Ich bernehme keine Haftung fr irgendwelche direkten oder indirekten 
 Schden -- einschliesslich aber nicht beschrnkt auf materielle oder
 finanzielle -- die durch die Benutzung von SysMon oder die
 Untauglichkeit von SysMon fr einen bestimmten Zweck entstehen.


        10. Kontaktadressen
===================================================
Man kann mich auf folgende Art und Weise erreichen :

   10.1 ber die gelbe Post
---------------------------
 Karsten Isakovic 
 WilmersdorferStr. 82 
 1000 Berlin 12 

   10.2 ber Mailboxen
----------------------

Ich bin in folgenden Mailboxen zu erreichen :

 Im Maus-Netz     mit Karsten Isakovic @ B 
 Im Zerberus-Netz mit Karsten_Isakovic!IfiNet!Mircon
 Im StarNet-Netz  als STEN in der >PGS< Pegasus
 Maus   Berlin  030/3956092
 Parrot Berlin  030/724467 als STEN

