Article View: dnet.atari
Article #713Re: Interrruptroutines & GEM
From: Edgar Roeder
Date: Wed, 20 Sep 1989 18:54
Date: Wed, 20 Sep 1989 18:54
37 lines
2374 bytes
2374 bytes
In article <524@nixpbe.UUCP>, andreas@nixpbe.UUCP (andreas) writes: > Wie kann man GEM Routine in einer Interruptroutine aufrufen, ohne > das sich das System verabschiedet ? > Beispiel: Anklicken eines Laufwerksicons und daraufhin oeffnet sich > eine Alert Box. > Erst mal eine Frage: Soll das ein neuer Critical-Error-Handler werden, oder willst Du wirklich z.B. in einer Alt-Help Routine das GEM rufen ? Das Beispiel erfordert naemlich gar keine Interruptprogrammierung. Es laesst sich in einer "einfachen" evnt_multi()-Schleife programmieren. GEMDOS und GEM sind nicht reentrant, da globale Variablen benutzt werden um sich z.B. den Ruecksprung zum Aufrufer zu merken. Unter bestimmten Bedingungen (naeheres auf Anfrage) kann man sich daran vorbeimogeln, indem man diese (nicht offiziell dokumentierten) globalen Variablen kurzzeitig sichert. Dann sollte man aber genau wissen, wann der Aufruf (der Interruptroutine) passiert (innerhalb des Bios, innerhalb einer LineA Routine, ...). Ein extremes Beispiel fuer diese Methode, die globalen Variablen zu sichern und spaeter wieder zu restaurieren, sind die Task-Switcher Programme. Die sichern gleich den halben Kernspeicher. (:-) Eine Alert-Box kann man in einem Interrupt zum Beispiel dadurch bekommen, dass man dem GEM vorspiegelt, dass ein anderes Programm (z.B. ein Accessory) die Alert-Box zeichnet. Der Interrupt muss aber vorher noch ordnungsgemaess beendet werden (Beispiel: siehe alrm_nasty.s/timer.c im GCC-Library-Posting). Im "Prinzip" ist GEM ja multi-tasking faehig. Wenn Du nehere Informationen brauchst, wie das TOS solche Dinge macht, kann ich nur dringend "Das TOS-Listing" (Heise-Verlag?) empfehlen. Es liegt staendig neben meinem Rechner. > CU-) > Andreas - Edgar
Technical Details
Message-ID:
<881@sbsvax.UUCP>Path:
arc1-ca.pugleaf.net!gmdzi!unido!sbsvax!roederReferences:
<524@nixpbe.UUCP>Show Full Headers
Complete Article Headers
X-Google-Language: GERMAN,ASCII-7-bit X-Google-Thread: 12bdcf,a287b10b57c97935 X-Google-Attributes: gid12bdcf,public X-Google-ArrivalTime: 1989-09-20 15:46:06 PST Path: arc1-ca.pugleaf.net!gmdzi!unido!sbsvax!roeder From: roeder@sbsvax.UUCP (Edgar Roeder) Newsgroups: dnet.atari Subject: Re: Interrruptroutines & GEM Summary: Es koennte gehen, aber ... Keywords: <none> Message-ID: <881@sbsvax.UUCP> Date: 20 Sep 89 18:54:08 GMT References: <524@nixpbe.UUCP> Distribution: dnet Organization: Universitaet des Saarlandes, Saarbruecken, W-Germany Lines: 37 Posted: Wed Sep 20 19:54:08 1989