	$4A SETBLOCK

	int Mshrink( int dummy, void *block, long newsize );

Mit der SETBLOCK-Funktion kann im Gegensatz zur MALLOCMALLOC-Funktion ein
genau bestimmter Speicherbereich reserviert werden. Der darber
liegende Speicher wird an GEMDOS zurckgegeben, auch wenn er zuvor
reserviert war. Mit dieser Funktion kann z.B. ein Programm seinen
tatschlichen Speicherbedarf reservieren und den verbleibenden
Bereich freistellen.

Als Parameter werden der Funktion die Anfangsadresse und die Lnge
des zu reservierenden Bereichs bergeben. Der mit diesen Parametern
spezifizierte Bereich wird dann vom GEMDOS reserviert und erst mit
Beenden des Programms oder nach Aufruf der MFREEMFREE-Funktion wieder
freigegeben. Der zustzliche Dummy-Parameter mu immer Null sein.

blicherweise beginnen Programme mit der folgenden oder einer
hnlichen Befehlssequenz. Nach dem Aufruf mu in D0 eine Null stehen,
sonst ist ein Fehler aufgetreten.

----------------------------------------------------------------------
MOVE.L	A7,A5		* Stackpointer nach A5 retten
MOVE.L	#USTCK,A7	* Stack fr das Programm einrichten
MOVE.L	4(A5),A5	* A5 zeigt jetzt auf den Base-Page-Anfang,
			* genau $100 Bytes unter dem Programmanfang
MOVE.L	$C(A5),D0	* $C(A5) enthlt Lnge des Programm-Bereichs
ADD.L	$14(A5),D0	* $14(A5) enthlt Lnge des
			* initialisierten Datenbereichs
ADD.L	$1C(A5),D0	* $1C(A5) enthlt Lnge des
			* uninitialisierten Datenbereichs
ADD.L	#$100,D0	* $100 Bytes Base-Page reservieren
MOVE.L	D0,-(SP)	* D0 enthlt die Lnge d. zu reserv. Bereichs
MOVE.L	A5,-(SP)	* A5 enthlt Beginn des zu reserv. Speichers
MOVE.W	#0,-(SP)	* ein Wort ohne Bedeutung, trotzdem ntig!
MOVE.W	#$4A,-(SP)	* Funktionsnummer
TRAP	#1
ADD.L	#12,SP		* die bliche Aufrumarbeit auf dem Stack
TST.L	D0		* Fehler aufgetreten ?
BNE	error		* besser abbrechen, das ging schief
...			* hier geht's weiter, wenn alles geklappt hat
----------------------------------------------------------------------
