CuteMouseCuteMouse mascot


Programs with wheel support:





Necromancer's DOS Navigator

GVEDIT text editor

MPXPlay MP3 player

4DOS command shell

Star Commander file manager

GVFM file manager

Arachne web/mail

Blocek Unicode text editor




CuteMouse is a DOS based, open source mouse driver, which supports many protocols of serial and PS/2 mice. It can search for a serial mouse at all COM ports or only at a specified port. An important CuteMouse feature is its small memory footprint: the resident part (TSR) occupies less than 3.5K. CuteMouse can also install itself in upper memory, when available, without requiring external utilities such as the LH (LoadHigh) command. Modern BIOSes often make USB mice visible through the PS/2 interface if you enable "legacy" support in BIOS setup.

CuteMouse has three branches now. V1.9 branch uses BIOS to handle PS/2 mice. V2.0 branch uses direct hardware access for PS/2 mice, and supports the wheel. V2.1 branch uses BIOS to handle PS/2 mice but also supports the wheel, combining the best of V1.9 and V2.0. Wheel programming info is included in the v2.x packages. RAR and ZIP commands used: rar a -m5 -r -s -tl x.rar * and zip -r9 -o *

The latest beta version in the 2.1 branch is v2.1 beta 4.


New in v2.1 beta 4 since v2.0 alpha 4, changes by Eric Auer:

v2.1 beta 3 - v2.1 beta 4 (July 2008)

  1. added debug binary, prints PS/2 debugging output during mouse init and when mouse is activated / stopped later
  2. Dell Inspiron 1501 touchpad has no int 15.c204 ident in BIOS, so we use PS/2 even without ident (as ctmouse 1.9)
  3. option /O changed from disable to enable wheel detection (only few DOS apps use wheels, and wheel is less compatible)
  4. option /M (disable old MouseSystems / Genius) is now the default, so there is a new option /Y to enable MouseSystems.
  5. lots of changes in the source code to let it compile with the MASM-ized JWASM of (based on OpenWatcom WASM) instead of the commercial TASM. Disabled many macros.
  6. this version comes with TASM and JWASMD binaries so you can compare them: ctmouse binaries are byte identical with the exception of where I had to fix a bug.

v2.1 beta 2 - v2.1 beta 3 (June 2007)

  1. new mousetst binary with sources written in NASM Assembly language. Supports wheel testing, so removed wheeltst. The old BC3.1 mousetst was very un-portable to another C. Updated makefile mousetst section. New mousetst is 1kB.
  2. directory structure changed to something more elaborate, with bin/, doc/ctmouse/ and source/ctmouse/ with subdirectories. This also allows easy installation in FreeDOS, just unzip.
  3. dropped packed / unpacked distinction, but feel free to aPack binaries yourself (upx somehow refuses to compress ctmouse?).

v2.1 beta 1 - v2.1 beta 2

  1. new /O option to suppress wheel detection: Might improve PnP for serial mice, but main use is for PS/2. USB BIOS support usually does not support the "enable wheel protocol" handshake, and if you hotplug a mouse (NOT recommended for PS/2), it will boot in non-wheel mode. The TSR cannot detect and fix that mode change.
  2. made E_needvga message translateable. The message tells that this CuteMouse version does not support non-VGA plain EGA hardware.
  3. improved the English help message

v2.1 beta 1

  1. removed RIL interface: non-RIL apps caused graphics corruption
  2. reading VGA registers: no RIL needed but VGA hardware needed
  3. backup/restore VGA registers in copysprite
  4. replaced hardware PS/2 by BIOS PS/2 handling again for better compatibility, based on public domain source fragment by Konstantin Koll
  5. removed PS/2 IRQ handler by BIOS callback handler. Wheel data protocol processing again based on code from Konstantin Koll.
  6. removed "XMS UMB" allocate / free: only DOS UMB worked anyway
  7. do not disablePS2 right before enablePS2 (IRQ/settings)
  8. store only CRTC port (3d4/3b4), not full videoregs structure
  9. explicitly set "blit mode" for EGA/VGA (not for CGA/MCGA)
  10. introduce a handfull nop to mark interesting places in the code
  11. enabledriver_20 explicitly sets int10 handler to CS:.
  12. show error message if pre-VGA, old version only tuned videoregs if EGA

The latest alpha version in the 2.0 branch is v2.0 alpha 4.


New in v2.0 alpha 4 since v1.9.1, changes by Nagy Daniel, Jason Burgon and Arkady Belousov:

  1. Hardware PS/2 handling reintroduced
  2. Added new wheel API
  3. Added wheel tester utility
  4. Implemented INT 33/0028; the DX argument is ignored
  5. Reimplemented functions INT 33/001A and 001B to mimic MS Mouse behavior
  6. Changed semantics of the /R command line option: its arguments multiplied by 10 and passed to 001A function
  7. Cleaned and optimized source code and fixed many bugs

The latest version in the 1.9 branch is v1.9.1


New in v1.9.1 since v1.8, changes by Arkady Belousov, Maurizio Spagni, Donald Davis, Jason Burgon and Nagy Daniel:

  1. Fixed bug in INT 33/0017; under Turbo Pascal IDE this bug caused crash in some cases. (1.9.1)
  2. INT 33/0005 and 0006 functions now return zero values in case of wrong button number in BX; this makes game Patrician happy. (1.9.1)
  3. Heavy source cleaning and optimization
  4. INT 33/001A and 001B functions are temporarily disabled because their descriptions in RBIL 61 don't correspond with MS Mouse behavior and this causes cursor slowdown in some applications (for example, SimCity 2000)
  5. For /Sn/P option combination INT 33/0024 now returns proper IRQ#
  6. INT 33/001F function now retains DTR and RTS UART lines active
  7. Removed flushing mouse data stream when detecting mouse type (this also prevents infinite loops in some cases under Windows)
  8. Small mouse movements are now doubled also in auto resolution mode
  9. Cursor redrawing routines now recall themselves if interrupt handlers try to call them while drawing routines work; this should avoid differences between seen and real cursor status in some rare cases
  10. LCR and MCR now preserved in UARTs for which no mouse is detected
  11. Added additional check for PS/2 device presence (this prevents big delay at startup in some cases under Windows)
  12. Added support for 286 and 386 CPUs
  13. Added external assembler library
  14. Added Dutch, French, Latvian, Polish, Slovak and Spanish message files
  15. Added /N command line option to force load CuteMouse as new TSR
  16. COMTEST utility improved (and may be used to integrate IRQ auto detection into CuteMouse)
  17. Added closing for all local file handles before exit (this prevents leakage from system handles pool when CTMOUSE is called with redirected output and stays TSR)
  18. INT 33/0024 and 006D now report driver version 7.05 instead of 6.26
  19. Implemented function INT 33/0031
  20. CTMOUSE now handles INT 10/4F02 and some INT 10/11 video functions and correctly recalculates screen size when, for example, the screen is switched to 43/50 lines text mode

web design by Jim Hall