Supported MS mouse driver services
----------------------------------

INT 33/0000 - MS MOUSE - RESET DRIVER AND READ STATUS
INT 33/0001 - MS MOUSE v1.0+ - SHOW MOUSE CURSOR
INT 33/0002 - MS MOUSE v1.0+ - HIDE MOUSE CURSOR
INT 33/0003 - MS MOUSE v1.0+ - RETURN POSITION AND BUTTON STATUS
INT 33/0004 - MS MOUSE v1.0+ - POSITION MOUSE CURSOR
INT 33/0005 - MS MOUSE v1.0+ - RETURN BUTTON PRESS DATA
INT 33/0006 - MS MOUSE v1.0+ - RETURN BUTTON RELEASE DATA
INT 33/0007 - MS MOUSE v1.0+ - DEFINE HORIZONTAL CURSOR RANGE
INT 33/0008 - MS MOUSE v1.0+ - DEFINE VERTICAL CURSOR RANGE
INT 33/0009 - MS MOUSE v3.0+ - DEFINE GRAPHICS CURSOR
INT 33/000A - MS MOUSE v3.0+ - DEFINE TEXT CURSOR
INT 33/000B - MS MOUSE v1.0+ - READ MOTION COUNTERS
INT 33/000C - MS MOUSE v1.0+ - DEFINE INTERRUPT SUBROUTINE PARAMETERS
INT 33/000D - MS MOUSE v1.0+ - LIGHT PEN EMULATION ON
INT 33/000E - MS MOUSE v1.0+ - LIGHT PEN EMULATION OFF
INT 33/000F - MS MOUSE v1.0+ - DEFINE MICKEY/PIXEL RATIO
INT 33/0010 - MS MOUSE v1.0+ - DEFINE SCREEN REGION FOR UPDATING
INT 33/0013 - MS MOUSE v5.0+ - DEFINE DOUBLE-SPEED THRESHOLD
INT 33/0014 - MS MOUSE v3.0+ - EXCHANGE INTERRUPT SUBROUTINES
INT 33/0015 - MS MOUSE v6.0+ - RETURN DRIVER STORAGE REQUIREMENTS
INT 33/0016 - MS MOUSE v6.0+ - SAVE DRIVER STATE
INT 33/0017 - MS MOUSE v6.0+ - RESTORE DRIVER STATE
INT 33/001A - MS MOUSE v6.0+ - SET MOUSE SENSITIVITY
INT 33/001B - MS MOUSE v6.0+ - RETURN MOUSE SENSITIVITY
INT 33/001D - MS MOUSE v6.0+ - DEFINE DISPLAY PAGE NUMBER
INT 33/001E - MS MOUSE v6.0+ - RETURN DISPLAY PAGE NUMBER
INT 33/001F - MS MOUSE v6.0+ - DISABLE MOUSE DRIVER
INT 33/0020 - MS MOUSE v6.0+ - ENABLE MOUSE DRIVER
INT 33/0021 - MS MOUSE v6.0+ - SOFTWARE RESET
INT 33/0024 - MS MOUSE v6.26+ - GET SOFTWARE VERSION, MOUSE TYPE, AND IRQ NUMBER
INT 33/0026 - MS MOUSE v6.26+ - GET MAXIMUM VIRTUAL COORDINATES
INT 33/004D - MS MOUSE - RETURN POINTER TO COPYRIGHT STRING
INT 33/006D - MS MOUSE - GET POINTER TO VERSION STRING

INT 10/F0 - EGA Register Interface Library - READ ONE REGISTER
INT 10/F1 - EGA Register Interface Library - WRITE ONE REGISTER
INT 10/F2 - EGA Register Interface Library - READ REGISTER RANGE
INT 10/F3 - EGA Register Interface Library - WRITE REGISTER RANGE
INT 10/F4 - EGA Register Interface Library - READ REGISTER SET
INT 10/F5 - EGA Register Interface Library - WRITE REGISTER SET
INT 10/F6 - EGA Register Interface Library - REVERT TO DEFAULT REGISTERS
INT 10/F7 - EGA Register Interface Library - DEFINE DEFAULT REGISTER TABLE
INT 10/FA - EGA Register Interface Library - INTERROGATE DRIVER

Notes:	double speed treshold now not supported, so INT 33/0013 is dummy
	unlike Microsoft specification, CTMOUSE always display cursor on
	  active video page and do not require call INT 33/001D (define
	  display page number), which anyway is dummy
	when video mode changed (by INT 10/0), then CTMOUSE hides cursor,
	  recalc screen sizes, clears ranges, centers cursor and clears
	  mickey counts, same as by INT 33/0021 (soft reset) function
	when INT 33/0020 called, then CTMOUSE action like when video mode
	  change, except cursor not hided
	CTMOUSE support nonstandard text modes in addition to 40x25 and
	  80x25 - for this call INT 33/0007 and INT 33/0008 with min
	  range=0 and max range=8*screen width/height to enable cursor
	  move through all screen
	CTMOUSE display cursor only in standard video modes for CGA, EGA
	  and VGA - Hercules Graphics Card nor Hercules InColor Card nor
	  SVGA extended video modes does not supported; but cursor always
	  can be displayed manually: hide cursor (INT 33/0002) - at least
	  if nonstandard mode (like HGC) uses standard video mode number,
	  define screen ranges (INT 33/0007 and INT 33/0008) and setup
	  interrupt subroutine (INT 33/000C), which can display cursor
	  when mouse moved


Used BIOS variables
-------------------

0:449h	bits 0-6 used to determine current video mode (when driver enabled
	by INT 33/0020 or video mode changed)
0:44Ah	screen width in text columns (used to compute offset in video
	memory in text video modes)
0:44Eh	offset in video segment of active video memory page
0:462h	current video page (returned by INT 33/001E)
0:463h	used to compute CRTC base and Feature Control video ports addresses
	(when driver enabled by INT 33/0020 or video mode changed)
0:487h	bits 5-6 used to determine RAM size on video adapter (when driver
	enabled by INT 33/0020 or video mode changed)
0:488h	bits 0-3 used to get video configuration switches (when driver
	enabled by INT 33/0020 or video mode changed)
0:4A8h	used to get default video registers values for RIL (when driver
	enabled by INT 33/0020 or video mode changed)


Used techniques
---------------

1. Two writes to adjacent I/O ports combined into one write "out dx,ax"
   (most video registers, divisor latch of COM port)
