-------------------------------------------------------------------------------- - GFA-BASIC Interpreter/Compiler-Patcher - - Version 0.98 - -------------------------------------------------------------------------------- - Interpreter-Patches und GEM-Oberfl„che von - - Gregor Duchalski, Baueracker 15a, 44627 Herne, eMail: DO.maus.ruhr.de - - - - Compiler & Library-Patches von - - Christoph Conrad, Adalbertsteinweg 113, 52070 Aachen, eMail: AC3.maus.de - -------------------------------------------------------------------------------- Das vorliegende Programm gestattet es auf komfortable Weise, sinnvolle Patches am GFA-BASIC 3.x Interpreter & Compiler vorzunehmen. W„hlen Sie bitte zu Beginn den Basic-Interpreter oder Compiler (GFA_BCOM.PRG) aus. Danach gelangen Sie in den jeweiligen Einstellungsdialog. Etwas vorweg: Sicherheitshalber sollten Sie die gepatchten Programme nicht unter dem Original-Namen abspeichern. Wir bernehmen keine Gew„hr fr die Funktions- f„higkeit der Patches, wer also seinen Interpreter zermanscht und keine Sicher- heitskopie besitzt, ist selber schuld! -------------------------------------------------------------------------------- Patchen des Compilers -------------------------------------------------------------------------------- Am Compiler bzw. an der Lib k”nnen zwei Ver„nderungen vorgenommen werden: -Einfgung eines verbesserter INIT-Teils -Bugfix fr den Absturz unter MAGX! Beide Patches k”nnen getrennt oder auch in 'einem Rutsch' vorgenommen werden. Der MAG!X-Patch ver„ndert nur die Datei GFA_BCOM.PRG, der INIT-Patch auch die Library. Im Patch-Dialog k”nnen Sie nun angeben, unter welchen Namen der gepatchte Compiler bzw. die Library gespeichert werden sollen. Ggf. k”nnen Sie hier auch die Original-Library erneut festlegen, falls der voreingestellte Name nicht zutreffen sollte. -------------------------------------------------------------------------------- Patchen des Compilers I: Neuer INIT-Teil -------------------------------------------------------------------------------- Genaue Hintergrund-Informationen ber den neuen INIT-Teil entnehmen Sie bitte dem Text LIBPATCH.TXT. Wichtig: Im Ordner LIBPATCH mssen sich die Dateien HIDEM.O, INIT35.O und INIT36.O befinden! Klicken Sie nun auf 'Patchen', so wird der automatische Patchvorgang gestartet. Am Ende wird versucht, mit dem Programm MAKE_NDX.PRG eine neue Indexdatei (GFA3BLIB.NDX) zu erzeugen. Dieses Programm (es sollte sich im Lieferumfang Ihres Compilers befunden haben) wird zun„chst im Ordner der Original-Library, danach im Ordner LIBPATCH gesucht. Bei Mižerfolg k”nnen Sie diese Datei noch in der Dateiauswahlbox ausw„hlen. Schl„gt auch das fehl, so beendet sich das Programm. Bedenken Sie bitte, daž Sie in diesem Fall eine NDX-Datei 'per Hand' anlegen mssen. Vermeiden Sie diese Situation also besser. -------------------------------------------------------------------------------- Patchen des Compilers II: MAG!X-Bugfix -------------------------------------------------------------------------------- Der Compiler strzt unter MAG!X mit der Meldung "Speicherblock zerst”rt" ab. Ursache: Der Compiler reduziert per MShrink (GEMDOS 74) seinen Speicherbedarf auf das Notwendige. Per Malloc (GEMDOS 72) fragt er dann nach dem gr”žten verfgbaren Speicherblock und alloziert diese Gr”že abzglich 16 KByte. Leider geht das Programm davon aus, daž der allozierte Speicher direkt hinter dem vorher geshrinkten Bereich liegt. Im allgemeinen stimmt dies sogar. Unter MAG!X liegt vor dem allokierten Speicherblock (die Adresse, die MAlloc zurueckgibt) allerdings ein sogenannter MCB, der 'Memory Control Block'. Dieser enth„lt - eine Kennung ('ANDR' oder 'KROM', einer der Programmierer, Andreas Kromke, l„žt gržen) - die L„nge des allozierten Blocks - die Basepageadresse des Programmes, welchem der Block geh”rt - den Zeiger auf den letzten MCB. Der GFA-Compiler ueberschreibt den MCB. Nach dem Terminieren des Compilers berprft MAG!X, ob die Kette der MCBs noch in Ordnung ist und meldet den beschriebenen Fehler. šbrigens: Auch unter MultiTOS tritt dieses Problem zun„chst auf. Hier kann es jedoch durch Setzen der memory-protection-flags im PRG-Header auf GLOBAL einfacher behoben werden. Durch den Patch benutzt der GFA-Compiler die ersten 16 Byte des hinter dem MShrink liegenden Speicherbereiches nicht mehr und berschreibt demzufolge keinen MCB. Das Verhalten des Compilers bleibt trotzdem inkorrekt, da der allozierte Bereich nicht unbedingt hinter dem vom Compiler noch belegten Speicher liegen muž (obwohl dies in der Regel zutrifft). -------------------------------------------------------------------------------- Patchen des Interpreters -------------------------------------------------------------------------------- Hierbei handelt es sich entweder um von GFA dokumentierte, praktische Konfigurationspatches oder um Fehlerkorrekturen, die zum Grožteil von Christoph Conrad aufgesprt wurden. Patchbare Interpreter: Version: Dateil„nge: 3.6TT 104770 104766 104739 3.5E 103510 3.50 102519 102523 3.07 92894 Was wird im Interpreter gepatcht? -Keine LINEA-Aufrufe mehr: Siehe auch LIBPATCH.TXT. Beim Bewegen der Maus im Editor gibt es zwar nun leichte Flecken, dafr aber keine beim laufenden Programm. -Keine SETCOLOR-Aufrufe mehr, die auf dem TT die Farben verstellen: Das Basic begeht beim internen Setzen und Abfragen der Bildschirmfarben einen Fehler, der in Aufl”sungen wie TT-Mittel dazu fhrt, daž nach dem Interpreter-Lauf einige Farben verstellt sind. Dieser Patch verhindert dies. Auch der Befehl SETCOLOR hat danach keine Wirkung mehr. Hier sollte ohnehin besser VSETCOLOR verwendet werden. -Kein Abbruch mehr bei MERGE, wenn ASCII 4 im Quelltext vorkommt: Der Interpreter bricht normalerweise das Mergen von Files, die das Zeichen ASCII 4 (EOT == End of transmission, CONTROL D, Pfeil nach links) enthalten, ab der entsprechenden Zeile ab. Unter UN*Xen ist ASCII 4 das Dateiendezeichen, was auf einst recht grosse Ambitionen von GFA-Systemtechnik hindeutet. Dieser Patch unterbindet dieses st”rende Verhalten. -CALL-Bug beheben: Der CALL-Befehl im Interpreter Version 3.6 D TT der Groesse 104770 Byte ist aufgrund eines Tippfehlers (movem.l a4/a6,-(sp) anstatt movem.l a4-a6,-(sp)) fehlerhaft. Der Patch 'repariert' diesen Befehl. -Die DEFLIST-Voreinstellung -Die Editor-Farben -Der Default-Variablentyp, der ohne Postfix eingegeben werden darf. Voreingestellt Float. -Kein CLS bei Programmstart Das Patchen ist denkbar einfach: Nur die zu patchenden Optionen festlegen und 'Patchen...' anw„hlen. Danach kann der gepatchte Interpreter unter einem neuen Namen gespeichert werden. -------------------------------------------------------------------------------- Versions-History -------------------------------------------------------------------------------- Vers. Datum 24.07.93 -Erste vorl„ufige Version. Und schon „ndere ich mal kurz die Versionsnummernz„hlung. :-) 0.90ž 26.07.93 -MERGE-Patch fr den 3.50er Interpreter eingebaut. -Default-Variablentyp des geladenen Interpreters wird ausgelesen und angezeigt. -Patches um weitere Versionen erweitert. 0.91ž 27.07.93 -Kein 'M„usedreck' bei Dateiauswahlbox mehr -Mit der Compiler-Patch-Untersttzung begonnen. 0.92ž 29.07.93 -DEFFILL-Patch eingebaut, war in der Tat falsch dokumentiert. -GFA_BCOM.PRG wird nicht mehr anhand einer Tabelle ausgewertet, sondern alle n”tigen Daten werden direkt aus der Datei geholt. 01.08.93 -Der Compiler wurde falsch gepatcht. 0.93 08.08.93 -Library-Patches integriert. 0.94 13.08.93 -Aufruf des MAKE_NDX-Programmes war fehlerhaft. -MERGE-Patch fr den 3.5E Interpreter eingebaut. -Anleitung berarbeitet. 0.95 19.08.93 -Restliche Patches eingebaut: Line-A und SETCOLOR-Unter- drckung fr die Version 3.07. -DEFFILL-Patch um den Wert 8 erweitert. -Doku nochmal berarbeitet. 0.96 28.08.93 -3.6 Interpreter mit 104739 Bytes wird untersttzt. -Line-A Patch fr 3.07 funktionierte nicht. 0.97 27.09.93 -3.6 Interpreter mit 104766 Bytes wird untersttzt. 0.98 29.09.93 -Mit den Anpassungen an den MAG!X-Compiler-Patch begonnen. 02.10.93 -MAG!X-Patch komplett eingebaut. 04.10.93 -Zu Beginn erscheint jetzt ein kurzer Informationsdialog. -------------------------------------------------------------------------------- Und sonst? Die neueste Version dieses Programmes ist immer in der Maus DO2 zu finden und ber den Mausring damit auch in MK und UN2. Wer Vorschl„ge hat, weitere Patches kennt oder eine Basic-Version besitzt, die nicht untersttzt wird, kann sich gerne an uns wenden. Viel Spaž wnschen Gregor Duchalski & Christoph Conrad -------------------------------------------------------------------------------- Herne, 04.10.93