home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Computer Club Elmshorn Atari PD
/
CCE_PD.iso
/
pc
/
0600
/
CCE_0620.ZIP
/
CCE_0620.PD
/
GEMRAM16
/
GEMRAM.GER
< prev
next >
Wrap
Text File
|
1993-10-15
|
10KB
|
204 lines
NAME
GEMRAM 1.6 [15.10.1993] - GEM im Speicher installieren
BESCHREIBUNG
GEMRAM installiert eine Kopie des GEM im RAM, so daß das GEM von
anderen Programmen verändert werden kann. GEMRAM gehört zur
Gruppe der TOS-abhängigen Programme, daher muß es auch an jede
neue GEM-Version explizit angepaßt werden. Momentan werden
folgende offizielle GEM-Versionen unterstützt:
GEM TOS
1.20 GER 1.00/1.02
1.40 GER 1.04/1.06/1.62
3.00 GER 3.01
3.10 GER 2.05/3.05
3.20 GER 2.06/3.06
3.31 4.01
3.40 4.02-4.04
GEMRAM identifiziert das GEM über die Länge des GEM-TEXT-Segments.
GEM Versionen anderer Länder werden bei korrekter Länge akzeptiert.
Ist beim Start von GEMRAM die linke SHIFT-Taste gedrückt, wird
beim Anwender nachgefragt, ob GEMRAM installiert werden soll.
GEMRAM meldet bei erfolgreicher Installation die Größe des
resident gehaltenen Speichers.
GEMRAM erlaubt es auch das Environment des GEM zu setzen. Das
Verändern des Environment ist eine Methode, wie der Anwender
Informationen an bestimmte Programme übergeben kann. Z.B. kann
man über das Environment definieren, wo das GEM die Resourcen-
datei eines Programms suchen soll.
GEMRAM sucht beim Aufruf zunächst im aktuellen Ordner und dann
im Ordner \AUTO nach der Textdatei GEMRAM.ENV. Wird die Datei
gefunden, werden die einzelnen Textzeilen in das Environment des
GEM übernommen. Eine Zeile muß folgendermaßen aufgebaut sein:
Variablenname=Variableninhalt
Leerzeichen und TABs am Anfang einer Zeile werden ignoriert.
Zeilen, die mit dem Zeichen '#' beginnen, werden nicht übernommen.
Benutzt man das Zeichen '#' innerhalb einer Zeile, wird es durch
die Kennung des Bootlaufwerks ersetzt.
Für Entwickler bietet GEMRAM zusätzlich die Möglichkeit ladbare
GEM-Versionen im Speicher zu installieren. Dazu definiert man in
GEM.ENV die Environmentvariable "GEMRAMSYS=path". <path> muß dem
Pfadnamen des zu ladenden GEM entsprechen (z.B.: "c:\gem.sys").
Der Vorteil gegenüber dem direkten Starten eines GEM.SYS liegt
in der saubereren Systemeinbindung und der Patchbarkeit.
HINWEIS: Nachfragen beim Autor wegen ladbarer GEM-Versionen sind
zwecklos!
Erwähnen sollte man noch, daß sich die Arbeitsgeschwindigkeit des
GEM, durch die Verlagerung vom ROM ins RAM, erhöhen bzw. senken
kann. Dies ist davon abhängig, wie schnell der Prozessor auf das
ROM bzw. das RAM zugreift (diese Daten sollten im Handbuch des
Rechners stehen).
INSTALLATION
GEMRAM muß in den Ordner \AUTO auf dem Bootlaufwerk kopiert
werden und wird dann automatisch bei jedem Neustart des
Rechners aufgerufen. Die Programme im AUTO-Ordner sollten so
sortiert sein, daß GEMRAM spätestens vor dem ersten Programm
ausgeführt wird, das GEMRAM benötigt (wer hätte das gedacht :-).
GEMRAM.ENV kopiert man am besten ebenfalls in den Ordner \AUTO.
GEMRAM arbeitet auch in Verbindung mit MiNT.
IMPLEMENTIERUNG
Zunächst versucht GEMRAM das GEM zu identifizieren, das vom System
gestartet wird, nachdem der AUTO-Ordner abgearbeitet wurde. Dies
kann nur dann gelingen, wenn keines der AUTO-Ordner Programme, die
nach GEMRAM gestartet werden, die Vektoren, die auf das GEM zeigen,
noch verändert.
GEMRAM sucht das zu startende GEM zuerst am Ende der XBRA-Ver-
kettung des _exec_os-Vektors, dann unter dem Eintrag 'os_magic'
im TOS-Deskriptor (OSHEADER). Zur Identifikation des GEM wird die
Länge des GEM-TEXT-Segments und die GEM-Versionsnummer innerhalb
von GEM-TEXT überprüft.
Gelingt die Identifikation, wird geprüft, ob ein Schreibzugriff
auf die GEM-Segmente möglich ist. Trifft dies zu, befindet sich
das GEM bereits im RAM und es wird nur eine Beschreibung des GEM
angelegt. Ansonsten werden zusätzlich TEXT- und DATA-Segment des
GEM in einen residenten Speicherbereich kopiert und an die neue
Adreßlage angepasst. Das BSS-Segment und die Resourcen des GEM
werden nicht kopiert.
GEMRAM legt außerdem eine Kopie des TOS-Deskriptors im RAM an und
trägt dort in 'os_magic' die Position der GEM-MAGIC Struktur des
GEM im RAM ein.
Aufbau des residenten Speichers:
Vektoren Speicher Kommentar
-----------------
| PD 128 Bytes |
GEMRAM-Cookie ------> -----------------
| gemramS | GEMRAM-Deskriptor
| | (undokumentiert)
_exec_os --- ... ---> |- - - - - - - -| --- ... -----> GEM-TEXT
| | installiert OSHEADER
| exec_os Code | im RAM und übergibt
| | Environment ans GEM
_sysbase -----------> |- - - - - - - -|
(nach exec_os) | OSHEADER | TOS-Deskriptor
-----------------
| |
| GEM-TEXT |
| | nur falls das GEM aus
_sysbase->os_magic -> |- - - - - - - -| dem ROM kopiert bzw.
| GEM-MAGIC | GEMRAMSYS geladen wurde
|- - - - - - - -|
| |
| GEM-DATA |
| |
-----------------
| | nur falls GEMRAMSYS
| GEM-BSS | geladen wurde
| |
_gemenvptr ---------> -----------------
(nach exec_os) | GEM-ENV | nur falls GEMRAM.ENV
| | gefunden wurde
_cookies -----------> -----------------
| CookieJar | nur falls im alten Jar
| | kein Platz mehr war
-----------------
GEMRAM ist ein TKR-Modul, d.h. es wird von einem anderen Programm
gestartet, das GEMRAM einen residenten Speicherbereich zur
Verfügung stellt. Der TKR-Starter meldet die Größe des resident
gehaltenen Speichers.
VEKTOREN, XBRAS, COOKIES, ENVIRONMENT, ...
Das Programm manipuliert den Systemvektor _exec_os. Die XBRA-
Kennung ist 'MOGR'.
GEMRAM setzt _sysbase auf eine Kopie des OSHEADERs und ändert
darin die Variable os_magic.
Das Programm erzeugt ein Cookie mit der Kennung 'MOGR'.
Der Cookie enthält einen Zeiger auf den GEMRAM-Deskriptor.
Ist kein Cookiejar vorhanden, wird ein neuer angelegt.
Ist der Cookiejar zu klein, wird er vergrößert.
Muß ein neuer Cookiejar angelegt werden, wird ein Resetroutine
installiert, die den Jar beim Reset löscht (XBRA-Kennung 'MOGR').
GEMRAM bestimmt die Ausgabesprache zunächst aus den OSHEADER,
dann über den _AKP-Cookie (falls er existiert) und im GEM über
die Environmentvariable "AE_LANG" (falls sie existiert). Falls
als Sprache etwas anderes als Deutsch ermittelt wird, benutzt
GEMRAM Englisch. Das Datumsformat wird aus dem _IDT-Cookie
bestimmt, falls dieser nicht existiert über die Ausgabesprache.
Da das GEM jetzt im RAM arbeitet, zeigen auch alle Vektoren die
vom GEM nach dem Start verändert werden ins RAM (insbesondere
der Trap 2.
ÄNDERUNGEN
v1.6: Zusätzliche Derelozierinfos für weitere TOS Versionen
v1.5: Elementaren Bug beseitigt, der erst unter TOS 4.xx
zu Problemem führte
v1.4: Die erste Zeile im Environment muß jetzt kein Kommentar
mehr sein
v1.3: Das GEM wird jetzt zunächst am Ende der _exec_os-XBRA-Ver-
kettung gesucht und erst dann über den OSHEADER. Es kann
ein ladbares GEM am Ende von _exec_os installiert werden.
Unterstützung der TOS-Versionen 4.01-4.04
v1.2: GEMRAM.ENV laden und als Environment des GEM einbinden.
GEMRAM wird jetzt am Ende der XBRA-Verkettung des _exec_os-
Vektors angefügt statt am Anfang.
ROM, das beim Beschreiben keinen Buserror auslöst, wird
jetzt nicht mehr als RAM akzeptiert.
Unterstützung von TOS Versionen aus UK bzw. USA.
v1.1: Fehler in TOS 1.62 Relozierung beseitigt.
BEKANNTE PROBLEME
Einige Programme, die sich in den GEM Trap 2 einhängen,
erkennen die Installation des GEM nicht mehr, da der
entsprechende Zeiger nicht mehr ins ROM zeigt.
Das Environment des GEM 1.20 kann nur max. 50 Bytes groß sein.
Ist das GEM in einem ROM, das keinen Buserror beim Schreibzugriff
meldet, dann darf ein eventuell vorhandener Prozessorcache
erst nach GEMRAM eingeschaltet werden.
COPYRIGHT
Autor: (\/) Martin Osieka
Anschrift: Martin Osieka, Erbacherstr. 2,
64283 Darmstadt, Bundesrepublik Deutschland
Internet: Martin_Osieka@mtk.maus.de
Schriftlichen Anfragen bitte immer einen frankierten und
adressierten Rückumschlag beilegen.
Das Programm GEMRAM darf auf beliebige Art und Weise weiter-
verbreitet werden, solange alle Dateien des Programmpakets
beiliegen. Dazu gehören:
GEMRAM.PRG Programm
GEMRAM.GER, GEMRAM.ENG Dokumentation (deutsch, englisch)
GEMRAM.UPL Upload-Beschreibung (deutsch)
GEMRAM.ENV Beispiel eines Environments
Die Benutzung des Programms erfolgt auf eigene Gefahr.