home *** CD-ROM | disk | FTP | other *** search
-
-
- *****************************************************************
- * *
- * 'SetFunction' Manager © V 1.08 *
- * *
- * von Hans-Werner Schober *
- * *
- * 15 Sep. 1994 47798 Krefeld Ostwall 208 *
- * *
- * 100% Assembler Amiga 2000 GForce 68040 *
- * *
- *****************************************************************
-
- Warum einen Manager ?
-
- Der 'SetFunction'-Vector der exec.library ist wohl die einzige
- Funktion auf dem Amiga die nicht multitaskfähig ist. Stellen
- Sie sich vor das zwei Programme ein und den selben Vector einer
- Library auf eine eigene Funktion verbiegen.
- Beispiel:
- Programm A verbiegt den Vector auf die Adresse 'x' und erhält
- die Originaladresse 'o'.
- Programm B verbiegt den selben Vector auf die Adresse 'y' und
- erhält die Adresse 'x' zurück.
- Sie beenden jetzt Programm A, dieses setzt den Vector zurück
- auf die Originaladresse 'o'. Ist ja nicht weiter schlimm.
- Jetzt beenden Sie Programm B, auch dieses setzt den Vector
- zurück und zwar auf die Adresse 'x' die es erhalten hat.
- Da diese Adresses von Programm A stammt und dieses bereits
- beendet wurde, hat es auch den Speicher freigegeben wo diese
- Funktion stand. Wenn jetzt dieser Vector der Library angesprun-
- gen wird, grüßt mit Sicherheit der GURU.
-
-
- Der 'SetFunction' Manager Übernimmt jetzt die Aufgabe diese
- Adressen korrekt zu verwalten. Hierbei kann es durch unsauber
- und nicht nach den Amiga Programmierrichtlinien, geschriebenen
- Programmen zu Schwierigkeiten kommen.
- Es darf zum Beispiel kein Programm selbst einen Vektor verbiegen,
- es muß die Funktion 'SetFunction' der exec.library benutzen.
- Es darf auch nicht erwarten das die Adresse als JMP-Adresse in
- der Vectortabelle steht , die es der 'SetFunction'-Funktion
- übergeben hat. Das heißt das der Programmierer es sich anders
- merken muß ob er einen Vektor veändert hat z.B. durch einen
- Message-Port.Durch dieses Fehlverhalten wird ein solches Programm
- diesen Vektor immer wieder neu auf seine Funktion setzten und
- seinen Patch nie entfernen.
-
- Der SetFunction-Manager © V1.08 muß in Ihrer startup-sequence vor
- dem 'SetPatch' Befehl aufgerufen werden. Auf Turbosystemen muß er
- ebenfalls vor Befehlen aufgerufen werden die den Status der CPU
- verändern, oder das FastRom einschalten.
-
- Der Manager kann auch die Offsetnamen der einzelen Librarys
- mit anzeigen insofern Sie das Programm 'AmigaLibHelp' installiert
- haben, auch dieses Programm ist aus meiner Werkstatt.
-
- Geplant ist eine Benutzeroberfläche als Commodities-Objekt und
- eine Funktion, die es erlaubt einen Patch durch einen Requester
- zu verhindern oder auch einen installierten Patch zu entfernen.
-
- Duch einen Aufruf des Programmes mit der Option 'INFO',listet der
- Manager alle bekannten Veränderungen. Unter angabe eines Library-
- namens wird nur die Information zu dieser library gegeben.
-
- Wollen Sie mir Ihre Erfahrungen, Kritik, Verbesserungsvorschläge
- oder Bugreports mitteilen, dann schreiben Sie mir.
-
-