Seamless mouse (VMware backdoor + VBADOS) and fs-backed TOOLS share (#355)

* Seamless mouse via VMware backdoor + fs-backed TOOLS share

v86 (rebuilt libv86.js from fork branch vmware-mouse): new VMwareMouse
device on port 0x5658 implementing GETVERSION/ABSPOINTER_* fed by the
existing mouse-absolute bus event. Move-only packets are coalesced so
the guest cursor never falls more than one frame behind. Emits
vmware-absolute-mouse on the bus when the guest driver toggles mode.

Renderer: listens for that event, keeps the v86 mouse enabled without
pointer lock, drops the startup auto-capture, and hides the host cursor
over the canvas (.seamless-mouse) while the driver is active. Falls back
to click-to-capture when no driver is present.

SMB: TOOLS share is now backed by the bundled guest-tools/ directory
(subdirectories work) with the synthetic README.TXT/_MAPZ.BAT overlaid
at the root. resolve() routes by tid; SEARCH and FIND_FIRST2 share a
single listForSearch helper.

guest-tools/mouse-driver/: VBMOUSE.EXE + VBMOUSE.DRV from VBADOS
(Javier S. Pedro, GPLv2). Load the TSR from AUTOEXEC.BAT and set
mouse.drv=vbmouse.drv in SYSTEM.INI to enable seamless mouse.

Also: tsconfig rootDir "." for TS 6.0 (preserves dist/src/ layout).

* docs: windows95-base now includes vmware-abspointer
This commit is contained in:
Felix Rieseberg
2026-04-11 13:54:32 -07:00
committed by Felix Rieseberg
parent 1dbb853fe6
commit 27b9e0eb7a
14 changed files with 278 additions and 172 deletions

23
guest-tools/README.md Normal file
View File

@@ -0,0 +1,23 @@
# guest-tools
Files and folders in this directory are exposed read-only inside the VM at
`\\HOST\TOOLS` (alongside the synthetic `_MAPZ.BAT` and `README.TXT`).
Drop drivers and utilities here that you want available from within
Windows 95.
## mouse-driver/ — seamless mouse (VBADOS)
`VBMOUSE.EXE` (DOS TSR) + `VBMOUSE.DRV` (Windows 3.x/9x driver) from
[VBADOS](https://git.javispedro.com/cgit/vbados.git/) by Javier S. Pedro,
GPLv2. Talks to v86's VMware mouse backdoor (port 0x5658) so the Windows
95 cursor tracks the host cursor pixel-for-pixel without pointer lock.
Install inside the guest:
1. Copy `\\HOST\TOOLS\mouse-driver\VBMOUSE.EXE` to `C:\` and add a
`C:\VBMOUSE.EXE` line to `C:\AUTOEXEC.BAT`.
2. Windows Setup (or Control Panel → Mouse → General → Change → Have
Disk) → browse to `\\HOST\TOOLS\mouse-driver` → pick **VBMouse int33
absolute mouse driver**.
3. Reboot. The app detects the driver and stops grabbing pointer lock;
ESC still toggles lock for games that want raw relative input.

View File

@@ -0,0 +1,6 @@
VBMouse - DOS/Windows absolute mouse driver
Copyright (C) 2022 Javier S. Pedro
Licensed under the GNU General Public License, version 2 or later.
Source: https://git.javispedro.com/cgit/vbados.git/
Binaries extracted from https://depot.javispedro.com/vbox/vbados/vbados.flp

View File

@@ -0,0 +1,8 @@
[data]
Version = "3.0"
[disks]
1 =., "VBADOS driver disk", disk1
[pointing.device]
vbmouse = 1:vbmouse.drv, "VBMouse int33 absolute mouse driver", x:*vmd, vbmouse

Binary file not shown.

View File

@@ -0,0 +1,54 @@
# Language: English
# Codepage: 437
#
# Spaces before text must be kept. Be sure that no spaces are
# added to the end of the lines.
#
0.0:Usage:
0.1: VBMOUSE <ACTION> <ARGS..>
0.2:Supported actions and options:
0.3: install Install the driver (default).
0.4: low Install in conventional memory (otherwise UMB).
0.5: uninstall Uninstall the driver from memory.
0.6: wheel <ON|OFF> Enable/disable wheel API support.
0.7: wheelkey <KEY|OFF> Emulate a specific keystroke on wheel scroll.
0.8: Supported keys: updn, pageupdn.
0.9: integ <ON|OFF> Enable/disable VirtualBox integration.
0.10: hostcur <ON|OFF> Enable/disable mouse cursor rendering in the host.
0.11: reset Reset mouse driver.
1.0:Wheel mouse found and enabled\n
1.1:Setting wheel support to %s\n
1.2:enabled
1.3:disabled
1.4:Generate Up Arrow / Down Arrow key presses on wheel movement\n
1.5:Generate PageUp / PageDown key presses on wheel movement\n
1.6:Disabling wheel keystroke generation\n
1.7:VirtualBox integration enabled\n
1.8:Disabled VirtualBox integration\n
1.9:VirtualBox integration already disabled or not available\n
1.10:Setting host cursor to %s\n
1.11:Found VMware protocol version %ld\n
1.12:VMware integration enabled\n
1.13:Disabled VMware integration\n
1.14:VMware integration already disabled or not available\n
1.15:Neither VirtualBox nor VMware integration available\n
1.16:VirtualBox integration not available\n
1.17:Driver installed\n
1.18:Driver uninstalled\n
1.19:Reset mouse driver\n
1.20:\nVBMouse %x.%x (like MSMOUSE %x.%x)\n
1.21:VBMouse already installed\n
3.0:Could not find PS/2 wheel mouse\n
3.1:Wheel not detected or support not enabled\n
3.2:Unknown key '%s'\n
3.3:Cannot find VirtualBox PCI device, err=%d\n
3.4:Cannot lock buffer used for VirtualBox communication, err=%d\n
3.5:VirtualBox communication is not working, err=%d\n
3.6:Could not detect VMware, err=%ld\n
3.7:VMware absolute pointer error, err=0x%lx\n
3.8:Cannot init PS/2 mouse BIOS, err=%d\n
3.9:INT33 has been hooked by someone else, cannot safely remove\n
3.10:INT2F has been hooked by someone else, cannot safely remove\n
3.11:Driver data not found (driver not installed?)\n
3.12:Invalid argument '%s'\n
3.13:Argument required for '%s'\n

Binary file not shown.