/*
 *  VEX_BUTV					(C) Digital Design 1990
 *
 *  EXCHANGE BUTTON CHANGE VECTOR
 *
 *  Diese Funktion bewirkt, da bei Bettigung der Maustaste zu einer
 *  definierten Adresse gesprungen wird. An dieser Adresse befindet sich
 *  in der Regel eine Routine, die auf den Druck der Maustaste reagiert.
 *  Die Funktion gibt weiterhin die Adresse der bisherigen Mausroutine
 *  zurck.
 *  Das Setzen und Rcksetzen der Register mu vom Programm selbst
 *  sichergestellt sein.
 *  Der gedrckte Mausknopf kann von der Mausroutine aus einem
 *  Prozessorregister gelesen werden.
 */
#include <gemdefs.h>

void vex_butv( int handle, int (*pusrcode)(), int (**psavcode)() )
{
  *(int (**)())(contrl + 7) = pusrcode; 	/* Adresse der neuen	*
						 * Mausknopfroutine	*/
  VDI( 125, 0, 0, handle );

  *psavcode = *(int (**)())(contrl + 9);	/* Adresse der alten	*
						 * Mausknopfroutine	*/
}