\begin{single}
\begin{verbatim}
INTERRUPTS THAT MAY BE USEFUL FOR YOUR PROGRAMS
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

|============================================|
|  MOUSE INTERRUPTS (INT 33H)                |
|     (The function number is loaded in AX)  |
|============================================|
Function 0 -- Initialize Mouse
	Input:
	Output:
		AX = mouse status  -1 = installed
				0 = not installed
		BX = number of buttons
		OTHER ACTIONS: mouse pointer made invisible
			and placed at center of screen.

Function 1 -- Show Mouse Pointer
	Input:
	Output: none

Function 3 -- Get CURRENT Button and Pointer Status
	Input: 
	Output: BX=status of buttons
		   -- Bit 0 refers to left button
		   -- Bit 1 refers to right button
		   -- Bit 2 refers to center button
		   If a bit is set, the corresponding button is pressed.
		CX= x-coordinate in pixels
		DX= y-coordinate in pixels	
		   (Divide pixel counts by 2 for medium resolution
		    and divide by 8 for text modes)

Function 5 -- Get Button Press History
	Input: BX specifies button desired:
		   BX=0 for left button,
		   BX=1 for right button,
		   BX=2 for middle button.
	Output: AX=current status of buttons
		   -- similar to output BX in function 3.
		BX=button press counter (the number of presses
			since last call to this function).
			This counter is reset to 0 after this.
		CX:DX= X and Y coordinates of the last button press

Function 6 -- Get Button Release History
	Analogous to Function 5.


Function 0Ch -- Install user interrupt function for mouse events
	Output: none
	Input:
		ES:DX= address of user interrupt routine
		CX=event mask (set those bits corresponding to events
			that the routine must handle):
			bit 0=mouse pointer has moved
			bit 1=left button pressed
			bit 2=left button released
			bit 3=right button pressed
			bit 4=right button released
			bit 5=center button pressed
			bit 6=center button released
	NOTE: the user interrupt routine should save all registers
	and initialize DS to your own data segment if necessary.
	Before IRET, you should pop all registers.  The routine
	will be called with the following inputs:
		AX=events that caused this interrupt to be called.
			The bits are associated with events as 
			indicated for CX above.
			E.g., bit 4 is set if this is caused by
			the right button being released.
		BX=current button status:
			Bits 0/1/2 correspond to
			left/right/center Buttons, respectively.
		CX:DX=the X- and Y-coordinates of mouse pointer
		SI:DI=the last vertical and horizontal mickey counts
		DS=data segment for mouse driver

|==============================================|
|  VIDEO INTERRUPTS (INT 10H)                  |
|      (The function number is loaded in AH)   |
|--============================================|

Function 0 -- Select Display Mode
	Input:
		AL=mode number
	Output:	None

Function 2 -- Set Cursor Position
	Input:
		DH = row (0-24)
		DL = col (0-79)
		BH = 0 (the video page)
	Output: the cursor is placed

Function 5 -- Select Active Display Page
	Input:
		AL = active display page
	Output: none

Function 9 -- Write Character with Attribute
	Input:
		AL = ASCII character
		BL = attribute
		BH = 0 (the video page)
		CX = repeat count
	Output: character on screen (cursor is NOT moved)

Function 0Fh -- Get Video Mode
	Input:
	Output:	AH = number of screen columns
		AL = display mode
		BH = active display page

\end{verbatim}
\end{single}
% } % end ignore



\end{document}

