INT 33,14 - Swap Interrupt Subroutines


	AX = 14h
	ES:DX = far pointer to user routine
	CX = user interrupt mask:

		|F-8|7|6|5|4|3|2|1|0| user interrupt mask in CX
		  |  | | | | | | | `--- cursor position changed
		  |  | | | | | | `---- left button pressed
		  |  | | | | | `----- left button released
		  |  | | | | `------ right button pressed
		  |  | | | `------- right button released
		  `--------------- unused

	on return:
	CX = previous user interrupt mask
	ES:DX = far pointer to previous user interrupt

	- routine at ES:DX is called if an event occurs and the
	  corresponding bit specified in user mask is set
	- routine at ES:DX receives parameters in the following
	  registers:

	  AX = condition mask causing call
	  CX = horizontal cursor position
	  DX = vertical cursor position
	  DI = horizontal counts
	  SI = vertical counts
	  DS = mouse driver data segment
	  BX = button state:

	     |F-2|1|0|
	       |  | `--- left button (1 = pressed)
	       |  `---- right button (1 = pressed)
	       `------ unused

	- initial call mask and user routine should be restore on exit
	  from user program
	- user program may need to set DS to it's own segment
	- see	INT 33,C