Files
windows95/guest-tools/README.md
Felix Rieseberg bc76e9c79a Shared text clipboard via VMware backdoor + W95TOOLS.EXE guest agent (#361)
Three layers:

  v86 — src/vmware.js gains the legacy text-clipboard backdoor commands
  (GETSELLENGTH/GETNEXTPIECE/SETSELLENGTH/SETNEXTPIECE, 6–9). The host
  stages bytes via the vmware-clipboard-host bus event; the guest pushes
  via 8/9 and the device emits vmware-clipboard-guest when the buffer
  fills. Same wire protocol as open-vm-tools' pre-RPC copy/paste.
  Committed on the windows95-base fork branch; libv86.js rebuilt here.

  renderer — src/renderer/clipboard.ts polls Electron's clipboard (no
  change event exists), translates host UTF-8/LF ↔ guest CP-1252/CRLF,
  and bounces bytes through the two bus events. Echo-suppressed so a
  value we just wrote does not come back as a change.

  guest — guest-tools/agent/W95TOOLS.EXE is a 22 KB hidden-window agent
  that joins the Win32 clipboard-viewer chain (push-on-copy) and polls
  the backdoor on a 250 ms timer (pull-from-host). Win9x runs ring-3
  with the I/O bitmap wide open, so a plain IN EAX,DX from a user
  process reaches the port — no driver needed. Named for growth: time
  sync and host-initiated shutdown will live here too. Built with Open
  Watcom v2 inside Docker (Makefile + Dockerfile alongside the source);
  subsystem 4.0, no msvcrt, runs on Win95 RTM.

Install: copy \\HOST\TOOLS\agent\W95TOOLS.EXE into the guest and drop a
shortcut in StartUp. Text only, 64 KB cap.
2026-04-11 20:17:06 -07:00

1.8 KiB
Raw Blame History

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 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.

agent/ — W95TOOLS guest agent

W95TOOLS.EXE is a hidden-window agent that talks to the emulator over the VMware backdoor (port 0x5658). Currently it does one thing: bridges Windows 95's CF_TEXT clipboard to the host (legacy backdoor commands 69; host side is src/renderer/clipboard.ts, which polls Electron's clipboard). It's also where time sync, host-initiated shutdown, and a tray icon will live when those land.

Install inside the guest:

  1. Copy \\HOST\TOOLS\agent\W95TOOLS.EXE to C:\WINDOWS\.
  2. Drop a shortcut to it in C:\WINDOWS\Start Menu\Programs\StartUp so it runs on login.

Copy text on either side and it appears on the other within ~250 ms. Text only; conversion is Windows-1252 ↔ UTF-8 with CRLF ↔ LF, capped at 64 KB. Built from w95tools.c with Open Watcom v2 — make -C guest-tools/agent (needs Docker).