home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Vectronix 2
/
VECTRONIX2.iso
/
FILES_01
/
SYSTEMON.LZH
/
SYSMON
/
SYS_MON.TXT
< prev
Wrap
Text File
|
1990-06-20
|
80KB
|
1,785 lines
⌠ 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 Unterstützte Hardware
1.2 Unterstützte TOS-Versionen
1.3 Starten von SysMon
2. Allgemeine Bedienung
---------------------------------------------------
2.1 Die Menüleiste
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 Zurückscrollen 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-abhängiges 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 Gro₧bildschirme
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 Unterstützte Hardware
----------------------------
Der SysMon läuft in Schwarz/Wei₧ und Farbe, benutzt aber eigene
Routinen zur Ausgabe auf einer 2.Bildschirmseite.
SysMon läuft nicht nur in den Standard-auflösungen. Die MATRIX
Schwarzwei₧- und Farb- Gro₧bildschirme und die MAXXON-MGE Grafikkarte
werden in soweit unterstützt, da₧ alle Ausgaben auf dem als Zweit-
Monitor installierten SM124 stattfinden und so ein komfortables
Debugging möglich ist.
Die verschiedenen Overscan Erweiterungen werden erkannt und
unterstützt.
Au₧er der Ausgabe auf dem Monitor ist auch das Remote Debugging mit
Aus- und Eingabe über die Modem-,Printer- oder Midi- Schnittstelle
möglich.
Siehe Abschnitt 8.3 .
1.2 Unterstützte TOS-Versionen
---------------------------------
Der SysMon arbeitet mit allen TOS-Versionen. Bei Versionen, die nicht
in Tabelle -1- aufgeführt 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 Drücken der SPACE-Taste oder durch den
Menüpunkt QUIT.
Man kann die Installation durch das Gedrückthalten der Alternate-Taste
abbrechen oder durch das Gedrückthalten der Control-Taste das Laden
der Sys_Mon.Inf Datei unterbinden.
Während Diskzugriffen kann der SysMon nicht betreten werden, da es
ansonsten zu Timing-Problemen kommen könnte. 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 während Scan/Copy/Format) Aus diesem Grunde
kann die 'flock'-Abfrage übersprungen werden, indem man zusätzlich zu
RechtsShift-Help die Caps-Lock Taste drückt.
2. Allgemeine Bedienung
===================================================
2.1 Die Menüleiste
---------------------
Der Zustand des SysMon wird durch Gro₧-/Kleinschrift der Menüpunkte
angezeigt. Der Aufbau der Menüzeile ist wie folgt :
- Der Menüpunkt SysMon wird gro₧ geschrieben, wenn das Tracen
überhaupt angeschaltet ist. Wird er klein geschrieben, werden alle
anderen Einstellungen ignoriert.
- Die Menüpunkte AES, VDI, GEMDOS, BIOS, XBIOS und LINE_A stellen die
möglichen Gruppen der Betriebssystem Aufrufe dar. Nur wenn ein
Menüpunkt gro₧ geschrieben ist, können die zu dieser Gruppen
gehörenden 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 Menüpunkt SysMon werden alle zusätzlichen Möglichkeiten 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 Menüpunkte
werden durch Drücken des Anfangsbuchstabens oder durch Wandern mit den
Cursortasten angewählt.
Die Oberfläche von SysMon ist mit einem einfach Fenstersystem ausge-
stattet. Innerhalb eines Fensters wird die aktuelle Zeile durch einen
invertierten Balken dargestellt. Die Cursorposition wird für 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 Menüpunktes
| up /down | Zeilenweise Rauf bzw Runter
Shift | up /down | Seitenweise Rauf/Runter
Control | up /down | Auswählen 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 möglich
zusammen mit der Cursortaste die Controltaste gedrückt zu halten und
dadurch einen Block aus zu wählen, dessen Zustand dann auf einmal
beeinflu₧t 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 aufgeführt.
Zustanz | Taste | Bedeutung
---------+---------+-----------------------------
Control | Up/Down | Zum nächsten Block springen
| Delete | Alle Optionen löschen
| Insert | Alle Optionen setzen
Tabelle -3- Option Kommandos
Die erweiterten Steuerkommandos der Tabelle -4- gelten innerhalb aller
Fenster und Menüs. Diese Kommandos sind so aufgebaut, da₧ sie aus dem
gleichzeitigen Drücken der Controltaste und dem Anfangsbuchstaben der
auszulösenden 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
---------+--------- Zusätzliche Ausgaben
^P | PD-changes
^T | Trap-changes
---------+--------- Sonstiges
Undo | Fenster schlie₧en
Help | Hilfe Fenster
^Z | Zap (Bildschirm löschen)
* | Fenster in Protokollfile ausgeben
Tabelle -4- Globale Tastenkombinationen
Die beiden wichtigsten Tasten sind :
- Jedes Fenster von SysMon kann mit der UNDO-Taste wieder geschlo₧en
werden.
- Der SysMon wird durch Drücken der SPACE-Taste wieder
verlassen.
2.3 Funktions-Listen
-----------------------
Innerhalb der Menüpunkte 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 angewählt 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 angewählt 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 möglich.
- Die oberste Ebene ist das Ein- bzw. Ausschalten des SysMon mit der
ESC-Taste.
- Die nächste Ebene ist die Auswahl der Programme, die getraced werden
sollen. Das zugehörige Fenster findet man im SYSMON-Menü unter dem
Menüpunkt 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
zurückgekehrt ist, landet man im SYSMON-Menü.
- HALT In diesem Modus landet man sofort hinter dem nächsten
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 hält 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 wählt, genauso wie die 10 Funktionstasten, das aktuelle Setup
aus. Die Tasten 0--9 sind notwendig, da die Funktionstasten
nicht über alle Eingabedevices eingegeben werden können.
Es gelten alle in der Tabelle -4- aufgeführten Controltasten
Kombinationen. Jede andere Taste verlä₧t das STEP-Menü wieder.
Um das stepweise Tracen nicht zu einer ewigen Tastendrückerei 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 für seine Ausgaben eine 2. Bildschirmseite an. Diese wird
beim Betreten des SYSMON-Menüs automatisch angezeigt. Diese 2. Seite
kann auch jederzeit beim Tracen durch Drücken der rechten Shifttaste
angezeigt werden.
Wenn der Tracer ausgeschaltet ist, ist auch die rechte Shifttaste nicht
aktiv.
Möchte man hauptsächlich die Ausgaben des SysMon sehen, kann man durch
gleichzeitiges Drücken der rechten Shifttaste und der Capslock Taste
den aktuellen Bildschirm umschalten. Nun wird der Orginal-Bildschirm
beim Drücken der rechten Shifttaste dargestellt.
Bei einem Farbmonitor wird auf dem SysMon-Bildschirm immer die mittlere
Auflösung benutzt. Au₧erdem wird die Farbpalette angepa₧t.
Unter AutoSwitch-OverScan wird immer derjenige Modus benutzt, der beim
Starten von SysMon vorlag.
Bei einem Farbmonitor mit OverScan wird also durch Drücken der Shift-
Taste unter Umständen der AutoSwitch Zustand, die Auflösung 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 Menüpunkt DISPLAY die Pausenfunktion
anschalten. Ist die Pausenfunktion angewählt, 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 abhängig sind, hat man es nach dem
Umschalten mit einem komplett anderen SysMon zu tun. Dadurch ist es
möglich sich für jeden Anwendungsfall ein neues Setup anzulegen, auf
das man später bei Bedarf zurückgreifen 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 Zurückblättern in der Trace-Ausgabe
------------------------------------------
Ab der SysMon-Version 1.0.4 gibt es die Möglichkeit in den Trace-
Ausgaben zurückzublättern. Dazu drückt man die INSERT-Taste, wenn kein
Fenster geöffnet 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 zusätzlich
zu den sichtbaren Bilschirmzeilen angelegt.
3. Das SysMon Menü
===================================================
3.1 Übersicht
----------------
Der Menüpunkt SysMon bietet eine weitere Liste von Untermenus an. Diese
können entweder durch Drücken des Anfangsbuchstabens oder mit den
Cursortasten und Drücken der Returntaste angewählt 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 Eingabemöglichkeit für 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 löschen 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 während des Tracens wird durch die
Anfangsbuchstaben der Optionen ausgegeben. Hierbei steht R für
ReturnAddr, C für Caller, N für Number, O für OutputStack, F für
FlagSuper, E für Extra und W für WatchBypass.
- Der Zustand der Überwachungsfunktionen für PD-Wechsel und Trap-
Diebstähle 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
abhängig vom Setup . Siehe Abschnitt 2.8
3.3 P - Programms
--------------------
Dies ist eine Liste der geladenen Programme. Für jedes Programm kann
mit den Tasten aus Tabelle -5- bestimmt werden, ob es getraced werden
soll. Der Eintrag 'Unknown' bestimmt den Tracestatus für Aufrufe, die
nicht aus den erkannten Programmbereichen kommen.
Die Ausgabezeilen des Fensters sind folgenderma₧en 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
Editiermöglichkeit eines Names ist auch an der Klammerung in
<<...>> zu erkennen. Es können nur Gro₧buchstaben eingegeben werden.
Um Zeichen zu löschen ist nur die Backspace-Taste zugelassen. Ein
leerer Name ist unzulä₧ig 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
möglich, 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 für 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 für 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 gehört.
- 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 Blöcke 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 Länge des Blockes wird
ausgegeben.
- Der Owner des Blockes wird ausgegeben. Bei freien Blöcken wird
stattdessen 'free' , bei residenten Blöcken 'res' ausgegeben.
Es wird zusätzlich die HideMem-Konvention erkannt, d.h. wenn alle
4 Bytes des Longwords ASCII-Buchstaben sind, werden diese ausgegeben.
- Wenn möglich, wird ein Programmname zugeordnet.
- Es werden folgende Arten unterschieden :
- Programm Code
- Environments
- Resourcen
- AES-Blöcke
- VDI-Blöcke
- Basepages
- LineF-Handler
- geladene VDI-Fonts
Alles Andere wird als Data bezeichnet. Da jeweils nur wenige Bytes
zur Identifikation herangezogen werden, kann die Einschätzung auch
daneben gehen.
In diesem Fenster sind folgende Optionen möglich :
- L,$ Schaltet die Längenangabe 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
dazugehörigem 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 Beeinflu₧t alle Sprünge, die in das Betriebssystem
zeigen.
N - NotValid Schaltet die Anzeige aller Vektoren mit ungültiger
Zieladresse um.
3.6 O - OS Vars
------------------
Es werden verschiedene Variablen und Strukturen des Betriebsystems
ausgegeben. Die einzelnen Blöcke können ü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 Für 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 Menüpunkt TRAPS ausgegeben werden
konnten, werden der Vollständigkeit halber wiederholt. Es findet kein
Verfolgen von XBRA-Ketten statt.
3.7 D - Display
------------------
Das DISPLAY-Menü enthält alle Einstellungen, die die Ein-/Ausgabe
betreffen. Die Umschaltungen der Ein-/Ausgabe sind erst nach
Verlassen des SysMon Bildschirms gültig. Die einzelen Punkte können
durch Drücken des Anfangsbuchstabens oder durch Wandern mit den
Cursortasten und der Returntaste angewählt 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 möglich, wird eine
Warnung ausgegeben. Siehe Abschnitt 4.3 .
Sollte das File schon existieren, so hat man die
Möglichkeit, es zu überschreiben, die Ausgaben
anzuhängen oder abzubrechen.
N - Name wechselt in den Editiermodus für den Namen des
Protokollfiles. Gültige 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 erhöht.
S - STEP-Filter gibt an, wieviele Zeilen im STEP-Modus ohne Nachfrage
ausgeführt werden sollen.
P - PauseOnShift schaltet die Pausenoption um. Wenn Pause angewählt
ist, wird bei jedem Drücken 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 mitgezählt wird. Die
Anzahl der Aufrufe wird in den Funkionslisten mit ausgegeben. Es
werden nur Funktionsaufrufe gezählt, die auch getraced werden. Durch
Profiling erhält man einen Überblick über die am häufigsten verwendeten
Aufrufe.
P - Profile schaltet das Profiling an/aus. Die Daten werden hierbei
nicht gelöscht, so da₧ eine Zählpause möglich ist.
D - Dump schreibt die beim Profiling gewonnenen Daten in das
Protokollfile. Sollte kein Protokollfile geöffnet sein,
so wird es geöffnet und nach dem Schreiben wieder
geschlossen. Es werden nur die Daten der angewählten Traps
und da auch nur die Daten der angewählten Funkionen im
Protokollfile gespeichert.
C - Clear Löscht alle Profiling-Daten.
( Das PROFILING-Menü wird noch in ein anderes Menü integriert, da
es zu klein für ein eigenständiges 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 Vorgänger aufgeführt, 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 Buchstabenkürzel, da₧ den Vektor
kennzeichnet. A/V steht für AesVDI, G für GEMDOS usw.
Es gibt 2 Darstellungsarten der Bypass Tabelle, die durch die Taste ^M
umgeschaltet werden können.
- Die aktiven Traps und Bypasse werden getrennt ausgegeben. Dabei
werden die Bypasse in der Reihenfolge aufgeführt, 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 zurückgekehrt sind. Siehe Abschnitte 6.1 und
6.2 .
3.10 N - Notepad
-------------------
Das Notepad Fenster bietet eine Möglichkeit, um Kommentare einzugeben.
Dieser kann dann in das Protokollfile eingefügt werden, um so
zusätzliche Informationen und Bemerkungen gleich bei der Erstellung des
Protokollfiles eingeben zu können.
Die aktuelle Eingabezeile wird durch <<...>> geklammert. Als Eingaben
sind alle ASCII Zeichen zulässig, Sonderfunktionen haben nur folgende
Tasten :
- CLR löscht das ganze Fenster.
- BS löscht den letzten Buchstaben. Zusammen mit einer Shifttaste
wird eine ganze Zeile gelöscht.
- 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. Möchte man eine
Leerzeile im Kommentar, mu₧ man zumindest ein Leerzeichen in die
Zeile einfügen.
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 möglich 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 nächsten Starten nicht unbedingt
dieselben Programme gestartet werden, wird für jede Gruppe von
Programmen (TOS, Auto, Acc, Res, Prg, LPrg, Cart, Unknown) ein Modus
bestimmt.
- Wenn kein Programm der Gruppe angewählt ist, wird 'nicht Tracen'
für diese Gruppe gespeichert.
- Wird mindestens ein Programm der Gruppe getraced, wird 'Tracen'
für diese Gruppe gespeichert.
- Ist mindestens ein Programm der Gruppe mit einem Haltpunkt versehen,
wird für diese Gruppe ein Haltepunkt gespeichert.
- Ist kein Programm der Gruppe vorhanden, wird 'Tracen' für diese
Gruppe gespeichert.
3.12 R - ReRead
------------------
Liest die Sys_Mon.Inf Datei nochmals ein. Wenn ein Lesen des Files
gerade nicht möglich 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 Menüpunkt beendet SysMon nach einer Rückfrage.
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 später nicht
freigegeben werden, da unter Umständen noch Funktionen über diese
Umleitungen springen.
- Sind keine Bypasse vorhanden, aber Funktionen noch nicht
zurückgekehrt, kann der SysTable nach Rückkehr der letzten Funktion
freigegeben werden.
- Wird QUIT während eines BIOS-Aufrufes ausgelöst, kann SysMon seinen
Speicher erst bei dem nächsten 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 nächsten Verlassen der Speicher komplett
freigeben. Es existiert maximal ein aktiver SysTable im Speicher, der
sich dann selbst entfernt, wenn es möglich 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 angewählten
Flags folgendes Format :
- Findet beim Tracen von AES-Funktionen ein Taskwechsel statt, wird
ein > ausgegeben.
- Ist ReturnAddr angewählt, wird am Anfang jeder Zeile die Rücksprung-
Adresse der Funktion ausgegeben.
- Ist Caller angewählt, wird der Name des aufrufenden Programms
ausgegeben.
- Ist Number angewählt, wird der Nummer der aufgerufenen Funktion
zusammen mit einem Kennbuchstaben ausgegeben. Dieser Kennbuchstaben
sind die Anfangsbuchstaben der jeweiligen Funktionsgruppe, also z.B.
A für AES. Der Kennbuchstabe O wird für Aufrufe des GEM-Traps
benutzt, die weder eine AES- noch VDI- Kennung benutzten. Dies z.B.
beim 'vq_gdos' Aufruf - der zurückliefert ob GDOS installiert ist -
der Fall.
- Ist OutputStack angewählt, wird der aktuelle Stackpointer ausgegeben.
- Ist FlagSuper angewählt, 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
eingerückt. Dies ist der Fall, wenn man auch die Aufrufe von GEM
oder TOS anzeigen lä₧t, 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.
Au₧erdem wird bei Verschachtelungen der Header wiederholt sobald
die aufrufende Funktion zurückkehrt, damit man die zu den Ausgabe-
Parametern gehörige 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
möglichst der Reihenfolge beim Funktions-Aufruf. Benutzt die Funktion
allerdings 'Call by Reference' Variablen, die erst nach Ausführung 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 zurückgekehrt ist.
Ist durch die globale Taste ^W das Flag WatchBypass angewählt, 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
gehängt hat. (Siehe Abschnitt 6.3)
Mit der globalen Taste ^E (ExtraOutput) kann die Ausgabe von
zusätzlichen 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 Rückgabewert 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 Rückgabewert 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 für die
Rücksprungadresse, Caller für den Namen des aufrufenden Programmes und
Number für die Funktionsnummer angegeben worden. Die erweiterten
Ausgaben waren nicht angewählt, ansonsten würde bei den gefundenen
Files auch deren Länge, Datum usw. ausgegeben.
Folgendes Beispiel zeigt, welche Aufrufe durch das Öffnen der
Bildschirm Workstation beim Booten des Rechners ausgelöst 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 Einrückung kenntlich gemacht,
auch -> direkt hinter einem Funktionsnamen zeigt an, da₧ dieser Aufruf
gerade zurückgekehrt ist und die Eingangsparameter schon vorher
ausgegeben wurden. Würde in diese Beispiel das TOS nicht getraced,
weil es bei PROGRAMS nicht angewählt ist, würden die Ausgabe Parameter
des 'v_opnwk' Aufrufs in derselben Zeile ausgegeben.
Das nächste 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 -> trägt 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. Zusammengehörige Parameter, wie Bitsets und
Strukturen werden durch { ... } geklammert.
Der 'evnt_multi' Aufruf hat die komplizierteste und längste
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 Mausknöpfe 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, zählt zu den erweiteten Ausgaben von SysMon. Diese Ausgaben
werden durch < ... > geklammert.
Weitere Beispiele für 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
zugehörige String ausgegeben werden. So erfährt man z.B. beim
'menu_ienable' Aufruf, das nur mit Objektnummern arbeitet, welcher
Menüpunkt gemeint ist. Der String eines Menüpunktes 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 zusätzliche Information den String des - im
Beispiel angeklickten - Icons aus.
4.3 Das Protokollfile
------------------------
Alle Ausgaben des SysMon können 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. Möchte 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 auslöst und die Protokolldatei
geschlossen würde.
Die BIOS-Aufrufe des GEMDOS werden alle über denselben Stack
abgewickelt, es ist nicht möglich, während eines solchen BIOS-Aufrufs
einen GEMDOS-Aufruf zu machen, da dieser wieder BIOS-Aufrufe zur Folge
hätte, was den Stack überschreiben würde. Aus diesem Grunde wird in
einem solchen Fall beim Öffnen oder Schlie₧en des Protokollfiles eine
Warnung ausgegeben und die Funktion nicht ausgeführt.
Das Mitprotokollieren dieser Aufrufe ist nur möglich, weil SysMon die
Ausgaben in solch einem Fall in einen Puffer schreibt und den Puffer
leert, sobald es wieder möglich ist. Die Grö₧e des Puffers lä₧t sich
durch eine Patchvariable verändern. (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 können, da sie nicht angewählt sind.
- Wenn kein Fenster geöffnet ist und nur die Menüleiste sichtbar ist,
wird durch die Dumptaste der globale Zustand des SysMon im Protokoll-
file abgelegt.
- Das Notepad bietet die Möglichkeit, Kommentare während des laufenden
Fileprotokolls in das Protokollfile einfügen zu können.
- Wurde das Setup gespeichert, während ein Protokollfile geöffnet war,
wird dieses beim nächsten Starten von SysMon nicht wieder geöffnet,
da man sonst ein schon bestehendes Protokollfile überschreiben würde.
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 zählt 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 dürfen 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 für den Aufruf
benutzen. Die Ausgabe dieser Funktionen kann durch die Funktion
'Unknown' in der VDI-Funktionsliste beeinflu₧t werden.
5.3 GEMDOS
-------------
Alle Netzwerk-Funktionen werden erkannt und mit den richtigen
Parametern ausgegeben. Als erweiterten Ausgaben können die DTA bei
'Fsfirst', 'Fsnext', die Filenamen bei allen Operationen mit
Filehandles, die vorherige Blockgrö₧e 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' dürfen 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 unterstützt, und auch die
erweiterten XBIOS-Funktionen des Overscan werden erkannt. Die
Strukturen PARAM, IOREC, KEYTABLE, KBDVECS und PBDEF können ü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 gehörigen LINE_A Variablen werden
ausgegeben. Die Strukuren MFORM, SDB und BITNLT können über die
erweiteten Ausgaben angezeigt werden.
5.7 Setup-abhängiges Tracen
-------------------------------
Das setup-abhängige Tracen kann über die Modi 0..9 in den
Funktionslisten eingestellt werden. Unabhängig von der Einstellung
bei PROGRAMs im aktuellen Setup wird ein Aufruf ausgegeben, wenn
das aufrufende Programm im angegebenen Setup angewählt ist.
Da dies ziemlich kompliziert ist, hier ein Beispiel:
Man möchte 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...
Möchte 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 für dieses Problem ist nun das setup-abhängige Tracen
gedacht:
Das aktuelle Setup sei '1', es sind alle Programme angewählt,
auch TOS/GEM. Im Setup '2' sind auch alle Programme angewählt,
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 ausgelöst 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 hängt SysMon im Keyboard-, VBL- und GEMDOS-
Vektor. Im eingeschalteten Zustand hängt sich SysMon auch in den
AES/VDI, BIOS, XBIOS und LINE_A Vektor ein. Die Traps beobachten sich
gegenseitig, so da₧ bei einer Veränderung 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 könnten. Ein
Aushängen von SysMon ist nur schwer vorstellbar. Es mü₧ten alle Traps
gleichzeitig umgehängt werden, damit sich SysMon nicht wieder davor
hängt.
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 hängen nichts von der Umleitung durch SysMon erfahren. Dies
ist für das Funktionieren einiger Programme notwendig.
6.2 Der SysTable
-------------------
Der SysTable ist ein eigenständiger 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 gehören.
Wird SysMon verlassen, bleibt dieser Programmteil im Speicher zurück,
wenn entweder Bypasse angelegt wurden oder Funktionen noch nicht
zurückgkehrt sind. Der SysTable sorgt dann dafür, da₧ die Funktionen
korrekt aus dem SysMon ausgehängt werden und er beendet sich
automatisch, sobald er nicht mehr benötigt wird.
Wird SysMon gestartet, findet SysMon diesem SysTable und benutzt ihn
vollständig. 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 umgehängt, legt SysMon in der Bypass-
Tabelle eine Umleitung an und hängt 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 benötigten 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 müssen. SysMon gibt au₧erdem 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 können sofort
weitere Aufrufe erfolgen. Später, wenn der 'Pexec' Aufruf zurückkehrt,
werden dessen Ausgabenparameter ausgegeben und der Platz auf dem Stack
freigegeben. Alle AES-Funktionen sind ein weiteres Beispiel. In diesem
Fall könnte sogar ein anderer Proze₧ aus dem GEM-Trap zurückkehren, 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 löst wiederum
einen 'vrq_string' des GEM-Prozess aus, der wiederum mit 'Bconstat' des
TOS-Prozess den Status der Tastatur beobachtet. Wird nun eine Taste
gedrückt, bemerkt man, da₧ der TEMPLEMON, der ja im Keyboard-Vektor
hängt einen 'Iorec' Aufruf absetzt und dann löst sich die
Verschachtelung wieder auf ...
Der SysTable verwaltet diese Stacks eigenständig, so da₧ SysMon
jederzeit beendet werden kann.
Der aktuelle Zustand des SysTable kann im SYSMON-Menü unter dem
Menüpunkt 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 grö₧ter Wichtigkeit. Zu diesen Programmen
gehören 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 Rücksprung von einem Programm nicht
modifiziert werden kann.
Die eingefügten 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 Rücksprungadresse verändert, so kann SysMon ausgeben,
welches Programm sich hiner einen Aufruf gehängt hat.
- Wurde die Funktionsnummer verändert 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 Veränderungen der SysMon-Traps
können angezeigt werden. Diese Überwachung findet auch dann statt, wenn
der Tracer gar nicht angeschaltet ist. Umgeschaltet wird die Anzeige
mit den globalen Tasten ^P für 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 für 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 erläutert, da₧ es eigentlich der Harddisktreiber ist, der alle
Auto Ordner Programme nachlädt 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 ausgelöst 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 für 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 angewählt. 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 ausgewählt. Es würde auch reichen, mindestens ein ACC und ein
PRG angewählt 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 Drücken 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 stören. 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 ausgeführt, die als zugehörige
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 erwähnt werden.
Insbesondere wird das Hauptfenster vom CLIPBRD geöffnet, 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 nachlädt 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 angewählt. 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 hängt
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 Gro₧bildschirm 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 tatsächliche Länge verkleinert. Daraufhin wird das ACC
von Stuffer direkt gestartet. Da für GEM noch dasselbe ACC läuft wird
bei 'appl_init' dieselbe ID zurückgeliefert.
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 fängt 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
gedrückt ist.
Wird nun das STUFFER-Menüpunkt angeklickt, zeichnet STUFFER seine
eigene DialogBox und wartet bis ein Menüpunkt ausgewählt 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,
womöglich viel zu schnelle 'Timer'-Message. Da sich STUFFER zusätzlich
merkt, welches Window zu welchem ACC gehört braucht er die 'Window'-
Messages nur einmal an den jeweils richtigen Empfänger weiterleiten.
Für GEM sieht alles so aus,als würde es nur ein ACC geben, da alle
nachgeladenen ACCs dieselbe ID besitzen. STUFFER ist für 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 gehört 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, geschlo₧en wird, die nicht am Ende
sondern in der Mitte dieser Liste liegt. Alle danach geöffneten
Workstations bekommen denselben Handle und arbeiten auf denselben
Parametern. Der Fehler ist sehr leicht mit dem CONTROL.ACC zu
produzieren.
Au₧erdem kann noch die Frage geklärt 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 Merkwürdigkeit 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
verändern 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.
Länge | 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 | Menüfarbe
Byte | 1 | Flag | schwarz | Hintergrundefarbe
Long | 10000 | | | Länge 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
Wählt man z.B. den Abbruch Shiftstatus zu 0, wird SysMon nur
installiert, wenn beim Starten mindestens eine der Sondertasten
gedrückt gehalten wurde. Die beiden Offsets sind bei älteren
OverScan-Versionen (< 1.7) einzutragen.
8.2 Unbekannte TOS-Versionen
-------------------------------
SysMon ist von einigen undokumentierten Systemvariablen abhängig.
Für 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-Blöcke.
- AesList Die Zeigerliste auf die restlichen AES-Blöcke.
- VdiList Der Zeiger auf die erste VDI-Workstation.
In SysMon sind Routinen integriert, die diese Adressen aus einem
laufenden TOS heraus suchen können. Damit die AES- und VDI-Adressen
sicher erkannt werden können, müssen mindesten's drei ACCs geladen
sein und mindesten's 3 VDI-Workstations geöffnet 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 grundsätzlich in der mittleren
Auflösung, beim Wechseln der dargestellten Bildschirmseite wird die
vorherige Auflösung wieder eingestellt.
8.3.2 Gro₧bildschirme
---------------------
Bei Gro₧bildschirmen wird zur Ausgabe der zusätzlich angeschlossene
SM124 benutzt. Bei den MATRIX-Treibern wird eine neue VDI-Basisadresse
benutzt, die SysMon nicht zugänglich ist. Aus diesem Grunde können bei
PROGRAMS oder OS-VARS keine Angaben über die geöffneten VDI-Workstations
gemacht werden. Einige Funktionen der Treiber scheinen auch noch Fehler
zu haben, z.B. wird bei 'vsl_type(1)' der Linientyp Null zurückgegeben,
den es laut GEM-Beschreibungen nicht gibt.
8.3.3 OverScan
--------------
Unter OverScan und AutoSwitch-OverScan wird die beim Starten von SysMon
vorliegende Auflösung benutzt. Wird SysMon nach OverScan gestartet, so
werden die zusätzlichen Ausgabezeilen ausgenutzt.
8.3.4 STE
---------
Beim STE gibt es zusätzliche Shifterregister, die es z.B. erlauben den
Bildschirm byteweise zu positionieren. Diese Register werden beim
Umschalten des aktuellen Bildschirms gesichert und beim Zurückschalten
wieder hergestellt.
8.3.5 TT
--------
Die Anpassung an die zusätzlichen Video-Hardware-Register des TT ist
noch nicht erfolgt, da noch keine Unterlagen darüber vorhanden sind.
SysMon läuft aber in allen normalen Modi des TT, ein Wechseln der
Auflösung während des Tracens wird aus oben genannten Gründen noch
nicht unterstüzt.
8.3.6 68000-68030
-----------------
Für die verschiedenen Prozessoren werden die jeweils die Trap-Handler
angepa₧t.
8.4 Interna
--------------
- Der Vorgang zum Erkennen der vor SysMon geladenen Programme
läuft folgenderma₧en 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-Blöcke
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-
blöcken, 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 nächsten 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 zählt dieser dadurch zu dem neuen
Programm.
- Die Ausgabe- und Scroll-Routinen werden je nach Auflösung 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 ausgeführt und
ohne Störungen zum Aufrufer zurückzukehren.
- Ansonsten werden die Eingangs Parameter ausgegeben.
- Die alte Rücksprungadresse, die Art des Aufrufs usw. werden auf dem
FunktionStack abgelegt und eine neue Rücksprungadresse vorgeben.
- Nun wandert die Funktion weiter die Traps hinauf ins
Betriebssystem, um dort ausgeführt zu werden.
- Wenn andere Programme im Trap hängen, die von SysMon mit einem
Bypass versehen wurden, wird dieser Bypass von den Programmen
angesprungen. Der Bypass springt dann sofort weiter zur nächsten
Station. Da z.B. der VDI Trap beim Booten laufend umgehängt 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 zurück, zwischenzeitlich können aber
auch andere Aufrufe stattfinden oder auch Aufrufe zurückkehren.
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 für die
Ausgabeparameter angesprungen.
- Wenn es gewünscht wird, kann das SYSMON-Menü betreten werden.
- Dann erst kehrt die Funktion zum Aufrufer zurück.
SysMon verändert bei seiner Tätigkeit keine Register, auch das CCR
wird nicht verändert.
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 zurückkehren.
- 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 ( adressmä₧ig ) 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 vollständig ist,
ist das Menü nicht für 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 zusätzlichen
Bildschirmzeilen am unteren Bildrand als Ausgabebereich für SysMon
benutzt.
- Die ganze Anpassung an den Farbmodus sollte so verändert 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
unverändert kopiert werden, darf SysMon für 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 gefällt, 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 Rückumschlages an
meine unten angegebene Adresse erhältlich.
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 für das Konzept der
Shareware entschieden, wonach SysMon frei kopiert und ausprobiet werden
darf, jedoch bei regelmä₧iger Benutzung ein Shareware-Betrag von
DM 50,- fällig wird.
Wird SysMon im professionellen Umfeld eingesetzt, so ist ein erhöhter
Shareware-Betrag von 100 DM fällig. Für diese 100 DM erhält die/der
jeweilige Firma/Softwareentwickler einen automatischen Update Service
für die nächsten 5 Versionen und eine Rechnung/Quittung, damit sie
SysMon von der Steuer absetzen können.
Meine Bankverbindung lautet :
Karsten Isakovic
Sparkasse der Stadt Berlin
Kto: 0950128864
Blz: 10050000
Bitte notieren Sie bei Banküberweisungen im Kommentarfeld Ihren Namen
und Ihre Adresse, ansonsten kann ich keinen Kontakt zu Ihnen aufnehmen!
Ich übernehme keine Haftung für irgendwelche direkten oder indirekten
Schäden -- einschliesslich aber nicht beschränkt auf materielle oder
finanzielle -- die durch die Benutzung von SysMon oder die
Untauglichkeit von SysMon für 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