Der im Mausnetz gepostete Text von Christoph Conrad @ AC3: ------------------------------------------------------------------------ Im folgenden bedeute LA LINE-A! GFA 3.6 Compilerlibrary GFA3BLIB, Size 139766 Byte -------------------------------------------------- *** Patches ASM-Mnemonic = Hex nop $4E71 rts $4E75 (1) Dateioffset: $486C $A000, LA-INIT im Initialisierungsteil Compiler Gfa merkt sich hier A0 und A1. A0: LA-Variablen A1: Zeiger auf Tabelle mit Zeigern auf Systemzeichensaetze Patch: nop VORSICHT: es werden nach $A000 die aktuellen Inhalte von A0/A1 gerettet, nach Patch die Werte nach einem MSHRINK-Aufruf. Es koennten also beliebige Werte darin stehen, auch Null oder Eins. Dies wuerde bei manchen GFA-Befehlen dazu fuehren, dass bei Zugriff auf negative LA- Variablen ein Bus-oder Adresserror ausgeloest werden koennte. Deshalb sollte man ueberhaupt keine Befehle mehr ver- wenden, die irgendwie nur auf LA-Variablen zugreifen, also z.B. auch kein SETMOUSE. (2) Dateioffset: $6C82 $A00A, Hidemouse, u.a. intern vor VDI-Befehlen Patch: nop BESSER: da kein Zugriff auf LA-Variablen Offset $6C6E, direkt am Anfang Hidemouse Patch: rts (3) Dateioffset: $6CB6 $A009, Showmouse, u.a. intern vor AES-Befehlen Patch: nop BESSER: da kein Zugriff auf LA-Variablen Offset $6C94, direkt am Anfang Showmouse Patch: rts (4) Dateioffset: $A584, $A58A Bei Verwendung von VDI-Befehlen macht GFA im Initialisierungsteil ein vs_clip, 'Clipping ein' mit der Bildschirmbreite/hoehe. Beide Werte holt es sich aus Offset -4/-12 der LA-Variablen. Patches: jeweils $6002 (bra.s relativ zwei Byte weiter). >>>>>> WICHTIG: !! CLIP OFF am Programmanfang (5) Dateioffset: $D55E $A00A, vor einem SupExec, Bedeutung unbekannt. Patch: nop >> Ohne Gewaehr auf Vollstaendigkeit! *** Im Interpreter $A009/$A00A Show/Hide Mouse rauspatchen! Das gibt zwar leichte "Flecken" beim Bewegen der Maus im Interpreter, aber dafuer keine beim laufenden Programm! *** Auf eine saubere Schachtelung von hidems/showms (ueber GRAF_MOUSE AES 78) achten! Zu jedem Hide ein Show, sonst gibt's "Flecken". Maus nicht anschalten, wenn sie schon an ist, wie in der Regel nach dem Start von GEM-Programmen, sonst "Flecken". *** Folgende Befehle meiden: CRSCOL CRSLIN INPUT MOUSE MOUSEK MOUSEX MOUSEY SETMOUSE SHOWM HIDEM SPRITE ACHAR ACLIP ALINE APOLY ARECT ATEXT BITBLT HLINE L~A PSET PTST ...und gegebenenfalls entsprechende VDI/AES-Befehle nutzen! Von BITBLT gibt es eine VDI und eine LA-Variante! >> Ohne Gewaehr auf Vollstaendigkeit! Ansonsten kann ich nur empfehlen, mit SysMon mal mitzutracen. Wer noch Befehle findet, die LA verwenden (auch indirekt ueber LA-Variablen), schreibe mir bitte eine PM. Die Verwendung von LA-Variablen laesst sich einfach rauskriegen, wenn ihr LADI_1_1.PRG vom TEMPLEMON verwendet und auf den Programmstart einen Breakpoint setzt. Das erste JSR springt in den INIT-Teil von GFA-Basic. Hinter den ersten MShrink (auf das auf LA-Init gepatchte nop) einen Breakpoint und Register A0 und A1 auf 1 gesetzt, diese werden direkt dahinter gesichert. [OFF-TOPIC] Hier nochmal ein Hinweis auf Tim Orens ProGEM. Dieser Text von 1985, inzwischen wohl in den meisten Maeusen zu finden, gehoert mit zum besten ueber 'Professionelle GEM'-Programmierung. Weiterhin rate ich von der Verwendung der GFA eigenen Fensterverwaltung ab. Diese war in frueheren Versionen fehlerhaft, ob heute, wer weiss? Uebers AES ist es genauso 'einfach' oder 'schwierig'. [ON-TOPIC] Ich kann weder die juristische Verantwortung noch irgendeine Haftung fuer eventuelle Schaeden an Daten oder Programmen uebernehmen, die direkt oder indirekt auf die Benutzung dieser Patches zurueckzufuehren sind! Viel Spass, Chris. PS: Resonanz erwuenscht! ----------------------------------------------------------------------------- Nachtrag von mir, Uwe Ohse: Auch RC_COPY benutzt das Line-A und sollte nicht benutzt werden. buglafix verwendet die jeweils als "besser" gekennzeichnete Methode.