🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: dnet.atari
Article #713

Re: Interrruptroutines & GEM

#713
From: Edgar Roeder
Date: Wed, 20 Sep 1989 18:54
37 lines
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!roeder
References: <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