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 >
Text File  |  1993-10-15  |  10KB  |  204 lines

  1. NAME
  2.      GEMRAM 1.6 [15.10.1993] - GEM im Speicher installieren
  3.  
  4. BESCHREIBUNG
  5.      GEMRAM installiert eine Kopie des GEM im RAM, so daß das GEM von
  6.      anderen Programmen verändert werden kann. GEMRAM gehört zur
  7.      Gruppe  der TOS-abhängigen Programme, daher muß es auch an jede
  8.      neue GEM-Version explizit angepaßt werden. Momentan werden
  9.      folgende offizielle GEM-Versionen unterstützt:
  10.      
  11.           GEM    TOS
  12.           1.20   GER 1.00/1.02
  13.           1.40   GER 1.04/1.06/1.62
  14.           3.00   GER 3.01
  15.           3.10   GER 2.05/3.05
  16.           3.20   GER 2.06/3.06
  17.           3.31   4.01
  18.           3.40   4.02-4.04
  19.  
  20.      GEMRAM identifiziert das GEM über die Länge des GEM-TEXT-Segments.
  21.      GEM Versionen anderer Länder werden bei korrekter Länge akzeptiert.
  22.  
  23.      Ist beim Start von GEMRAM die linke SHIFT-Taste gedrückt, wird
  24.      beim Anwender nachgefragt, ob GEMRAM installiert werden soll.
  25.      GEMRAM meldet bei erfolgreicher Installation die Größe des
  26.      resident gehaltenen Speichers.
  27.  
  28.      GEMRAM erlaubt es auch das Environment des GEM zu setzen. Das
  29.      Verändern des Environment ist eine Methode, wie der Anwender
  30.      Informationen an bestimmte Programme übergeben kann. Z.B. kann
  31.      man über das Environment definieren, wo das GEM die Resourcen-
  32.      datei eines Programms suchen soll.
  33.      
  34.      GEMRAM sucht beim Aufruf zunächst im aktuellen Ordner und dann
  35.      im Ordner \AUTO nach der Textdatei GEMRAM.ENV. Wird die Datei
  36.      gefunden, werden die einzelnen Textzeilen in das Environment des
  37.      GEM übernommen. Eine Zeile muß folgendermaßen aufgebaut sein:
  38.      
  39.           Variablenname=Variableninhalt
  40.      
  41.      Leerzeichen und TABs am Anfang einer Zeile werden ignoriert. 
  42.      Zeilen, die mit dem Zeichen '#' beginnen, werden nicht übernommen.
  43.      Benutzt man das Zeichen '#' innerhalb einer Zeile, wird es durch
  44.      die Kennung des Bootlaufwerks ersetzt.
  45.  
  46.      Für Entwickler bietet GEMRAM zusätzlich die Möglichkeit ladbare
  47.      GEM-Versionen im Speicher zu installieren. Dazu definiert man in
  48.      GEM.ENV die Environmentvariable "GEMRAMSYS=path". <path> muß dem
  49.      Pfadnamen des zu ladenden GEM entsprechen (z.B.: "c:\gem.sys").
  50.      Der Vorteil gegenüber dem direkten Starten eines GEM.SYS liegt
  51.      in der saubereren Systemeinbindung und der Patchbarkeit.
  52.      HINWEIS: Nachfragen beim Autor wegen ladbarer GEM-Versionen sind
  53.      zwecklos!
  54.      
  55.      Erwähnen sollte man noch, daß sich die Arbeitsgeschwindigkeit des
  56.      GEM, durch die Verlagerung vom ROM ins RAM, erhöhen bzw. senken
  57.      kann. Dies ist davon abhängig, wie schnell der Prozessor auf das
  58.      ROM bzw. das RAM zugreift (diese Daten sollten im Handbuch des
  59.      Rechners stehen).
  60.   
  61. INSTALLATION
  62.      GEMRAM muß in den Ordner \AUTO auf dem Bootlaufwerk kopiert
  63.      werden und wird dann automatisch bei jedem Neustart des 
  64.      Rechners aufgerufen. Die Programme im AUTO-Ordner sollten so
  65.      sortiert sein, daß GEMRAM spätestens vor dem ersten Programm 
  66.      ausgeführt wird, das GEMRAM benötigt (wer hätte das gedacht :-).
  67.      GEMRAM.ENV kopiert man am besten ebenfalls in den Ordner \AUTO.
  68.      GEMRAM arbeitet auch in Verbindung mit MiNT.
  69.      
  70. IMPLEMENTIERUNG
  71.      Zunächst versucht GEMRAM das GEM zu identifizieren, das vom System
  72.      gestartet wird, nachdem der AUTO-Ordner abgearbeitet wurde. Dies
  73.      kann nur dann gelingen, wenn keines der AUTO-Ordner Programme, die
  74.      nach GEMRAM gestartet werden, die Vektoren, die auf das GEM zeigen,
  75.      noch verändert.
  76.      
  77.      GEMRAM sucht das zu startende GEM zuerst am Ende der XBRA-Ver-
  78.      kettung des _exec_os-Vektors, dann unter dem Eintrag 'os_magic'
  79.      im TOS-Deskriptor (OSHEADER). Zur Identifikation des GEM wird die
  80.      Länge des GEM-TEXT-Segments und die GEM-Versionsnummer innerhalb
  81.      von GEM-TEXT überprüft.
  82.      
  83.      Gelingt die Identifikation, wird geprüft, ob ein Schreibzugriff
  84.      auf die GEM-Segmente möglich ist. Trifft dies zu, befindet sich
  85.      das GEM bereits im RAM und es wird nur eine Beschreibung des GEM
  86.      angelegt. Ansonsten werden zusätzlich TEXT- und DATA-Segment des
  87.      GEM in einen residenten Speicherbereich kopiert und an die neue 
  88.      Adreßlage angepasst. Das BSS-Segment und die Resourcen des GEM
  89.      werden nicht kopiert. 
  90.      
  91.      GEMRAM legt außerdem eine Kopie des TOS-Deskriptors im RAM an und
  92.      trägt dort in 'os_magic' die Position der GEM-MAGIC Struktur des
  93.      GEM im RAM ein. 
  94.  
  95.      Aufbau des residenten Speichers:
  96.  
  97.      Vektoren                  Speicher         Kommentar
  98.  
  99.                            -----------------
  100.                            | PD  128 Bytes |
  101.      GEMRAM-Cookie ------> -----------------
  102.                            |    gemramS    |    GEMRAM-Deskriptor
  103.                            |               |     (undokumentiert)
  104.      _exec_os --- ... ---> |- - - - - - - -| --- ... -----> GEM-TEXT
  105.                            |               |    installiert OSHEADER
  106.                            | exec_os Code  |     im RAM und übergibt
  107.                            |               |     Environment ans GEM
  108.      _sysbase -----------> |- - - - - - - -|
  109.       (nach exec_os)       |   OSHEADER    |    TOS-Deskriptor
  110.                            -----------------
  111.                            |               |
  112.                            |   GEM-TEXT    |
  113.                            |               |    nur falls das GEM aus
  114.      _sysbase->os_magic -> |- - - - - - - -|     dem ROM kopiert bzw.
  115.                            |   GEM-MAGIC   |     GEMRAMSYS geladen wurde
  116.                            |- - - - - - - -|
  117.                            |               |
  118.                            |   GEM-DATA    |
  119.                            |               | 
  120.                            -----------------
  121.                            |               |    nur falls GEMRAMSYS
  122.                            |    GEM-BSS    |     geladen wurde
  123.                            |               |
  124.      _gemenvptr ---------> -----------------
  125.       (nach exec_os)       |    GEM-ENV    |    nur falls GEMRAM.ENV
  126.                            |               |     gefunden wurde
  127.      _cookies -----------> -----------------
  128.                            |   CookieJar   |    nur falls im alten Jar
  129.                            |               |     kein Platz mehr war
  130.                            -----------------
  131.  
  132.      GEMRAM ist ein TKR-Modul, d.h. es wird von einem anderen Programm
  133.      gestartet, das GEMRAM einen residenten Speicherbereich zur
  134.      Verfügung stellt. Der TKR-Starter meldet die Größe des resident
  135.      gehaltenen Speichers.
  136.      
  137. VEKTOREN, XBRAS, COOKIES, ENVIRONMENT, ...
  138.      Das Programm manipuliert den Systemvektor _exec_os. Die XBRA-
  139.      Kennung ist 'MOGR'.
  140.      GEMRAM setzt _sysbase auf eine Kopie des OSHEADERs und ändert
  141.      darin die Variable os_magic.
  142.      Das Programm erzeugt ein Cookie mit der Kennung 'MOGR'.
  143.      Der Cookie enthält einen Zeiger auf den GEMRAM-Deskriptor.
  144.      Ist kein Cookiejar vorhanden, wird ein neuer angelegt. 
  145.      Ist der Cookiejar zu klein, wird er vergrößert.
  146.      Muß ein neuer Cookiejar angelegt werden, wird ein Resetroutine 
  147.      installiert, die den Jar beim Reset löscht (XBRA-Kennung 'MOGR').
  148.      GEMRAM bestimmt die Ausgabesprache zunächst aus den OSHEADER,
  149.      dann über den _AKP-Cookie (falls er existiert) und im GEM über
  150.      die Environmentvariable "AE_LANG" (falls sie existiert). Falls
  151.      als Sprache etwas anderes als Deutsch ermittelt wird, benutzt
  152.      GEMRAM Englisch. Das Datumsformat wird aus dem _IDT-Cookie
  153.      bestimmt, falls dieser nicht existiert über die Ausgabesprache.
  154.      Da das GEM jetzt im RAM arbeitet, zeigen auch alle Vektoren die
  155.      vom GEM nach dem Start verändert werden ins RAM (insbesondere
  156.      der Trap 2.
  157.      
  158. ÄNDERUNGEN
  159.      v1.6: Zusätzliche Derelozierinfos für weitere TOS Versionen
  160.      v1.5: Elementaren Bug beseitigt, der erst unter TOS 4.xx
  161.            zu Problemem führte
  162.      v1.4: Die erste Zeile im Environment muß jetzt kein Kommentar
  163.            mehr sein
  164.      v1.3: Das GEM wird jetzt zunächst am Ende der _exec_os-XBRA-Ver-
  165.            kettung gesucht und erst dann über den OSHEADER. Es kann
  166.            ein ladbares GEM am Ende von _exec_os installiert werden.
  167.            Unterstützung der TOS-Versionen 4.01-4.04
  168.      v1.2: GEMRAM.ENV laden und als Environment des GEM einbinden.
  169.            GEMRAM wird jetzt am Ende der XBRA-Verkettung des _exec_os-
  170.            Vektors angefügt statt am Anfang. 
  171.            ROM, das beim Beschreiben keinen Buserror auslöst, wird
  172.            jetzt nicht mehr als RAM akzeptiert.
  173.            Unterstützung von TOS Versionen aus UK bzw. USA.
  174.      v1.1: Fehler in TOS 1.62 Relozierung beseitigt.
  175.  
  176. BEKANNTE PROBLEME
  177.      Einige Programme, die sich in den GEM Trap 2 einhängen,
  178.      erkennen die Installation des GEM nicht mehr, da der
  179.      entsprechende Zeiger nicht mehr ins ROM zeigt.
  180.      Das Environment des GEM 1.20 kann nur max. 50 Bytes groß sein.
  181.      Ist das GEM in einem ROM, das keinen Buserror beim Schreibzugriff
  182.      meldet, dann darf ein eventuell vorhandener Prozessorcache
  183.      erst nach GEMRAM eingeschaltet werden.
  184.      
  185. COPYRIGHT
  186.      Autor:      (\/) Martin Osieka
  187.      Anschrift:  Martin Osieka, Erbacherstr. 2, 
  188.                  64283 Darmstadt, Bundesrepublik Deutschland
  189.      Internet:   Martin_Osieka@mtk.maus.de
  190.  
  191.      Schriftlichen Anfragen bitte immer einen frankierten und
  192.      adressierten Rückumschlag beilegen.
  193.      
  194.      Das Programm GEMRAM darf auf beliebige Art und Weise weiter-
  195.      verbreitet werden, solange alle Dateien des Programmpakets
  196.      beiliegen. Dazu gehören:
  197.  
  198.        GEMRAM.PRG              Programm
  199.        GEMRAM.GER, GEMRAM.ENG  Dokumentation (deutsch, englisch)
  200.        GEMRAM.UPL              Upload-Beschreibung (deutsch)
  201.        GEMRAM.ENV              Beispiel eines Environments
  202.  
  203.      Die Benutzung des Programms erfolgt auf eigene Gefahr.
  204.