ô 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-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 Untersttzte 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 untersttzt, 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 untersttzt. 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 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. 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 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 m”glichen Gruppen der Betriebssystem Aufrufe dar. Nur wenn ein Menpunkt 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 Menpunkt 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 Menpunkte werden durch Drcken 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 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 | 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 gedrckt 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 aufgefhrt. 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 Mens. Diese Kommandos sind so aufgebaut, daž sie aus dem gleichzeitigen Drcken 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 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 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 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 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- aufgefhrten Controltasten Kombinationen. Jede andere Taste verl„žt 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. M”chte man haupts„chlich 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 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 Drcken 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 Menpunkt 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 fr jeden Anwendungsfall ein neues Setup anzulegen, auf das man sp„ter 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 Zurckbl„ttern in der Trace-Ausgabe ------------------------------------------ Ab der SysMon-Version 1.0.4 gibt es die M”glichkeit in den Trace- Ausgaben zurckzubl„ttern. Dazu drckt 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 Menpunkt SysMon bietet eine weitere Liste von Untermenus an. Diese k”nnen entweder durch Drcken des Anfangsbuchstabens oder mit den Cursortasten und Drcken 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 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 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 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- 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. 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 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 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 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 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 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 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 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 gltig. Die einzelen Punkte k”nnen durch Drcken 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 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 erh”ht. S - STEP-Filter gibt an, wieviele Zeilen im STEP-Modus ohne Nachfrage ausgefhrt werden sollen. P - PauseOnShift schaltet die Pausenoption um. Wenn Pause angew„hlt 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 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 fr 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 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 k”nnen. - 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 M”glichkeit, um Kommentare einzugeben. Dieser kann dann in das Protokollfile eingefgt 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 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 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 fr 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' 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 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 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 sp„ter nicht freigegeben werden, da unter Umst„nden 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 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 Rcksprung- 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 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 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 eingerckt. 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 zurckkehrt, 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 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 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 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 angew„hlt, ansonsten wrde 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 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 angew„hlt ist, wrden 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 Off 0 FromEnd -> $000490 /1168 GEMINI Fseek H 7 Off 0 Relative -> $000490 /1168 GEMINI Fseek H 7 Off 0 FromStart -> Ok GEMINI Fread H 7 Cnt $000400 Buf $079A48 -> $000400 /1024 GEMINI Fread H 7 Cnt $000400 Buf $079A48 -> $000090 /144 GEMINI Fclose H 7 -> 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 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 zugeh”rige String ausgegeben werden. So erf„hrt 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 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 wrde. 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 wrde. Aus diesem Grunde wird in einem solchen Fall beim ™ffnen oder Schliežen des Protokollfiles eine Warnung ausgegeben und die Funktion nicht ausgefhrt. 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 Menleiste 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 einfgen 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 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 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 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 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' 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 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 fr 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 fr 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 zurck, wenn entweder Bypasse angelegt wurden oder Funktionen noch nicht zurckgkehrt sind. Der SysTable sorgt dann dafr, 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 mssen. 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 zurckkehrt, 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 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 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 gedrckt, 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 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 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 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 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 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 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 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 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 wrde 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 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 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 ausgefhrt, 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 Off 0 FromEnd -> $00076E / 1902 CLIPBRD Malloc $00076E -> $0A3746 CLIPBRD Fseek H 7 Off 0 FromStart -> Ok CLIPBRD Fread H 7 Cnt $00076E Buf $0A3746 -> $00076E / 1902 CLIPBRD Fclose H 7 -> 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 fr GEM noch dasselbe ACC l„uft 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 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 gedrckt ist. Wird nun das STUFFER-Menpunkt angeklickt, zeichnet STUFFER seine eigene DialogBox und wartet bis ein Menpunkt 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. 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 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 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 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 | Menfarbe 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 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 abh„ngig. 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-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, mssen 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 zurckgegeben, 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 Zurckschalten 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 darber 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 Grnden noch nicht unterstzt. 8.3.6 68000-68030 ----------------- Fr 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 ausgefhrt und ohne St”rungen 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 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 zurck, zwischenzeitlich k”nnen 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 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 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 ( 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 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 zus„tzlichen Bildschirmzeilen am unteren Bildrand als Ausgabebereich fr 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 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 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 Rckumschlages 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 fr 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. Fr diese 100 DM erh„lt die/der jeweilige Firma/Softwareentwickler einen automatischen Update Service fr 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 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 Sch„den -- einschliesslich aber nicht beschr„nkt 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