home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Vectronix 2
/
VECTRONIX2.iso
/
FILES_01
/
SMON109A.LZH
/
SYSTEM.MAN
< prev
Wrap
Text File
|
1994-03-26
|
21KB
|
419 lines
*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#
⌠ SysMon der ATARI-ST SystemMonitor Version 1.0.9 ⌠
|-------------------------------------------------|
⌡ Copyright (C) by Karsten Isakovic, Berlin ⌡
ist ein Shareware Programm von
Karsten Isakovic geb. Gerlach
Wilmersdorfer Str. 82
10629 Berlin
*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#
SYSTEMGRUNDLAGEN
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
GENERELLER AUFBAU DES BETRIEBSSYSTEMS
Das Betriebssystem des Atari ST, in seiner Gesamtheit normalerweise
TOS genannt, gliedert sich in verschiedene Schichte. Das sind im
Groben:
- DOS (BIOS, XBIOS, GEMDOS)
- GEM (VDI, AES)
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
DIE DOS SCHICHT
DOS stellt den Teil des Betriebssystems dar, der Datei- und Speicher-
verwaltung, sowie die Ein- und Ausgabe von Zeichen ermöglicht und der
in eigentlich allen Systeme vorhanden ist.
Das DOS gliedert sich in drei Teile, und zwar:
- BIOS ( Basic Input Output System )
- XBIOS ( eXtended BIOS )
- GEMDOS ( GEM-Disk Operating System )
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
BIOS
Dieser Teil des Systems dient in erster Linie der Ein- und Ausgabe
einzelner Zeichen auf den zeichenorientierten Geräten. Das sind
Tastatur, Drucker, Bildschirm usw. Desweiteren werden die block-
orientierten Geräte Floppy und Harddisk mit einer Funktion zum Lesen
und Schreiben von Blöcken (Sektoren) unterstützt.
Gliederung der BIOS-Funktionen:
- Es existieren Funktionen zur zeichenweisen Ein- und Ausgabe (Bconin,
Bconout, Bconstat ) auf den unterschiedlichen Geräten (Devices) .
- Das BIOS bietet auch eine Funktion (Rwabs) zum Lesen und Schreiben
von logischen Sektoren auf Disketten und Harddisks.
- Die Systemvektoren können mit Setexc abgefragt und gesetzt werden.
- Der Status der Sondertasten (Shift, Control, Alternate usw.) kann
mit der Funktion Kbshift abgefragt werden.
Das BIOS ist bis zu einem gewissen Level (9 - 16) reentrant. Es
werden keine Funkionen aus anderen Funktionsgruppen aufgerufen.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
XBIOS
Das XBIOS enthält Funktionen, mit denen man auf Hardware-Komponenten
oder Systemvariablen zugreifen kann. Dazu zählen die seriellen
Schnittstellen (Maus, Tastatur, Midi und RS232), der Video-Chip, der
Interrupt-Chip, Floppycontroler und Blitter-Chip.
Gliederung der XBIOS-Funktionen:
- Einzelne Einstellungen des internen Bildschirmtreiber können über
die Funktionen Phsybase, Logbase, Setscreen und Getrez abgefragt
und gesetzt werden.
- Es gibt Funktionen zum Lesen (Floprd), Schreiben (Flopwr) und zum
Formatieren (Flopfmt) von Disketten.
- Der MFP Interrupt-Chip kann über XBIOS-Funktionen (Mfpint, Jdsint,
Jenabint usw.) konfiguriert werden.
- Die RS232 Schnittstelle wir mit Rsconf konfiguriert.
- Zum Setzen und Abfragen der Systemzeit dienen die Funktionen
Settime und Gettime.
- Eine wichtige XBIOS-Funktion (Supexec) ermöglicht die Ausführung
einer Unterfunktion im Supervisor-Modus des Prozessors.
Das XBIOS ist bis zu einem gewissen Level (5 - 10) reentrant. Es
werden keine Funkionen aus anderen Funktionsgruppen aufgerufen.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
GEMDOS
Dieser Teil enthält schlie₧lich alle Funktionen zur Verwaltung von
Dateien, Speicher und Prozessen.
Gliederung der GEMDOS-Funktionen:
- Die zeichenorientierten Ein- und Ausgabe wird über die Funktionen
Cconws (Console Write String), Cconrs (Console Read String) usw.
abgewickelt. Alle Funktionsnamen beginnen mit einem gro₧en 'C' (für
Character).
- Die Funktionen zur dateiorientierten Ein- und Ausgabe sind Anlegen
(Fcreate), öffnen (Fopen), Lesen (Fread) und Schreiben (Fwrite) von
Dateien. Die einzelnen Dateien werden über Nummern, sogenannte
File-Handles unterschieden. Alle Funktionsnamen dieser Gruppe
beginnen mit einem gro₧en 'F' (für File).
- Die Funktionen der Speicherverwaltung sind Anlegen (Malloc),
Grö₧enänderung (Mshrink) und Freigeben (Mfree) von Speicherblöcken.
TOS-intern werden die Speicherbereiche in zwei verketten Listen
verwaltet. In einer Liste (MFL, Memeory Free List ) werden alle
freien Blöcke verwaltet, die zweite Liste (MAL, Memory Allocated
List ) enthält alle belegten Speicherblöcke und einen Verweise
auf den Prozess, die die jeweiligen Blöcke angefordert haben. Alle
Funktionsnamen der Speicherverwaltung beginnen mit einem gro₧en
'M' (für Memory).
- Das GEMDOS verfügt über eine Prozessverwaltung, die über die
Funktionen zum Starten eines Kindprozesses (Pexec) und zum
Beenden des aktuellen Prozesses (Pterm, Ptermres) verfügt. Beim
Starten eines Kindprozesses wird der Vaterprozess angehalten, bis
der Kindprozess terminiert ist.
Beim Beenden eines Prozesses gibt es zwei Möglichkeiten, bei Pterm
werden alle geöffneten Dateien geschlossen, alle angeforderten
Speicherbereiche und auch der Programmspeicher werden wieder aus
der MAL in die Liste der freien Speicherblöcke umgehängt.
Beim Beenden eines Prozesses mit Ptermres, werden alle Speicher-
bereiche, die von diesem Programm belegt wurden, aus der MAL
entfernt, ohne in die MFL eingefügt zu werden. Dadurch können
diese Speicherbereiche nicht mehr weiter vergeben werden.
Alle Funktionsnamen der Prozessverwaltung beginnen mit einem
gro₧en 'P' (für Prozess).
- Eine weitere wichtige GEMDOS Funktion (Super) erlaubt den Wechsel
des Prozessor-Modus zwischen Supervisor- und User-Modus.
Die GEMDOS Ein- und Ausgabe-Funktionen rufen wiederum BIOS-Funktionen
auf. Das GEMDOS ist bis auf die Super-Funktion nicht reentrant, dies
bedeutet, da₧ während einer GEMDOS-Funktion keine weiteren GEMDOS-
Funktionen aufgerufen werden dürfen.
Die meisten GEMDOS-Funktionen liefern einen Rückgabewert, der über
Erfolg oder Mi₧erfolg der Funktion Auskunft gibt.
Eine wichtige, dokumentierte GEMDOS-Systemvariable ist der ACT_PD,
der einen Zeiger auf das aktuelle Programm darstellt. Dieser wird
z.B. in der MAL als Verweis auf den zum Speicherblock gehörigen
Prozess eingetragen und bestimmt au₧erdem die gültige Ein- und
Ausgabe-Umlenkung.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
DIE GEM SCHICHT
GEM enthält die graphische Komponenten des Betriebssystems TOS. GEM
besteht aus zwei weitestgehend voneinander unabhängigen Teilen:
- AES (Application Environment Services)
- VDI (Virtual Device Interface)
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
AES
Dies ist der Teil von GEM, der die Kommunikation mit dem Anwender
übernimmt. Dazu gehören Drow-Down-Menüs, Formulare, Fenster usw.
Das AES erweitert die Möglichkeiten von GEMDOS um die Fähigkeit des
limitierten Multitaskings. Es können bis zu sechs sogenannte
Accessories installiert werden, die quasi gleichzeitig zur Haupt-
applikation laufen. Allerdings findet das Taskswitching nicht auf den
unteren Ebenen statt, sondern nur in AES-Aufrufen.
Der Bildschirmmanager SCRNMGR ist auch als paralelle Task ausgeführt.
Er ist für die Verwaltung von Mausaktionen - etwa beim Verschieben
von Fenstern, Anklicken von Knöpfen usw. - und auch für die Drow-
Down-Menüs zuständig.
Gliederung der AES-Funktionen:
- Die Kommunikation von GEM-Programmen mit dem Benutzer erfolgt über
Ereignisse (Events), die zum Beispiel durch das Verschieben eines
Fensters ausgelöst werden. Events werden über das Versenden von
Nachrichten (Messages) realisiert.
Die Abfrage von Ereignissen erfolgt mit den Evnt-Xxxx Funktionen,
die auf das Eintreten von einzelnen Ereignissen (evnt_mouse wartet
auf einen Mausklick, evnt_timer auf das Verstreichen eines
Zeitraums) oder das Eintreten eines von mehreren Ereignissen
(evnt_multi erlaubt die Kobination verschiedener Ereignisse)
warten.
- Zur Verwaltung von Fenstern dienen die Wind-Xxxx Funktionen. Es
gibt Funktionen zum Anlegen (wind_create), öffnen (wind_open),
Schlie₧en (wind_close) und Freigeben (wind_delete) von Fenstern.
Die Ausma₧e und Position eines Fensters können mit den Funktionen
wind_get und wind_set abgefragt und gesetzt werden.
- Dialog-Boxen sind neben den Fenstern eine weitere Möglichkeit zur
Interaktion mit dem Benutzer. Im Gegensatz zu Fenstern müssen
Dialoge erst abgeschlo₧en werden, bevor mit anderen Aufgaben fort-
gefahren werden kann. Zur Verwaltung dieser Dialoge dienen die
Form-Xxxx Funktionen. Die form_do Funktion arbeitet zum Beispiel
den kompletten Dialog ab, und kehrt erst zurück, wenn der Dialog
abgeschlossen ist.
Das AES baut komplett auf VDI-Funktionen auf, bei manchen Funktionen
werden aber auch Funktionen des GEMDOS benutzt, etwa um Dateien nach-
zuladen oder Speicher anzufordern.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
VDI
VDI stellt eine umfassende Sammlung graphischer Funktionen zur
Verfügung, die die graphischen Ein- und Ausgabesysteme (Maus,
Bildschirm, Drucker, Metafile) bedienen. Konzeptionell ist es an GKS
(Graphisches Kern System) angelehnt.
Es besteht aus GDOS (Graphics Device Operating System) und den
einzelnen Gerätetreibern.
Der Bildschirmtreiber ist direkt im Betriebssytem integriert, auf
ihn kann durch die Line-A-Funktionen zugegriffen werden.
Die einzelnen Geräte werden auch als 'Workstations' bezeichnet. Die
Unterscheidung erfolgt über eine Nummer, die als 'Workstation-Handle'
bezeichnet wird. Für das Bildschirm-Gerät kann man mehrere sogenannte
virtuelle Workstations gleichzeitig öffnen. Den einzelnen
Workstations können unterschiedliche Einstellungen (Linienstile,
Füllmuster) zugeordnet werden.
Gliederung der VDI-Funktionen:
- Die Verwaltung der Workstations erfolgt über Funktionen zum Öffnen
(v_opnwk und v_opnvwk) und Schliessen (v_clswk und v_clsvwk). Jeder
VDI-Workstation besteht aus einer Vielzahl von Parameterein-
stellungen für die verschiedenen Ausgabefunktionen.
- Dem GKS entsprechend gibt es Ausgabefunktionen für Linien
(v_pline), Marker (v_pmarker), Texte (v_gtext) und GDPs (Graphic
Display Primitives), die auf jedem VDI-Ausgabegerät verfübar sind.
- Es gibt Attibut-Funktionen um die Attribute (Linienfarbe, Texthöhe,
Füllmuster) der Ausgabefunktionen zu setzen oder zu erfragen.
Die GDPs des VDI rufen in vielen Fällen direkt die Line-A-Funktionen
auf. Bei manchen VDI-Funktionen (v_opnwk,v_clswk) werden auch GEMDOS-
und XBIOS-Funktionen aufgerufen. Bei den Funktionen für die Tastatur-
eingabe werden BIOS-Funktionen aufgerufen.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
LINE A
Die wichtigste Funktion ist A-Init. Diese Funktion liefert einen
Zeiger auf die Systemzeichensätze, die internen Line-A-Variablen und
die einzelnen Line-A-Funktionen. Die anderen Line-A-Funktionen sind
Funktionen um Linien, Flächen und Texte auszugeben.
Die Line-A-Variablen enthalten wichtige Informationen über den Aufbau
des Bildschirmspeichers, dessen Breite und Höhe in Pixeln, einen
Zeiger auf den Systemzeichensatz und viele weitere Werte.
Da die Line-A-Funktionen nur einen Zugang zu den graphischen
Primitiven des im TOS integrierten VDI-Bildschirmtreibers darstellt,
werden die Ausgabefunktionen bei Benutzung eines anderen Bildschirm-
treibers meist nicht unterstützt. Die A-Init-Funktion und auch die
Line-A-Variablen wird hingegen bei allen Bildschirmtreibern unter-
stützt, so da₧ man zumindest auf diese zugreifen kann.
*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#
DIE SCHNITTSTELLE ZUM BETRIEBSSYSTEM
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TRAPS UND VEKTOREN
Der Atari ST besitzt einen Prozessor aus der 680xx Familie. Bei
diesen Prozessoren wird beim Auftreten des Trap-Befehls die Programm-
abarbeitung über sogenannte Vektoren an Unterprogramme weiter-
geleitet. Beim Atari ST werden 4 der 15 bei 680xx möglichen Traps zur
Kommunikation mit dem Betriebssystem genutzt werden.
Für jede Funktionsgruppe beim ST ist ein eigener Trap reserviert. Die
Funktionsnummer und die Parameter der jeweiligen Funktion werden
dabei dem Prozessorstack übergeben. Eine Ausnahme bilden dabei AES
und VDI. Diese werden über einen gemeinsamen GEM-Trap aufgerufen, die
Unterscheidung zwischen AES- und VDI-Funktionen wird dabei über den
Wert eines Prozessor-Registers bestimmt. Eine weitere Besonderheit
ist, da₧ die Parameter der AES- und VDI- Funktionen nicht über den
Stack übergeben werden, sondern über einen Register-Zeiger auf ein
Parameterfeld.
Au₧er den Trap-Vektoren gibt es Exception-Vektoren (Ausnahme-
Vektoren), die beim Auftreten von Hardwarefehlern (Zugriff an
ungültige Adressen, Division durch Null usw.) angesprungen werden und
Vektoren, die von dem MFP-Interrupt-Baustein (Multi Function
Peripheral) benutzt werden.
Zusätzlich zu den durch die Hardware vorgegebenen Vektoren existieren
noch logische Vektoren, die durch das Betriebssystem vergegeben
werden. Es gibt Vektoren für Harddisk-Zugriffe, zu den einzelnen
Funktionen der zeichenorientierten Geräte, zu den Unterfunktionen
des internen Bildschirmtreibers und zu der Untergruppe der Interrupt-
vektoren. (Die Maus, Tastatur und Uhr laufen über denselben Hardware-
Interrupt, es existieren aber z.B ein Mausvektor und ein Tastatur-
vektor, die dann durch die Interrupt-Routine nach Unterscheidung der
Interrupt-Quelle angesprungen werden). Es gibt auch einen Vektor, der
beim Starten von GEMs angesprungen wird.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
USER UND SUPERVISORMODUS
Die 680xx bieten verschiedene Arbeits-Modi an, den Supervisor-Modus
und den User-Modus. Nach einem Trap-Aufruf, einer Exception oder
einem Interupt befindet sich der Prozessor im Supervisor-Modus, der
den Zugriff auf den gesamten Adressbereich erlaubt.
Im User-Modus, in dem Programme normalerweise ablaufen, kann auf
bestimmte Speicheradressen nicht zugegriffen werden. Das sind zum
Beispiel sämtliche Systemvektoren und die Register-Adressen der
Hardware-Bausteine.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
EINHAENGEN VON TREIBER PROGRAMMEN
Durch die Vielfalt an Vektoren ist die Funktionalität des Betriebs-
systems in weiten Bereichen veränderbar. Ein Programm zur dynamischen
Veränderung der Mausgeschwindigkeit (Mausbeschleuniger) wird sich zum
Beispiel in den Mausvektor einhängen, ein Plattencache in die
Harddisk-Vektoren und ein Low-Level-Debugger in die Exception-
Vektoren.
Im Allgemeinen wird das neu hinzugekommene Programm aber nicht
sämtliche Funktionen des von ihm veränderten Vektors anbieten,
sondern nur auf bestimmte Aufrufe reagieren und in allen anderen
Fällen weiter über den vorher gefundenen Vektor springen. Dadurch
wird die Funktion wieder vom Betriebssystem ausgeführt.
Es ist auch möglich, eigene Aktionen zeitlich hinter dem Systemaufruf
auszuführen, indem die Rücksprung-Adresse auf dem Stack auf eine neue
Routine 'umgebogen' wird. Nachdem diese Routine dann ausgeführt
wurde, mu₧ logischerweise die orginale Rücksprung-Adresse an-
gesprungen werden. Dieses Verfahren bezeichnet man als 'Hinter eine
Funktion hängen'.
Da manche Vektoren für mehrere Zwecke modifiziert werden können, ist
es sinnvoll, die Kette der eingehängten Programme zu verfolgen. Dies
wird durch das XBRA-Verfahren (eXtended BRAner, nach einer Idee von
Moshe Braner) geleistet, das auch schon von fast allen Vektor-
verändernden Programmen angewandt wird und 1990 als Standard fest-
geschrieben wurde. Bei diesem Verfahren wird vor der Einsprungadresse
des Vektors eine Struktur angelegt, die eine 'magische' Kennung (Die
Ascii-Zeichen 'XBRA' ), eine Programmkennung (XBRA-Id, vier weitere
Ascii-Zeichen) und auch die dem Vektor nachfolgende Einsprungadresse
enthält.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
BOOTVORGANG DES SYSTEMS
Nach dem Anschalten des Rechners wird zuerst GEMDOS, BIOS und XBIOS
initialisiert. Dann wird getestet, ob sich auf dem angeschlossenen
Laufwerk ein ausführbarer Bootsektor befindet. Bei einer Harddisk
wird durch diesen Bootsektor im allgemeinen der Harddisk-Treiber
nachgeladen.
Im nächster Schritt werden alle im Auto-Directory befindlichen
Programme ausgeführt. Da GEM zu diesem Zeitpunkt noch nicht
initialisiert ist, können durch diese Programme auch keine AES- oder
VDI-Funktionen aufgerufen werden.
Man unterscheidet zwischen Programmen, die nur kurze Einstellungen
vornehmen und dann terminieren und solchen, die resident im Speicher
verbleiben. Hauptsächlich wird es sich bei diesen Programmen um Ram-
Disk, Bildschirmtreiber, Beschleunigern (Für Plattenzugriffe, oder
Bildschirmausgaben), Fehlerpatches oder Utilitys (Bildschirmschoner,
FileSelectorBoxen) handeln. Damit diese Programme ihren Zweck
erfüllen können, müssen sie sich irgendwie in das System
'einklinken'. Dazu verändern sie einfach die benötigten System-
vektoren.
Wenn alle Programme im Auto-Ordner ausgeführt sind, wird GEM
gestartet. Vom Bootlaufwerk werden alle Programme mit der Extension
'*.ACC' als Accessories nachgeladen, die Bildschirm-Workstation wird
geöffnet und die Accessories, der Desktop und der SCRNMGR als quasi-
paralelle Tasks gestartet.
Da die einzelnen Accessories nicht terminieren, könnte man denken,
da₧ sie sich problemlos in Systemvektoren einhängen könnten. Dies ist
aber nicht der Fall, da deren Speicher bei einem Auflösungswechsel
einfach freigeben wird.
Programme, die vom Desktop gestartet werden, nutzen entweder die
Fähigkeiten der GEM-Schnittstelle, dann werden sie als
'Applikationen' bezeichnet oder aber sie benutzen nur GEMDOS-
Funktionen. Solche Programme bezeichnet man als 'TOS-Programme' .
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
SCHNITTSTELLEN VERSCHIEDENER PROGRAMMIERSPRACHEN
Alle Programmiersprachen müssen Systemfunktionen benutzten, um auf
dem vorhandenen Betriebssystem ablauffähig zu sein. Dies geschieht
allerdings nicht nur durch expliziten Aufruf einer Funktion. In
vielen Fällen werden Funktionen angeboten, die dann ihrerseits eine
oder mehrere Systemfunktionen zusammenfasssen.
Zum Beispiel ruft die BASIC-Funktion
INPUT 'Eingabe :',A\$
die GEMDOS Funktionen 'Cconws('Eingabe :')' und 'Cconrs()' auf, die
dann die Ein- und Ausgaben erledigen.
Die Zuordnung von Bibliotheksfunktion und tatsächlich aufgerufenen
Systemfunktionen ist in der Regel sehr einfach zu erkennen, so da₧
SysMon auch als Debugger dieser 'Hochsprachen'-Funktionen benutzt
werden kann.
*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#