CuteMouse - under pretty rare conditions - might allocate an UMB block directly from the XMS host for its resident code and data. This is ok. What's bad is that after successful allocation it modifies the memory 1 paragraph *below* the UMB (in the wrong assumption that it is a DOS MCB).
The problem is in ctmouse.asm, after "call AllocUMB"
test case: since usually DOS will grab UMBs provided by UMBPCI or EMM386 the only test case I know as of yet is:
- start FreeDOS with XMS host (no EMM386, no UMBPCI)
- install Jemm386 from the command line:
C:\>Jemm386 load
(ensure that at least 1 UMB is provided by Jemm386)
- install CTMOUSE. It will cause an Exception 06 by overwriting Jemm386's resident memory block (which has been copied to the begin of the first UMB).
This "feature" of using XMS UMB when no real UMB were
available got removed in ctmouse 2.1 but to avoid it
in 1.9 and 2.0, you can use "do not load high" command
line options available in both of the older versions.